Por qué quiero ser un desarrollador de software profesional.
Autor Jonathan López - October 17, 2016
¿Eres programador y quieres seguir avanzando en tu carrera profesional? ¿Te cuesta diseñar software modular y realmente reusable? ¿Crees tu o tus compañeros que todo tu código es un espagueti que solo tu entiendes? ¿O no te sientes “suficientemente preparado” para aportar gran cosa a un proyecto de software muy interesante?
En mi caso, era así. Pero me he marcado un objetivo claro:
Soy programador de software y quiero llegar a ser un gran desarrollador de software profesional.
¿Te unes a la aventura de subir de nivel?
Primero… ¿Cuál es la diferencia entre un programador y un desarrollador de software?
Normalmente “programador” y “desarrollador” se usan como sinónimos sin ningún problema. Pero tienen sus diferencias.
El programador es el que conoce un lenguaje de programación y lo usa de forma profesional. Es capaz de convertir un diseño ya hecho en un software real y funcional. O de modificar un código para que se adapte a un nuevo propósito concreto y optimizarlo. Su principal objetivo es crear programas que funcionen.
Pero al programador le cuesta la vida llevar a cabo un proyecto medio o grande a buen termino de principio a fin. Le resulta complicado diseñar software robusto y reutilizable.
Un desarrollador de software, además de ser un programador, es capaz de diseñar todo el sistema. Sabe aportar soluciones prácticas a su cliente, es pragmático. Prevé las posibles modificaciones que puedan haber en el futuro. Propone soluciones lógicas y no mata mosquitos a cañonazos. Es capaz de estructurar los datos, realizar una buena arquitectura del programa para que esta sea modular, con componentes reusables y fácil de ampliar, mantener o modificar.
El desarrollador de software no sólo busca que el código funcione. Busca y se centra en que también sea robusto, limpio, reusable, fácil de mantener y ampliar. Esta es la principal diferencia entre uno y otro.
Mi experiencia como simple programador de software.
Aunque ser desarrollador requiere formarse mucho más y esforzarse constantemente por mejorar la forma de hacer las cosas en tu trabajo del día a día, creo que realmente vale la pena.
Soy de formación ingeniero técnico de telecomunicaciones, especializado en sistemas electrónicos. En la carrera me enseñaron a programar pero no me enseñaron nada sobre el “desarrollo de software” propiamente dicho.
Cuando empecé a trabajar como autónomo creando webs, en ocasiones me tocaba modificar las plantillas de Wordpress o de Joomla. Alguna que otra vez metia mano al código de los plugins de estos CMS y los modificaba para que se ajustaran a las necesidades del cliente. También creaba alguna que otra función de javascript para modificar el funcionamiento o implementar alguna característica para la usabilidad de una web. Siendo un simple programador tenía suficiente.
Cuando empecé a trabajar en el desarrollo de un nuevo producto para una empresa la cosa cambió. Entonces creía que “programador” y “desarrollador” de software eran lo mismo.
¡Iluso de mi! Pronto empecé a percatarme que nanái… aquí algo fallaba.
Me vi trabajando prácticamente solo en el proyecto. La empresa no se dedica al desarrollo de software, su negocio es otro. En teoría había otro programador trabajando en el proyecto, pero éste estaba en Italia y yo en España. Solo nos comunicábamos por email (por lo que la comunicación no era inmediata) y cuando había que poner nuestro trabajo en común.
En teoría sería mi jefe el que realizaría el diseño del programa. Es un programador con mucha experiencia y sabe muchísimo sobre el mercado, los usuarios finales y la creación de programas. De echo he aprendido, y sigo aprendiendo mucho cuando consigo trabajar un rato con él. Problema: apenas tiene tiempo y está metido en mil fregaos y marrones a la vez. El buen hombre es el apaga-fuegos y flotador de la empresa.
Así que me encuentro con que mi jefe era mi “cliente” que establecía los requisitos del programa que yo tenía que realizar. En ocasiones, tras ver los primeros resultados me los cambiaba o modificaba. Como cuando trabajaba creando webs de pequeños comercios que no tenían muy claro lo que querían. Solo que esta vez, tenía que diseñar, implementar, validar y probar todo desde cero yo solito.
Fue a partir de ahí que me di cuenta que no tenía ni idea de diseñar software, ni de arquitecturas, ni de reusabilidad ni leches…
Cada vez que me modificaban un requisito o había que implementar uno nuevo, tenía que retocar todo y modificar un montón clases y métodos. A día de hoy aun sigo sufriendo todo ese “trabajo chapucero”. En muchas ocasiones me cortaría las venas cada vez que tengo que hacer cambios en ese espagueti de código. El mantenimiento del programa es un suplicio.
La confianza en mí mismo se hundió en las profundidades de las Fosas de las Marianas. La imagen que daba a mi jefe, supongo que tampoco debía ser la mejor…
El estrés aumentó por tener que enfrentarme prácticamente solo al tremendo reto de sacar mi parte del proyecto de un producto nuevo, sólo y sabiendo que realmente no estaba preparado para ello.
Además, con el paso de los meses, los directivos de la empresa como es lógico se empezaban a impacientar por ver los resultados de su inversión. Ale… Jonathan, sumale ahora los plazos de entrega cada vez más acuciantes.
¿Por qué quiero ser un gran desarrollador de software profesional?
Me prometí a mi mismo que nunca más volvería a hacer código así. Que aprendería a hacer software de calidad, fácil de mantener y reutilizar, robusto.
Por mi forma de ser quiero ofrecer un trabajo de calidad, no me conformo con una chapuza que funciona.
Me gusta programar y quiero disfrutar de ello. No quiero que se convierta en una fuente de frustración.
Dedico 45 horas todas las semanas al trabajo. ¡Ojo! 45 horas de mi vida todas las semanas en las que se nos va la vida. Quiero hacer que valgan la pena. Quiero sentirme orgulloso de mi trabajo.
Por eso quiero ser un “buen profesional”. Un programador de verdad. Tener la confianza de saber que estoy preparado para desarrollar un proyecto de software completo.
Por otro lado, quiero formarme y llegar a ser “un gran desarrollador de software” para poder seguir progresando en mi carrera profesional. Ésto para mi significa poder elegir, hasta cierto punto, dónde y con quién voy a trabajar, mejorar el ratio sueldo-tiempo. Para poder sacar más tiempo para mi, mi familia y amigos.
No quiero competir con otros desarrolladores de software con el precio de mi trabajo por ser uno más del montón. Quiero vender calidad, aportar valor y saber hacer.
¿Te has sentido alguna vez así?
Desde entonces empecé a buscar información y di con el tema de “arquitecturas de software limpias”, “los principios SOLID”, “los patrones de diseño”, etc.
Desde entonces he invertido en mi formación. Me he comprado libros que estudio a fondo y voy poniendo en práctica.
Veo vídeos como los de Codely.tv y los pongo a prueba.
Leo blogs de programadores. ¡Vivan los enlaces RSS! Y estoy suscrito a algunas newsletters. Como por ejemplo la de devExperto.
Voy siempre que puedo a las quedadas de programadores en mi ciudad como las que organiza @phpValencia.
He invertido dinero, pero más importante aun, estoy invirtiendo tiempo.
¿Qué hace falta para convertirse en un desarrollador de software profesional?
A mi modo de ver actual.
Aprender un porrón de cosas. Formación continua. Ya doy por sentado que si me voy a dedicar a esto voy a estar aprendiendo cosas nuevas constantemente. Temas como:
- Control de versiones.
- Realizar pruebas unitarias.
- Integración continua.
- Código limpio.
- Refactorizar.
- Arquitecturas de software.
- Patrones de diseño.
- Aprender bien el framework que uses.
- Saber depurar bien.
- Diseño y arquitectura de bases de datos.
- etc.
Juntarte con otros programadores. Eventos y conferencias, Katas, etc. Se aprende muchísimo de todos los que asisten. No solo de los conferenciantes. Además de ser una buena ocasión para hacer networking.
Leer código de otros. En GitHub hay para aburrir. Lo bonito del desarrollo de software es ver que cada persona puede resolver el mismo problema de una manera diferente. Cada programador tiene su estilo y su manera de ver las cosas y eso se transmite en el código que escriben. Se puede aprender muchísimo de ello.
Practicar. Practicar y practicar aun más. Poniendo en práctica todo lo que vas aprendiendo, claro. Sin esto no sirve de nada lo anterior. Yo aquí aprovecho mis 8 horitas de trabajo diario como programador.
Por ultimo tratar de enseñar lo que vas aprendiendo a otros. A mi me ha llevado a crear este blog. Si no sabes explicarlo, no lo has llegado a entender bien.
El explicar lo que sabes y estás aprendiendo te ayuda a darte cuenta de cuando no entiendes bien algo. También es una oportunidad para que otros te expliquen otra forma de hacer las cosas o te hagan ver qué razones hay detrás de ciertas costumbres generalizadas. No hace falta ser un experto para explicar lo que uno sepa y quizás ayudar a otra persona.
Siempre habrá alguien que sepa más que tu, por lo que eso no debe frenarte para ayudar a otros.
Alguno dirá….
¡Nano! Que el día solo tiene 24 horas y al menos 7 las gastas durmiendo… ¿De dónde sacas el tiempo para hacer todo eso? Yo tengo trabajo, familia, amigos y quiero tiempo para “vivir”.
Todo es planificarse y estar organizado. Quien quiere, puede. No es fácil, pero se puede.
Yo también quiero exprimir cada hora de mi vida al máximo, disfrutarla y ser productivo. Pero creo que formarse es la única manera de ser desarrollador de software “profesional“.
De ahí que también me interesen temas como:
- El estilo de vida sencillo y minimalista. Para mantenerme enfocado en mis metas.
- El sistema de organización personal GTD. Hasta ahora me ha ayudado a ser productivo y alcanzar mis objetivos.
Temas que creo que nos pueden ayudar a todos los que queremos pasar de simples “programadores” y digievolucionar a “desarrollador de software”.
Conclusión.
Aquí te he explicado por qué quiero convertirme en “un gran desarrollador de software” (hay que aspirar alto). También lo que estoy determinado a hacer para lograrlo.
Un sueño por el que lucho es que algún día, pueda trabajar desde cualquier parte del planeta. Tener libertad financiera. Ofreciendo un trabajo de calidad, aportando valor. Sin competir por ofrecer el precio más barato por ser uno más del montón.
Si tu también quieres lo mismo, te invito a que me expliques tus motivos en los comentarios.
Si estás decidido a ser un gran desarrollador de software, hagamos ese camino juntos. Suscríbete a la newsletter y sígueme en mi cuenta de Twitter @jolouster. Mantendremos la comunicación y podremos compartir todo lo que vayamos aprendiendo.
Mejor hacerlo acompañado que solo, ¿no crees?
Te invito a que dejes un comentario más abajo y me digas que opinas al respecto.