En este artículo te voy a contar mi experiencia personal de cómo me convertí en un desarrollador .NET. Lo único que pretendo al escribir este post es demostrar que a base de esfuerzo y perseverancia cualquier persona puede llegar a ser programador.
En la encuesta que os hemos realizado en las últimas semanas, una preocupación que tenemos todos es qué camino seguir para mejorar y aprender nuevos lenguajes de programación. Yo, he estado en esa encrucijada varias veces, y una de ellas fue apostar por el desarrollo con .NET.
Te voy a contar mi experiencia y cómo, a día de hoy, me dedico a crear aplicaciones de escritorio para Windows.
En mi vida laboral, más de 14 años, me he dedicado a muchas cosas, repartidor de Telepizza, repartidor de propaganda, mantenimiento de alumbrado público, dependiente e incluso una vez me contrataron para buscar micro poros en latas de coca-cola, algo que me parecía alucinante. Mientras trabajaba seguía formándome en mi pasión, la programación. Creo que todos ya sabéis de donde vengo, cómo probé la droga de la programación y desde entonces soy un yonky y no puedo pasar ni un día sin programar, si todavía no lo sabéis, podéis escuchar los podcast donde hablo con El Guille y con Diego Freniche, en estas entrevistas cuento también mi historia.
Tras muchos trabajos y horas de estudio me llegó la oportunidad de trabajar en lo que yo quería, no tenía estudios superiores solo el bachiller, fue una decisión propia, pero me había estado formando durante los últimos años. Empecé a trabajar desarrollando webs entre los años 1999 y 2001. Tras un cambio radical en mi vida, me mudé de ciudad, dejé mi pueblo natal (Majadahonda), mis familia, mis amigos y me fui a Alicante, todo por amor. Si, yo también tengo sentimientos aunque en ocasiones piense como una máquina :). Seguí trabajando como desarrollador web en diferentes empresas de Alicante, pero comprobé que necesitaba algo más, tenía curiosidad de cómo funcionaban las cosas por dentro y decidí estudiar una carrera. Lo lógico hubiera sido que estudiara la carrera de informática, pero me llamó mucho más la carrera de telecomunicaciones así que, en el año 2004 comencé la Ingeniería Técnica de Telecomunicaciones Imagen y Sonido. Fue una experiencia muy enriquecedora y muy dura, tenía 28 años y las cosas mucho más claras que hacía 10 años, cuando no quería ir a la universidad.
En esta carrera lo que más se estudia es matemáticas y física. También hay asignaturas de programación, por supuesto las saqué con notas excelentes, era una programación muy básica. Aprendí algo de C++ y repase conceptos de C. Pero no fue hasta el último año de la carrera cuando me empezó a entrar el gusanillo de conocer .NET, fue el año 2007. Yo ya conocía Visual Studio, por aquel entonces era la versión 2005, pero no en profundidad. Entonces hice un curso básico de creación de aplicaciones con .NET, donde veíamos algo de Visual Basic pero sobre todo, aprendí a manejar el IDE (entorno de desarrollo).
A partir de entonces me propuse un objetivo, quería desarrollar aplicaciones para Windows, dedicarme a ello y ese fue mi punto de partida. Tras pasar el último año de curso, tenía que hacer el proyecto fin de carrera. Ya había hablado de algunas ideas con un profesor muy especial para mi, Juan Manuel Saez. Imparte clases de programación y es uno de los mejores profesores que me he encontrado en mi vida, un día lo traeré al programa para que hable con nosotros. Gracias a el conocí la visión artificial o visión por computador, me habló de un algoritmo llamado SIFT, muy conocido en este mundo. Desde entonces he vivido obsesionado muchos años con este tema y tomé una decisión que cambiaría el rumbo de mi vida, quería hacer una aplicación de visión artificial programada en .NET como proyecto fin de carrera.
Cuando terminé con todas las asignaturas que tenía pendientes busqué trabajo y no tardé en encontrarlo. Ya estábamos en el año 2007, necesitaba ingresos en mi casa, me había tirado 3 años estudiando, dos de los cuales había cobrado el paro. Encontré un trabajo en una empresa dedicada a los tributos municipales, donde conocí a Alfonso. Programábamos en PL/SQL, HTML, XML y JavaScript, tocaba muy poco .NET. Debido a que Juanma no podía ser mi tutor en el proyecto fin de carrera, me derivó a un colega suyo que lo sería, Pablo Suau, al cual le estoy muy agradecido de la oportunidad que me dio y todos los conocimientos que compartió conmigo. Comenzó a enseñarme algoritmos de tratamiento digital de imágenes y, poco a poco, fui cogiendo experiencia con .NET y programación orientada a objetos en C#. También aprendí muchas matemáticas, interpretar algoritmos para posteriormente programarlos. Leía muchos papers, documentos científicos que publican profesores o miembros de la comunidad universitaria, sobre visión artificial. No tenía claro que aplicación quería hacer pero estaba sentando las bases de la idea final del proyecto.
Pasé los siguientes 3 años trabajando y desarrollando mi proyecto, había probado varios algoritmos que no me convencían y comprobé por mi mismo que la visión artificial es un problema que no tiene una solución única, a día de hoy nadie ha sido capaz ni de aproximarse a como vemos los seres humanos en realidad. Todavía queda mucho recorrido hasta que lleguemos a un punto como en la película Yo, Robot. Gracias a estos 3 años de desarrollo con .NET, me surgió otra posibilidad de mejorar mi situación laboral y cambié de trabajo. Entré a formar parte del equipo que se encargaría de la puesta en marcha del SATE (Sistema Automático de Tratamiento de Equipajes) de la NAT (Nueva Área Terminal) del Aeropuerto de Alicante. El SATE consiste en cintas transportadoras que llevan los equipajes desde la zona de facturación, check-in, hasta los muelles de carga. En este recorrido, la misión principal es inspeccionar todos y cada uno de los equipajes en busca de objetos sospechosos. En el aeropuerto de Alicante hay más de 20 km de este tipo de cintas. Pero, ¿qué hacíamos nosotros los programadores?, pues hacer el seguimiento y almacenamiento de la información de cada maleta. Todo se hace a través de mensajes enviados por los autómatas, el sistema se encarga de recibir los mensajes para gestionar y almacenar la información. Utilizábamos aplicaciones desarrolladas en .NET y base de datos Oracle. Esto solo es un resumen, el sistema es muy complejo y daría para unos cuantos artículos.
La puesta en marcha duró un año y medio, luego comenzó el mantenimiento y la cosa se calmó bastante. Había sido un periodo muy intenso hasta la inauguración y no pude avanzar mucho en el proyecto fin de carrera, lo había dejado aparcado. Por el contrario había cogido mucha soltura en el desarrollo con .NET. Cuando finalizó la puesta en marcha retomé de nuevo el proyecto. En el mantenimiento duré un poco más de seis meses, el sistema de trabajo por turnos y el no enfrentarme a retos nuevos me obligó a buscar nuevos horizontes, y así lo hice. Ante mi se presentó una nueva oportunidad, entrar a formar parte de una empresa que se dedica a comercializar máquinas de corte por cuchilla, más conocidas como máquinas CNC. Esto fue en el año 2012, en este año finalicé el proyecto fin de carrera que consistía en el Diseño y desarrollo de un sistema de detección de actividad en aparcamientos.
En esta nueva empresa, en la que estoy actualmente, me dedico a crear aplicaciones de escritorio. Mientras que en el SATE programaba con Windows Forms, aquí opté por empezar todos los proyectos con WPF para coger soltura. En la empresa no existía un departamento de desarrollo y yo tenía que empezar a crear dicho departamento. Me puse manos a la obra y comencé a crear aplicaciones como complemento a las aplicaciones nativas de las máquinas. Debido a mi experiencia en algoritmia adquirida durante todos los años que había dedicado al proyecto fin de carrera, comencé a estudiar algoritmos de Nesting. Consiste en colocar, de forma automática, polígonos en superficies para que se optimice el material utilizado. En esta etapa volví a tirar de Juan Manuel Saez, al que le pedí consejo y muy amablemente el accedió.
En la actualidad sigo programando en .NET, sobre todo aplicaciones con WPF. Cuando el proyecto y los tiempos de entrega me dejan, aplico técnicas de desarrollo ágiles como Scrum o TDD. Busco patrones de diseño que se amolden a mi manera de trabajar y a la magnitud del proyecto. También estoy retomando de nuevo el desarrollo web, nunca me he despegado del todo, quiero hacer de vez en cuando, siempre que los requerimientos me lo permitan, aplicaciones en entorno web. Como puedes comprobar, nunca paro de investigar y conocer nuevas tecnologías, nuevos métodos y nuevos retos. Eso es lo que me gusta de mi trabajo, tener un gran abanico de posibilidades donde elegir, aunque eso suponga en alguna ocasión nos saber por donde tirar.
La conclusión que quiero que saques de todo esto es la constancia. Nunca me cansaré de decirlo, para llegar a ser un profesional debes ser constante y centrarte en un objetivo. Marca ese objetivo en tu mente, en un papel o en donde sea pero hazlo y no te apartes nunca del camino. El objetivo tiene que ser claro y simple, aprender a programar webs con Java, aplicaciones de escritorio con Java, aprender AngularJS o ASP.MVC, etc… Una vez lo tengas, no te distraigas con nada más, aprende esa tecnología y poco a poco te irán surgiendo oportunidades como a mi. No te creas que mi caso es único, un día Alfonso te contará su caso y veréis que tiene similitudes al mio.