Las habilidades que debe de poseer un programador en la actualidad

Si estas estudiando programacion estas son Las habilidades que debe de poseer un programador en la actualidad

En el mundo del desarrollo de software abundan las empresas pequeñas, con equipos reducidos y con enorme aporte de innovación tecnológica. Es en las conocidas startups donde se cuece gran parte del desarrollo de nuevas aplicaciones, herramientas y procesos.

Las habilidades que debe de poseer un programador

Las habilidades que debe de poseer un programador

1.- Un desarrollador de software, todo en uno

Las startups con infraestructuras reducidas suelen ser bastante codiciados los perfiles todoterrenos, con conocimientos en varias áreas implicadas en el desarrollo de software. Este tipo de desarrolladores reciben el nombre de full-stack developers o rockstar developers porque permiten alcanzar objetivos a un coste menor por su enorme polivalencia.

Laurence Gellert, desarrollador de software, fue el primero en llegar a una definición de este tipo de perfiles allá por agosto de 2012. Gellert comienza su artículo contando que un empleado de Facebook le dijo en una Convención de Código Abierto que la red social sólo contrataba profesionales de desarrollo full-stack. Según Gellert, deben tener conocimientos en:

– Servidores y redes: debe saber sobre sistema de archivos, almacenamiento en la nube, recursos de red o redundancia de datos.

– Modelado de datos: los desarrolladores full-stack deben tener conocimientos en UML, el lenguaje orientado a hablar con las bases de datos para definir la estructura y la relación entre la información o bien hacer operaciones de manipulación de esos datos, desde modificaciones hasta el borrado o la recuperación de los mismos.

– Interfaces de Programación de Aplicaciones: las APIs han cambiado por completo el escenario del desarrollo de software. Se han colocado como el elemento clave en la reutilización de servicios web, servicios móviles, herramientas y programas sin mucha complejidad. Debe ser un desarrollador capaz de, por ejemplo, construir una API REST.

– Interfaz de usuario y experiencia de usuario: en cualquier proyecto de desarrollo digital es esencial tener conocimientos en arquitectura de información, interacción de usuario, diseño de interfaz, diseño de navegación…

– Comprensión de las necesidades de clientes y negocio: es necesario que estos desarrolladores entiendan qué está pasando cuando el cliente usa sus herramientas y cómo eso afecta a su negocio.

2.- Un desarrollador de front-end

No puede existir en la actualidad un full-stack developer que no tenga conocimientos amplios en el desarrollo de front-end. En ese sentido, debe tener experiencia en tres campos fundamentales:

– HTML: concretamente en HTML5 y en la web semántica.

JavaScript: es esencial conocer bibliotecas como jQuery, frameworks como AngularJS (es un marco de desarrollo mantenido por Google, hecho en JavaScript y con programación por el lado del cliente).

– CSS:  concretamente CSS3, las hojas de estilo en cascada que están marcando el diseño de páginas web más reciente; y también en lenguajes de hoja de estilo como SASS, LESS o XML.

– Diseño responsivo: el tipo de diseño que se adapta en función del tipo de dispositivo desde donde se haga la consulta. En el consumo actual de información, mayoritariamente a través de dispositivos móviles como smartphones, tener conocimientos en diseño responsivo y adaptativo es fundamental para crear proyectos web competitivos.

3.- Un desarrollador de back-end





Un desarrollador completo también debe tener experiencia en el desarrollo de back-end. En este sentido, hay tres grandes campos:

– Programación: debería saber programar en varios lenguajes: en PHP (un lenguaje de código abierto muy utilizado para la creación de páginas web dinámicas) o en Ruby (es un lenguaje que se está poniendo de moda entre los desarrolladores porque es sencillo, amable y minimiza al máximo los esfuerzos por parte del desarrollador a la hora de hacer prototipos, por ejemplo). En esa línea de lenguajes legibles, también es una buena opción Python.

– Bases de datos: otra de las patas de la mesa del desarrollo de back-end son las bases de datos. Como mínimo es necesario tener conocimientos en una base de datos concreta en los dos grandes grupos: relacionales y no relacionales. En el primer caso, una buena elección sería MySQL, mientras que en las no relacionales, MongoDB ha cogido mucho impulso dentro de la comunidad de desarrolladores (este tipo de bases de datos guardan la información en documentos, no en registros, por lo que es necesario haber trabajado con JSON, un formato ligero usado para el intercambio de datos). En este tipo también tenemos otra opción interesante: Amazon DynamoDB, una base de datos dentro del servicio en la nube Amazon Web Services.

– Servidores: en el manejo de servidores es fundamental conocer Apache, posiblemente el servicio más utilizado en el mundo (se pueden usar lenguajes de programación por el lado del servidor como PHP o Python). Hay otras alternativas en el mercado que pueden ser interesantes: Google Web Server, Nginx o lighttpd.

4.- Y además, lo que no es desarrollo de software

En muchas ocasiones, este tipo de perfiles con elevados conocimientos en distintas disciplinas y visión global, suelen ser los escogidos por las empresas para dirigir equipos. Evidentemente, un desarrollador de software puede tener experiencia en front-end y back-end, pero no tener aptitudes en el liderazgo de personas y proyectos o tener cualidades para trabajar en equipo.

No obstante, debe conocer el negocio de las corporaciones que paguen sus servicios, saber gestionar en tiempo real las exigencias de los clientes y coordinar con eficiencia los equipos de trabajo para llegar al desarrollo de productos que cumplan las expectativas.

 

Leave a Reply