jueves, 19 de julio de 2012

Un programador/desarrollador ideal

Soy desarrollador desde mi infacia (13 años de edad), trabajé en una empresa como desarrollador, fundé una comunidad de desarrolladores (http://www.4Geeks.co), tengo un startup de tecnología (http://www.societs.com) y he quebrado otros varios.. Todo este background de tecnología y emprendimiento ha sido una mezcla muy interesante para mí porque he podido ver el perfil que debe tener un desarrollador desde adentro y desde afuera.

Quiero escribir un ensayo explicando las 4 premisas que yo considero deben darse para tener un desarrollador "ideal".

Debe ser un solucionador de problemas

No es casualidad que muchas universidades den la carrera de programación como una Ingeniería, después de todo el ingenio del desarrollador es uno de sus mayores valores. El problema esta en el sindrome del "No se puede". 

Estoy cansado de escuchar desarrolladores que en lugar de poner soluciones ponen trabas, tal véz por falta de creatividad, desinterés en el problema a solucionar (no lo ven como un reto) o simplemente por estupidez. La cosa es que el departamento de tecnología de cualquier compañía debería ser el último en dar su opinión, y debe tener un lider que este dispuesto a resolver todos los problemas técnicos.

Les recomiendo leer está lectura titulada: La carta a garcia donde se demuestra la importancia y significado que tiene la palabra "resolver".

No tener titulo universitario en ninguna carrera afin a la programación

Hay dos razones que me llevan a esta conclusión:
  1. El modelo de estudio universitario esta errado:
    Si es verdad que una buena base es necesaria, pero ¿5 años de carrera para tener una base?. Yo considero que la programación debe y puede ser aprendida de forma autodidacta, los modelos universitarios actuales no evolucionan a la velocidad que deberían, ni creo que en algún momento puedan hacerlo, todos los profesores son superados por los alumnos, el modelo de enseñanza para este tipo de carreras debe ser reinventado.

    Yo aprendí a programar en el estudio de mi casa, durante varias madrugadas, leyendo
    este curso de Desarrolloweb.com. Si yo quisiera estudiar programación hoy en día, probablemente me uniría a una de las miles de comunidades que existen en el mundo de la programación, y seguiría la recomendación de los mejores programadores en esos grupos.
    Si te enseñan a programar y no lo aprendes tu mismo como un autodidacta, te están creando malas mañas, tienes que ser autodidacta desde el principio o sino no sobrevives a los cambios.
  2. La programación no es un fin, sino un medio:

    Otro problema que hay en los desarrolladores criados por académicos, es la falta de entendimiento práctico de la programación o falta de visión. Si estudias y ejerces carreras de otras industrias, tienes la ventaja de conocer un pedazo del mundo como es, conoces problemas típicos de esa industria y tu mente se activa a intentar solucionarlos con la programación (que aprendiste de forma autodidacta).

    Si revisas las historias de éxito de startups más grandes, podrás ver que son muy pocos los casos que deben su éxito a una "muy buena arquitectura técnica", todo lo contrario, estamos acostumbrados a ver ballenitas en twitter, errores 404, etc.

    Si trabajas en la industria del turismo por muchos años probablemente vas a poder crear una plataforma como despegar.com, si estuviste en 10 escuelas para aprender diferentes idiomas vas a fundar OpenEnglish.com, si te toco ir a las juntas de condominios vecinales todas las semanas (como a mí) fundarás Societs.com, si trabajas en bienes raices, lo tuyo es nestio.com, airbnb.com y así sucesivamente.
Ser autodidacta

Este punto ya lo explique un poco en los otros dos puntos que he mencionado, pero vamos a profundizar unas lineas...

Facebook saca un nuevo release de su API todas las semanas, Google App Engine lo hace mensualmente, cada día ocurren cambios más frecuentemente en el mundo de la programación, nosotros hicimos un estudio intenso para conocer la mejor herramienta para realizar el proyecto http://dev.4geeks.co/ivoted, decidimos hacerlo en APE, y cuando lo terminamos (6 meses después) ya Node.js era una mejor solución.

Entonces ¿Quién me va a enseñar Node.js? Nadie! Un desarrollador ideal tiene que estar feliz por aprender esa nueva y mejor tecnología y hacer el salto en pocos días.

Debe hablar inglés

Tantos lenguajes que hay que aprender: Python, Javascript, HTML (si es un lenguaje aunque algunos digan que no), Ruby, C#, Java, Objective C, etc. Y resulta que descuidamos el idioma mas importante de todos: INGLES!

Todas las documentaciones están en ingles, los foros en inglés, los grupos en inglés, los comentarios del código en inglés. Incluso si instalas tu sistema operativo en inglés, te va a ir mejor, porque vas a poder copiar y pegar los errores en google para obtener más respuestas.


Bueno para cerrar, les quiero dejar una frase para que recuerden: "La programación no es un problema tecnico", es un medio, un instrumento para resolver problemas no técnicos que existen en la cotidianidad.

Continuar leyendo...