Curiosidad: Un buen desarrollador siempre está ávido de conocimientos y debe contar con ese plus de llegar a la raíz, hasta que no conozca el problema en profundidad no debe detener su trabajo.

Pensamiento claro: Esto es un ejercicio de lógica, por esto, los profesionales con excelente bases matemáticas superan en rendimiento en la mayoría de sus pares que carecen de dichos conocimientos.

Leer y comprender rápido: Esto es vital para la productividad de cualquier desarrollador. No sólo es escribir códigos; parte fundamental de su trabajo incluye la lectura de códigos, documentación y especificaciones de proyectos.

Atención a los detalles: Un programador que no presta atención a los detalles principalmente en el proceso de escritura de código, es altamente improductivo.

Aprender temas fuera de la programación: Es necesario estar en comunicación con personas fuera del mundo del código binario: contadores, abogados, financieros, entre otros.

Autodidacta: No debe depender que sus empleadores le financien entrenamientos; debe contar con la habilidad de aprender por sí mismo, sobre todo teniendo un universo de oportunidades y herramientas online.

Pasión: Los desarrolladores más exitosos respiran códigos las 24 horas; sólo así pueden aplicar trucos y buscar soluciones creativas al momento de enfrentar problemas complejos.

Comunicación efectiva: Esto enfocado en la capacidad de comunicar sus ideas de forma clara y precisa, eso le ahorrará un montón de tiempo e incluso malos momentos al momento de entregar productos o trabajar en equipo.

Explorar códigos: Los mejores programadores del mundo colaboran en proyectos Open Source, por ejemplo.

Entre los conceptos que debe manejar un desarrollador, destacan:Programación orientada a objetosEsta sigue siendo la manera de desarrollar la mayoría de aplicaciones. El lenguaje no es tan importante, (Java, C#, C++, entre otros), como el hecho de tener claros los conceptos; lo que es una clase, un objeto, un interfaz, una clase abstracta, un método estático, de instancia, herencia, composición, etc. Es especialmente útil conocer los patrones de diseño, porque ayudan a establecer un lenguaje común para comunicarse con otros desarrolladores, y la forma de implementarlos es un buen ejemplo de cómo aplicar técnicas de diseño orientado a objetos.

Programación funcionalCada vez es más frecuente, e incluso los lenguajes tradicionalmente orientados a objetos que evolucionan más lento como Java o C++, empiezan a incluir características funcionales. Así como Ruby, Python o Javascript o el empuje de lenguajes funcionales como Clojure, F# o Haskell.

Bases de datosPrácticamente toda aplicación necesita, de una u otra forma, almacenar información; y ésta suele terminar en una base de datos. Es imposible pretender dominarlas todas durante el periodo de formación, pero es prudente tener conocimiento de su utilidad.

Hardware y redesHay quienes piensan que por dedicarse a programar no necesitan saber nada del hardware que ejecuta sus programas; pero la realidad es muy distinta. Es fundamental conocer las características básicas del hardware que se utiliza para ser más exitoso en la toma de decisiones.

Sistemas de Control de VersionesEs muy útil aprender a manejar un sistema de control de versiones, incluso a través de opciones online gratuitas, esto deja de ser un problema cuando se utilizan plataformas de nube elástica como la que ofrece Facilcloud.com ya que este tipo de tecnologías tiene soporte de aplicaciones nuevas y sistemas legados, lo que facilita el despliegue de aplicaciones sin importar la versión en que fueron programadas.

Asimismo, ocurre con los lenguajes de programación, debe usarse uno que permita practicar las ideas básicas de subir y bajar códigos, obtener cambios de otras personas, crear ramas, resolver conflictos.

Un desarrollador exitoso es aquel que cumple con las cualidades anteriormente mencionadas y además busca las mejores plataformas para sus proyectos.