Reflexiones de un analista/programador semi-senior

Tras un poco mas de 3 años embarcado en el ("infernal") mundo del desarrollo de software, creo que es hora de reflexionar sobre la experiencia acumulada.

una de las cosas que me rondan la cabeza en las últimas semanas es que como llevo mas de  3 años dando cabezazos, he aprendido mucho y tengo mucha experiencia, ya debo ser analista/programador Senior.  Pues NO, los criterios para subir a tan preciada categoría son variados, y como en mi actual empresa esa categorización no se estila, pues me puse a leer (lo mejor que he aprendido jamás, a leer). Gracias a Diego Salama me parece que a lo que yo llego es a semi-senior (podéis leer su post aqui), por los siguientes motivos:
  • Experiencia (en desarrollo de software) 3 años.
  • Técnicamente autosuficiente, pero no soy un crack, y cometo errores "evitables".
  • Me considero pro-activo e intento aprovechar mi tiempo.
  • Necesito,  y solicito, seguimiento de mis tareas. Últimamente desarrollo en pareja, una práctica totalmente aconsejable, para mejorar la calidad del código generado.
  • Considero que el resultado de mi trabajo en una situación de presión es bueno, a pesar de enfadarme, quejarme y resignarme.
Desde luego estos logros son fruto de mi esfuerzo, pero también he de agradecer a mis compañeros que me han enseñado (y lo siguen haciendo) muchísimo. He conseguido adquirir la suficiente autonomía como para ser crítico con los códigos que no satisfacen mis premisas de calidad (que no son muchas), y que he aprendido a valorar durante este tiempo.
Me voy a permitir escribir algunas recomendaciones para vivir un  poco mejor mientras desarrollas software:
  1.  Evita el "patrón Enterrador" (gracias por ponerle nombre Javi). Programa para los demás y no para "ti y para tus muertos". Si algún compañero no entiende tu código es que algo no anda bien; podría ser tu compañero el que tiene un problema de comprensión, pero lo mas normal es que sea como has programado. Enseña el código que has escrito a los demás, y acepta las críticas como un mecanismo que lo hará mejor.
  2. Piensa mas y programa menos. Esto es fácil para mi, que no me gusta programar (todavía no me gusta, y veo complicado que me termine gustando). Cuantas mas líneas de código implementes mas errores puedes cometer. Piensa la manera de codificar menos.
  3. Lee, lee y lee, la documentación está para algo mas que adornar, y hay muchos libros, escritos por personas que ya se han enfrentado a los problemas que estás abordando. Además lee código de otras personas, te ayudará a aprender.
  4. Habla, comunica, critica (constructivamente), no te conformes con tu código, ni con el código de los demás (stackoverflow es genial, pero a veces no es la mejor solución para tu problema), pregúntate si hay una manera mejor, mas simple y mas eficiente.
  5. Cuanto mas simple, mejor. Por norma general la solución mas simple siempre va a ser la mejor. Mucho cuidado con el sobre-diseño, la "extrema abstracción", y la patronitis que la mayoría de las ocasiones ofuscan la solución adoptada y complican el mantenimiento. No quiero decir que no se diseñe, no se use la abstracción ni patrones, si no que se haga como en la recomendación 2.
Podría seguir escribiendo reglas hasta la saciedad, pero me voy a quedar con esas 5, Ninguna de ellas habla de programación, métricas o patrones, solo creo que hablan de tener un poco de sentido común (el menos común de los sentidos), y son más fáciles de conseguir de lo que a mucha gente le pueda parecer.

Como conclusión, y teniendo en cuenta que hace poco mas de tres años,  empezaba prácticamente desde cero con Java (después de años sin participar en proyectos de desarrollo), la sensación es positiva, habiendo trabajado con tecnologías variadas como  Hibernate ORM, Apache Cayenne, Hibernate Validator, Spring Framework, Spring Security, servicios Web Rest y Hessian, Android, OpenJump, SIG, ... ¿Quién me iba a decir que tendría 3 apps en el Play Store? sinceramente yo no lo hubiera pensado nunca.

Mucho mas positivo si sumo esta experiencia a mis conocimientos de redes y sistemas, de esta manera cada día estoy un poco mas cualificado para plantear soluciones a los distintos retos que esta profesión me plantee.

Finalmente, y para rematar, nada mas que agradecer a mi  maestro, y demás compañeros los ratos dedicados con ellos a intentar hacer las cosas lo mejor posible.

Solo me queda mencionar lo que una vez dicen que dijo Sócrates. "Sólo sé que no sé nada". Así que espero seguir aprendiendo mucho para ver si algún día llega a gustarme el desarrollo de software.


Comentarios

Rafael López ha dicho que…
José María Martínez Luna:
Enhorabuena Rafa por compartir tus reflexiones con todos. Buenos consejos que jamás hay que olvidar para intentar que nuestra vida como programadores sea mucho más sencilla. El desarrollo informático nos lo complicamos nosotros solitos, con nuestras costumbres, malos vicios y escasos conocimientos. Todo informático dedicado al desarrollo le cuesta trabajo aceptar las críticas, lo digo por experiencia. Uno siempre piensa que lo que hace es muy bueno, hasta que cuando pasan 2 semanas te das cuenta de la mierda que es. Con un compañero como tú al lado, se evitan todas estas cosas. Un abrazo