Este año ya es mi quinto año como ingeniero de software. Sobre estas cosas, a menudo pienso que habría sido genial saberlas cuando recién entré en esta industria; habría evitado muchos desvíos y seguramente habría logrado más de lo que tengo ahora. Ay, el pasado no se puede recuperar, así que quiero compartirlas aquí con todos, especialmente con los novatos que acaban de entrar en esta industria. Por favor, consideren cuidadosamente si comprenden estas 8 cosas.
1. Buenas habilidades de comunicación.
La gestión de ingeniería es una actividad de equipo, aunque a veces el equipo sea solo una persona. Como hay tantas cosas que deben entenderse mutuamente en todo momento, la comunicación se convierte en el mayor problema. El 90% de la gestión de ingeniería se refiere a la comunicación. Por ejemplo, tenemos que explicar a otros qué es un bug, cómo diagnosticarlo eficazmente, cómo expresar completamente nuestras ideas complejas a los demás. La comunicación es el factor más crítico para el éxito de un proyecto. La comunicación ineficaz solo conduce al desperdicio de mucho tiempo y energía.
2. Fundamentos de la informática.
Para convertirse en un excelente programador, los fundamentos de la informática son indispensables, pero, siendo honestos, la informática y la ingeniería informática son realmente dos cosas distintas. Sin embargo, para ser un excelente ingeniero, hay que tener la curiosidad de investigar las tendencias de desarrollo de la informática y el principio de funcionamiento de las computadoras, incluyendo la comprensión profunda de los posibles errores en las nuevas tendencias y algunas soluciones alternativas. Solo así se tiene el capital para comunicarse con otros ingenieros. Los algoritmos, excepto en entrevistas, no son de mucha utilidad en otros momentos. Quiero decir que en la mayoría de los casos las bibliotecas de clases son suficientes. Pero esto no significa que se puedan ignorar por completo las estructuras de datos y los algoritmos. Además, el razonamiento del código y la optimización siguen siendo muy importantes, especialmente al escalar.
3. Aprender a leer código.
La importancia de escribir código es conocida por todos sin necesidad de que yo la mencione, pero probablemente pocos hayan oído hablar de leer código. Esta puede ser una de las habilidades más valiosas de dominar. En cuanto a este punto, hasta ahora, yo también estoy en el proceso de esforzarme por alcanzar la meta. Dicho esto, si uno pudiera tener la capacidad de ver la esencia de las cosas a través de fenómenos complejos, estaría cerca de convertirse en un excelente ingeniero.
4. Aprender UNIX y Linux.
Estos dos están casi en todas partes, por lo que vale mucho la pena aprenderlos. Nos permiten manipular rápidamente la computadora a través de la línea de comandos. Si es necesario, también se pueden instalar paquetes de software de Linux y configurar servidores. También se puede editar rápidamente con vi (así es, vi. Yo personalmente soy usuario de Emacs). Otro punto importante es que las utilidades de UNIX pueden ahorrar tiempo de manera significativa. Además, también necesitamos saber cómo usar sed, grep, find, pipes, y escribir código con bash/zsh básico.
5. Conocer los editores de texto.
Los ingenieros de software son expertos en dominar el texto. Incluso Emacs y vi, que ahora se consideran reliquias antiguas, siguen siendo editores que los ingenieros necesitan aprender. Hay que dominar al menos uno de los dos, porque sus filosofías son diferentes, y conocer uno de ellos no solo te permite escribir código más rápido, sino que tampoco te limita a ningún entorno específico. No te limites a usar el editor; haz que te obedezca, automatízalo, adáptalo a tus hábitos de teclado y escribe scripts para resolver problemas.
6. Pensamiento de automatización.
Debido a que copiar/pegar es un modo de automatización, podemos perfectamente escribir scripts para lograrlo. Y escribir scripts de manera espontánea hace que la programación sea más interesante. Quizás con solo 30 minutos se pueda resolver un día de trabajo aburrido y tedioso. La automatización puede reducir procesos y también nos permite aprender muchas cosas nuevas.
7. Conocer el control de versiones.
Me gusta usar git para todo. Lástima que no conocía esta excelente idea cuando estaba en la escuela; qué vergüenza. El control de versiones nos permite experimentar con el código con total tranquilidad, porque si algo no funciona, se puede restaurar el estado anterior o deshacer la entrada. ¡It's so easy!
8. Hacer un pequeño proyecto propio.
Esto es muy formativo, aunque a veces uno se sienta agotado y quiera tirar la toalla. Como nuestro producto es abstracto, no se puede ver un resultado tangible como en la construcción de un puente, así que solo podemos seguir programando sin parar, es aburridísimo. ¿Quieres concentrarte en un proyecto que te guste, tratarlo como a tu propio hijo, esforzarte al máximo para hacerlo lo mejor posible, y en el proceso aprender nuevos conocimientos y usar herramientas, algo que es imposible en el trabajo? La respuesta es, por supuesto, ¡SÍ!
Yo mismo no siempre logro hacer cada uno de los puntos anteriores, pero aun así desearía que alguien me hubiera dicho estas palabras sinceras cuando recién entraba en este campo. Lo agradecería de todo corazón.
Enlace de la traducción: http://www.codeceo.com/article/8-things-new-programmer-know.html