Con la vasta diversidad de opciones de tecnología, idiomas y plataformas, puede ser bastante difícil descubrir dónde es mejor invertir el tiempo en capacitar tus habilidades como desarrollador de software.
Con frecuencia se me pregunta cómo ser un mejor programador, y la mayoría de las personas basan esa pregunta a si deben o no invertir su tiempo en un lenguaje de programación o tecnología particular frente a otro.
Vengo pensando en esto desde ya hace un tiempo y he llegado a lo creo que son las características más importantes y básicas que un desarrollador de software puede lograr y que le darán las mejores oportunidades profesionales y hacerlos más eficientes.
1. Capacidad de solucionar de problemas
El desarrollo de software se trata de resolver problemas en un 100 %. Sin problemas, no existiría la necesidad de desarrolladores de software.
Todos los programas de software están diseñados para resolver los problemas de algunos usuarios y, dentro de esa solución general, se encuentra una variedad de problemas más pequeños que lo compensan.
En realidad no importa qué lenguaje o tecnología de programación uses, si no puedes resolver problemas, no serás muy bueno para desarrollar programas software.
Es impresionante cuán mala es la mayoría de desarrolladores que resuelven problemas.
Toma como ejemplo a un carpintero. Si quieres ser un carpintero exitoso, deberías ser bueno para cortar madera. Probablemente deberías haber practicado todos los tipos de cortes y haber usado muchas herramientas para cortar madera.
No importa cuántos años de experiencia tengas en la carpintería o cuán bueno puedes diseñar muebles si cada vez que tratas de cortar madera, tienes problemas cortar.
2. Capacidad de ser autodidacta
Probablemente no hay otra habilidad más importante en la vida que enseñarse a uno mismo.
Esta habilidad es importante en especial en el desarrollo de software porque no conozco un campo que cambie con más rapidez que este.
No puedes saber todo acerca de todo. Ni siquiera puedes invertir el tiempo que requiere ser un maestro en un marco o tecnología en particular —¡todo cambia muy rápido!
El lugar de eso, necesitas la habilidad de adquirir, con rapidez, el conocimiento que necesitas para tu proyecto más cercano.
Si realmente deseas tener la habilidad de impulsarte en la carrera del desarrollo de software, aprende a ser autodidacta.
La única forma como desarrollar esta habilidad es ponerla en práctica. Ve y aprende un lenguaje de programación nuevo o una tecnología nueva, incluso si piensas que jamás la usarás. Estarás sorprendido de cuán rápido puede ser capaz de aprender porque ya conoces la base.
Si puedes adaptarte con rapidez al mercado de desarrollo de software, tecnologías y plataformas asociadas con él que cambian constantemente, tendrás las habilidades que siempre estarán en demanda.
3. Capacidad para nombrar
Cuando las preguntas me preguntas qué es lo que hago todo el día, mayormente digo: «Leo cosas que las personas nombran y les coloco nombres».
Bueno, en realidad nadie pregunta eso y yo no respondería de esa forma, pero podría hacerlo.
El desarrollo de software se trata de describir lo metafísico. La mayoría de lo que creamos no puede ser visto.
Tenemos que construir en nuestras mentes un mundo entero con administradores que toman solicitudes de autorización y sueltan respuestas de autorización junto con bases de información usando producción de usuarios para reunir más usuarios.
Cada vez que codificas, colocas nombres. Cuando lees códigos que otra personas ha escrito, aprendes más de los códigos a partir de los nombres de las cosas en esos códigos.
La mayoría del tiempo, puede predecir con exactitud el nivel de habilidad del desarrollador con mirar su forma de nombrar métodos, variables y clases en los códigos que escriben.
Un desarrollador que carece de la habilidad de brindar buenos nombres a conceptos en información en sus códigos es como un intérprete mudo. No importa si entiendes algo, si no puedes explicarlo adecuadamente, en el momento que la idea deja tu mente, ya no hay vuelta atrás.
La mejor forma de mejorar es capacidad es siempre ponerla en práctica. Con frecuencia, renombro cosas en códigos que solo leo para tener un entendimiento. Cuando empiezo a comprender lo que un método hace, cambio el nombre para encajar dicho entendimiento. Hago esto mientras leo el código, sin realizar ningún cambio lógico.
Mientras más te enfocas en colocar buenos nombres a las cosas, mejor serás.
Esto es lo más visible en tus códigos. Es difícil saber si tu código eso correcto o eficiente tan solo al mirarlo, pero si lo lees y lo entiendes, asumiré que sabes lo que estás haciendo.
4. Capacidad de tratar con las personas
Ubico esta capacidad como la última, pero, en muchos casos, se podría decir que es la primera o la más importante.
Donde vayas, encontrarás personas.
A menos que trabajes solo y desarrolles programas de software solo para ti, otras personas influenciarán en tu carrera como desarrollador de software.
El principal problema es que las personas no son criaturas lógicas, sino emocionales. Claro, nos enorgullecemos de nuestra capacidad de razonar, pero la verdad es que la mayoría de decisiones que tomamos son más influenciadas por las emociones que por la razón.
Lo que esto significa para ti como desarrollador de software es que, a menos que puedas lidiar eficientemente con otros desarrolladores de software, gerentes, incluso clientes, constantemente enfrentarás problemas, sin importar cuán buenas sean tus ideas o cuánto valor tengan tus capacidades.
Mantenerse activo e involucrado en la comunidad de desarrollo de software en general también puede ayudarte muchísimo en tu carrera. No solo se trata de tener una red de contactos, sino de hacer conocido tu nombre y cultivar un buen Karma.
¿Dónde quedas las habilidades prácticas?
Nota que no incluí en ninguna parte de mi lista una tecnología en particular, incluso como una habilidad en general como desarrollo web o desarrollo de aplicaciones para dispositivos móviles.
Es importante tener una base sólida en un par de área tecnológicas, pero esas áreas no se comparan en nada a las cuatro habilidades que mencioné líneas arriba.
Si puedes resolver problemas, aprender cosas rápidamente, colocar nombres a cosas y tratar con personas, tendrás un mucho mejor nivel de éxito a largo plazo comparado con solo especializarte en cualquier tecnología en particular.
Con estos dicho, ciertamente es importante aprender uno o dos lenguajes de programación y tener una idea general de especialización, pero mientras no vayas muy lejos y te enfoques en estas cuatro habilidades, estarás bien.
Staff Digital junto con su equipo de desarrolladores y diseñadores web te ofrecen los servicios de desarrollo de software, usando una variedad de tecnologías que harán que tu página web luzca profesional y funcione muy bien.
Este artículo fue publicado originalmente en Dzone, en idioma inglés, y ha sido traducido y adaptado por Staff Digital, especialistas en diseño y desarrollo web en Lima, Perú. En Staff Digital nos encanta encontrar y compartir información de alta calidad de diversas fuentes. Si encuentras un artículo interesante en inglés sobre Imagen e Identidad Corporativa, Estrategia Digital o Diseño de Páginas Web, ponte en contacto con nosotros y uno de nuestros editores se encargará de traducirlo y publicarlo. Gracias por visitarnos!