Durante los primeros años de mi carrera fui autodidacta. Así es como recogí las cosas:
- Programación mediante copia. Esto fue en el día cuando tenías libros en papel y tenías que escribir los ejemplos a mano. Esta fue una buena práctica ya que ayuda a enseñar la sintaxis sin tener que entender la estructura. Después reflexionaría sobre el código para obtener una comprensión más profunda.
- La lectura de materiales de fuentes primarias , por ejemplo, RFC, la especificación del lenguaje Java, el formato de archivo de clase, etc. Las fuentes secundarias como Stack Overflow y YouTube pueden ser buenas para obtener una respuesta rápida, pero no dan una idea completa de lo que está sucediendo.
- Proyectos tecnológicos tontos y locos. En mi primer trabajo recibí un Sun 3/60 sin disco. Tenía un monitor a color de 19 ″ que era enorme en ese momento. Así que decidí intentar arrancarlo desde mi caja de Linux. (Era un procesador primo – 64G ram dual pentium con un precio de $ 3000.) Sabía poco sobre cómo hacer esto, pero el administrador del sistema en mi trabajo me ayudó con consejos cuando me atasqué. Aprendí a usar tcpdump para inspeccionar el tráfico de paquetes y ver dónde se estancaban las cosas. Esto me llevó a comprender protocolos como RARP, TFTP, etc. También tuve que aprender mucho sobre la administración general de Linux, la configuración de varios servicios (NFS, DHCP, etc.), cómo compilar software de forma cruzada, etc.
- Experiencia laboral. Aprendí a ser un desarrollador con mucha gente experimentada a mi alrededor. Algunos de ellos eran básicos (por ejemplo, cómo usar emacs) y otros eran bastante avanzados (sistemas distribuidos con CORBA). Todo esto ayudó a construir una comprensión más rica de cómo desarrollar software.
- Usar muchos sombreros en una pequeña empresa. Mi segundo trabajo como desarrollador fue en una pequeña empresa (4 ingenieros) y todos tuvimos que usar muchos sombreros. Aprendí a escribir SQL, procedimientos almacenados, PHP y C, cómo configurar un firewall, VPN y software de detección de intrusos, etc.
La teoría de CS llegó más tarde cuando estaba en la universidad. Ese también es un componente importante, especialmente si está buscando trabajar para una gran empresa de tecnología.
- ¿Cuáles son algunas buenas ideas de software que fallaron?
- Soy un ingeniero de software de la India y he pasado mis últimos 15 años en el extranjero en varios países. ¿Qué lugar en la India es mejor para que un NRI como yo se establezca al regresar a la India con un trabajo decente?
- ¿Qué es esencial para convertirse en un ingeniero de software profesional?
- Si los ingenieros de software son más efectivos cuando trabajan solos, ¿cómo los manejan las compañías tecnológicas?
- ¿Qué hace un ingeniero distinguido en Microsoft? ¿Cómo me convierto en uno?