Así que he estado programando durante aproximadamente 9 meses y me he enseñado algo de Python, PHP y Javascript.
Quiero mejorar en estos idiomas: puedo hackear algo, pero muchas cosas como OOP, usar listas de la manera más efectiva, etc., se me han perdido.
¿Cuáles son las mejores formas de convertirse en un programador "experto"? ¿Depende de los matices del lenguaje o es más general? ¿Hay alguna matemática que debería estudiar al lado? Obviamente, mucho depende de lo que quieras hacer con él; hasta ahora, principalmente he realizado aplicaciones internas a pequeña escala, así como programación web. ¿Cómo me entero del buen diseño del programa?
php
javascript
python
Jack Seskatchi
fuente
fuente
Respuestas:
La única solución es la experiencia . Se convertirá en un experto cuando haya codificado mucho (como realmente mucho ) en estos idiomas. Desarrollar proyectos te hará enfrentar problemas, por lo que tendrás que encontrar las soluciones, y un día habrás visto suficientes soluciones a los problemas que te llamarás un experto .
Codificación, lectura de código, revisión de código, todo esto lo ayudará a saber cómo codificar con un buen diseño. No puede simplemente confiar en un fragmento de código que ve en Internet para decir que sabe cuál es el buen diseño para lo que está tratando de lograr. Debe mirar a muchos de ellos para saber cuál sería la mejor solución a su problema.
fuente
La experiencia, como la amistad, es producto del tiempo. Mi cita favorita sobre el tema (se me olvida la fuente):
"El buen juicio es el resultado de la experiencia. La experiencia es el resultado del mal juicio".
Dedique las horas, estudie su oficio. Luche no solo por soluciones inmediatas, sino también por la belleza y la eficiencia.
fuente
En primer lugar, es importante comprender la programación a nivel agnóstico. Conocer los principios, conceptos, metodologías y demás te ayudará a largo plazo. Aquí hay algunos enlaces a algunos buenos libros para ayudarlo:
Libros:
Código limpio: un manual de artesanía de software ágil
Code Complete (2nd Ed) por Steve McConnell
El mes mítico del hombre
Patrones de diseño: elementos de software orientado a objetos reutilizables
Solo recuerda que cuando besas también es mejor seca si quieres una relación más sólida con la programación. :)
fuente
1) Estás en el lugar correcto. Los foros comunitarios como el intercambio de pila son una excelente manera de encontrar información.
2) Averigüe la POO antes de continuar. Es una necesidad antes de pasar de las secuencias de comandos a un desarrollo más avanzado. net.tutsplus.com es un buen sitio de referencia y encontré esta guía aquí: http://net.tutsplus.com/tutorials/php/object-oriented-php-for-beginners/
3) Una vez que haya aprendido POO y haya practicado su uso, descargue un marco con buena documentación y siga una guía de "Introducción" (un marco es una colección de herramientas que lo ayudan a desarrollarse más rápido en un idioma). Symfony es bueno para PHP y puede seguir la guía aquí: http://www.symfony-project.org/getting-started/1_4/en/ . También tienen un tutorial "Jobeet" para que lo sigas junto con
4) Junto con el n. ° 3, aprenda el patrón MVC (Model View Controller). Este es un patrón de programación popular que se utiliza en una variedad de marcos. Es imprescindible si quieres pasar de principiante a intermedio.
¡Buena suerte!
fuente
Trabaja en un proyecto de código con programadores que sean mejores que tú
Protip: ¡esto parece funcionar para cualquier cosa en la que quieras mejorar, no solo para el código!
Pero en serio, si puede encontrar personas talentosas que estén dispuestas a decirle cuándo lo está haciendo mal, intente trabajar en un proyecto con ellas.
Lee cosas escritas por programadores que son mejores que tú
Daveo vinculado a algunos buenos libros. También puede encontrar muchos blogs escritos por personas que se preocupan por convertirse en mejores programadores (y generalmente son programadores bastante impresionantes).
fuente
Ser un programador experto es probablemente una habilidad general para razonar y resolver problemas de programación, tanto tareas comunes como poco comunes. Probablemente esto sea independiente del lenguaje, pero yo diría que también debes ser muy fluido con al menos un par de lenguajes de programación y sus herramientas.
No hay una receta mágica para convertirse en un experto, excepto con el trabajo duro: leer tutoriales, buscar mucho en Google, escuchar a expertos, trabajar en problemas, codificar mucho, trabajar en proyectos existentes con otras personas y, en general, adquirir mucha experiencia en el mundo real .
Todo esto es un consejo independiente del idioma.
fuente
Por supuesto, hay varios enfoques que conducirán al éxito. Como ya se dijo, la experiencia es la más importante, pero depende de cuánto tiempo necesites para llamarte experto. Sin embargo, el intervalo de tiempo se medirá en años o incluso décadas.
Comencé a aprender programación hace 15 años, y creo que las mejores mejoras en mis habilidades se debieron a las siguientes razones:
La presión es mala. Mantén un buen estado de ánimo y olvida los problemas irresolubles hoy solo para volver a ellos mañana (y preguntándote por qué parecía tan complicado el día anterior).
Comencé a programar cuando era niño y nadie me obligó a aprender nada. No me malinterpreten: no es necesario comenzar como un niño para dominar un lenguaje de programación. Su propia motivación, sin obligarse a alcanzar una meta poco realista en un período de tiempo demasiado corto, será la clave del éxito.
Tampoco tendrá que escribir su propio sistema operativo como lo hizo Linus. Tampoco nadie espera que un sitio web exitoso sea visitado por cientos de usuarios al día. Extractos simples de sus proyectos mostrarán (su jefe, su cliente, sus colegas ...) que sabe lo que hace.
Apégate a un tema hasta que (casi) lo domines. Aprende lo básico.
El dominio es algo que no se puede lograr. Es poco probable que lo sepa todo. Pero asegúrese de aprender los conceptos básicos y no subestime los conceptos de lenguajes de programación, paradigmas o ciertas reglas sintácticas o mejores prácticas.
Pero por favor: no lo acepte solo si escucha o lee NUNCA o SIEMPRE. Cada vez que alguien habla de nunca hacer algo, no dude en preguntar por qué. Hay una razón por la cual hay reglas. Pero solo la razón le dirá si es algo bueno para su situación o no. Lo que es bueno en un idioma puede ser problemático en otro.
Seguir avanzando.
No te quedes en el mismo tema durante décadas. Después de 10 años de Javascript, habrá muy pocas personas que puedan enseñarle algo nuevo. Pero en 10 años nadie hablará de Javascript ... ¿por qué? ah ahora me tienes Las predicciones sobre el futuro siempre son propensas a errores;)
Sin embargo, después de algunos meses o años de recopilación de experiencia en un campo, verá que las cosas que aprende no serán tanto como al comienzo de su "misión". Habrá un momento en que las personas comenzarán a pedirle ayuda cuando tengan problemas (problemas reales, no los de hacer mi tarea).
Este es un buen indicador de que te has convertido en una especie de experto. En este punto, pregúntese si todavía existe el potencial de desarrollarse. O tal vez hay algo nuevo sobre lo que quieres poner tus manos, pero nadie te lo permite porque eres el pollo perfecto para esta jaula.
Sal con tus amigos, esposa, perro ...
Le dará un descanso a tu mente. Problemas como Android vs. Iphone, Flash vs. Silverlight, App vs Program ... se convertirán en una cuestión de lo que es mejor para sus necesidades y no el centro de su existencia.
Tener una vida social (aunque no confunda con Facebook) también ayudará a mantener o incluso mejorar sus habilidades sociales. Si sabe cómo lograr que sus colegas acepten la mejor solución (no necesariamente su), puede valer más que conocer cientos de lenguajes de programación.
Usa tu cerebro
No me escribas una carta en 10 años diciéndome que arruiné tu vida. Si está satisfecho con una estrategia totalmente diferente o descubre que convertirse en agricultor o presidente de los Estados Unidos vale la pena pasar el resto de su tiempo: hágalo.
fuente
Sugiero que se haga miembro de sitios como Topcoder o Usacogate , donde puede aprender paso a paso y resolver problemas algorítmicos. Por ejemplo, completar la capacitación de Usacogate no lo convertirá en un profesional en ciencias de la computación, pero le brinda mucha habilidad para abordar muchos problemas de la vida real. Te enseña a probar y requiere que proporciones soluciones eficientes.
Otra opción más para ganar más experiencia es aprender un lenguaje de un paradigma diferente. Por ejemplo, Haskell es un lenguaje de programación funcional. Aprenderlo puede ayudarlo a abordar los problemas desde un punto de vista diferente, incluso en otros idiomas. Por ejemplo, Python se puede programar en un estilo muy funcional.
fuente
Contrariamente a algunas de las respuestas, la experiencia no es el único requisito para convertirse en un "experto". Creo que la mayoría de las personas en todas las industrias (no solo la programación) no se convierten en expertos en su campo. Se vuelven competentes y eficientes, pero no llegan a ser tan buenos como podrían ser.
La razón es que la experiencia no es suficiente. Necesitas consejos de expertos. Debe aprender a hacer cosas de alguien que sea un experto.
Afortunadamente para nosotros, hay muchos recursos para que los programadores se conviertan en expertos. Probablemente el mejor es libros. Otro recurso destacado son los programadores. StackExchange.
Pase la mayor parte de su tiempo escribiendo código, pero también dedique parte de él leyendo e integrando el conocimiento de libros como Clean Code http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882 . Puede encontrar los mejores libros analizando las reseñas en Amazon, revisando este sitio y Stack Overflow.
Si invierte suficiente tiempo para aprender y usar la información en 2 o 3 libros por año, aumentará en gran medida su habilidad. Además, encuentre una manera de grabar y recordar todo lo que aprende. De lo contrario, será difícil saber realmente y utilizar la información.
Presta atención a los temas que interesan a los programadores expertos: patrones de diseño, pruebas unitarias, elección de carrera, etc. Mira el mundo (o al menos tu trabajo) desde la perspectiva de un programador experto.
Cuando se le asigne una tarea para codificar, deténgase y piense en ello por un momento. Hazte algunas preguntas. ¿Qué he aprendido que pueda ayudarme? Cuales son los riesgos? ¿Cuál es el mejor enfoque? ¿Cuáles son algunos algoritmos diferentes que puedo usar? ¿Cuánto tiempo llevará ejecutar el programa? ¿Cuál es probable que sea el cuello de botella de la CPU? ¿Qué funcionalidad podría cambiar o agregarse?
Espero que esto ayude.
fuente