Como desarrolladores de software nos encontramos en un mundo laboral de constante cambio, es difícil conocer todas las herramientas existentes para nuestro trabajo, pero también es cierto que debemos esforzarnos en ser mejores, puliendo nuestras habilidades y adquiriendo hábitos que nos lleven a ser un desarrollador integral, que disfrute sus labores y procure hacerlas de la mejor manera.
Por este motivo realicé este listado de diez puntos, en el cual trato de sintetizar las habilidades que considero un desarrollador de software debe tener, y si no es así, debe de comenzar a cultivar
10. La conveniencia no es una -bilidad
Cuando escribimos código, es muy fácil caer en la tentación de hacerlo de acuerdo a nuestra conveniencia, es decir, por “pereza” y no como nuestros conceptos nos indican que es la mejor manera. Por eso caemos en malas prácticas como:
“¿Por qué debería hacer otro método si es casi igual que este? Solo agrega un switch sencillo
- Múltiples acciones en un mismo método
- Múltiples tareas en una clase”1
Para esto, no debemos olvidar aplicar principios de desarrollo de software como SOLID o KISSbuscando:
- Ser simples y legibles
- Un método una cosa
- El código debe ser entendible para quien escucha su lectura
1 “La conveniencia no es una -bilidad – 97cosas.com.”
http://97cosas.com/programador/conveniencia.html. Accessed 2 Feb. 2017.
9. Los programadores no somos buenos testers
Como desarrolladores en un entorno ágil, estamos llenos de pruebas unitarias, de integración y de aceptación, muchas realizadas por nosotros mismos a nuestro propio código y tendemos a tener:
- “Sentimientos paternalistas hacia nuestro propio código
- La atención puesta principalmente en escenarios positivos, en vez de estar buscando activamente los errores
- Tendencia a ver un “problema complejo” como una colección de “casos aislados, más pequeños y simples”
- Menos experiencia y conocimiento en identificar errores e inconvenientes más comunes en las aplicaciones.”2
Para solventar o mitigar lo anterior, es recomendable aplicar ciertas estrategias buscando poner nuestro código a prueba y que este genere los errores en etapa de desarrollo y no en frente del usuario final. Alguna de las estrategias a aplicar son:
- “No hacer el testing funcional a nuestro propio código sino al de nuestros compañeros
- Trabajar en equipo para crear sets de testing.
- Trabajar con datos extremos
- Pensar en escenarios negativos”2
- War game (rompe el código de alguien más, mi favorito, retar a tu par a que haga fallar tu pantalla, tu interfaz o tu método)
2″javaHispano – Portada – ¿Cómo enseñar testing a tus programadores?.” 8 Sep. 2015,
http://www.javahispano.org/portada/2015/9/8/como-ensear-testing-a-tus-programadores.html. Accessed 2 Feb. 2017.
8. El código de pruebas es tan importante como el código de la funcionalidad
Realizar código de prueba es tan importante como el código productivo, pues este nos da la tranquilidad que los requerimientos se cumplen. Probar nuestro código es importante porque:
- Una buena cobertura de código facilita el mantenimiento del mismo
- El código de pruebas actúa como documentación del código
7. Lee el código de los demás
Hemos escuchado alguna vez una frase que dice que: “Si quieres ser un buen escritor, debes ser mil veces un buen lector”3 y esto también se aplica para el desarrollo de software porque:
- Nos gusta escribir código y nos disgusta leerlo
- Leer código de otros es difícil
- Nuestro orgullo juega en nuestra contra, dado que tendemos a pensar que es incorrecto la manera como otros resuelven los problemas
Para comenzar a tomar este buen hábito puedes empezar por:
- Leer el código que ya has hecho
- Leer el código de tu proyecto
- Leer código en software de código abierto https://github.com/trending?l=java4
- Cuando leas el código de otras personas responde mentalmente preguntas tales como: ¿es fácil leerlo? ¿Cómo llama sus variables?, ¿cómo llama sus métodos?4
3Jorge Luis Borges
4 “Lee el código – 97cosas.com.” http://97cosas.com/programador/lee-el-codigo.html. Accessed 2 Feb. 2017.
6. Dos cabezas piensan mejor que una
La programación par es propia de la metodología de Xtreme Programing, lo cual no evita que pueda ser adoptada en nuestro proyecto en ciertas situaciones. Al desarrollar con tu compañero podrás tener beneficios importantes como:
- Si sabes menos, aprenderás de tu compañero
- Si sabes más, aprendes al enseñar
- Conocer nuevas herramientas que facilitan tu trabajo
- Disminuye el Bus Factor
5. El trabajo duro no paga
¿Cuántos de nosotros hemos gastado parte de nuestro tiempo libre buscando un error en nuestro código, o haciendo una historia de usuario adicional al sprint? Seguramente varias veces, sin recordar que ese tiempo fuera de la oficina se puede aprovechar en cosas en beneficio propio y del proyecto. Debemos guardar un equilibrio en nuestra vida y usar nuestro tiempo libre para descansar y hacer cosas diferentes a trabajar por ejemplo:
- Aprender de temáticas nuevas.
- Leer blogs, libros, codigo.5
- Asistir a meetup’s
Y en general buscar la manera de mejorar continuamente.
5 “El trabajo duro no paga – 97cosas.com.” http://97cosas.com/programador/el-trabajo-duro-no-paga.html. Accessed 2 Feb. 2017.
4. Refactoriza hasta sentirte orgulloso de lo que hiciste
El realizar código basado en pruebas nos ayuda a tomar este buen hábito, el cual consiste en hacer lo mínimo posible para cumplir el objetivo y después mejorar tu código buscando aplicar las mejores prácticas técnicas. Para esto es importante que tengamos en cuenta lo siguiente:
- Dejemos el lugar mejor de lo que lo encontramos. (Principio Boy Scout)
- El hecho de que alguien más lo haya hecho diferente no significa que esté malo.
- Es mejor cambios incrementales que varios al tiempo
- Siempre verificar que las pruebas unitarias sigan corriendo.
- El hecho que lo cambiemos no significa que vaya a quedar mejor.
- El ego personal no puede estar en el camino, si algo no está malo, ¿Por qué cambiarlo?
- A veces romper algo es el camino más corto a una solución.6
6″La Regla Boy Scout – 97cosas.com.” http://97cosas.com/programador/regla-boy-scout.html. Accessed 2 Feb. 2017.
3. No confíes en el “aquí sucede la magia”
Cuando eres desarrollador de software, sabes que esas líneas de código que están creando van a tener contacto de alguna manera con un automatizador de pruebas, con un administrador de servidores o de base de datos. Trabajos especializados que debes conocer, pues en cualquier momento tendrás que desempeñar alguna de estas labores, es decir, debes hacer esa magia que por tanto tiempo te fue ajena. Por eso es bueno aprender de temáticas tales como:
- Gestiona un proyecto.
- Gestión de la configuración / Generan versiones.
- Administración del servidor donde despliegan tu código.7
7 “No confíes en el “Aquí sucede la magia” – 97cosas.com.” http://97cosas.com/programador/no-confies-magia.html. Accessed 2 Feb. 2017.
2. Conoce tus herramientas
Normalmente un desarrollador de software puede pasar la mayor parte de su día al frente de su IDE, curiosamente no siempre buscamos la manera de hacer más eficiente nuestro trabajo bajo esta herramienta y utilizamos el mouse para casi todo. Es importante conocer a profundidad:
- Los atajos del IDE
- La línea de comandos
Finalmente busca herramientas que puedan ser útiles en tu día a día.
1. Invierte tiempo en tu conocimiento
Nuestro rol de desarrollador implica actualizar nuestros conocimientos a medida que avanza la tecnología, es importante conocer las tendencias globales, las herramientas se utilizan y el por qué se utilizan. Un desarrollador debe saber cómo gira el mundo en el que está y de esta manera moverse para que no caer en zona de confort. Por eso es importante:
- Aprender nuevos lenguajes, frameworks, técnicas que puedan interesarnos o ser útiles en nuestra labor.
- Usar lectores de feeds a fin de tener todos los sitios web que nos interesan en un solo lugar.
- Guardar tus links favoritos: almacenemos aquellas cosas que nos interesan en un solo lugar y por supuesto estudiarlos
3. Conclusiones
Como desarrolladores, es nuestra responsabilidad crecer constantemente como profesionales, aprendiendo nuevos paradigmas, mejorando el cómo hacemos nuestras labores y en especial, en adquirir hábitos que nos ayuden a ser mejor cada día, no solo como las mentes creativas que limitan y solucionan un problema, sino como personas que estamos en constante crecimiento intelectual y profesional.
Referencias
1 “La conveniencia no es una -bilidad – 97cosas.com.” http://97cosas.com/programador/conveniencia.html. Accessed 2 Feb. 2017.
2 “javaHispano – Portada – ¿Cómo enseñar testing a tus programadores?.” 8 Sep. 2015, http://www.javahispano.org/portada/2015/9/8/como-ensear-testing-a-tus-programadores.html. Accessed 2 Feb. 2017.
3 Jorge Luis Borges
4 “Lee el código – 97cosas.com.” http://97cosas.com/programador/lee-el-codigo.html. Accessed 2 Feb. 2017.
5 “El trabajo duro no paga – 97cosas.com.” http://97cosas.com/programador/el-trabajo-duro-no-paga.html. Accessed 2 Feb. 2017.
6 “La Regla Boy Scout – 97cosas.com.” http://97cosas.com/programador/regla-boy-scout.html. Accessed 2 Feb. 2017.
7 “No confíes en el “Aquí sucede la magia” – 97cosas.com.” http://97cosas.com/programador/no-confies-magia.html. Accessed 2 Feb. 2017.