Cómo pasar del desarrollador o programador de software Zero To Hero

No hay tal cosa como el nivel de ” héroe ” en ninguna ciencia que yo sepa. En particular, la Informática está al borde de lo que más se aprende, solo para descubrir lo poco que saben.

Dicho esto, esto no debería ser algo desalentador, sino más bien una motivación para sumergirse en un campo profundo con muchas oportunidades.

La buena noticia es que en realidad hay caminos a seguir para pasar del paso 0 al más allá en informática como muchas otras ciencias. Estos pasos facilitan el viaje por la línea, en lugar de un atajo, porque no existe un atajo o “solo 10 días” para aprender X tampoco.


Antes de comenzar a aprender algo sobre programación, debe existir este interés o curiosidad genuina para explorar y revelar lo que se puede hacer con la informática, o para su pregunta específicamente sobre programación.

Este sentimiento se puede producir al escuchar a otras personas en el campo hablar sobre su experiencia, o al verlos demostrar cosas increíbles que se construirán dentro de este CS. Sin él, el viaje durará muy poco y solo puede terminar con desilusión.

  • Aprender los fundamentos de la informática y, en este escenario, los fundamentos de programación son una clave esencial:
    • Estructuras de datos en su hábitat.
    • Naturaleza de los algoritmos.
    • ¿Cómo funcionan realmente las computadoras?
  • Hay una lección muy importante que aprender mientras aprendes lenguajes de programación. Aprenda uno y apréndalo muy bien, manténgase hasta el nivel de competencia para escribir algoritmos sin preocuparse por el idioma.
  • Aprender un lenguaje de programación realmente bien, lo que significa aprender todos los aspectos básicos de programación. Esto hará que tu vida sea un programador más fácil cuando pases al segundo, tercer y más idiomas.

Larry Wall es el creador de Perl, un lenguaje de programación, dice:

“La programación de computadoras es muy parecida a escribir una receta”.

Larry Wall: programación de computadoras en 5 minutos.

Aquí hay dos programadores increíbles para explicar por qué piensan que estos lenguajes se consideran un activo importante en el cinturón de un programador.

Larry Wall: 5 lenguajes de programación que todos deberían saber

  • Javascript: ligero , buen amigo del navegador.
  • Java: (El COBOL del siglo XXI, a todos les encanta odiarlo, el trabajo industrial / empresarial ).
  • Haskell: lenguaje funcional real, academia. (¡Lisp moderno, tal vez!)
  • C (C lang): Nivel bajo , 45 años de edad, todavía hace la mayoría de los trabajos como un encanto.
  • Un lenguaje de secuencias de comandos , tal vez Perl (su sesgo, por supuesto), pero hay muchos más, Ruby Python.

Bjarne Stroustrup: los 5 lenguajes de programación que necesita saber

“En primer lugar, nadie debería llamarse a sí mismo profesional si solo supiera un idioma. Cinco es un buen número de idiomas para saber”. Bjarne Stroustrup, el creador de C ++.

Sus elecciones son:

  • C ++
  • Java
  • Pitón

“Si los conoce, no puede evitar no saber un poco sobre” :

  • Ruby y Javascript.
  • C y C # (C sostenido).

“Algo más allá de la norma, quizás un lenguaje funcional”.

No te quedes atascado en elegir idiomas y esperar. Elija uno y comience antes para poder pasar a otros.

Aquí hay un diagrama para ver cuán profundo es el nivel bajo:


Si has llegado hasta aquí para leer la respuesta, creo que hay esperanza de ir más lejos ahora :).


El triángulo de la educación en informática y programación es más como un polígono:

  • Primero: la educación, aprender de buenas fuentes de educación. Aquí hay numerosos cursos buenos para principiantes y avanzados:
    • Princeton: Algoritmos, Parte I
    • Princeton: Algoritmos, Parte II
    • MIT: 6.006: Introducción a los algoritmos.
    • MIT: 6.046J / 18.410J: Introducción a los algoritmos (SMA 5503)

Hay muy pocas excusas para no encontrar buenos fundamentos de informática en Internet de forma gratuita. Recuerde seguir un curso y no perder demasiado tiempo.

  • Segundo: material para estudiar. Hay muchos libros excelentes de Algoritmo y Datastrucure, pero los dos que los excluyen son:
    • Introducción al libro de Algoritmos de Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest y Clifford Stein. AKA CLRS.
    • Introducción al análisis de algoritmos por Robert Sedgewick.

He estado programando durante 7 años (2016), tengo una copia de CLRS en mi escritorio en la mayoría de los lugares donde me mudo.

Consulte esta pregunta de Quora sobre el CLRS de autoestudio:

¿Cómo debería estudiar yo mismo “Introducción a los algoritmos”?


  • Tercero: por lo general, este es el rincón donde el estudiante debe estar dispuesto a invertir tiempo en aprender un tema, independientemente de la ciencia y la dificultad. De lo contrario, no completará el triángulo de aprendizaje.

Para el cuarto, que he agregado en la parte superior es la práctica . La única forma real de aprender a programar y enfrentar los desafíos es ensuciarse las manos con diferentes áreas de programación. Si es un guión o la construcción de un producto. Solo practicar y mirar un buen código te hace un mejor programador. Un buen código proviene de trabajar con buenos programadores y la práctica proviene de usted como programador que aprende e implementa lo que ha aprendido.

Sin una buena práctica, uno podría convertirse fácilmente en este tipo:


No se sienta abrumado por todo esto, porque con poco aprendizaje y pasos dados, uno puede ir mucho más lejos que cualquier otra Ciencia, según tengo entendido. Además, no he conocido a ningún programador que no tenga sentido del humor :), mantén esa sonrisa, tus días estarán llenos de muchos incidentes como este:

Si todavía tiene dudas y no está seguro de si fue una buena idea, escuche lo que los programadores tienen que decir. He hecho una lista de algunas de las charlas más alegres sobre ingeniería de software aquí:

La respuesta de Yad a ¿Qué charlas tecnológicas debería ver todo ingeniero de software?

Tendrá un largo camino por delante y una gran parte no implica ninguna codificación.


En primer lugar, asegúrese de que es excelente para leer y escribir textos en inglés de tal manera que otros no tengan problemas para comprender lo que ha escrito. Incluso si el inglés es su idioma nativo, siga practicándolo porque un ingeniero de software lee y escribe mucho documentos simples y simples.

¡Aprende a ser breve y preciso al escribir textos!


¡Aprende a dibujar! Con lápiz y papel, ya que tendrás que hacer eso también. Muy a menudo, en realidad. Cuando esté con un cliente que le pida que cree algo, deberá poder tomar notas rápidas pero también dibujar bocetos rápidos para que el cliente los apruebe. Necesitará esta información para hacer una estimación aproximada de cuánto tiempo necesitará para el proyecto.


¡Aprende a administrar tu horario! Practique esto planificando todo lo que hará hoy. No necesita saber cuándo lo hará, pero deberá poder calcular cuánto tiempo le llevará. Entonces, listas simples como “Almuerzo: 20 minutos, cena: 30 minutos, cocinando la cena: 10 minutos, caca: 15 minutos, durmiendo: 8 horas, leyendo esta publicación: 10 minutos, escribiendo un comentario a esta publicación: 10 minutos, use google para encontrar el significado de la vida: 30 minutos, etc. ”

Necesitará saber cuánto tiempo le tomarán las tareas promedio, ya que le pagarán por el tiempo que ha estimado, en general. Si no cumple con los plazos, ¡entonces no es un desarrollador de héroes! Una vez que comience a codificar, su proyecto se dividirá en muchas tareas pequeñas y deberá poder obtener una buena estimación de cada tarea para poder calcular cuánto tiempo llevará terminar el proyecto. Puede agregar algo de tiempo para que pueda permitir algunos pequeños retrasos, pero cada proyecto tendrá una fecha límite difícil. ¡Perder ese plazo es realmente malo! Malo para el trabajo, porque si a menudo no cumple con los plazos, ¡no tendrá trabajo!


Deberá poder planificar las cosas. Entonces, un cliente le pide que cree un juego de cartas. Digamos, un juego de póker, estilo Texas Hold’em. Todo lo que tiene que hacer es barajar las cartas y repartirlas entre 2 y 6 jugadores, además de realizar un seguimiento de las apuestas que hacen, además de decidir quién gana el bote. Y si bien esto parece fácil, ¡puede ser un proyecto desafiante!

Entonces, su planificación sería anotar primero cierta información. Obtenga documentación de las reglas de Poker y asegúrese de que el cliente esté de acuerdo con ellas. Normalmente, ese sería el trabajo de un Gerente, pero supongamos que es un programador independiente que hace la pila completa y el trabajo completo. No puede hacer una estimación del tiempo requerido si no conoce todos los requisitos antes de comenzar, por lo que usted y el cliente deben acordarlo.

Si utiliza métodos ágiles, su cliente puede solicitar cambios durante el desarrollo que podrían estropear la planificación, pero el cliente se daría cuenta de esto y aceptaría esos retrasos. Sería parte del proyecto de desarrollo, como una especie de supervisor.

A continuación, deberá crear todo tipo de tareas para las diversas funciones que necesita para crear el programa. Cosas simples como crear una baraja de cartas, barajar, administrar jugadores, administrar apuestas, decidir el ganador, etc. Estas serían muchas cosas pequeñas y la suma de todo sería el juego de póker. Y para cada tarea necesitará estimar cuánto tiempo tomará terminarla.

¡Tenga en cuenta que la investigación y las pruebas también cuentan como tareas y deben ser parte de su planificación! Si usa pruebas unitarias, escribir pruebas unitarias también debe ser parte de la planificación.

A veces también tendrá que escribir manuales y archivos de ayuda, o documentar su código si su código es una biblioteca, no una aplicación. ¡Estas tareas también son parte de la planificación! También está creando los archivos de instalación si el proyecto necesita ser implementado.

Cuando se realiza la planificación, tiene un tiempo estimado antes de que se termine. Agregue alrededor del 50% para eventos inesperados y calcule la fecha de finalización en función de la cantidad de horas en su planificación dividida en 40 horas / semana para establecer la fecha límite para el proyecto. Intenta que el cliente esté de acuerdo con esto. Sin embargo, el precio que pagaría sería la cantidad de horas antes de agregar ese 50%. Y multiplicado por su tarifa por hora.

Si quiere la entrega antes, considere trabajar 48 horas / semana por una tarifa por hora ligeramente más alta. También tenga en cuenta que incluyó una sobrecarga del 50%, por lo que es posible entregarlo antes.


Una vez que el cliente esté de acuerdo con la documentación, la planificación y las cosas financieras, puede hacer la codificación real. Te dije que la codificación es solo una pequeña parte de todo el proceso, ¿verdad?

¡Al lado de la codificación, también necesitará que se prueben las cosas! Como programador único, puede escribir pruebas unitarias para asegurarse de que las partes de su código funcionen como se espera. Pero una vez que el proyecto toma forma, puede pedirle a otra persona que comience a probar las partes del código que están terminadas. A menudo, esto lo realiza un probador y en un entorno ágil, incluso el cliente puede participar en las pruebas.

Asegúrese de que su código esté bien documentado, ya sea mediante comentarios en el código fuente o escribiendo documentación adicional. Si también se requiere un manual, tendrá que escribirlo o que otra persona lo escriba por usted. (Planeaste escribir un manual, ¿verdad?)

Sin embargo, ir más allá de este paso es la parte más difícil. Y a medida que se acerca la fecha límite, ¡la tensión comienza a aumentar! ¡Sigue así!


Luego, el proyecto se realiza, se prueba, se documenta con un manual y todo lo demás, y se puede entregar al cliente. El cliente tiene que aprobarlo, hacer los pagos finales y estará contento si terminó en la fecha límite. Incluso sería más feliz si terminaras mucho antes de la fecha límite, en cuyo caso serás un héroe. Si no cumplió con la fecha límite, podría haber perdido un cliente a menos que tenga buenas cualidades para besar traseros, ¡ya que tendrá que hacer todo lo posible para mantener al cliente feliz!


A menudo, las empresas dividen estas tareas entre un grupo de empleados y tienen una responsable de las interacciones con el cliente, una para escribir documentaciones, una para diseñar el proyecto, una para hacer la planificación, una para escribir el código, una para probar y algunas más Ayudantes adicionales. Por lo tanto, serías parte de un equipo heroico, como Hawkeye de los Vengadores. Si quieres ser un solo héroe como Daredevil o Spiderman, ¡deberás poder hacer todo lo anterior tú mismo!

Oh, ¿lenguajes de programación que necesitas estudiar? ¡No importante! Son solo herramientas, como un carpintero tendrá una sierra, destornilladores, martillos, llaves y un montón de otras herramientas. Un buen carpintero podrá usar muchas herramientas diferentes. Un programador de héroes tendría muchos lenguajes de programación en su kit de herramientas. ¡Y tenga en cuenta que la codificación es solo una pequeña parte del trabajo!

Es difícil ser un héroe e incluso saber qué es. Tu pregunta no tiene nada que ver con el heroísmo. Se trata de ti, ¿cómo te conviertes en algo grandioso? Pero los verdaderos héroes son desinteresados. Ellos salvan a otros. Ayudan a otros a encontrar su propia grandeza. Si quieres ser un programador de héroes, sé el programador que a todos les gustaría tener para salvarlos, aquel en el que las personas sientan alivio y alegría al ver unirse al equipo. Haga que su misión sea encontrar formas de mejorar las cosas para todos los demás, y podrá responder preguntas más importantes que esta.

Aprenda a escribir código limpio y fácil de refactorizar, para que la próxima persona tenga un momento agradable insertando sus necesidades en sus viejos esfuerzos. Realmente escuche a las personas con las que trabaja y respete sus opiniones. Dirige a otros cuando aprendas lo suficiente como para comenzar a compartir, pero nunca creas que lo sabes todo, porque nunca lo sabrás. ¿Te gustan los sabelotodos o personas increíblemente hábiles pero humildes? La mayoría de las personas prefieren lo último, así que no te esfuerces por ser el primero, porque no es útil para ti ni para nadie más.

Lee mucho el código de otras personas (este es un acto parcialmente desinteresado, lo creas o no, te preocupas por su trabajo al dedicar tiempo a conocerlo), y cuando no entiendas algo en él, involúcralos. . Pregúnteles si tienen tiempo para explicarlo o si es una técnica o patrón que tiene un nombre que puede investigar más a fondo. La mayoría de las personas se sienten mejor cuando alguien está interesado en su trabajo, y esto puede ser una situación beneficiosa para todos en varios niveles (desde encontrar un amigo hasta encontrar un buen trabajo).

Aún mejor, cuando te resulte muy fácil trabajar con el código de otra persona, averigua quién lo escribió y envíale una pequeña nota de agradecimiento. La programación puede ser una tarea ingrata, y ser agradecido por el buen trabajo tiene un gran efecto de aumento de la moral. Investigue los pequeños puntos débiles en las bibliotecas (vea de qué se queja la gente) y dedique tiempo a arreglar esas cosas, donde sea posible (y aprender cómo hacerlo cuando no lo sabe).

Los verdaderos héroes son trabajadores duros. Limpia cualquier desastre que encuentres. Deja todo mejor de lo que era cuando lo encontraste. Obtenga una reputación de ser un ayudante incansable, que hace que todo funcione sin problemas para todos los demás. Esta es una excelente manera de aprender sobre partes de sistemas que nunca vería, bailar diariamente entre innumerables estilos (y desorden) de código, y ser realmente bueno para superar desafíos cada vez más difíciles. Obtendrá una vista transversal de cómo las personas en todo el mundo de la codificación resuelven problemas, y le generará una mejor idea de las cosas correctas para hacer en cada situación en la que se encuentre.

¿Sabes lo que Superman nunca hace? Flexionar. Nunca hace poses para demostrar lo fuerte que es, porque ese no es él. Superman es un verdadero héroe, preocupado por los demás. Ayuda porque puede, y porque quiere, nunca probarse a nadie. Busque “Superman flexionando” en Google Images, y entre las imágenes de Superman no flexionando (estoy seguro de que lo ha hecho en algún momento, pero no es característico), encontrará muchas personas con camisas y disfraces de Superman, y la mayoría ellos son, lo adivinaste, flexionando . No entienden la mente de Superman. No saben qué es realmente un héroe. Él no dice “¡Mírame!” Él pregunta “¿Cómo puedo ayudar?”

Esta es la parte difícil de convertirse en un gran programador, por lo que no se trata de ti. Haz esto, y muchas otras cosas geniales caerán en tu regazo, y te las mereces. Nunca he hecho nada de esto, y he sufrido por ello, y también lo han hecho otros con los que he colaborado. Finalmente veo eso ahora a mis 30 años, y estoy trabajando para darle la vuelta. Espero que mi experiencia al hacerlo mal, y al ver el error de mis caminos, finalmente, pueda ayudarlo a hacerlo bien. No seas quien he sido. Ser un héroe.

* regresa a la oscuridad *

No sé cuántos años tienes, pero debido a la forma en que se hace la pregunta, supongo que todavía eres un adolescente. ¿Quieres convertirte en un buen desarrollador? Luego comienza a escribir código. El idioma no importa. Es importante que comprenda cómo funcionan los idiomas. Aprenda sobre los diferentes paradigmas (mientras comienza con uno y no con varios). Mucha gente que conozco comenzó a escribir mods para juegos. Otros trataron de facilitarles la vida y escribieron pequeñas aplicaciones para su computadora. Independientemente de lo que quieras hacer, hazlo de manera limpia. No uses soluciones alternativas. Si desea resolver un problema, intente encontrar la mejor solución. No es una solución hackeada que funcione. También recomiendo leer blogs y artículos de programadores conocidos. Robert C.Martins (alias tío Bob), Rich Hickey, Jose Valim, David Thomas son personas que vale la pena seguir en Twitter. También hay varias charlas disponibles en línea que son muy interesantes.

No hay mejor camino para mejorar. No sé tu nivel actual. Si recién comienza, busque un buen tutorial. Los sitios web de los idiomas correspondientes a menudo ofrecen buenas presentaciones y sugerencias para artículos y libros. Este siempre es un buen lugar para comenzar. Tan pronto como tenga conocimientos básicos resuelva tantos problemas como sea posible.

1. Comience con un lenguaje fácil como Python o Ruby, luego avance más alto.

2. Depende de lo que quieras hacer con la codificación. Si quieres aprender a codificar juegos, entonces aprende c ++ o Java.

3. Necesitas descubrirlo por ti mismo 😛

Ir a ProgramCreek.com

luego vaya a la sección de las diez preguntas principales de la entrevista de codificación,

Descargar PDF. Practica todo.

pero para hacer eso necesitas aprender java8, así que prepárate. Pídale a cualquier amigo suyo, que esté en Hyderabad Ameerpet, que le envíe por correo las notas de los señores de Harikrishna sobre Java. O puede ir a Hyderabad y aprender Java con Venkatesh en 53 días. Luego puede asistir a cualquier entrevista y aclararla.

Con mucha práctica, coraje y determinación.

More Interesting

¿Cómo es trabajar en BlackRock como desarrollador de software?

¿El libro 'Programming Pearls' está desactualizado?

¿Cómo puede una tienda de desarrollo web personalizada pasar a sus propios proyectos o startups?

¿Cuáles son algunas historias de éxito de graduados de campamentos de programación / codificación en línea a tiempo parcial?

Me gustaría trabajar en Nueva Zelanda como desarrollador de software. Cuales son las posibilidades?

¿Debería un desarrollador aprovechar una oportunidad de DevOps?

¿Cuáles son algunas formas en que una empresa de desarrollo de software puede encontrar proyectos?

Si la oferta de desarrolladores de software eventualmente excede la demanda, ¿qué sucederá?

¿Cuál crees que sería una buena estrategia para superar la escasez de talento para el desarrollo de software?

¿Deberían los desarrolladores tener derechos de administrador local en su estación de trabajo? ¿Existe una alternativa válida / productiva?

¿El principio YAGNI es realmente bueno para el desarrollo de software?

¿Qué proyectos debo hacer para incluir en mi currículum el puesto de desarrollador web, desarrollador de software, desarrollador de C # o SQL?

¿Cómo se gana la vida siendo un ingeniero de software independiente?

¿Realmente crees que el discurso de "las compañías de software están predicando" hay muy pocos ingenieros de software calificados disponibles en los Estados Unidos? ¿Es este discurso de 'no tener suficientes ingenieros calificados' un farol para lograr que el gobierno dé más H1B?

¿Es cierto que el desarrollo de software es un trabajo sin salida después de los 30, y que la mayoría de los desarrolladores de software solo pueden sobrevivir al iniciar sus propias empresas?