13 enero 2008

¿ Cómo reconocer un buen programador ?

¿Cómo reconocer a buenos programadores si usted es un hombre de negocios o empresario?

No es tan fácil como parece. No se puede ver la experiencia con solo leer el Curriclum Vitae (CV) de la persona o hacer una encuesta para vendedores, gerentes o contadores, esto es sólo de uso limitado aquí, porque grandes programadores no siempre tienen la experiencia "oficial" para demostrar que son grandes. De hecho, una gran cantidad de CV que la experiencia puede ser engañosa. Sin embargo, hay una serie de sutiles señales de que se puede obtener, incluso del CV, de averiguar si alguien es un gran programador.


Yo me considero un buen programador. Al mismo tiempo, he pasado una buena cantidad de tiempo en la empresa lado de la cerca o valla, técnicas de filtrado de CV para los proyectos, entrevistando a las personas, etc. Gracias a esto, creo que tengo un poco de experiencia en el reconocimiento de buenos programadores, Y quiero compartir en este artículo, con la esperanza de que pueda ayudar a otros "hombres de negocios" a reconocer buenos programadores. Y, quién sabe, tal vez algunos programadores que tienen el potencial de ser buenos, pero realmente no se han aprovechado esta posibilidad de leer esto y darse cuenta de lo que tienen que hacer para ser buenos (aunque, como me sostienen, que definitivamente no accesible a todos los programadores!).

En su artículo Los 18 errores que matan startups, Paul Graham hace el siguiente punto:


"…Quienes mataron a la mayoría de las nuevas empresas de comercio electrónico a principio de la década de los 90, fueron los malos programadores. Muchas de esas empresas fueron comenzaron con hombres de negocios que poseían buenas ideas del comercio y luego contrataron a programadores para poner esto en practica. Eso es en realidad mucho más difícil de lo que suena -casi imposible - porque, de hecho, los hombres de negocios no reconocen a un buen programador, sino después que tienen meses y años trabajando con esta persona.

En la práctica lo que ocurre es que los hombres de negocios eligen personas que piensan son buenos programadores (dice aquí en su CV que es un Microsoft Certified Developer), pero que no lo son. Entonces están mistificando, para encontrar una forma de poner en marcha la empresa, a lo largo de una pista con lumbres alrededor, a un extremo tu bombardero de la Segunda Guerra Mundial, mientras que sus competidores pasan en jet de combate gritando… Este tipo de arranque se encuentra en la misma posición que una empresa grande, pero sin las ventajas.

Así que, ¿cómo elegir buenos programadores si no eres un programador? No creo que hay una respuesta. Yo estaba a punto de decir lo que tiene que encontrar un buen programador que le ayudarán a contratar a la gente. Pero si no se puede reconocer la buena programadores, ¿de qué forma incluso hacer eso? "

No estoy de acuerdo con el señor Graham sobre esta. Creo que hay una serie de indicadores muy fuertes de un "buen programador" (y, por el contrario, fuertes indicadores de un "no tan buen programador") que incluso un hombre de negocios puede reconocer. Voy a resumir algunos de los principales indicadores y contra-indicadores en una lista al final del artículo.


# 1: Pasión

En mi experiencia corporativa, me encontré con una especie de chico técnicos que nunca había conocido antes de la carrera de programador. Se trata de unas persona que está haciendo de TI, porque piensan que es una buena carrera. Ellos no realizan un desarrollo en su tiempo libre. Ellos están conmocionados cuando averiguar tengo una red local y 3 ordenadores en casa. Acaban de hacerlo en el trabajo. Ellos no aprenden cosas nuevas, al menos que se le envié a un programa de entrenamiento o curso (o motivados por la necesidad de conseguir un trabajo que requiere que la tecnología). Hacen "programación o desarrollo" como un día de trabajo. Ellos realmente no quieren hablar de ello fuera del trabajo. Cuando lo hacen, hablar con una distintiva falta de entusiasmo. En el fondo, carecen de la pasión.

Yo creo que un buen desarrollador siempre es apasionado por la programación. Los buenos desarrolladores programarían incluso aunque no se les pagara por ello o no recibieren beneficios económicos. Un buen programador tendrán una tendencia a hablar frente a usted sobre algunos detalles técnicos de lo que están trabajando en (pero al mismo tiempo creer sinceramente, que lo que están hablando realmente merece la pena de ser escuchado). Algunas personas podrían ver que las habilidades como un mal adatado sociales (y no lo que es), pero si buscar reconocer a un buen programador, esta pasión por lo que están haciendo a costa de suavidad social es un indicador muy fuerte.

Puedes llegar a obtener charlas muy excitantes de tecnologías que esta usando esta persona, por toda unas horas y sin perder un instante el tema. Ahí entonces podrás decir que has encontrado un apasionado de la programación.

# 2: Auto-enseñanza y el amor por el aprendizaje

Programación es el último movimiento. No pasa un año sin que alguna nueva tecnología desplace a otra, bajándola al segundo puesto del “Top Ten”, estableciéndose como un estándar y cambiando la mitad del desarrollo universal. Esto no quiere decir que todos los buenos programadores se acogen a estos cambios y montar la última versión. Sin embargo, hay una clase de programadores que nunca, pero nunca migran a una nueva tecnología a menos que estén obligados a esto, porque no les gusta aprender nuevas cosas. Estos programadores suele tener el conocimiento de programación aprendido en la universidad, y esperar obtener cualquier habilidad del que estuvo allí, además de los cursos independientemente de su empresa está dispuesta a invertir en ellos.

Si está pensando en contratar a alguien como programador, y él nunca pronuncia las palabras "Puedo trabajar con eso, me acabo de entrenar en un curso de capacitación durante una semana y seré bueno en el trabajo que me ofreces", No contratar a ese muchacho. Un buen programador no necesita un curso de capacitación para aprender una nueva tecnología. De hecho, un buen programador te hablaría acerca de la nueva tecnología, que siquiera tú has oído hablar, explicando las razones por las cuales se debe utilizar en tu negocio. Incluso si ninguno de sus empleados sabe cómo usarlo aun.

# 3: Inteligencia

Algunos empresarios o hombres de negocios, asuman que la falta de tacto social y la falta de inteligencia es los mismos. En realidad, la inteligencia tiene varias facetas, y la inteligencia socio-emocional es solo de ellas. Bueno los programadores no son mudos. Nunca, de hecho, los buenos programadores están por lo general entre la gente más inteligente que conocemos. Muchos de ellos se han hecho muy buenas habilidades sociales. El cliché de que el programador es incapaz de tener una buena conversación que es sólo - en un cliché injusto. He estado en algunas reuniones del Grupo de usuarios de Ruby Londres y puedo decir que sólo con muy pocas excepciones, la mayoría de la gente allí es inteligente, locuaz, sociable, tienen intereses variados, etc. Usted no los vera charloteando en la vía cerca de un bar y pensar “es solo un grupo de geeks” (what a bunch of geeks!)- Al menos hasta que se aproxime a un grupo y darnos cuenta de que estamos hablando de la mejor forma de diseñar una aplicación RESTful con una pesada UI frontend.

Esto no significa que todos ellos se sientan cómodos en cada contexto social. Pero sí significa que si el contexto es cómodo y no suficiente amenazante, podrá haber grandes como una conversación con ellos como lo haría con los más "socialmente permitido" la gente (tal vez mejor, ya que la mayoría de buenos programadores que conozco Al igual que sus conversaciones giran en torno a temas realmente útil, en lugar de sólo tontas bromas).

No siempre contratar a una persona tonta piense que es un buen programador. Estos no lo son. Si no se puede tener una gran conversación con ellos de una forma relajada de un contexto social, es muy probable que no sea un buen programador. Por otra parte, cualquier persona que claramente muy inteligente por lo menos tiene un enorme potencial para ser un buen o gran programador.

# 4: Ocultar la Experiencia

Esto se correlaciona con el punto de la "Pasión", pero que es una fuerte señal que me gustaría hacer énfasis en el.

Empecé programación cuando tenía cerca de 9 años, en un Commodore 64. Luego migre a la PC, con algun Pascal. Cuando tenía 14 escribi un raycasting con compilado en C y ensamble, gastó una gran cantidad de tiempo jugando con enfriar efectos gráficos que usted puede obtener su equipo por jugar a hacer directamente con la tarjeta de vídeo. Esto fue lo que yo llamo mi "coccoon etapa". Cuando yo entré en esa etapa, yo era un programador mediocre, y carecen de la confianza para hacer algo realmente complicado. Cuando lo terminé, me había ganado esa confianza. Sabía que yo podía casi cualquier código, siempre y cuando puse mi mente en esto.

Que nunca ha aparecido en mi CV? No.

Estoy firmemente convencido de que la mayoría de los programadores de buena voluntad tienen un iceberg oculto o dos como este que no aparece en su CV o perfil. Algo que creo no es realmente relevante, porque no es "correcta experiencia", pero que en realidad representa un logro impresionante. Una buena pregunta para pedir un posible "buen programador", en una entrevista que sería "puede usted decirme acerca de un proyecto personal - incluso o especialmente uno que es completamente irrelevante - que usted hizo en su tiempo libre, y que no está en tu CV? #Si no pueden contestar (aunque su CV es de 20 páginas de largo), probablemente, no un buen programador. Incluso un programador con un exhaustivo CV tendrá unos proyectos significantes perdidos de estos.

# 5: Variedad de tecnologías

Esta es muy simple. Debido al amor por el aprendizaje y el juego “toying” con las nuevas tecnologías que viene con el empaque de ser un "buen desarrollador", es inevitable que todo "buen programador" con más de los 22 años de dominio de una docena de diferentes tecnologías. Ellos no pueden ayudar. Aprender una nueva tecnología es una de las cosas más divertidas que un programador puede hacer esto forma parte de su pasión. Así que lo haremos todo el tiempo, y acumular un bolso de las cosas con que “ha jugado alrededor de este tiempo”. No pueden ser expertos en todas ellas, pero todos los programadores decentes dominan de un gran inventario de las tecnologías no relacionadas.

Que "no relacionadas" es un toque poco sutil. Cada media-decenae programador java será capaz de crear una lista de tecnologías, tales como Java, J2EE, Ant, XML, SQL, Hibernate, Spring, Struts, EJB, Shell scripting ", etc. Pero esos son todos partes de la misma tecnología del lote, todos directamente relacionados entre sí. Esto es posiblemente difícil de reconocer para los no programadores, pero es posible saber si su tecnología de lote es variado por hablar con ellos sobre esto, y preguntarle cómo las diferentes tecnologías que saben se relacionan entre sí. El exceso de especialización en una sola tecnología de lote es un indicador de un no tan buen programador.

Por último, si algunas de estas tecnologías están en la última, es un buen indicador positivo. Por ejemplo, hoy (noviembre de 2007), el conocimiento de Merb, Flex, RSpec, HAML, UJS, y muchos más… Por favor tenga en cuenta que estas son bastante estrechamente relacionados con las tecnologías, por lo que en un par de años, alguien que conoce todos estos será equivalente A alguien familiar con la pila de Java enumerados en el párrafo anterior.


Actualización: Como aclaración a este punto, hay en realidad dos indicadores: Una buena variedad de tecnologías a través de un período de tiempo es un indicador positivo, si las tecnologías son lo último. Tecnologías de punta y bleeding edge son un indicador positivo.

# 6: Calificacion Formal

Este es más un no-indicador que una contra-indicador. El punto clave de esbozar aquí es que la posesión de calificaciones no significa cuando estás tratando de reconocer un buen programador. Muchos programadores de buena voluntad tienen un título en Ciencias de la Computación. Muchos no. Certificaciones, como MCSE o SCJP o similares, no significa nada tampoco. Estos están diseñados para ser accesibles y convenientes para todos. Lo único que indican es un cierto nivel de conocimientos de una tecnología. Son garantías que permitan la contratación de personas en la tecnología de las grandes empresas a saber "ok, este chico sabe java, que tiene una certificación para demostrar su conocimiento" sin necesidad de entrevista.

Si está por contratar a una pequeña empresa, o de lo que necesita realmente inteligentes desarrolladores para tapar las grietas de su equipo de programación y poner empractica un desarrolla ágil para su empresa, usted debe ignorar la mayoría de las calificaciones formales que hacen ruido. Que en realidad no le dirán mucho acerca de si el programador es bueno. Del mismo modo, caso omiso de la edad. Algunos programadores son impresionantes a los 18 años. Otros son impresionantes en el 40. Usted no puede basar sus decisiones sobre la calidad de programador en la edad (aunque es posible que decida contratar a la gente en torno a una determinada edad para tener un mejor ajuste en la compañía, por favor tomar nota de que la discriminación por edad es ilegal en la mayoría de los países).

Como nota final a esta, en mi experiencia la mayoría de los programadores regulares o malos se iniciaron la programación en la universidad, en su curso de Ciencias de la Computación. La mayoría de los programadores de buenos se inició mucho antes, y el grado es sólo una continuación natural de su afición. Si su potencial programador no hizo ninguna programación antes de la universidad, y toda su experiencia se inicia cuando obtuvo su primer trabajo, es probablemente que no sea un buen programador.

Aclaratoria

Ninguno de los indicadores por encima o por debajo está seguro de riesgos. Usted encontrará gran programadores que romper algunos de los moldes. Sin embargo, mi opinión es, rara vez encontrará usted un gran programador que rompe todos ellos. Del mismo modo, es posible que los programadores de no muy buenos que cumplen (o parecen ajustarse a) algunos de estos criterios. Pero sí creemos firmemente que el más de estos criterios responde a un programador, más probabilidades hay de que sea uno de esos difíciles de alcanzar "buenos programadores" que, como hombre de negocios, necesita asociarse con este.

Puntos de Criterios

Así que, en resumen, he aquí algunos indicadores y contra-indicadores que le ayudarán a reconocer un buen programador.

Indicadores Positivos:

  • Apasiona la tecnología
  • Programas como hobby
  • Se fuera su oído hablar sobre un tema técnico si alienta
  • Significativo (y, a menudo, numerosos) de lado los proyectos personales a través de los años
  • Aprende las nuevas tecnologías por si solo
  • Opina acerca de las tecnologías que son mejores para diferentes usos
  • Muy incómodo ante la idea de trabajar con una tecnología que no cree que sea la "correcta"
  • Es evidentemente inteligente, puede tener una gran conversaciones sobre una variedad de temas.
  • Programación mucho antes de empezar la universidad o el trabajo.
  • Se ve la punta del "icebergs", existen los grandes proyectos personales bajo el radar de CV.
  • El conocimiento de una gran variedad de tecnologías no relacionado (no puede ser de CV)

Indicadores Negativos:

  • La programación es un trabajo diario
  • Realmente no desea "foro de debate", incluso cuando se anima
  • Aprende nuevas tecnologías en la empresa por cursos patrocinados
  • Feliz de trabajar con cualquiera que sea la tecnología que ha elegido, "todas las tecnologías son buenas" .
  • No les parece demasiado inteligente
  • Comienza la programación en la universidad
  • Toda la programación está en la experiencia de CV
  • Centrado principalmente en uno o dos pilas de la tecnología (por ejemplo, todo lo relacionado con el desarrollo de una aplicación java), sin experiencia fuera de él.

Espero que pueda ayudar a conseguir buenos programadores.


Gracias por leer.

Fuente del articulo: http://www.inter-sections.net
Nombre Original :How to recognise a good programmer
Decidi colocar unas images para no tornar el texto muy aburido
Traducción: elperucho


Nota: Espero que mi hijo me perdone algun dia, por no ir a bañarme en la pisina con él, por dedicarme a traducir es excelente articulo.

1 comentario:

yisus dijo...

Los buenos programadores en Mexico debe ser analítico y frío ante situaciones críticas, es cierto. Pero eso no significa que no pueda ser apasionado, imaginativo y sentir curiosidad por diversos temas. De hecho, es la combinación de estas dos caras de la moneda la que puede hacerlo destacar entre los demás. El hecho de trabajar con código no significa que un programador de talento no pueda explorar las posibilidades que la tecnología puede ofrecer, tenga inquietud por aprender cosas nuevas, tenga dotes artísticas o ponga su imaginación al servicio de sus habilidades.