miércoles, 12 de marzo de 2008

¿Los dos tipos de Programadores ?

En Coding Horror, un blog bien interesante para programadores, Jeff Atwood escribe un post titulado “The Two Types of Programmers”, donde plantea una agrupación más general de los tipos de programadores.

“Contrario al mito, no hay catorce tipos de programadores.. Hay realmente solo dos, como nos recuerda Ben Collins-Sussman.

Hay dos “clases” de programadores en el mundo del desarrollo del software: voy a llamarlos el 20% y el 80%. Los tipos del 20% son lo que se llamarían programadores “alfa” - los líderes, el tipo que lugares como Google y Fog Creek software buscan contratar desesperadamente. Éstos tipos fueron los primeros en instalar Linux en su casa en los 90´s; la gente que escribe compiladores en Lisp y aprende Haskell los fines de semana “por diversión”; participan activamente en proyectos open source; siempre están al tanto de las últimas, y más frescas tendencias en la programación y herramientas.

Los tipos del 80% hacen el bulto de la industria del desarrollo de software. No son estúpidos; son meramente vocacionales. Fueron a la escuela, aprendieron suficiente Java/C#/C++, luego obtuvieron un trabajo escribiendo aplicaciones internas para bancos, gobiernos, firmas de viajes, firmas legales, etc. El mundo usualmente ni ve su software. Usan cualquier herramienta que les provee Microsoft — usualmente VS.NET si están en C++, o capaz un GUI IDE como Eclipse o IntelliJ para desarrollar en Java. Nunca han usado Linux, y no están muy interesados en él de todas formas. Muchos nunca han usado siquiera control de versiones. Si lo han hecho, es con cualquier herramienta entregada con la caja Microsoft (como SourceSafe), o alguna cosa antigua que le hayan entregado. Saben exactamente lo suficiente para hacer su trabajo, luego se van los fines de semana a casa y se olvidan de las computadoras.”Personalmente, convivo con esta teoría a diario en clase. Una frase típica, a tono de burla, en mi salón de clase es: “Eso el Visual Studio te lo hace solo” ó “¿Para qué vas a aprender eso si ya está hecho?” ó “Ésto nunca lo vas a usar, es al pedo aprenderlo“. Con esa mentalidad se maneja este 80%.

El problema, el primer año aprendimos a usar Visual Basic, un IDE que te autocompleta, te tabula, y el framework .NET que incluye todo. Y resulta muy difícil para la mayoría salir de eso. Trabajar en C a bajo nivel es como darse contra un muro de piedra en un automóvil a 90 km/h y sin cinturón de seguridad…

Lo peor no es ésto, sino la cabeza de no salir de lo que ya se aprendió, de aprender una cosa que resulta “cómoda”, y no salir de eso. Muchos dijeron cuando empezamos con la materia: “¿Para qué quiero aprender C si nunca lo voy a usar?” ó “Yo nunca voy a programar un sistema operativo, ¿para qué quiero aprender C?” Conociendo esa mentalidad, ¿quién contrataría a ésta gente para un puesto de programador?

Me imagino la situación (situación Dilbert):
Jefe - “Mirá, tenés que hacer una librería en C que interactúe con nuestro framework de persistencia para controlar el puerto serie del servidor
Empleado - “¡Ah no!, yo eso no lo sé hacer, aparte el Visual no trae cómo hacerlo…

Son el tipo de gente que cumple con las 12 señales de que eres un mal programador. Son una nueva generación de 80% que se está gestando…

Para reafirmar más ésta teoría, se aplica la teoría general del Dr. Gregory Walter Graffin III, quien declaró que

En cualquier muestra al azar de la población general, se encontraría que el 80% de la gente son completos idiotas.

Es totalmente compatible, aislamos una muestra de la población, con la característica en común de ser programadores. El 80%, por ende, no son muy inteligentes…
El artículo de Coding Horror continúa diciendo:

“Cuando trabajo con equipos de programadores en el campo, consistentemente me asombro con el abismo entre ese 20% y el resto del mundo. Hace que la división entre el campo open-source y el campo Microsoft parezca un charco llano.

Declaración shockeante #1: La mayor parte de la industria está hecho del 80% de los programadores.. Sí, la mayoría del mundo son tiendas pequeñas de desarrollo para Windows, o firmas pequeñas que contratan programadores internos. La mayoría de las compañías tienen unos pocos tipos del 20%, y son generalmente los que presionan a sus jefes de pelo parado para cambiar políticas, actualizar herramientas, o usar un sistema de control de versiones sano.
Declaración shockeante #2: La mayoría de los alpha-geeks se olvidan de la declaración shockeante #1. La gente que trabaja con software open source, participan en argumentos apasionantes de criptografía en Slashdot, y bajan los últimos lanzamientos GIT son extremadamente propensos a perder de vista el hecho de que “el 80%” existe. Se emocionan con la última distro de Linux o herramientas de AJAX o sistema SCM distribuido, pasan todo el fin de semana en eso, bloguean al respecto… y luego están confundidos sobre porqué no pueden lograr que su oficina empieza a usarlo.

Tal vez no es algo impresionante para mí, pero un excelente e importante recordatorio para todos, sin embargo.

A menudo pienso que perdemos el tiempo escribiendo blogs los cuales son mayormente leído por el mismo 20%. En mi experiencia existe un pequeño efecto de goteo de los programadores alfa hacia todos los demás. Y si lo hay, lleva décadas.”

Jeff continúa su artículo incitando al 20% a cambiar, a construir un puente entre el 20% y el 80%:

“Si realmente quieres cambiar el status quo del desarrollo de software, si realmente quieres marcar una diferencia este año, tienes que ayudar fuera del pequeño grupo insular de programadores alfa y crear el cambio en el otro 80% del mundo. Y eso es mucho, mucho mas difícil que predicarle al convertido 20%. Es por eso que admiro a gente como Scott Mitchell, porque entiende la importancia de llegarle al otro 80%.”
(…)
“Desearía que fuera más sencillo para mí, porque estoy de acuerdo con Scott” (…) “Creo que la verdadera medida de éxito no es cuántos alpha geeks podés hacer que te presten atención. Es cuántos típicos, poogramadores promedio has alcanzado, aunque sea de una forma pequeña. Si realmente te importa el arte del desarrollo de software, nos ayudarás a construir ese puente entre el 80% y el 20% también.

Es difícil lidiar con éste 80%, pero a lo largo de la carrera, van a estar siempre presentes. ¿Qué piensas al respecto? ¿Te consideras ofendido por el post? Estás en el 80…

6 comentarios:

Anónimo dijo...

Muy bueno, la verdad.
Es mi lucha diaria con los jefes para avanzar y no estancarnos, pero ellos son conformistas, al igual que mis compañeros, me siento solo ante el peligro :)

Anónimo dijo...

Jeff Atwood es un imbecil come codigo.
el echo de que restrinja el linux sólo para el 20% de los programadores sta mal
me puede gustar usar el linux (ubuntu,wifislax) y me puede detestar programar en wxdevc, si las herramientas estan alli usarlas nada más, no voy a crear la rueda de nuevo.
me revienta q haya gente q piense así!!!!!

firma: Ricahrd Stallman
pd:vayan a bailar, beber, joder que mucha maquina hace daño putos!!!!

Anónimo dijo...

Respeto todas las opiniones pero exite cada imbecil, en el mundo si no sabes lo que es un Hack y nunca as compilado Linux, y no asbes c no opines anda con tu V.B. que es un L.P. para niñas cuando puedas optimizar tu codigo para utilizar tecnologia SSE, tomate el derecho de hablar si anda bruto de M.. no sabes nada

Anónimo dijo...

muy bueno tu post.....
ya que algunos programadores no van mas a fondo de como desarrollar software de la mejor manera y se quedan con lo mas facil.......

que les provee.....

José dijo...

yo estoy estudiando Ingenieria de Sistema, la pregunta que yo me hago es ¿porque desearia pertenecer a ese 20%? porque inclusive ¿pertenecer al otro 80%?...

creo que uno de los grandes problemas que existe hoy es que todo el mundo es, debe, o quiere ser programador, y creo que ese es el gran problema.

Hay que delimitar, de una vez por todas, donde comienza cada cosa.

Telecomunicaciones, Redes, Sistemas, Informatica (Bases de Datos, Software), Computación (Hardware)

Anónimo dijo...

Claro en estos tiempos, por ejemplo en latinoamerica y muchisimos paises en vias de desarrollo que conforman ese 80% del que se habla a mi parecer y juicio personal, el sistema educativo en las universidades, nos enseñan Visual Studio (Visual Basic, C#, etc) Java (con Eclipse o NetBeans), en menor jerarquia (ASP.Net, JSP, PHP), por mi parte tengo la oportunidad de desarrollarme de manera autodidacta de aprender otras tecnologias como (LUA, Python, Lazarus entre otras que tengo en mente), pero a diferencia de los paises del primer mundo ese 20% en sus universidades e Institutos se crean las distros mas afamadas de Linux y en otros proyectos de mayor envergadura son ellos que hacen viajes a USA a las conferencias de DEFCON y al final muchos son convencidos por el FBI para trabajar con ellos.

Por otro lado no estoy en contra de ninguna tecnologia Libre a Privativa ya que al final son necesarias para el desarrollo tecnólogico, no obstante gracias a ese 20% estos (hackers o programadores de élite) nos seguiran resolviendo la vida cada vez que puedan, lejos de los pleitos entre Linus Torvals y Richard Stallman que sin razon alguna se han vuelto enemigos.

A decir verdad la comunidad Open Source tiene una repulsion terrible a Microsoft y a sus tecnologías, una anecdota que me contaba mi profesor del instituto es que la comunidad libre tambien se la pasan creando una tremenda cantidad de vulnerabilidades (virus, troyanos, etc) mediante sockets para Windows y que éstos tambien no se quedan atras ya que son los usuarios mucho mas avanzados de Windows que se descargan el código fuente de diversas distribuciones Linux para atacar sus vulnerabilidades del mismo he ahi la existencia y aparacion de muchos antivirus para Linux tales como: Kaspersky, Nod32, Avast, AVG, etc, y decir que en la comunidad libre la presencia de virus es nula pues es falso, esta sera una batalla que tiene para rato.

Mientras tanto yo seguire desarrollandome y aprendiendo tecnologias que jamas aprendi en un alboratorio de computo y tratar de contribuir con las TI y porqué no contribuir tambien con la comunidad libre....