¿Cómo puedo desarrollar más rápido?
Cuando empiezas a programar y desarrollar, es usual que no vayas a un ritmo tan rápido como imaginaste. Normalmente, nos preguntamos cómo podemos acelerar nuestro ritmo para entregar productos de calidad en el menor tiempo posible. En este artículo presentamos varios consejos para poder desarrollar más rápido, luego de tener una cantidad de experiencia decente programando.
Obtén retroalimentación sobre lo que haces lo antes posible
Si eres principiante, es seguro que habrá muchas formas
de mejorar tu código. Si la aplicación funciona como se esperaba, tal vez tu
solución era un poco complicada. Si el enfoque está bien, tal vez se olvidó de
aplicar un estilo de código antes de comprometerse. O tal vez cometiste uno de
los muchos pequeños errores al usar Git, que podría ser tan sutil como usar el
tiempo incorrecto en tu mensaje de confirmación.
Desde el punto de vista de tu colega más veterano o de tu mentor, es imposible predecir lo que puede salir mal. Tienes que llevar tu producción a una revisión, y ahí es posible corregir la dirección en la que te estás moviendo. Cuanto antes solicites el feedback, más rápido será todo el proceso. Por ejemplo:
- Escribe cómo crees que se puede resolver el problema antes de empezar a cambiar el código.
- Dibuja esquemas de la interfaz antes de empezar a construirla.
- Crea una solicitud de fusión para la implementación antes de actualizar todas las pruebas unitarias.
No es necesario que una tarea esté totalmente terminada
antes de pedir una revisión. Revisar las cosas es rápido y, si tienes suerte,
tus compañeros podrán revisar antes de que tú pases demasiado tiempo siguiendo
el camino equivocado. Es una diferencia entre escribir y leer: yo paso unas 3 o
4 horas escribiendo artículos, y para ti probablemente sean 10 minutos de
lectura.
¿Realmente necesitas escribir rápido?
¿Mejor dicho, necesitas escribir poco? Tu trabajo consiste en
resolver problemas, no en escribir código. Si puedes resolver problemas
rápidamente (o más rápido de lo que creas nuevos), entonces estás haciendo bien
tu trabajo. El código que produces es parte del problema: necesitará ser
revisado, probado y mantenido durante mucho tiempo.
Los recursos de aprendizaje se centran en exponerte a los
conceptos que intentan enseñarte. En el caso de la programación, te mostrarán
algún proyecto o tarea de ejercicio y te harán programar para resolverlo sin
cuestionar si tiene sentido. Un buen rendimiento en tu trabajo requiere que escribas
código sólo si no hay una solución mejor disponible.
Cuestiona cada uno de los features a realizar
Primer paso: asegurarse de que
"lo que se necesita" es realmente necesario. A veces recibirás una
solicitud para añadir una función que no debería formar parte del sistema. O ya
existe algo que el usuario o el colega que escribió el ticket no conoce. O la
solicitud es para una cosa "agradable de tener", en lugar de algo
realmente importante.
En resumen, trata de entender los
requisitos lo suficientemente bien como para poder evaluar si son realmente
necesarios.
¿Cómo utilizar proveedores externos de código?
Al final del día, no hay forma de
evitar añadir funciones al sistema. La siguiente mejor solución es encontrar un
proveedor externo que haga el trabajo pesado por ti. Por ejemplo:
- Un proveedor en la nube que obtiene direcciones a partir de texto en un mapa.
- Una solución completa para realizar pagos en una aplicación (física o en línea).
- Un servicio de correos que permite enviar correos sin preocuparte del filtro de spam.
Las integraciones suelen ser un quebradero de cabeza, pero
si encuentras un proveedor con una buena API, te puede ahorrar mucho tiempo en
escribir y mantener tu propio código.
Uso de librerías de terceros
Algunas tareas son demasiado pequeñas
para abstraerlas de tu aplicación y obtenerlas de una herramienta externa. Para
muchas necesidades típicas y menos típicas, puedes encontrar una librería de
terceros que te proporcione cierta ayuda con ellas. Las bibliotecas vienen con
una compensación:
- Proveen soluciones a muchos problemas.
- Requieren que aprendas a utilizar su API.
- A veces, esas APIs tienen sus propios problemas.
Si eliges la biblioteca
equivocada, puede causarte mucho dolor. Hay algunas cosas sobre una biblioteca
que puedes evaluar antes de decidirte a usarla: la documentación; cómo se ve el
proyecto en GitHub; comparaciones con otras opciones en línea. Otras cosas
sobre la biblioteca, no tanto: qué futuro va a tener la biblioteca y si se
mantendrá mientras tu proyecto la necesite.
Qué tipo de cosas nos
proporcionan las bibliotecas:
- Métodos para operar entre fechas.
- Features relacionados a dinero y pagos.
- Generación de gráficas y tablas.
Poco a poco te vas quedando sin
opciones. Pero antes de escribir algo nuevo, asegúrate de que no se ha
implementado ya en tu proyecto. También determina si algún caso muy similar que
ya tenga código puede ser reutilizado aquí.
La reutilización de código es
complicada: te ahorra tiempo cuando utilizas el mismo código en casos de uso
relacionados, pero creará problemas si reutilizas código para casos no
relacionados. Por ejemplo, sumar y restar funciona igual para la temperatura y
el dinero; hasta que alguien introduzca soporte para el cero absoluto. No te
gustaría que tu aplicación se bloqueara en cuanto la cuenta bajara de -273,15.
Escribe código legible y organizado.
Cuando todo eso falle, escriba lo
mínimo necesario para satisfacer la necesidad, pero escríbalo tan bien como
pueda. Nombra las clases, los métodos, los argumentos y las variables de forma
significativa. Documenta el código. Escribe pruebas unitarias y también algunas
pruebas de integración. Añade un mensaje de confirmación que explique lo que
ocurre en el código y por qué.
En resumen: codifica siempre como
si el tipo que acaba manteniendo tu código fuera a ser un psicópata violento
que sabe dónde vives.
No te preocupes demasiado por la velocidad
Nadie programa
rápido. ¿Has oído el mito del desarrollador 10x? Supuestamente, algunos
desarrolladores son 10 veces más rápidos que sus compañeros; puede que haya
algunos genios por ahí, pero me temo que en la mayoría de los casos la gente se
mueve rápido tomando atajos. Tomar atajos puede ser necesario a corto plazo,
pero al hacerlo se crea una deuda técnica que es necesario abordar para la
salud del proyecto a largo plazo. De ahí la respuesta a este mito: los devs 10x
son los que necesitan 10 devs para limpiar después de ellos.
¿Cómo es programar en la vida real?
El día a día está lleno de situaciones que pueden provocar la sensación de lentitud. El otro día, me pasé 2 horas intentando conectar una impresora de red, y mi solución requería trasladarla a una sala de estar. De vez en cuando, me paso horas solucionando un problema que ha sido provocado por algún problema menor: un error tipográfico, perseguir el error en el lugar equivocado o cualquier otro error.
¿Soy duro conmigo mismo por esos
"fallos"? No. ¿Por qué? Es parte del trabajo: a veces se ofrece una
solución rápida, otras veces se necesita más tiempo.
Resumen
Como programador junior, tu
trabajo es aprender cosas y encontrar formas de ayudar en el proyecto. Toda
persona razonable entiende que el aprendizaje requiere tiempo. En un buen lugar
de trabajo, recibirás el apoyo que necesitas para progresar y no se te
presionará para que te desarrolles más rápido.
Para mí, los programadores junior
rápidos me dan miedo. Prefiero tener un colega junior lento que acabe haciendo
las cosas bien. Que aprenda rápido, que responda a los comentarios... eso suena
muy bien. Pero uno que se limite a hacer cambios rápidamente, no tanto.
- Zant.
No hay comentarios: