Esto es lo que hago
Soy desarrollador web. Aunque no me autodenomino fullstack, puedo trabajar tanto como backend como como frontend, principalmente utilizando HTML, CSS, JavaScript y PHP. También tengo algunos conocimientos relacionados con la administración de sistemas o el diseño de interfaces.
Comencé a aprender a programar a principios del año 2009, de forma autodidacta, utilizando un proyecto de código abierto, y posteriormente colaborando en el mismo enviando pequeños cambios y correcciones.
A principios de 2011 me uní a un equipo que trabajaba en remoto creando un videojuego de estrategia para navegador, basado en el mismo proyecto.
A raíz de ese proyecto comencé a especializarme en front, aunque, por cuestiones laborales, comencé a trabajar en backend con PHP.
Conocimientos
Aplico continuamente patrones de diseño o principios como los SOLID. Arquitecturas como la de puertos y adaptadores la conozco, aunque por cuestiones de los proyectos y equipos con los que he trabajado carezco de la experiencia que me gustaría.
Procuro que desde el primer momento el código quede organizado para que lo pueda entender el resto del equipo. Si de primeras no llego a una solución adecuada, más adelante se refactoriza. También me he tenido que pegar con unos cuantos proyectos que acumulaban mucha deuda técnica, así que lo de refactorizar código lo llevo bastante bien.
Considero que las pruebas automatizadas deben formar parte del desarrollo, por la seguridad que aportan al desarrollar.
También procuro que mi código sea seguro por defecto. Conozco las vulnerabilidades más comunes, como inyección de SQL o XSS, entre otras. Suelo insistir bastante en que se atienda bien este aspecto.
Otro aspecto que intento mantener a raya es el del rendimiento. No me gusta trabajar con aplicaciones que van lentas, y por lo general, a los usuarios tampoco usarlas. Así que aplico técnicas de optimización cuando lo veo conveniente y dentro de mis posibilidades.
A continuación agrego una lista con algunos conocimientos más específicos de cada tecnología:
- Los lenguajes que más domino son PHP y JavaScript.
- También he trabajado con Node.js, principalmente para cosas con sockets o API sencillitas.
- Desde hace años Composer está incluido en todos los proyectos de PHP en los que trabajo.
- De PHP, conozco los frameworks de CakePHP, Symfony y Laravel, siendo este último mi preferencia, debido a su sencillez, a la velocidad con la que se desarrolla aplicaciones sencillas, y a la flexibilidad que da para trabajar con aplicaciones más complejas.
- De JS conozco herramientas como Backbone, Vue y React, o librerías como Underscore o Moment.
- También he utilizado herramientas como Gulp y Webpack.
- Procuro que el HTML cumpla al menos con reglas básicas de accesibilidad.
- He usado preprocesadores de CSS (principalmente Stylus) y conozco otras herramientas similares como PostCSS.
- Prefiero evitar frameworks tipo Bootstrap.
- En cuanto a bases de datos, Las que más he utilizado han sido MySQL y MongoDB.
- Dadas las ventajas que dan los ORM, los utilizo preferencialmente, pero vamos, 0 miedo si hay que ir a más bajo nivel y tocar alguna que otra consulta a mano.
- Desde hace tiempo uso Docker para cualquier cosa que requiera instalar librerías que no vienen con el sistema. Una maravilla llevártelo a otro ordenador y que funcione "sin hacer nada".