Aquí hay un poco de información sobre mí, antes de comenzar con la pregunta.
Soy un estudiante de informática, Java es mi lenguaje principal de codificación.
El problema básico en mi universidad son los estándares de enseñanza. A nadie le preocupa enseñar el conocimiento de codificación a los estudiantes, en lugar de solo el conocimiento teórico.
El efecto es que la mayoría de mis compañeros de la universidad no entienden la programación en absoluto.
Incluso no he podido salir del entorno de programación tradicional, lo que limita mi codificación hasta cierto punto.
¿Cuáles son las posibles formas en que puedo desarrollar y ampliar mis habilidades de programación / codificación?
Además, ¿puede sugerir las fuentes para el mismo?
Editado : Fuentes que sugieren el desarrollo de habilidades de codificación.
Respuestas:
La programación es uno de los campos donde la experiencia importa. Por lo tanto, para convertirse en un mejor codificador, debe codificar más. Sin embargo, escribir no es lo único que debe hacer. También debe leer el código de otros desarrolladores y aprender de él qué es un buen código. Consulte las preguntas SO sobre esto .
También puede encontrar libros, que están específicamente dedicados a la codificación, útiles; como "Código completo". Contienen descripciones de lo que es un buen código que, combinado con su conocimiento fundamental, puede convertirlo en un buen programador.
fuente
must-read
lista. :) ¡Gracias!(push 'code-complete must-read)
Mi cita favorita es de Confucio:
Todo el conocimiento que obtuve fue de aplicar una estrategia única:
¿Quieres aprender C #? Consigue un trabajo como desarrollador de C #.
¿Quieres aprender italiano? Ve allí con un diccionario inglés / italiano y habla italiano
¿Quieres aprender codificación? ¡Código!
fuente
La codificación es un gran consejo, pero sin alguien allí que le dé su opinión, simplemente repetirá sus errores. Encuentre un trabajo, trabaje en un proyecto de código abierto, encuentre un mentor y haga que miren su código.
fuente
Aquí hay una presentación que Dan North dio y QCon sobre cómo pasar del programador novato al experto llamado Afilar las herramientas . A continuación se presentan sugerencias clave de la presentación:
fuente
Intenta escribir un compilador para un lenguaje simple desde cero. Mejorará mucho sus habilidades a lo largo del camino (con algunas buenas técnicas teóricas de la teoría del lenguaje formal como un bono). Traté de escribir una versión simple de Excel, y también es un ejercicio muy agradable.
Como otros dijeron, la única forma de mejorar sus habilidades de codificación es hacerlo realmente. Ensucia tu mano con algunos proyectos grandes. Pero luego, para un programa grande, es aún más importante que domine las técnicas de diseño de software, de lo contrario, el tamaño del programa parece inmanejable.
Hay una buena cita de Nate Kirby:
Entonces, cambiar entre estos dos niveles de abstracción es la habilidad que debes dominar.
Además, la velocidad de cuántas líneas de código puede escribir por hora no es lo que debe apuntar. Me gusta una cita de David Parnas :
fuente
He implementado un grupo de apuestas o un juego de Baccarat en casi todos los idiomas que he aprendido.
Este tipo de software cubre
El blackjack y el póker para varios jugadores también funcionarían.
Una advertencia es que en mi trabajo diario trabajo en sistemas financieros y hay una gran superposición entre las cosas a tener en cuenta al escribir un juego de azar multijugador y un sistema de comercio.
fuente
fuente
Piénselo así ... Tiger Woods no llegó a ser "el mejor" golfista al mirar golf o al leer sobre él. Se puso así, como cualquier otro atleta, estudiando, practicando, encontrando dónde puede mejorar su juego y haciendo algo al respecto.
La codificación es igual. La mejor manera de mejorar es estudiar lo que hacen los demás, entender POR QUÉ lo hacen de esa manera y luego hacerlo usted mismo.
fuente
Como en cualquier otra actividad humana, la mejor manera de mejorar es practicar su conocimiento, pero necesita algunos ejercicios para eso. Dave Thomas , uno de los autores del libro The Pragmatic Programmer, introdujo el concepto de Code Katas , similar al concepto de kata en las artes marciales.
Puedes echar un vistazo allí: http://codekata.pragprog.com/
fuente
Salta al agua, al principio puede estar frío y sentirás la tentación de salir, pero pronto tu cuerpo se acostumbrará y se calentará nuevamente y, a medida que te sientas cómodo en el agua, podrás nadar y quizás entrar a la piscina. final profundo.
Acabo de terminar la universidad hace un par de meses donde estudié Java. Igual que usted, no tenía ni idea de cómo codificar correctamente. Hace aproximadamente un mes, quería construir una aplicación web en PHP. No sabía lo que estaba haciendo, pero solo lo hice. Al principio fue intimidante y abrumador, pero a medida que practicas se vuelve natural. Incluso escribí la aplicación muchas veces, cada vez simplificándola aún más. Ahora estoy trabajando en la aplicación desde cero, pero esta vez estoy descubriendo cómo hacerlo objetivamente orientado y usando PEAR y su módulo de forma rápida, que es otro obstáculo que tengo que superar, pero determinado y emocionado de todos modos.
Entonces practica. Salta al agua! La mejor de las suertes :)
fuente
Sugiero aprender toda la sintaxis de su idioma favorito. Comprenda cómo usar funciones virtuales, herencia, lambda si existen. Una cosa que hice fue tomar una gran biblioteca de miedo (hice esto con boost y STL para C ++) y ver si cada línea y cada palabra clave tienen sentido.
O bien, puede leer la referencia de sintaxis del idioma si hay una buena que cubra la versión más actualizada. Como ejemplo, aquí está la referencia de C # (no la versión en la parte superior. Cometí el error al mirar una versión anterior más popular que no tenía la sintaxis que estaba buscando)
fuente
El consenso general es "escribir más código", con lo que estoy de acuerdo, pero añadiré a ese consejo que debes escribir muchos tipos diferentes de código. Java está bien en lo que respecta a los idiomas, pero definitivamente debe escribir código tanto arriba como abajo del espectro de potencia. Además de Java, sugeriría hacer algunos proyectos pequeños en un lenguaje de nivel inferior (C es bueno para esto), un lenguaje de secuencias de comandos (prefiero perl, pero Python también es una buena opción), un lenguaje funcional ( lisp es la recomendación general aquí, pero OCaml y Haskell también son buenas opciones), y al menos se sienten cómodos leyendo un lenguaje ensamblador.
Además, elija alguna variedad en los tipos de programas que implementa. Considere implementar al menos una GUI de escritorio, una aplicación web enriquecida, un cliente y servidor de red, un controlador, una utilidad de mezcla de datos, un rastreador de rayos y una simulación física.
Todos los proyectos deben tener un alcance relativamente pequeño, el objetivo no es tener un programa completo, sino obtener una amplia experiencia en los diferentes dominios con los que puede encontrarse, para aprender los diferentes tipos de pensamiento necesarios para cada uno, y para averiguar dónde están tus intereses.
Una vez que haya hecho eso, tendrá una buena idea de qué tipo de programación le interesa más, y puede encontrar o comenzar un proyecto de código abierto para obtener experiencia trabajando en bases de código grandes, lidiando con proyectos a plazo, y trabajando con otros desarrolladores.
fuente
Estás obteniendo algunas respuestas similares y la mía también será la misma. Escribir código Hay dos buenas maneras de hacerlo.
Cualquiera de ellos le brindará la experiencia directa de programación que necesita, así como la participación en las comunidades de programación a medida que aprende y tiene que hacer preguntas para obtener más provecho. Cometerás muchos errores. Esto es bueno: si deja de cometer errores, ha dejado de aprender y necesita encontrar una nueva forma de desafiarse a sí mismo.
fuente
Mis sugerencias
fuente
Las revisiones por pares realmente ayudan a mejorar la calidad de su código. Si no tiene un mentor real, puede publicar su código [después de reducirlo al mínimo necesario] en StackOverflow o RefactorMyCode o en las listas de correo y las personas lo ayudarán a mejorar la calidad de su código.
fuente
"¡Práctica!" Eso es un cliché.
Debes revisar lo que has aprendido en las clases de matemáticas y hacer algunos programas que aborden los problemas. Además, implemente un programa de ascensor, una máquina expendedora (que calcula los cambios en las monedas), para agudizar sus habilidades lógicas. Piense en todo en la vida cotidiana e impleméntelos.
fuente
Sí, la práctica es extremadamente importante para desarrollar habilidades de programación y mantenerlas afiladas. Sin embargo, practicar solo solo te llevará hasta cierto punto. También debes aprender de las personas que saben más que tú. Existen técnicas de las que nunca ha oído hablar, prácticas cuyos beneficios no son evidentes de inmediato y trucos que nunca podría inventar usted mismo.
La forma de aprender nuevas técnicas, trucos ingeniosos y prácticas útiles son muchas. Leer libros. Habla con tus compañeros de trabajo. Hacer preguntas. Revise el código de otras personas y haga que revisen el suyo. Lea blogs y artículos sobre programación, incluido este sitio. En resumen, no trabaje en el vacío.
Ah, y si no estás seguro de lo que significa NP-complete, o si la notación big-O te asusta, entonces probablemente deberías tomar algunas clases de teoría de computación y algoritmos.
fuente
Diría que debería leer sobre los patrones de diseño, como Builder, Factory, Composite y, finalmente, Observer, Mediator y Flyweight. Los patrones de diseño no son el final para las soluciones de codificación, pero demuestran cómo implementar conceptos teóricos de programación orientada a objetos.
fuente
Solo puedo sugerir lo que me ha funcionado. Soñé con aprender lenguaje de programación y crear un motor de ajedrez con él. He dejado pasar tiempo en libros, artículos y pequeñas muestras. Así que decidí verificar proyectos reales que tengan mejor documentación para el desarrollador. Elegí uno y comencé a leer el proyecto día a día. No pienses que pasar los días es una pérdida de tiempo mientras lees. Es mucho mejor que pasar tiempo leyendo artículos y libros. Encontrará muchas cosas que no están claras a primera vista, pero día a día esto cambiará si intenta investigar con paciencia. No esperes entender todo en una semana. Tienes que mantener tu baja autoestima cuando no entiendes algunas cosas. Solo trata de descubrir cómo funciona y disfruta esta increíble cosa.
Elija un proyecto existente que le apasione. Comience a leer códigos, depúrelo e intente comprender cómo funcionan las cosas todos los días. También usa el proyecto por ti mismo. Luego comience a agregar algunas características que desee. Incluso intente escribir la misma aplicación o una similar.
fuente