¿Es “Contratar solo lo mejor” un consejo realmente práctico para la programación normal de aplicaciones de escritorio? [cerrado]

60

Para el fondo, estamos haciendo aplicaciones de ingeniería de escritorio, con un AutoCAD como UI, algo similar a etabs .

Una cosa que realmente me molesta es si hay alguna necesidad de contratar a los mejores desarrolladores. Para empezar, estamos experimentando grandes dificultades en el reclutamiento; La mayoría de los currículos que vemos están haciendo aplicaciones CRUD simples o personalización de SharePoint, lo cual no creo que implique mucha programación hardcore. Incluso aquellos a quienes solicitamos entrevistas, la mayoría no puede hacer la secuencia de Fibonacci y una simple búsqueda binaria, y somos lo suficientemente amables como para dar pistas y detallar los problemas explícitamente para que los candidatos no lo hagan. Hay que buscar un diccionario para ver qué significa "secuencia de Fibonacci".

Esto me hizo pensar: sí, necesitamos cierto nivel de capacidad de programación al hacer cosas de programación de geometría computacional / lineal, y necesitamos cierto nivel de capacidad de programación al diseñar la arquitectura del software o decidir qué patrón de software usar, pero más allá de eso, muchos de nuestros códigos son simplemente códigos de plomería (creo), lo que puede hacer alguien que esté familiarizado con la programación.

Dado que realmente necesitamos talentos de programación ahora, y dado que la contratación de desarrolladores superestrellas es muy difícil, quiero reducir mi estándar y contratar solo a los más o menos, en directa contradicción con lo que Joel predica .

¿Qué piensas?

Editar: no es necesario volver a escribir todas las bibliotecas de programación de geometría computacional / lineal; todo lo que necesita hacer, en lo que concierne a mi aplicación, es poder saber cómo convertir los problemas actuales en términos de programación geométrica / lineal computacional apropiados y saber cuándo / cómo usar las bibliotecas existentes. Así que no es tan difícil como parece.

    
pregunta Graviton 04.05.2011 - 12:25

21 respuesta

110

Te sugiero que dejes de leer demasiado a Joel. Lo que ha escrito en su blog contradice sus respuestas en este sitio, por lo que realmente no tomaría su palabra por mucho.

¿Qué hace que una superestrella y por qué es necesario tener uno abre una discusión larga y nula? Es elitismo y no es práctico.

Lo que necesitas es una persona que:

  1. Me encantaría estar haciendo lo que estás haciendo
  2. Sería un apasionado programador entusiasta
  3. Tendría el potencial de aprender lo que se necesita para hacer bien su trabajo

El resto no tiene importancia.

No creerías cuántos jóvenes graduados hay por ahí que no quieren nada más que sumergirse en este tipo de proyecto basado en CS y nunca mirar codificar aplicaciones CRUD. Hace un tiempo yo era uno de ellos, prácticamente soñaba con unirme a un proyecto sobre el desarrollo del compilador, pero no era capaz de encontrar uno. ¿Por qué no dar una oportunidad a uno de ellos?

No creo que AutoCAD haya sido escrito por superhombres. La mayoría de los proyectos exitosos fueron realizados por personas que simplemente querían que las cosas se hicieran y realmente querían eso.

  

la mayoría de los currículos que vemos están haciendo aplicaciones CRUD simples o personalización de SharePoint

¿Qué se puede esperar si la mayoría de los trabajos requieren eso? La gente podría haber estudiado CS en la universidad e incluso haber sido realmente buena en eso, pero no puede esperar que lo recuerden si nunca han usado eso en la programación práctica en 10 años. Obviamente, nadie va a leer libros antiguos de CS todos los años solo para mantenerlos actualizados si este conocimiento no se utiliza en ninguna parte.

    
respondido por el 3 revsuser8685 29.04.2011 - 09:30
41

Un libro que realmente me gusta es Primero rompa todas las reglas . Tiene mucha información sobre las diferencias entre los gerentes promedio y los buenos gerentes. Una de las ideas clave que los buenos gerentes dijeron una y otra vez fue resumida por uno de ellos en la oración, Nunca he esperado demasiado para encontrar la contratación adecuada y nunca he despedido a la contratación incorrecta rápidamente. suficiente. Sí, es frustrante tomar mucho tiempo para contratar, pero vale la pena.

Un segundo punto que debe tener en cuenta es que cuando se mide el rendimiento del proyecto, hay un pico de productividad para equipos de 5-8 personas. No regresa a la misma productividad hasta que tenga un equipo de más de 20 personas. Sea muy, muy cauteloso al hacer crecer a un equipo más allá del tamaño en el que funciona la dinámica de equipos pequeños. Y si va a permanecer por debajo de ese umbral, entonces realmente quiere que esas 5-8 personas sean buenas.

Ambos puntos hablan enérgicamente hacia la contratación adecuada.

    
respondido por el btilly 29.04.2011 - 09:26
26

Todos dicen "contratar solo el percentil 1 superior". Si eso fuera cierto, el 100% de las personas empleadas estaría en el "percentil 1" de todas las personas, por lo que el 99% de todas las personas estaría desempleadas (en cualquier campo). Como claramente este no es el caso, y todos hemos experimentado personas que claramente no están en ese grupo (¿por qué más haces esta pregunta?) Sabemos que esto no es cierto.

De hecho, las organizaciones formadas exclusivamente por esas personas serían altamente inestables. Demasiado ego, demasiadas ideas conflictivas. Se derrumbaría a medida que cada uno hiciera lo suyo, se atascaría en interminables discusiones teóricas sobre los méritos relativos de todo, o se convertiría en un enfrentamiento constante de gritos a medida que los sentimientos brotaban cada vez que se debía tomar una decisión.

    
respondido por el jwenting 29.04.2011 - 10:03
25

Lo primero que debe preguntar es por qué recibe currículos que no cumplen con los estándares que desea. He trabajado con mucha gente buena, así que están ahí fuera, y la aplicación me parece muy interesante. Si no puede conseguir personas que puedan hacer secuencias de Fibonacci y búsquedas binarias (lo que es más difícil de lo que parece; según Knuth, pasaron varios años entre su primera publicación y su primera publicación correcta), está haciendo algo para impulsar la buenos lejos.

¿Estás pidiendo más habilidad de la que estás dispuesto a pagar? ¿Estás anunciando en los lugares equivocados? ¿Es su empresa poco atractiva por ubicación o reputación? Este es su primer y más básico problema, y el que necesita resolver con urgencia. Sin duda, usted y sus colegas conocen a algunas buenas personas que no están trabajando para usted. Muéstrales lo que tienes, y pregúntales si se sentirían tentados, y si no, por qué no. Es posible que esté demasiado cerca del problema para entenderlo sin ayuda.

No contrate a personas porque son las mejores que se aplican. Contrata gente porque ellos podrán hacer lo que tú quieras. Si contrata a mediocres porque eso es todo lo que se aplica, poco a poco perderá buenas personas y terminará con personas cuyo álgebra es inestable tratando de hacer cosas con geometría computacional. (La contratación de personal mediocre porque tienes un trabajo para un par de programadores mediocres es otra cosa, pero tienes que poder contratar personas de calidad donde las necesites).

    
respondido por el David Thornley 29.04.2011 - 16:48
18

"la mayoría no puede hacer la secuencia de Fibonacci y una simple búsqueda binaria"

Sus criterios son ciertamente erróneos. En mi grupo somos todos físicos o ingenieros. Apuesto a que nadie podría hacer búsquedas binarias porque no asistimos a los cursos de CS y en la vida real usamos una biblioteca para eso. Incluso diría: alguien que escribe binsearch por sí mismo no sabe cómo concentrarse en cosas importantes.

Es de mucha mayor importancia si el candidato es inteligente y encaja en el grupo. Si desea verificar su talento de programación, déle un trabajo para que lo haga en casa. Observe cuánto tiempo le tomó y discuta los resultados para averiguar si es el trabajo genuino de los candidatos.

    
respondido por el michael 02.05.2011 - 18:00
13

Creo que "contratar a los mejores" se está convirtiendo en un culto.

La mayoría del trabajo de programación es rutinario y no creativo. Incluso cuando se trabaja en nuevos proyectos realmente creativos. La mayor parte es monótona, y con frecuencia se basa en patrones. esto es particularmente cierto para la interfaz de usuario.

La mayoría de los sistemas modernos también requieren que tanta gente los escriba, que inherentemente, no todos pueden ser los mejores. La mayoría de las personas son promedio, incluso si no lo son, todavía tienen que hacer muchas de las tareas de una persona "promedio".

Dicho esto, exigir una competencia básica y unos requisitos sensatos mínimos no es irrazonable y no es algo que deba comprometerse.

Piense en la cirugía de rutina: dependiendo de su tolerancia al riesgo, es probable que prefiera que un médico promedio la realice en lugar de esperar 10 años para que el decano de la escuela de medicina tenga tiempo para hacerlo. Eso no significa que deba dejar que el encargado realice la cirugía.

    
respondido por el Uri 04.05.2011 - 13:06
8

"Contratar a los mejores" tiende a significar "contratar a los mejores que están actualmente disponibles aproximadamente donde estamos" de todos modos, y significa diferentes cosas para diferentes compañías. Algunos quieren programadores de rockstar, otros quieren ingenieros de software meticulosos y el siguiente en el futuro requiere expertos artesanos en software. No hay "lo mejor de lo universal", así que tenlo en cuenta, y quizás la especificación de tu trabajo sugiera que estás buscando un tipo de programador y la entrevista dice que estás buscando otro tipo de programador. De repente, no obtienes coincidencias.

Dicho esto, no me gusta trabajar con programadores no muy buenos. No tiene nada que ver con la experiencia (pueden haber programado durante 20 años y aún no son muy buenos en eso), pero todo tiene que ver con la aptitud y el entusiasmo. Si el efecto afecta a cualquiera de los dos, tiene un problema. Tampoco tiene sentido contratar a alguien cuyas contribuciones deben ser revisadas por otros miembros del equipo porque el código no es lo suficientemente bueno. Más vagos en los asientos no siempre están en la respuesta, desafortunadamente, más vagos en los asientos también pueden significar más trabajo para los mejores miembros del equipo mientras intentan hacer su trabajo y a limpiar el desorden el programador regular ha entregado.

Algunas personas no aparecen como estrellas de rock, pero son programadores sólidos de nivel medio. Es bueno tenerlos en el equipo y eso no es lo que quiero decir con "programador regular". Este último es alguien que apenas evita ser despedido todos los años en el tiempo de revisión del desempeño.

    
respondido por el Timo Geusch 30.04.2011 - 01:03
6

Como tipo de administrador, acepto que contratar "el 1% superior" no es práctico y no es necesario. Mi consejo sería contratar al equipo adecuado para construir y mantener su producto (podrían ser dos equipos muy diferentes, ya que la construcción contra la de mantenimiento es muy diferente en sus necesidades)

Le sugiero encarecidamente que identifique a las personas que actualmente tiene en su equipo que son "personas clave" (por ejemplo, haga las cosas bien, tenga buenas actitudes, pueda trabajar con la incertidumbre / requisitos de alto nivel, etc.) y luego contrate personas con las que han trabajado en el pasado (y respeto, obviamente). Esto elimina gran parte de la incertidumbre en torno al proceso de la entrevista y ayuda a gelificar al equipo.

También, más "a largo plazo": invierte mucho en un programa interno. Si su equipo de programación es de 20 personas, obtenga 5 pasantes al año y déles trabajo real. Trae de vuelta el uno o dos que te gustan cada año y trae 5 variables aleatorias más. Esta es probablemente la mejor manera de mantener a su equipo lleno de buenos programadores. A continuación, puede contratar personal de forma oportunista y elevar el nivel para esos candidatos.

Como ya se ha mencionado, preste atención a su proceso de entrevista. Haga que los candidatos escriban un código (o, mejor aún, descubra su solución a un problema de "1 hora de viaje a casa") haga que coman con el equipo. Conozca sus habilidades técnicas e interpersonales. Y nunca tenga miedo de decir "no", incluso cuando esté desesperado por 20 personas más para un gran proyecto que comienza la próxima semana.

    
respondido por el Al Biglan 02.05.2011 - 19:11
6

Según mi experiencia, el principio de Paretto se aplica también a la programación: el 80% del trabajo se realiza en un 20% de los desarrolladores y viceversa. OK los números pueden ser exagerados. En realidad, tendrá algo como el 20% de los empleados que realizan el 50% del trabajo (por trabajo me refiero al buen trabajo, no simplemente a las líneas de código). En realidad es más como una curva de campana. Así que en un equipo de 10, tendrás 1 héroe, 2 grandes jugadores, 4 promedio y 2-3 patéticos.

Muchas empresas utilizan la curva de Bell para sopesar las valoraciones. Así que casi sin importar qué tan brillantes sean tus candidatos, caerán en sus niveles. No puedes tener un equipo donde todos estén al mismo nivel. No sucede.

    
respondido por el Burhan Ali 19.10.2011 - 21:08
4

Ya hay un montón de respuestas aquí, pero creo que todavía hay un punto que debe ser discutido: el impacto que tiene el hecho de que los empleados tienen mucho en la calidad de su software y cómo hace que su vida como gerente sea mucho más difícil.

La respuesta a "¿hay alguna necesidad de contratar a los mejores desarrolladores?" siempre es un gran gordo SI. Por supuesto, en realidad, esto no siempre es posible. El error peligroso que creo que estás cometiendo al considerar esta pregunta es pensar que "nuestro software es tan simple que incluso un tipo así puede hacerlo". Esto es INCORRECTO.

Su software estará listo, no lo dude, pero espere resultados muy diferentes de un equipo excelente que de un equipo regular. Tendrá más errores, más problemas de rendimiento, más mantenimiento y problemas de escalabilidad, etc. Tendrás que cuidar a tus chicos de manera regular a través de problemas más complejos. Tendrá que cuidar a los chicos de manera regular a través de las decisiones de arquitectura adecuadas.

Si acepta esto y está listo para administrarlo, está bien. Solo prepárate para el proceso y para los resultados.

    
respondido por el hbatista 03.05.2011 - 13:30
3

Creo que no es realmente un problema contratar a un gran desarrollador. El verdadero desafío es hacer que quieran que trabajen para ti.

¿Hay alguna necesidad de contratar a los mejores?
Eso creo. Gran desarrollador no es solo el que hace todo a tiempo. No solo tal individuo es mucho más productivo que otros. El gran desarrollador también está liderando con el ejemplo y simplemente es inspirador para otros miembros del equipo. Otros podrían avanzar mucho mientras trabajaban con ellos.

Bien, entonces vas a bajar tus estándares. Eso es genial, probablemente cambiarás de opinión después de contratar a una persona muy mala. El que responderá a todas sus preguntas de CS sin problemas, pero que realmente no puede escribir una sola línea de código de producción. Buena suerte con eso :)

    
respondido por el Paweł Dyda 29.04.2011 - 09:45
3

Vamos a dar un paso atrás.

¿Qué estamos tratando de hacer? escribir software.

¿Por qué creemos que tenemos que contratar a los mejores? Porque ese maldito Arnold Kid no pudo salir de una bolsa de papel mojada y ahora el SQL está arruinado y puedo no iniciar sesión.

Bien, entonces, ¿cuál es el mejor ? No sé, probablemente sea alguien que quiera mucho dinero y tenga un currículum de seis pies de largo con un gran Portafolio y trabajado en google o algo así. Debería tener un título, y tal vez algunas letras al final de su nombre. Sí, eso suena como lo mejor para mí y, por mejor, me refiero a alguien que no es ese maldito niño de Arnold. Oh, y él debería saber cómo hacer alguna mierda realmente difícil de la que escuché en la escuela, como "escribe una burbuja" o como se llame. Le pediré a uno de los otros chicos que mencione algunas cosas difíciles que tuvieron que hacer en la escuela, sí.

Parece que simplemente no quieres a ese maldito hijo de Arnold? ¿Lo harías? Estoy cansado de tener un código de buggy, las cosas tardan una eternidad en terminarse, ¡y estos nuevos chicos a los que entrevisto me dicen que debo reescribirlo todo!

Bien, entonces, ¿qué le pides al maldito niño Arnold? Cree un sitio web PHP, escriba algo sobre jQuery, haga que PHP haga un CRUD básico con MSSQL y cambie los colores de fondo .

¿Eso suena como una tarea que se adapta exclusivamente a los mejores? Estoy seguro de que lo mejor podría hacerlo, pero probablemente cualquiera que tenga el conjunto de habilidades adecuado que coincida con esto podría hacerlo.

Entonces, ¿no necesitas lo mejor? Cierto, solo necesito a alguien con las habilidades que cumplan mis objetivos.

Oh. Sí.

    
respondido por el Incognito 03.05.2011 - 16:34
3

El título de su pregunta menciona una "Aplicación de escritorio normal", pero su texto habla de la necesidad de aplicar conocimientos de geometría computacional y programación lineal. Esas son áreas de aplicaciones que han generado enormes programas de investigación de varias décadas con consecuencias sociales masivas de cualquier avance (memoria, resúmenes de programación lineal asignación de recursos ). Como resultado, hay muchos enfoques sofisticados para resolver problemas en estas áreas que funcionan muy bien.

Una mala contratación

  • puede que ni siquiera haya oído hablar de estas clases de problemas,
  • puede que no esté familiarizado con las soluciones comunes,
  • Probablemente no sabría sobre las mejores cosas que hay (consejo: la mayoría de los estudiantes universitarios nunca escuchan sobre las cosas elegantes, si se enteran de los problemas en absoluto), y
  • es casi seguro que llevaría mucho tiempo implementar tales cosas (considerando que he visto que algunos de ellos imparten un seminario completo sobre estructuras de datos, incluido el profesor).

En otras palabras, piensa si realmente estás trabajando en algo para peatones. Si es así, genial, la contratación debería ser mucho más fácil. Si no lo eres, espera a alguien que pueda hacer lo que necesitas.

    
respondido por el Phil Miller 04.05.2011 - 07:46
2

Seguramente no soy un programador superestrella según los estándares de Joel. No obstante, he escrito algunos proyectos exitosos en mis 20 años de carrera como desarrollador. Podría haber resuelto tus preguntas. Pero menos por mi experiencia en el trabajo, donde, de hecho, gran parte del trabajo más complicado se realiza al pedirle a su base de datos o una función de biblioteca que lo haga.

Pero si decide contratar a personas menos experimentadas, debe considerar el uso de tecnologías que sean fáciles de manejar. Por ejemplo, si planea usar C ++ para todo el proyecto, entonces limite la parte de C ++ a las bibliotecas escritas por sus mejores empleados y deje que los demás implementen la interfaz de usuario en Visual Basic.

    
respondido por el thorsten müller 29.04.2011 - 09:29
2

Escriba los valores que busca en un empleado que se unirá a sus filas.

Cuando el único valor apreciado es la competencia en programación, se encontrará rodeado rápidamente por personas que valoran precisamente eso. Como los programadores más competentes tienen un sistema de valores más elaborado, se abstendrán de unirse a su equipo.

Sin embargo, es más probable que esté buscando personas innovadoras, creativas, confiables, eruditas, curiosas, de autoaprendizaje, sociables, competentes y dedicadas. Demuestre que su empresa entiende y respeta estos valores y está dispuesta a ayudar a sus empleados a desarrollarlos más.

Comprenda y acepte los valores de sus empleados actuales y comuníquelos en sus solicitudes de trabajo. Las buenas empresas, con un sistema de valores sostenible, atraen a los buenos empleados.

    
respondido por el Dibbeke 03.05.2011 - 01:43
1

En cualquier organización tienes personas con más experiencia y personas con menos. No solo eso, sino que un experto en un campo puede ser un novato en otro. Un aficionado entusiasta puede hacer más daño que bien a una base de código, pero así es como aprenden, corrigiendo sus errores y discutiendo su experiencia con sus colegas más experimentados.

Mi sugerencia sería que, en lugar de tratar de contratar superestrellas, intente contratar a personas que sean razonablemente brillantes, que se ajusten a la cultura de su empresa, que estén dispuestas a aprender y que aprecien sus propias limitaciones.

    
respondido por el Mark Booth 29.04.2011 - 14:31
1

Ciertamente, deberías aspirar a contratar solo a los mejores. Eso no significa automáticamente que tendrá éxito en eso, solo hay muchos de los "mejores", y habrá ganadores y perdedores en la batalla para atraerlos. Gran parte de esto provendrá de su aptitud y disposición para trabajar arduamente en el problema y los recursos disponibles para usted.

Renunciar antes de comenzar es la forma más segura de perder.

    
respondido por el Mark Ransom 02.05.2011 - 17:53
1

La búsqueda binaria es un problema interesante porque es bien sabido que la mayoría de los programadores tendrán dificultades para escribirlo correctamente ( Bently escribe al respecto en Perlas de programación ). Tal vez no sea tan malo probarlo, siempre y cuando no esté descartando candidatos por no haberlo resuelto. Si lo resuelven de forma rápida y correcta, al menos eso indica qué tipo de programadores son para que tenga más información en ese caso en particular.

    
respondido por el Anon 02.05.2011 - 22:53
1

usted necesita contratar el mejor. pero el término ha sido citado fuera de contexto muchas veces. necesita encontrar al mejor candidato con las habilidades necesarias para esa posición, y no al mejor programador en un sentido general. El desarrollo de software es amplio y no todas las posiciones requieren el mismo conocimiento técnico.

Hágase esta pregunta (usted ya lo hizo ...): Si tiene otro ingeniero en la misma posición durante 5 años, ¿esperaría que ella recordara las series de fibonanci y las búsquedas binarias?

Si la respuesta es no, cambia el patrón de entrevista. Puede ser que necesite conocer una docena de algoritmos de búsqueda si desea trabajar en una aplicación de búsqueda como Google o Bing. Todos los demás solo usan map.get ("");

dirija sus entrevistas a lo que la posición necesita, no a un buen programador genérico de libros de texto.

    
respondido por el gee 02.05.2011 - 23:33
1

Si realmente no te importa la calidad, te sugiero que uses uno de los sitios web de subcontratación y comiences con proyectos pequeños. Luego, puede pagarles si pueden hacer el trabajo y tener una forma fácil de rescatar si no pueden.

Sin embargo, cuestiono si realmente hay mucha codificación de rutina en una aplicación de ingeniería de escritorio. Pueden ser muy complejos, y la mayoría de los programadores no son tan buenos para administrar la complejidad. Fácilmente puede crear una gran cantidad de códigos heredados instantáneos que atarán a su equipo en los próximos años. En general, las primeras contrataciones para un nuevo proyecto son las más importantes y establecerán el tono para todo el proyecto.

    
respondido por el Brian Slesinsky 03.05.2011 - 04:19
0

Estoy totalmente de acuerdo con la mayoría de los comentarios anteriores que se refieren al ajuste de una persona a un problema. Por lo general, esto resulta en una relación a largo plazo en lugar de contratar a una superestrella para trabajar en un problema regular, lo que simplemente lo frustrará para que se vaya rápidamente. Dicho esto, siempre debe intentar contratar para su empresa en lugar de una posición particular. Debido a que este mismo tipo va a cambiar entre equipos tarde o temprano con contactos personales, etc. y podría convertirse en un peso muerto en otro lugar. Asegúrese de que su compañía tenga pautas de transferencia interna muy estrictas y que tenga una idea clara de lo que hará en su equipo durante los próximos años antes de contratar a una persona que cree que no cumple con el estándar de la compañía (pero resolverá el problema actual ). He visto demasiados casos en los que la mediocridad en los desarrolladores ha hecho que el equipo trabaje muy duro para adaptarse a ellos.

    
respondido por el Subu Sankara Subramanian 17.05.2011 - 16:08

Lea otras preguntas en las etiquetas