Mar
27
Nov

Los dos tipos de programador


Coding HorrorEn blogs, portales de noticias, empresas, centros de educación en programación, etc. generalmente se tiende a describir distintos “tipos” de programadores. Hace en poco en un blog en TechRepublic, nombraban 10 tipos distintos de programadores, por ejemplo.

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.”

Ser o no serPersonalmente, 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…


Si te gustó éste post, podés apoyar a PicandoCódigo a través de PayPal!



19 Comentarios para “Los dos tipos de programador”

  1. Kilmer



    Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; es-ES; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9

    Y luego esta este tipo:

    http://es.youtube.com/watch?v=bfXRDQQy-fU

  2. jose



    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.8) Gecko/20071022 Ubuntu/7.10 (gutsy) Firefox/2.0.0.8 FirePHP/0.0.5.22

    Totalmente de acuerdo, yo tiro más por los sistemas que por la programación, pero te puedo decir que he estado en varias empresas y se ve al tío que piensa, para qué?, o qué mierda que esto no está con una aplicación como Visual Estudio y hay que editar en línea de comandos… y he llegado a oir frases lapidarias como…Linux nunca llegará a nada porque es gratis…

    Saludos

  3. fernando



    Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.9) Gecko/20071025 Firefox/2.0.0.9

    Kilmer:
    Sin comentarios… Ya había visto el video, pero no pudieron elegir un género musical de verdad? En vez de eso?!?

    Jose:
    Como Administrador de Sistemas, se ven hasta cosas peores. La línea de comando… cuántos programadores hay que no saben usar ni Bash ni DOS!
    Y lo de Linux, todavía hoy se escucha que nunca va a llegar a nada por tantas razones estúpidas… Entre ellas, porque es “gratis”, porque “lo hacen un grupo de programadores y no hay empresas que lo soporten” (nunca oyeron hablar de Red Hat, Novell, Cannonical, entre otros) y la más ridícula de todas hoy en día: “Porque es feo”.

  4. Carlos



    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

    Es verdad lo que dices respecto a los 20% y 80% en casi todo sentido…
    Pero, no creo que el usar linux o windows, o asp.net y php hace la diferencia, ya que con las dos corrientes ideológicas se logra los mismos resultados…

    El pensamiento linux vs microsoft no tiene sentido, es como peñarol y nacional… tenes que elegir y despues darle pa delante…

    saludos

  5. fernando



    Mozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10

    Carlos:
    No es una pelea Windows contra Linux, que no se confunda.
    Si seguís el link de Scott Mitchell - http://scottonwriting.net/sowblog/posts/5595.aspx, vas a ver que habla de ASP.NET y sin embargo, se reconoce en el 20%.
    No es un tema de qué tecnologías usas (aunque Visual Basic apesta…), pero el hecho de desconocer absolutamente Linux pudiendo obtenerlo gratis, dice algo. Yo soy usuario Linux, y programo lo más que puedo en Linux, pero trabajo con Windows en .NET. No por eso me limito a conocer sólo esa tecnología o la otra, estoy de acuerdo que esa pelea no tiene sentido, hay que saber de todo. Pero ésto ya es otro tema, no es el punto del post.
    Gracias por visitar y saludos

    PD: El futbol uruguayo son los padres.

  6. guest



    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.9) Gecko/20071025 Iceweasel/2.0.0.9 (Debian-2.0.0.9-2)

    En los programadores del tipo 20%, me parece que te falto decir que su lenguaje de cabecera es C, no imagino un hacker de gnu/linux sin saber C, aunque lisp es otro de los lenguajes mas utilizados en el mundo de gnu/linux.

    ——–
    |_|0|_|
    |_|_|0|
    |0|0|0|

  7. fernando



    Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.10) Gecko/20071115 Firefox/2.0.0.10

    guest:
    Tienes razón. Un hacker GNU/Linux tiene que saber C. Creo que cualquiera que se jacte de ser buen programador, tiene que saber C. Manejar a huevo los recursos del hardware no es para cualquiera. No es que yo lo sepa hacer bien, pero sigo aprendiendo! C está buenísimo, aunque sea difícil de dominar.
    Según he leído, tanto Lisp como C y Perl son de los más usados, aunque también estaría Haskel (puramente funcional) creo.
    Gracias por pasar y dejar comentario.
    Saludos

  8. wisiwi



    Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11

    Si bueno, es la tipica diferencia entre el 80% de la gente que se toma la informatica solo como un trabajo.
    Y el otro 20% que se toma la informatica como una pasion, que a parte de trabajar en ello sus 8 horas al dia, llegan a casa con ganas de aprender mas.

    … para mi la informatica es una forma de ganarse la vida. No una forma de vida.

    No me imagino a gente con familia llegando a casa y poniendose a actualizar/ampliar sus conocimientos informaticos …. (8 horas de trabajo al dia deberia ser suficiente para eso).

  9. Eduardo



    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.10) Gecko/20071126 Ubuntu/7.10 (gutsy) Firefox/2.0.0.10

    Hace mucho tiempo que busco una forma de expresar la idea de tu artículo en forma convincente.

    Usualmente planteo un paralelismo entre el desarrollo de software y la cocina: los RAD (con mucho énfasis en Visual Basic) son las sopas instantáneas del mundo del software.

    Imagínate una reunión de gourmets “profesionales”, que discuten sobre sus sopas Knorr, sus postres Royarina y su puré de papa deshidratado Maggi. Está de más aclarar que estos “gourmets profesionales” jamás vieron ni pelaron una papa en su vida; nunca vieron personalmente una zanahoria
    , ni picaron una cebolla, etc. etc.
    Su código suele seguir el algoritmo: “vacíe el contenido de este sobre en una cacerola, agregue un litro de agua y lleve al fuego hasta empezar el hervor”.

    Por otra parte reconozco que para los trabajos rápidos y de bajo presupuesto, quienes hacen sopas Knorr nos llevan ventaja, ya que invierten sólo una fracción del tiempo que nos llevaría realizar el mismo programa en C, Lisp, Caml o cualquier lenguaje serio.

    Y -por último- a propósito de lenguajes: todo lenguaje debe permitir compilar un mismo código fuente en al menos tres sistemas operativos diferentes. Si no se cumple esta condición, el “lenguaje” no es tal, sino que se debe definir como una herramienta específica de un sistema operativo (y quien la usa, en lugar de denominarse “programador” debería llamarse “usuario”).

    Saludos, y muy bueno el blog!

  10. David



    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11

    Muy gracioso y a la vez acertada la manera de ver a los programadores.

    Aunque bien es cierto que hay un buen número de programadores que están en la zona de sombra entre el 20 y el 80. No son supergeeks pero si mucho mas aptos que la mayoria. :)

    También está la teoria de “Para que voy a tocarlo si lo que hay ahora funciona, y encima mis usuarios ya saben utilizarlo”

  11. fmvilas



    Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.8.1.11) Gecko/20061201 Firefox/2.0.0.11 (Ubuntu-feisty)

    Aún más desesperante es cuando, una persona con 27 años y después de llevar 9 estudiando una ingeniería de sistemas informáticos, te dice que va a trabajar de “informático” y no le gusta ni la programación, ni las BD, ni la gestión, ni el mantenimiento… y encima se pasa el día enganchado a juegos en red por internet.

    Eso si que es triste…

    Aparte de lo dicho, totalmente de acuerdo con el post y mínimamente ofendido, pero rectificar es de sabios, o eso dicen jaja!

    Saludos,
    Fran

  12. Ales



    Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11

    Que post tan vacano me he encontrado en esta pagina, no conocia pero veo que hay que visitarla mas seguido.
    En cuanto al 80 y 20 soy un programador de C# y en mi trayecto tambien he conocido muchas herramientas para el Desarollo de SW. La diferencia puede ser tan grande como se quiera es cierto que el Visual Studio presenta muchisimas facilidades frente a otros lenguajes pero tambien es cierto que si el programdor lo decide puede hacerlo todo con sus propias lineas de codigo.

    Una cosa mas… al igual que fmvilas me enerban los manes de este tipo y la verdad que abundad.

    saludos… Excelente post

  13. guest



    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.5) Gecko/20070713 Firefox/2.0.0.5

    Excelente articulo.
    En la actualidad utilizo Linux en el trabajo, Win/Linux/Freebsd en casa, y programo hace ya bastante tiempo principalmente en C, ya que en la oficina me dedico a realizar parches para alsa, webcams, cosas del kernel, etc. Pero tambien e utilizado c++/qt, ruby/wx/fox, php, asp , etc.
    El problema principal que veo en quizas el “80%” que mencionases el poco interes de aprender por si mismo, siempre buscando la solucion hecha por otros que intentar utilizar la cabeza para resolver las cosas. Esto se nota bastante los dias que no hay internet, que ves a varios dando vuelta sin saber que hacer. Obviamente por cuestiones de tiempo y por logica no es necesario ni pretenderia que hagan lo que ya esta hecho, pero si que antes de buscar en otro lado, intenten plantear la solucion del problema, y en ultima instancia ver como lo hicieron otros ( en algunos casos no se dispone de tiempo, bueno, es una excepcion ). Esta es la manera, que yo considero, de adaptar la cabeza y ganar experiencia, porque el planteo que se hizo desde nuestra peque~a cabezita sirve para cualquier problema que se presente despues independientemente del lenguaje.
    Ahora, el lenguaje que usan, realmente no me va ni me viene, no me gustan los fundamentalistas de un lenguaje en particular, ya que como “profesionales” que deberiamos ser , hay que elejir la mejor herramienta para la necesidad/proyecto en cuestion.
    La mejor herramienta de un programador deberia ser el api/doc/man/etc y no el google en primera instancia.
    slds

  14. omar muñoz



    Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

    Esta muy interesante tu lectura, en mi clase me encargaron leerla, pero no se a cuanto podre aspirar si apenas estoy viendo progra I (C++) jaja
    pero me intereso esto de la programacion, si quieres lograr que la sociedad comience a aprender la verdadera programacion, tendras k empesar knmigo y mandarme unos tips para aprender de una manera eficaz, asi podre ayudar a otros..

  15. fernando



    Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9b4) Gecko/2008030318 Firefox/3.0b4

    omar:
    ¿En serio te encargaron leerla en clase? Buenísimo…
    No te preocupes por estar empezando, C++ es un buen lenguaje para arrancar.
    Lo importante es que te interese, te guste, y
    sepas que siempre podés aprender más.
    Si recién estás empezando te recomiendo que sigas la clase, y busques por tu cuenta los temas que se dan para ampliar los conocimientos. No te apures, hay mucho por aprender, se necesita tiempo…

    Saludos y gracias por comentar!

  16. Ikarus



    Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13

    Epa! Entre las 12 señales de que eres un mal programador y todo esto, estoy por pegarme un tiro y terminar ya. :-P
    Como muchos o como pocos, ya no se que decir con tanto porcentaje por ahi suelto, siento curiosidad de ahí que para Ingeniería de Software decidiese hacer la interfaz gráfica de usuario con gwt, después de descartar dojo y algunas otras. Sólo por aprender algo nuevo, aunque al final es como usar swing/awt + servlets.
    Aunque ahora quede registrado como usuario de mozilla+Windows, esto es falso. Windows lo utilizo para jugar (si, me gustan los juegos. Una partidita al TCE:test, CoD4, Silent hunter… ) y para Ingenieria de Software, ya que todos los de mi grupo usan Windows y para evitar problemas de compatibilidades decidí utilizar Windows. Como IDE Eclipse y para ver codigo de manera sencilla en windows Scite.
    Utilizo Debian y cada vez que sale una distribución nueva tengo que descargarla para probarla y ver que tal va. Así continuo aprendiendo…
    Pero eso si, de C/C++ ya ni me acuerdo… No es vagueza, es cansancio, falta de sueño y un ritmo frenético con el cual puedes aprender siempre y cuando lo que aprendas no te quite mucho tiempo para hacer otras cosas.
    Si pertenezco al 80%, pues tendré que pertenecer, pero eso sí, con dos huevos.

    Saludos! :-D

Trackbacks

  1. » Como usar el poder social de Facebook para incrementar tus ventas
  2. Los dos tipos de programador - Noticias externas
  3. HardBit » Tipos de programadores

Dejar un comentario

Si quieres mostrar código, enciérralo entre los tags pre de esta forma:
<pre lang="L"> y </pre>, donde L es un lenguaje compatible GeSHI. Más info.

XHTML: Las siguientes tags están permitidas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">


Al agregar un comentario en esta página, usted acepta la siguiente licencia para su publicación:
Creative Commons License Creative Commons Attribution-Share Alike 3.0 Unported License.