![]() | |||
Joel on Software La Opinión de Joel sobre qué es Software
| |||
|
Otros artículos de "Joel on Software" en Español Otros artículos de "Joel on Software" en Inglés |
Por Joel Spolsky Traducido por Pablo A. Pinzón Editado por Jerry Elizondo Marzo 23, 2000 Es muy crucial para Fog Creek Software emplear la gente adecuada. En nuestro campo, hay tres tipos de gente. Al final de la escala, están las masas que no miramos, a los que les hace falta hasta las habilidades más básicas para el trabajo. Estos son fáciles de filtrar con tan solo mirar la hoja de vida y haciéndoles dos o tres preguntas. En el otro extremo, están las superestrellas brillantes escriben compiladores Lisp por diversión, en un fin de semana, en Assembler para el Palm Pilot. Y en la mitad, está un gran número de "posibles" quienes parecen ser capaces de apenas contribuir algo. El truco está en encontrar la diferencia entre las superestrellas y los posibles, porque en Fog Creek Software solamente empleamos superestrellas. Aquí están algunas técnicas para hacerlo. Primero que todo, el criterio cardenal #1 para ser empleado en Fog Creek: Inteligente y Eso es. Eso es todo lo que buscamos. Memorice eso. Recítelo antes de acostarse cada noche. Nuestra meta es emplear gente con aptitud, no con un conjunto de habilidades. Cualquier conjunto de habilidades que la gente pueda llevar al trabajo será tecnológicamente obsoleto en unos dos años de todas formas, entonces es mejor emplear gente capaz de aprender cualquier nueva tecnología en vez de gente que en este momento saben programar SQL. Inteligente es difícil de definir, pero al mismo tiempo que miramos posibles preguntas para la entrevista veremos como Usted lo puede averiguar. Consigue Terminar las Cosas es crucial. Gente Inteligente pero que no Consigue Terminar las Cosas casi siempre tienen Doctorados y trabajan en empresas grandes donde nadie atiende a lo que tengan que decir porque son completamente imprácticos. Ellos prefieren afanarse mucho, sin resultados, sobre algún problema académico en vez de entregar su producción a tiempo. Este tipo de personas es fácil de identificar porque les fascina mostrar la similitud teórica entre dos conceptos ampliamente divergentes. Por ejemplo, dirán "Las Hojas de Cálculo son realmente un lenguaje de programación especial" y se toman una semana para escribir un documento espeluznante y brillante sobre los atributos lingüísticos-teóricos-computacionales de Hojas de Cálculo como un lenguaje de programación. Inteligente, pero no práctico. Ahora, gente que Consigue Terminar las Cosas pero no son Inteligentes harán cosas estúpidas, aparentemente sin pensar sobre estas y después alguien más tendrá que venir a arreglar el lío. Esto los convierte en riesgos para la empresa porque no solamente no contribuyen, sino que también hacen perder tiempo a la demás gente. Ellos son el tipo de personas que copian pedazos grandes de código por todas partes en vez de escribir la subrutina que necesitan, porque con hacerlo logran terminar el trabajo, pero no de la forma más inteligente. La regla más importante cuando se entrevista es:
Al concluir la entrevista, debe estar listo para tomar una decisión tajante sobre el candidato. Hay solo dos resultados posibles para esta decisión: Emplear o No Emplear. Coja un computador y envié sus comentarios de inmediato al reclutador. En la línea de asunto debe estar el nombre del candidato. La primera línea de su e-mail debe ser Emplear o No Emplear. Después en aproximadamente 2 párrafos debe justificar su decisión. No hay otra posible respuesta. Nunca diga, "Emplear, pero no en mi grupo." Esto es rudo e implica que el candidato no es suficientemente inteligente para trabajar en su grupo, pero es posible que sea suficientemente inteligente para los perdedores de otro grupo. Si se encuentra tentado a decir "Emplear, pero no en mi grupo," simplemente traduzca mecánicamente a "No Emplear" y quedará bien. Así tenga un candidato que sea brillante en hacer una cosa en particular, pero no sería bueno en otro grupo, esto es un No Emplear. Las cosas cambian tan frecuente y rápidamente que necesitamos gente que pueda acertar en cualquier parte. Si por alguna razón encuentra un idiota sabio que es realmente, realmente, realmente bueno en SQL pero completamente incapaz de aprender cualquier otro tema, es un No Emplear. Ellos no tienen futuro en Fog Creek. Nunca diga "Probablemente, no puedo decir." Si no puede decir, esto quiere decir No Emplear. Es realmente más fácil de lo que piensa. ¿No puede decir? ¡Solamente diga no! Similarmente, si está en el lindero, quiere decir No Emplear. Nunca diga, "Bueno, creo que, Emplear pero estoy un poco preocupado sobre..." también quiere decir No Emplear. Algo muy importante que debe recordar sobre entrevistar: es mucho mejor rechazar un buen candidato que aceptar un candidato malo. Un candidato malo le costará mucho dinero y esfuerzos como también pérdida de tiempo, de su otra gente, arreglando todos los errores que ellos cometen. Si tiene cualquier duda, así sea la que sea, es No Emplear. Cuando esté haciendo la entrevista, no se preocupe que si rechaza a mucha gente, Fog Creek no podrá encontrar a quien emplear. Ese no es su problema. Es el problema del reclutador, es un problema de R.H., es el problema de Joel, pero no es su problema. Pregúntese siempre qué es peor - ¿qué crezca en una empresa grande de software con muchos cabezas de coco, o que nos mantengamos pequeños pero con alta calidad? Claro, es importante buscar buenos candidatos y cada uno debe verlo como parte de su misión para encontrar y reclutar gente inteligente que consigue terminar las cosas. Pero una vez está entrevistando a alguien, pretenda que Fog Creek tiene suficientes candidatos buenos. Nunca baje sus exigencias sin importar que tan difícil sea encontrar buenos candidatos. ¿Pero cómo puede tomar esta difícil decisión? Solo debe mantenerse preguntándose durante la entrevista: ¿es esta persona Inteligente? ¿Esta persona Consigue Terminar las Cosas? Para poder averiguar, va a tener que hacer las preguntas correctas. Solo por diversión, ésta es la peor pregunta del planeta en una entrevista: "¿Cuál es la diferencia entre varchar y varchar2 en Oracle 8i?" Está es una pregunta terrible. No hay correlación posible o imaginable entre la gente que sepa este pedazo de trivia sin valor y la gente que Fog Creek quiere emplear. ¿A quién le importa cuál es la diferencia? ¡Cualquiera puede encontrar la respuesta en Internet en 15 segundos! Inclusive, hay preguntas aun peores. Las abordaré más tarde. Ahora llegamos a la parte divertida: preguntas para entrevista. Mi lista de preguntas para entrevista viene de mi primer trabajo en Microsoft. Hay, a propósito, cientos de preguntas famosas para entrevistas de Microsoft. Cada cual tiene un grupo de preguntas que realmente le gusta. Usted también desarrollará un grupo particular de preguntas y un estilo personal que le ayudarán a tomar la decisión de Emplear / No Emplear. Aquí están algunas técnicas que yo he utilizado y que han sido venturosas. Antes de la entrevista, leo toda el currículo del candidato y tomo notas para hacer un plan de entrevista en una hoja de papel. Esto es solamente una lista de preguntas que quiero hacer. Este es un plan para entrevista típica de un programador: 1. Introducción. 2. Preguntas sobre un proyecto reciente en el que el candidato halla trabajado. 3. Pregunta Imposible. 4. Función C. 5. ¿Está satisfecho? 6. Pregunta de Diseño. 7. El Reto. 8. ¿Tiene preguntas? Antes de la entrevista soy muy, muy cuidadoso evitando cualquier cosa que me dé nociones preconcebidas del candidato. Si cree que alguien es inteligente antes de que entre a la entrevista, solamente porque tiene un Doctorado de MIT [Instituto de Tecnología de Massachussets], entonces nada de lo que diga en una hora va a vencer ese prejuicio inicial. Si piensa que es un bobo, nada de lo que pueda decir puede vencer la impresión inicial. Una entrevista es como una balanza muy, muy delicada - es muy difícil juzgar a alguien basado en una entrevista de una hora y parecería que éste evento fuera una urgencia. Pero si sabe un poco sobre el candidato antes, es como un peso grande en un extremo de la balanza, y entonces la entrevista no tiene valor. En una ocasión, antes de que yo hiciera una entrevista, un reclutador entró a mi oficina. "Le va a fascinar ésta persona," dijo ella. HOMBRE esto si que me puso furioso. Lo que yo debí haber dicho fue, "bueno, si está tan segura que me va a fascinar, ¿por qué no emplea a ésta persona en vez de hacerme perder tiempo a mí entrevistándolo?" Pero yo era joven e ingenuo, entonces lo entrevisté. Cuando dijo cosas no muy inteligentes, pensé, " ¡Caramba!, Debe ser la excepción la que prueba la regla." Miré todo lo que dijo a través de anteojos coloreados de rosa. Terminé diciendo Emplear aunque era un candidato malo. ¿Sabe qué? Todos las otras personas que lo entrevistaron dijeron No Emplear. Entonces: no le crea a los reclutadores; no pregunte a nadie nada, antes de la entrevista, sobre la persona que va a entrevistar; y nunca hable con los otros entrevistadores sobre el candidato hasta que hayan tomado las decisiones independientemente. ¡Es un método científico! La fase de Introducción de la entrevista es para poner al candidato tranquilo. Yo gasto 30 segundos diciéndole al candidato quién soy yo y como será la entrevista. Siempre le recalco al candidato que nosotros estamos interesados en cómo él hace para resolver problemas, no en el resultado del problema. A propósito, cuando esté haciendo la entrevista, debe asegurarse de que no esté sentado con un escritorio en el medio de los dos. Esto crea una barrera formal que pone intranquilo al candidato. Si el candidato está tranquilo, ésta resulta ser una entrevista mejor porque él se distorsiona menos por los nervios. La Parte 2 es una pregunta sobre algún proyecto reciente en el que el candidato haya trabajado. Para entrevistar jóvenes universitarios, pregúnteles sobre su tesis de graduación, si la tuvieron, o sobre un curso que tomaron donde tuvieron que hacer un proyecto largo que realmente les halla gustado. Por ejemplo, algunas veces yo pregunto, " ¿cuál fue la clase que más le gustó el semestre pasado? No tiene que ser relacionada con computadores." Inclusive, a mí me gusta mucho si escogen cursos no relacionados con computadores. Algunas veces puede mirar su horario de clases y parece que están tomando el mínimo de cursos en Sistemas, pero cada materia electiva es algo relacionado con Música. Entonces le dirán que su curso favorito es "Bases de Datos Orientados a Objetos". ¡Sí, claro! Yo preferiría si admitieran que les gusta la música más que los computadores, en vez de titubear. Cuando entrevisten a candidatos con experiencia, pueden hablar de su trabajo previo. En estas preguntas, estoy buscando una cosa: pasión. Cuando encuentra un proyecto en el que la persona recientemente trabajó, estas son las buenas señales:
OK, el tercer punto en la lista es la pregunta imposible. Esto es divertido. La idea es preguntarles algo que no tengan forma posible de contestar, solamente para ver como lo manejan. "¿Cuántos optómetras hay en Seattle?" "¿Cuántas toneladas pesa el Monumento a Washington?" "¿Cuántas estaciones de gasolina hay en Los Ángeles?" "¿Cuántos afinadores de piano hay en Nueva York?"
Para preguntas en programación, les pido a los candidatos que escriban una pequeña función en C. Estos son algunos problemas típicos que yo preguntaría: 1. Invertir una cadena de caracteres en el mismo arreglo. 2. Invertir una lista encadenada. 3. Contar todos los bits que hay en un Byte. 4. Búsqueda binaria. 5. Encontrar el corrimiento más largo en una secuencia. 6. Función atoi para pasar de caracter a entero. 7. Función itoa (grandioso, porque ellos deben usar una pila o la función strrev.) No les dé ningún problema que se necesite más de 5 renglones de código; no va a tener tiempo para más. Miremos unos ejemplos en detalle. #1: invertir una cadena de caracteres en el mismo arreglo. Cada candidato que he entrevistado, siempre en toda mi vida, lo ha hecho mal cuando lo hace la primera vez. Sin excepción, tratan de asignar a otro arreglo e invierten la cadena en el arreglo. El problema es ¿Quién asigna el arreglo? ¿Quién libera este arreglo de la memoria? Al hacer ésta pregunta a muchos candidatos encontré algo interesante. Mucha gente piensa que ellos saben C, pero realmente no entienden del manejo de memoria y apuntadores. Ellos simplemente no entienden esto. Es sorprendente que esas personas estén trabajando como programadores, pero ellos están en este campo. Con esta pregunta, aquí hay varios caminos para juzgar al candidato:
Para la #3, puede ver como ellos aprenden bien los operadores de bitwise en C.... pero esto es una destreza, no una aptitud, también puede ayudarles con eso. Lo interesante es verlos escribir una subrutina que cuenta todos los bits en un byte, entonces pida que la función sea más rápida, mucho más rápida. Los candidatos realmente inteligentes crearán una tabla de consulta (después de todo, esta sólo tiene 256 entradas) que debe ser creada una sola vez. Con buenos candidatos, puede tener realmente una conversación muy interesante acerca de la diferencia del equilibrio entre el espacio y la velocidad de la rutina. Vayan más lejos: dígales que no quieren pasar todo el tiempo construyendo la tabla de consulta durante el inicio. Los candidatos brillantes pueden, incluso, sugerir un esquema de memoria rápida donde los bits son contados la primera vez que son utilizados y después son almacenados en la tabla, esto con el fin de solo contarlos una vez y utilizar el valor almacenado para los demás. Los candidatos realmente brillantes tratarán de diseñar un camino para computar la tabla usando alguna clase de atajo tomando ventaja de las estructuras que se le ocurran. Cuando usted ve a alguien escribiendo código, aquí hay algunas técnicas que le pueden ser de mucha ayuda:
Inevitablemente, usted verá un error en su función. Entonces vamos a la 5ta pregunta: ¿Está satisfecho con el código escrito? Querrá decir, "Bien, así que ¿dónde puede estar el error?". La Infernal Pregunta Esencial. Todos los programadores cometen errores, no hay nada malo con eso, pero deben tener la habilidad para encontrarlos. Con las funciones de cadena, ellos olvidarán casi siempre la terminación Nula (Null) en la nueva cadena. Con casi cualquier función, es probable que tengan errores de conteo. Ellos olvidarán puntos y comas algunas veces. Su función no correrá en cadenas de longitud cero, o ésta será GPF si el "malloc" (Memory Allocator) [Localizar un bloque de memoria] falla... Muy, muy raramente, encontrará un candidato que no tenga errores la primera vez. En este caso, esta pregunta es más divertida. Cuando usted dice, "Hay un error en el código" ellos revisarán su código cuidadosamente, y así usted consigue ver si pueden ser diplomáticos y se mantienen en la afirmación que el código es perfecto… En general, siempre es una buena idea preguntarle al candidato si está satisfecho con su respuesta antes de continuar. Parte 6: La pregunta de diseño. Pida al candidato que diseñe algo. Jabe Blumenthal, el diseñador original de Excel, le gusta pedir a sus candidatos que diseñen una casa. Según Jabe, él ha tenido candidatos quienes irían al tablero e inmediatamente dibujarían un cuadrado. ¡ Un cuadrado ! Esos inmediatamente no son tomados en cuenta. En preguntas de diseño, ¿qué estás buscando?
Lo que nos lleva al #7, El Reto. Esto es divertido. Durante la entrevista, esté atento a que el candidato diga algo que sea correcto absolutamente, positivamente, sin argumento. Después diga, "espere un momento, espere un momento," y gástese unos 2 minutos jugando al abogado del diablo. Argumente con ellos estando seguro que ellos están en lo cierto.
Admito que en una situación de entrevista, no somos partes iguales. Por lo tanto, hay un riesgo en el que el candidato sentirá miedo de argumentar contra usted porque usted está en una posición de poder sobre él. PERO, los buenos candidatos tenderán a volverse algo apasionados sobre el argumento, y se olvidarán por un momento que están en una entrevista, y se entregarán para tratar de convencerlo. Está es la gente que queremos emplear. Por último, debe preguntarle al candidato si tiene preguntas. Algunos les gustaría saber sí el candidato hace preguntas inteligentes, lo cual es una técnica muy usada en los libros sobre entrevistas. Personalmente, no me importa que preguntas hagan; en este momento yo ya tomé mi decisión. El problema es, los candidatos tienen que ver como 5 a 6 personas en un solo día, y es difícil para ellos hacer 5 ó 6 preguntas brillantes, entonces sí no tienen ninguna pregunta está bien. Yo siempre, siempre, dejo 5 minutos al final de la entrevista para vender a Fog Creek. Esto es muy importante, así no los vaya a emplear. Si ha sido suficientemente afortunado para encontrar buenos candidatos, debe hacer todo lo posible en este momento para asegurarse de que quieran entrar a Fog Creek. Así sean malos candidatos, usted quiere interesarlos sobre Fog Creek Software para que se vayan con una impresión positiva de la empresa. Piénselo así: estas personas no son solamente empleados potenciales; ellos también son clientes. Ellos también son vendedores de nuestros esfuerzos en reclutamiento: sí ellos piensan que Fog Creek es un sitio excelente para trabajar, ellos animarán a sus amigos a aplicar. Ah, me acabo de acordar que les prometí darles algunos ejemplos de preguntas realmente malas para evitar. Primero que todo, evite las preguntas ilegales. Cualquier cosa relacionada con raza, religión, sexo, nacionalidad, origen, elegibilidad para el servicio militar, estado como veterano, orientación sexual o incapacidades físicas son ilegales. Sí su currículo dice que estuvieron en las fuerzas armadas en 1990, no les pregunte, así sea para establecer una conversación placentera, si estuvieron en la guerra del golfo. Es contra la ley. Si su hoja de vida dice que fueron al Technion en Haifa, no les pregunte, así sea solo por conversación, si son Israelitas. Es contra la ley. Hay una buena discusión aquí de que es ilegal (Pero el resto de las preguntas para entrevista en este sitio son muy estúpidas.) A continuación, evite cualquier pregunta que pueda hacer sentir como si a nosotros nos importara, o discrimináramos sobre cosas que a nosotros, inclusive, no nos importa. El mejor ejemplo sobre esto es preguntarle a alguien si ellos tienen niños o si están casados. Esto puede dar la impresión falsa que nosotros pensamos que la gente con niños no van a dedicar suficiente tiempo en su trabajo o que van a correr a tomar tiempo libre para maternidad. Por último, evite preguntas rompe cabezas como dónde debe poner 6 fósforos de igual longitud para hacer 4 triángulos idénticos y perfectos. Si es una pregunta "¡aja!" con ésta no va a obtener ninguna información sobre "Inteligente / Consigue Terminar las Cosas" por deducción si pueden hacer el ejercicio mental o no. Entrevistar es más un arte que una ciencia, pero si se acuerda el principio de Inteligente / Consigue Terminar las Cosas usted estará en buen camino. Cuando tenga tiempo, pregúntele a algunos de sus compañeros cuales son sus preguntas favoritas y qué clase de respuestas esperan. En la cafetería del Edificio 16 en Redmond es el tema eternamente favorito durante las conversaciones del almuerzo. Esté articulo apareció originalmente en Inglés con el nombre The Guerrilla Guide to Interviewing | ||
![]() Joel Spolsky es el fundador de Fog Creek Software, una pequeña empresa de software en Nueva York. Es titulado por la Universidad de Yale y ha trabajado como programador y gerente en Microsoft, Viacom, y Juno. | |||
El contenido de estas páginas representan la opinión de una persona.
Todo el contenido es Copyright ©1999-2005 por Joel Spolsky. Todos los derechos son reservados.