¿Qué consejo le daría un desarrollador de software experimentado a un principiante?

Mi consejo general para cualquiera que intente aprender a programar, especialmente si lo está haciendo por su cuenta, es trabajar en proyectos: tener una idea para un programa que le gustaría crear, descubrir un diseño e implementar eso. Si parece realmente útil, quizás incluso lo haga disponible a través de una tienda de aplicaciones o algo similar.

La razón de esto es que te expone a toda la gama de habilidades necesarias para ser un buen programador. Tienes que aprender a entender el problema u oportunidad. Debe aprender a encontrar una solución y diseñarla. Debe poder implementar, depurar y probar esa solución. Probablemente necesitará entregar el programa y respaldarlo después de que se haya entregado, reparando errores y agregando nuevas características. Cuanta más experiencia tenga haciendo todas estas cosas, mejor será.

Intenta encontrar desarrolladores más experimentados que estén dispuestos a trabajar contigo. Esto puede significar hacer una programación en pareja, donde trabajen juntos en una sola tarea, o donde la persona de mayor rango esté revisando su código y haciendo sugerencias sobre cómo puede ser mejor.

Al final, sin embargo, lo principal que necesitará es la experiencia. Eso requiere tiempo y esfuerzo, y requiere que hagas mucha programación.

No se obsesione con el aprendizaje de idiomas, algoritmos, estructuras de datos, etc. Estas son las herramientas del comercio, no el comercio en sí. Son necesarios, pero no deberían ser su foco. Puede aprenderlos a medida que encuentre razones para usarlos. En cambio, aprenda a programar utilizando las herramientas que le parezcan apropiadas para cualquier tipo de programación que le interese.

NO APRENDA UN LENGUAJE DE PROGRAMACIÓN.
NO APRENDA CÓDIGO.

APRENDA CÓMO PROGRAMAR

Los lenguajes de programación van y vienen. En media generación, los codificadores serán tan obsoletos como los farriers (los muchachos que solían tener buenos empleos pagando caballos antes de que China robara todas las fábricas de herradores).

La programación es una forma de pensar obtenida a través de la práctica.
Aprenda buenas técnicas de programación para: mantenibilidad, confiabilidad, eficiencia y usabilidad.
Aprenda las mejores prácticas para: legibilidad, confiabilidad, convenciones de nomenclatura
Aprenda a encapsular su código en objetos de responsabilidad única que sean altamente cohesivos y vagamente acoplados.

Elija un problema y resuélvalo usando una variedad de idiomas. Incluso puede ser fizzbuzz, que tiene muchas soluciones en muchos idiomas disponibles en la web. O puede ser algo aplicable a su vida, como escribir un programa para hacer su tarea de álgebra o geometría.

Nike no es solo una zapatilla de tenis. Ella era la diosa de la victoria. pero la única forma de lograr la victoria en aprender a programar es “simplemente hacerlo”.

No seas uno de esos programadores que insisten en que su idioma elegido es el “mejor”. Eso es chiflado. Hay mejores idiomas que otros, pero el “mejor” idioma es el que hace el trabajo, y el que requiere su empleador o tarea.

Además, el código es código. Obviamente, los lenguajes tienen una sintaxis y un formato diferentes, y en ocasiones se acercan, pero los buenos programadores tienen la flexibilidad de AL MENOS leer el código en otro idioma y entender lo que está tratando de hacer. Una vez que sea un buen programador en un idioma, invierta el esfuerzo para aprender otros idiomas. No solo lo hace más atractivo para los empleadores, sino que le brinda la flexibilidad para poder determinar qué idioma o enfoque puede ser mejor para abordar una tarea en particular.

Lo que terminarás aprendiendo es que, con las herramientas de desarrollo modernas, una vez que les digas “estoy escribiendo en este idioma”, te tomarán de la mano y te ayudarán con gran parte de los matices. ¿Necesito usar un punto y coma aquí, o solo al final del ciclo? ¿Cómo escribo if / then / else en este idioma?

No estoy diciendo que todos los lenguajes sean idénticos, o que alguien que codifique en C # pueda sobresalir en LISP, pero que la mentalidad de un buen desarrollador de software no estará limitada al usar una sola herramienta cuando podría tener un Gran caja de herramientas.

El desarrollo de software no se trata de lenguajes específicos, se trata de aprender rápidamente cosas nuevas y cuándo usar cuáles. Una cosa que realmente me ayudó en mi carrera es el hecho de que también tengo un profundo conocimiento de las redes, los servidores y la arquitectura de la computadora. Eso hace una gran diferencia cuando se trata de aplicaciones en clúster a gran escala. Ayuda en el diseño de aplicaciones, ayuda cuando habla con el cliente, ayuda cuando habla con el chico de TI sobre sus requisitos de hardware o nube.

Entonces, si hay un solo consejo que puedo darle, es no solo enfocarse en los lenguajes de programación, sino también obtener una buena comprensión del panorama general en el que deberían ejecutarse sus aplicaciones.