1.Decida por qué quiere convertirse en un buen programador: ¿es porque quiere un trabajo, preferiblemente en una empresa de software bien remunerada? Excelente. Entonces estás listo para llegar a NINGUNA PARTE. Todos los buenos programadores que conozco son buenos porque les encantó lo que hicieron. Desarrollar interés en la programación. Vea, la programación es la única rama en ingeniería donde puede aplicar de inmediato lo que aprende. Es posible que tu papá tenga un auto, pero ciertamente no te permitirá modificar el V2 ni cambiarlo por un v6 solo para ver qué sucede. Pero con las computadoras puedes hacer lo que quieras. ¿Quieres simular un virus? Guay. Instale un SO virtual y ejecútelo. Luego, cuando haya terminado, retire el disco duro virtual. Si eres bueno en lo que haces, te pagarán y seguramente obtendrás el trabajo soñado. Sí, incluso quiero trabajar en una gran empresa de software. Pero eso no es por el gran sueldo. Es por el trabajo que hacen. Debido a la exposición que tendré. ¿Alguna vez se ha molestado en averiguar qué hacen todas estas empresas y las tecnologías habilitadoras detrás de sus productos o el tipo de I + D que realizan? Los trabajos vendrán. No te hagas un imbécil para uno. Sachin no es un gran jugador de cricket hoy porque decidió jugar al cricket para ganar dinero y obtener docenas de endoresements.
2. Lenguajes de programación: muy a menudo las personas equiparan las buenas habilidades de codificación con el número de idiomas de programación conocidos. Eso es malditamente falso. Si bien conocer mucho lenguaje de programación es bueno y, a veces, incluso, esencial; Es más importante que conozca muy bien uno o dos idiomas. ‘Lo sé’ y he usado más de una docena de lenguajes de programación y, sin embargo, C y Java son con los que me siento realmente cómodo. Eso es triste, por supuesto. Realmente quería ser bueno en la Asamblea y Lisp también. Nunca tuve el tiempo o la oportunidad de desarrollar esas habilidades. Ser bueno en un idioma lleva años (al menos 2 años). Ser bueno en un idioma significa que entiendes dónde se usa mejor y dónde usar ese idioma no tiene ningún sentido. Por otro lado, conocer un idioma lleva de 3 días a una semana. Si eres un principiante, aprende C primero. No compre Yashawant Kanetkar. Compre el libro “El lenguaje de programación C” de Brian W Kernighan y Dennis M Ritchie (si no sabe quiénes son, haga esto 1. Bofetada 2. Busque en Google sus nombres). Este libro no es el más fácil pero es el mejor. Es un libro pequeño pero es el más poderoso. Se han criado generaciones de programadores. Y si crees que este libro es difícil para ti, por favor, no guardes ningún deseo fuera de lugar de ser un buen programador y no pierdas tu tiempo leyendo más esta publicación. La programación es un arte (no una ciencia. Sí, lo has leído correctamente) y, como cualquier arte, requiere un esfuerzo minucioso.
Algunas personas sugieren Python como el primer idioma que se aprende. Python es ciertamente un buen lenguaje y también es fácil. Pero tendrá que depender principalmente de Internet para obtener ayuda, ya que no muchos conocerán Python. También C tiene el uso más amplio entre todos los lenguajes de programación. Además, por favor NO use Turbo C. Está tan anticuado. Utiliza GCC. Si está en Windows, descargue Dev C ++. Tiene CCG
- ¿Puedes convertirte en diseñador web solo por ser un experto en WordPress y sin conocer HTML y CSS?
- ¿Debo aprender Java o C ++ primero si estoy interesado en la ciencia de datos y los algoritmos, pero también en el desarrollo web (pero no planeo enfocarme en esto)?
- ¿Por qué las personas hacen programación web del lado del servidor con php o Python (django) cuando hay nodejs disponibles?
- ¿Cuáles son los elementos clave de un sitio web bien diseñado?
- ¿Angular 2.0 tendrá alguna de las capacidades DI de Angular 1.0?
3. Algoritmos: cualquier buen programador tiene una buena comprensión de los algoritmos. No es necesario que conozca cada algo de memoria (de hecho, los buenos programadores nunca aprenden cosas de memoria), pero debe comprender cuándo usar qué. Algos ampliará su comprensión y le dará nuevas formas de abordar los problemas. Otra cosa importante son las estructuras de datos. Es más importante que algo. Una vez que haya elegido (o desarrollado) la estructura de datos correcta, el algoritmo se vuelve evidente. Para algo, lea el libro “Introducción al algoritmo” de Thomas H Cormen et al. También puede referirse a “Estructuras de datos en C y C ++” de Andy Tanenbaum. Además, si desea participar en concursos de codificación (los respetables), “The Art of Programming Vol I to V” de Donald E Knuth son obligatorios. También puede ser “Matemáticas concretas” de Donald Knuth. Una vez más, leer no significa recordarlo todo. Solo trata de entender lo que está escrito.
4. Concursos de codificación: los concursos de codificación son buenos para desarrollar tus habilidades algorítmicas y te hacen pensar rápido. Es una buena idea participar en ACM ICPC o Entregar más rápido a través de Crowdsourcing. Luego están los concursos de codificación (como Sun’s Code for Freedom, Google’s Summer of Code, Microsoft’s Imagine Cup) donde se desarrolla un software completo. Tales concursos se extienden por muchos meses. Ambos requieren diferentes tipos de habilidades. Puede ser bueno en uno y malo en otro y, sin embargo, podría ser un buen programador. Los concursos como ICPC requieren mucha práctica, pensamiento rápido y se espera que mantengas algos en el fondo de tu mente. CFF, GSoC, por otro lado, requiere creatividad y enfoque extendido durante un largo período de tiempo. No tiene que encontrar soluciones demasiado rápido y no tiene que atrapar algos. ICPC es como T10, mientras que CFF, GSoc e Imagine Cup son como Test Matches. Te sugiero que participes en ambos tipos y luego decidas si quieres concentrarte en uno o en ambos.
5. Participación en proyectos de software libre: DEBE participar en algunos proyectos de software libre. Hay demasiados Estoy trabajando en SCALASCA en este momento y luego pasaré a Sun Grid Engine y Sun xVM Hypervisor y contribuiré con el código allí. Aprendes mucho de esto. Puedes ver mucho código y aprender las mejores prácticas. Y lo mencioné, también se ve bien en tu CV. La mayoría de las personas se resfrían cuando pasan por algunas de las prerrequisitos de tales proyectos. Tome Thunderbird por ejemplo. Necesitaría saber mucho C / C ++ y Javascript (para desarrollar módulos). Ahora no espere hasta el día en que sea un experto en estos idiomas antes de contribuir. La programación es un arte, no pierdas el tiempo afilando tu lápiz cuando deberías dibujar. Puedes pedirme direcciones.
6. Patrones de diseño: cualquier arte se aprende emulando. Y por lo tanto, debes emular lo mejor. Los patrones de diseño son soluciones arquitectónicas probadas y comprobadas (del tipo de software) para algunos problemas de diseño de software comúnmente encontrados. Y, por lo tanto, se necesita un conocimiento básico de algunos patrones de diseño comunes si planea desarrollar algo que es incluso moderadamente complejo. Sugiero “Head First Design Patterns” de Oreilly como primer paso.
7. Aprendizaje por emulación: emula lo mejor. Y esto es posible leyendo libros escritos por los mejores y / o revisando el código de algunos de los mejores proyectos de software libre. Instaría a cualquier persona seria acerca de la programación a leer el libro “The Art of Unix Programming” de Eric S Raymond (no se olvide de abofetearse primero por no saber quién es Eric Raymond y luego buscar en Google su nombre). No eres un programador si no has leído ese libro. Período.