Cómo convertirse en un ingeniero de software estelar al final de mi licenciatura

Me gustan muchas de estas respuestas porque les cuento las mismas historias a todos los que enseño, entreno o hablo sobre este tipo de tema.

Hay muchas habilidades que no se enseñan en la escuela y que probablemente se aprendan a tiempo, pero tengo entendido que gran parte proviene de habilidades inactivas que hemos desarrollado temprano en la vida:

  • Solución sólida de problemas, ya sea que lo tenga o no intuitivamente. Puedes semi-aprender esto: es como una buena imagen de invitado o usar el equivalente de un modelo humano oculto de Markov (HMM) … pero si no tienes la base, la fuerza bruta te hará menos eficiente.
  • Capacidad para ver cosas que otros no pueden ver o son incapaces de comprender. Detalles o experiencias aparentemente no relacionadas a menudo están vinculados.
  • Conocer y comprender los negocios: esto se puede aprender, pero las habilidades sociales y el lenguaje a menudo no se proporcionan. Lo mismo ocurre con la administración del equipo y la interacción con colegas: si no puede trabajar con otros, generalmente no importa cuán inteligente sea, no será contratado.

Supongo que mi historia es a la que algunos han aludido es tener habilidades en muchos reinos, mantener los ojos abiertos, ser curioso, estar activo físicamente y no tener miedo de saltar al código con pequeños proyectos completables. Diablos, mantengo un blog de cosas aleatorias para ayudar a otros y lo he hecho desde mi licenciatura en 2007.

Me estoy repitiendo mucho hoy 🙂

  • Poder hablar de manera inteligente sobre sus proyectos. Qué resolvió, cómo lo resolvió y por qué su solución fue buena (más barata, más rápida, más bonita, lo que sea).
  • Haz cosas fuera de clase. Contribuya al código abierto, escriba una aplicación, cree un microservicio. De nuevo: qué, cómo, por qué.
  • Trabajar con otros; Aprender el desarrollo colaborativo. Github es tu amigo, al igual que la integración continua con, por ejemplo, Jenkins o Travis. Nunca jamás pierdas el trabajo.

Y cubra sus apuestas: guarde cada programa de estudios que obtenga, preferiblemente en una caja fuerte. Nunca se sabe cuándo podría necesitar transferir (y es MUCHO más fácil tenerlos). ¡Buena suerte!

  • Considera que tu curso es el comienzo de tus estudios, no el final. Únase a un proyecto de investigación con un profesor. Trabajar en software de código abierto. El trabajo del curso es necesario pero no suficiente para ser un gran ingeniero de software.
  • Encuentra excelentes compañeros para pasar el rato y hacer proyectos con ellos. Es mejor si son más inteligentes / tienen más conocimiento que tú. Aprenderá mucho de ellos, e incluso con personas que no son tan buenas como usted, la experiencia con el trabajo en equipo es esencial.
  • Aprende tus herramientas. El control de la fuente, los editores, los depuradores, los sistemas de compilación, los marcos de prueba rara vez se enseñan como parte del curso, pero el dominio de esas herramientas lo hará sobresalir, ya que la mayoría de los estudiantes universitarios no tratan esas herramientas con el respeto que merecen.
  • Aprende a escribir. Tome clases de inglés / retórica u otras materias pesadas de composición. La comunicación por escrito es esencial en la ingeniería de software. Si no lo dominas, siempre estarás en desventaja.

No creo que puedas convertirte en estelar al final de una licenciatura, pero puedes ponerte en el camino.

Y la clave para convertirse en un ingeniero de software estelar es la variedad de experiencia. Lo único sobre el software es el costo de producción cero. Una vez que haya escrito una pieza de software, se puede copiar (descargar) a un costo esencialmente cero. Esto contrasta con las cosas en el mundo material. Independientemente de cómo optimices el diseño, todavía cuesta miles de dólares hacer un auto más. Hacer una copia más de Linux cuesta tan poco que nadie se molesta en facturarlo.

Por lo tanto, como ingeniero de software, debe dedicar su vida a hacer cosas que no se han hecho antes, en una primera aproximación. Sí, hay trabajos peatonales que hacen lo mismo nuevamente porque es más fácil que automatizarlo. Pero alguien que aspira a ser estelar, con toda razón, no tendrá nada que ver con tales cosas.

Así que llena tu cerebro con patrones. Todos los patrones de software, por supuesto. Aprenda una de cada una de las familias de lenguajes de programación. No se empantane en detalles sobre cuál es el mejor de su tipo, solo aprenda uno. Esté tan listo para escribir Lisp como Assembler. Pero toma patrones de otros lugares. Lea sobre Psicología Social, programación de la tripulación aérea, cómo organizar grupos focales, sincronización cardíaca, flujo de tráfico de vehículos, gases de escape de cohetes, el fiasco de la Bahía de Cochinos. Porque todo esto le dará nuevos patrones que puede usar para crear el nuevo sistema de software nunca antes visto que lo haga estelar.

Lo principal que debes hacer es practicar mucho. Por supuesto, también debe buscar fuentes de información, y si desea ser realmente excelente, no puede evitar las cosas que inicialmente suenan aburridas o complicadas. Leer el código existente también puede ayudar.

Pero lo más importante que puede hacer para mejorar es tratar constantemente de desarrollar programas y esforzarse por mejorarlos.

Entonces, la pregunta se reduce a “¿cómo puedo lograr que haga mucha programación?” Aquí puede ser realmente útil si diseñas proyectos para ti mismo para trabajar; de los que te puedes emocionar.

El desarrollo de software es como cualquier otra cosa; cuanto más lo hagas (con pensamiento y esfuerzo concentrados), mejor serás. Si pregunta cómo convertirse en un gran pianista, es posible que esté buscando algunos consejos y trucos sobre cómo practicar, pero sería obvio que la respuesta incluiría una gran cantidad de piano, con un buen enfoque, esforzándose por mejorar.

Probablemente las personas responderán a esta pregunta quienes son mucho mejores escribiendo software que yo. Algunos de ellos pueden tener algunos consejos realmente buenos, pero todos habrán pasado una gran cantidad de tiempo codificando.

Soy un gran fanático de la escritura táctil, porque significa que puedes codificar sin perder tiempo buscando teclas en el teclado y tienes que quitar los ojos de la pantalla con mucha menos frecuencia. Solo toma unas pocas semanas de esfuerzo aprender bastante bien. Pero hay excelentes desarrolladores de software que cazan y picotean.