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

61

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, ¿hay alguna necesidad de contratar a los mejores desarrolladores? Para empezar, estamos experimentando grandes dificultades en el reclutamiento; La mayoría de los currículums que vemos están haciendo aplicaciones CRUD simples o personalización de SharePoint, lo que no creo que realmente implique mucha programación hardcore. Incluso aquellos a quienes llamamos para una entrevista, la mayoría no puede hacer la secuencia de Fibonacci y una simple búsqueda binaria, y somos lo suficientemente amables para dar pistas y explicar los problemas explícitamente para que los candidatos no tengan que buscar un diccionario para verificar ¿Qué significa "secuencia de Fibonacci"?

Esto me hizo pensar: Sí, necesitamos cierto nivel de aptitud de programación al hacer geometría computacional / programación lineal, y necesitamos cierto nivel de aptitud de programación al diseñar la arquitectura del software / o decidir qué patrón de software usar, pero más allá de eso , gran parte de nuestro código es solo código de plomería (creo), que puede hacer alguien que esté familiarizado con la programación.

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

¿Qué piensas?

Editar: no necesita reescribir toda la geometría computacional / bibliotecas de programación lineal; todo lo que necesita hacer, en lo que respecta a mi aplicación, es poder saber cómo convertir los problemas en cuestión en términos de programación geométricos / lineales computacionales apropiados y saber cuándo / cómo usar las bibliotecas existentes. Entonces no es tan difícil como parece.

Graviton
fuente
53
Respuesta estándar: ¿tal vez estás ofreciendo salarios demasiado bajos y mejores desarrolladores no están interesados ​​en trabajar para ti? De todos modos, si tiene problemas con las personas que no pueden realizar búsquedas binarias, ya que no es un problema con la falta de superestrellas, un codificador común y corriente debería ser capaz de hacerlo.
quant_dev
15
Su capitalización de títulos me hace leerlo como PANDA :)
cthom06
13
¿No pueden escribir la secuencia de Fibonacci? Eso no es difícil ... estas personas no pueden ser programadores.
Ben B.
66
Graviton, todo se reduce al salario. Si (solo por ejemplo) ofreciera un valor de mercado triple para el salario, entonces habría personas dispuestas a dejar sus trabajos para ir a trabajar para usted. No estoy sugiriendo que ofrezca TANTO, pero ilustra el punto. Si desea buenos currículums, entonces debe pagarlos.
Riwalk
77
@ user1525 porque es algo trivial, los desarrolladores normalmente no deberían tener problemas para implementarlo (recurrencia o no)
Darknight

Respuestas:

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 mucho su palabra.

Lo que hace a una superestrella y por qué es necesario tenerla abre una discusión larga y sin rumbo. 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 programador apasionado y entusiasta
  3. Tendría el potencial de aprender lo que se necesita para hacer bien su trabajo

El resto no tiene importancia.

No creería cuántos graduados jóvenes hay por ahí que no quieren nada más que sumergirse en este tipo de proyecto fuerte 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 en torno al desarrollo del compilador, pero no pude 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 hacer las cosas y realmente querían eso.


la mayoría de los currículums 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 solo eso? La gente podría haber estudiado CS en la universidad e incluso haber sido realmente bueno en eso, pero no puedes esperar que lo recuerden si nunca lo han usado en programación práctica en 10 años. Obviamente, nadie va a leer sobre viejos libros de CS cada año solo para mantenerlo fresco si este conocimiento no se usa en ninguna parte.

usuario8685
fuente
11
Increíble respuesta!
33
Sí bien, pero he trabajado con personas apasionadas y entusiastas que no tienen ni idea. Son un peso muerto, y no los quiere en su organización. Entonces, algunas pruebas de aptitud BÁSICAS para eliminar a los idiotas realmente tontos es algo muy bueno.
rapid_now
3
El último párrafo me describe a la perfección.
ozz
20
Visto muchas "pruebas de aptitud" que eran completamente inútiles, incluso tenían errores evidentes (y señalarlos hizo que no pasaras la prueba, cuando encontrar y señalar errores es parte de nuestro trabajo como desarrolladores ...).
Jwenting
2
@Developer Art, ¿quizás fue una suerte para ti? Si no puede convencerlos de lo incorrecto de una pregunta de la entrevista, imagine los problemas que tendría en el trabajo.
Mark Ransom
41

Un libro que realmente me gusta es Primero romper todas las reglas . Tiene mucha información sobre las diferencias entre gerentes promedio y buenos gerentes. Una de las ideas clave que los buenos gerentes decían una y otra vez fue resumida por uno de ellos en la oración : nunca he esperado demasiado para encontrar la contratación correcta, y nunca he despedido a la contratación equivocada lo suficientemente rápido. 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 volverá a la misma productividad hasta que tenga un equipo de más de 20 personas. Sea muy, muy cauteloso al hacer crecer un equipo más allá del tamaño en el que funcionan las dinámicas de equipos pequeños. Y si vas a permanecer por debajo de ese umbral, entonces realmente quieres que esas 5-8 personas sean buenas.

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

btilly
fuente
2
+1 por esa cita. Refleja perfectamente lo que me he dado cuenta en los últimos años.
Kris
Lo que es interesante con el pico de 5-8, es que tan pronto como obtienes 10 personas, puedes dividir :) Por supuesto, el trabajo también debe dividirse, y preferiblemente no al azar ...
Matthieu M.
@ mattieu-m: Mucha gente tiene esa teoría. Si los dos grupos realmente terminan necesitando interactuar mucho, entonces no funciona. Si se les puede dar preocupaciones verdaderamente separadas, entonces funciona bien.
btilly
26

Todos afirman que "contratan solo el 1 percentil superior". Si eso fuera cierto, el 100% de las personas empleadas estarían en el "primer percentil" de todas las personas, por lo que el 99% de todas las personas estarían 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 únicamente por esas personas serían muy inestables. Demasiado ego, demasiadas ideas en conflicto. Se desmoronaría a medida que cada uno hace lo suyo, se atascará en discusiones teóricas interminables sobre los méritos relativos de todo, o evolucionará en una constante pelea de gritos a medida que los sentimientos brotan cada vez que se debe tomar una decisión.

jwenting
fuente
13
El problema es que solo porque contratas solo al 1% superior de los candidatos que se postulan para ti no significa que estás contratando al 1% superior de desarrolladores. 8 ') En lo que respecta a * superhéroes , con frecuencia se consideran un problema para el resto del equipo. Una persona que trabaja al 200% pero reducir a 5 personas al 50% no es una ganancia neta.
Mark Booth
2
+1: Estadísticamente, la mayoría de las personas están a unos pocos puntos porcentuales de la media. Cualquiera que no aprecie eso está viviendo en un mundo de sueños. Y tiene toda la razón: las personas que están demasiado lejos de la media son perjudiciales, ya sea que tengan capacidades superiores o inferiores al promedio.
Satanicpuppy
55
@Satanicpuppy: Estadísticamente, dada una distribución normal, aproximadamente dos tercios de las personas están dentro de una desviación estándar de la media, y algo así como el 98% están dentro de dos desviaciones estándar. Esto no dice nada acerca de cuál es la desviación estándar, o de hecho si alguna distribución arbitraria es normal. La capacidad de programación entre programadores es definitivamente sesgada, e incluso podría ser la cola correcta de una distribución normal.
David Thornley
11
Una razón principal por la cual el talento de programación entre los programadores podría estar sesgado y / o la cola derecha de una distribución normal sería si el talento de programación en seres humanos se distribuyera normalmente. La submuestra de seres humanos que se convierten en programadores es una muestra sesgada de esa distribución; es decir, las personas que son promedio o peor en la programación rara vez se convierten en programadores. Esto podría hacer que un programador "promedio" tenga un talento superior al promedio en relación con la población en general, y también podría hacer que el talento de distribución del programador parezca la cola derecha de una distribución normal.
Michael McGowan
2
@david: "¿Nadie puede estar tan por debajo del promedio"? Ojalá trabajara donde trabajas.
Satanicpuppy
25

Lo primero que debe preguntar es por qué obtiene currículums que no cumplen con los estándares que desea. He trabajado con muchas personas buenas, por lo que están ahí fuera, y la aplicación me parece muy interesante. Si no puede encontrar personas que puedan hacer secuencias de Fibonacci y búsqueda binaria (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 buenos lejos.

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

No contrates personas porque son las mejores que aplicaron. Contrata personas porque podrán hacer algo que tú quieras que se haga. Si contrata a mediocres porque eso es todo lo que se aplica, entonces lentamente perderá buenas personas y terminará con personas cuyo álgebra es inestable tratando de hacer cosas con geometría computacional. (Contratar a mediocres porque tienes un trabajo para un par de programadores mediocres es otra cosa, pero debes poder contratar personas de calidad donde las necesites).

David Thornley
fuente
77
Porque los departamentos de recursos humanos son muy incompetentes para evaluar a los candidatos de software. Requisitos: 10 años en script de café, 40 años de programación PHP, educación: BS / BA
Incognito
1
@ user1525: Bien podría ser una incompetencia de recursos humanos, pero el punto importante es averiguar por qué y cómo corregirlo (o descubrir que no es corregible, por lo que está claro que es hora de abandonar el barco). No sacaría conclusiones precipitadas. Su respuesta sugiere otro enfoque: haga que buenas personas envíen hojas de vida y vean qué hace RR.
David Thornley
18

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

Sus criterios son ciertamente incorrectos. En mi grupo todos somos físicos o ingenieros. Apuesto a que nadie podría hacer una búsqueda binaria porque no asistimos a cursos de CS y en la vida real usamos una biblioteca para eso. Incluso diría: alguien que escribe binsearch no sabe cómo enfocarse 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, dele un trabajo para que haga en casa. Tenga en cuenta cuánto tiempo le llevó a él / ella y discuta los resultados para averiguar si es el trabajo genuino de los candidatos.

Miguel
fuente
3
Es posible que no se espere que el solicitante obtenga la búsqueda binaria exactamente correcta, pero si puede darle al solicitante algunas pistas, él o ella deberían poder acercarse. En mi opinión, es más interesante ver cómo las personas intentan resolver los desafíos que se les presentan que tener una enciclopedia en la cabeza.
dpk
11
Soy físico entrenando y puedo hacer búsquedas binarias con los ojos vendados y con una mano atada a la espalda. Lo sentimos, pero no saber cómo escribir una implementación de búsqueda binaria simple es ... pobre. No hay otra palabra para describirlo, solo pobre.
quant_dev
Sí, tiene usted razón. La búsqueda binaria, al menos la idea básica, podría hacerse de hecho. Puedo hacerlo tambien.
Michael
... al menos la idea básica (aunque no podría hacer Fibonacci sin primero buscar lo que era). Pero una prueba como esta pone a las personas en ventaja que simplemente asistieron a clases de CS o simplemente prepararon las preguntas accidentalmente. Es más útil dar a los candidatos un ejemplo de programación del mundo real. Muestra cómo resuelven problemas más complejos sin presión inmediata y también puede mostrar a los candidatos, qué tipo de trabajo espera que hagan (elija un buen ejemplo). Mucho más útil que las preguntas de los libros de texto en mi humilde opinión.
Michael
2
No saber la definición de la secuencia de Fibonacci en la parte superior de su cabeza no es preocupante. PERO, no poder escribir un programa para calcularlo después de que se haya explicado es preocupante (¡incluso si todo lo que espera que hagan es calcular subtotales en una aplicación CRUD simple!).
Stephen C. Steel
13

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

La mayoría del trabajo de programación es rutinario y no creativo. Incluso cuando trabajas en nuevos proyectos realmente creativos. La mayor parte es monótono, y a menudo 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, aún tienen que hacer muchas tareas "promedio".

Dicho esto, exigir competencia básica y requisitos mínimos razonables no es irrazonable y no es algo en lo 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 lo 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 la persona que realiza la cirugía realice la cirugía.

Uri
fuente
No para objetar ... pero el médico "promedio", que ha realizado cientos o miles de ese tipo de cirugía, podría ser preferible al Decano de la escuela de medicina, que puede tener más conocimiento pero no casi la experiencia
JoelFan
8

"Contratar a los mejores" tiende a significar "contratar a los mejores que actualmente están disponibles aproximadamente donde estamos" de todos modos, y significa diferentes cosas para diferentes compañías. Algunos quieren codificadores de rockstar, otros quieren ingenieros de software meticulosos y el siguiente en el futuro quiere expertos en software. No hay un "mejor universal", así que tenlo en cuenta, y tal vez las especificaciones de tu trabajo sugieran que estás buscando un tipo de programador y la entrevista dice que estás buscando otro tipo de programador. De repente, no obtienes fósforos.

Dicho esto, no me gusta trabajar con programadores regulares. Así que no tiene nada que ver con la experiencia (podrían haber estado programando durante 20 años y todavía no son muy buenos), pero todo tiene que ver con la aptitud y el entusiasmo. Si el más o menos afecta a cualquiera de esos dos, tiene un problema. Tampoco tiene sentido contratar a alguien cuyas contribuciones deben ser modificadas por otros miembros del equipo porque el código no es lo suficientemente bueno. Más problemas en los asientos no siempre están en la respuesta, desafortunadamente, más problemas en los asientos también pueden significar más trabajo para los mejores miembros del equipo, ya que están tratando de hacer su trabajo y limpiar el desorden que el programador ha entregado. .

Algunas personas no parecen ser estrellas de rock, pero son programadores sólidos de nivel medio. Son buenos para tener 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 momento de la revisión del desempeño.

Timo Geusch
fuente
1
ugh, incluso el término "programador de rockstar" me da ganas de vomitar.
ozz
6

Como administrador, estoy de acuerdo en que contratar "el 1% superior" no es práctico ni necesario. Mi consejo sería contratar al equipo adecuado para construir y mantener su producto (podrían ser dos equipos muy diferentes, ya que construir vs mantener son muy diferentes en sus necesidades)

Le sugiero que identifique a las personas que actualmente tiene en su equipo que son "personas clave" (por ejemplo, hacer las cosas, tener buenas actitudes, pueden trabajar bien con la incertidumbre / requisitos de alto nivel, etc.) y luego contratar a las personas que tienen trabajó 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.

Además, más "a más largo plazo": invierta mucho en un programa de pasantes. Si su equipo de programación es de 20 personas, obtenga 5 pasantes al año y deles un trabajo real. Recupera 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. Luego puede contratar afuera de manera oportunista y elevar el listón para esos candidatos.

Como ya se mencionó, preste atención a su proceso de entrevista. Haga que los candidatos escriban un código (o mejor, analicen su solución a un problema de "1 hora para llevar a casa"), haga que almuercen 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.

Al Biglan
fuente
6

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

Muchas empresas utilizan la curva de Bell para evaluar las evaluaciones. Entonces, no importa cuán brillantes sean sus candidatos, caerán en sus niveles. No se puede tener un equipo donde todos estén al mismo nivel. No pasa

Burhan Ali
fuente
2
+1, estoy de acuerdo. Pero creo que la pregunta es: ¿Necesita los "patéticos" (por ejemplo, para la moral del equipo o lo que sea) o el equipo sería tan bueno sin ellos? ¿Y puedes reconocerlos en una entrevista de trabajo?
nikie
10
Definir patético. Si son buenos tramposos que hacen el trabajo aburrido y gruñón pero no pueden dar el salto de maravilla, aún así son ellos. Pero si simplemente no tienen remedio y no pueden hacer nada, entonces son una pérdida de espacio.
rapid_now
La única razón para mantener los patéticos es que no puedes conseguir que alguien mejor los reemplace. Hacen lo que llamamos "trabajo de burro": cambios menores o masivos que no necesitan mucha reflexión.
DPD
1
¿Es posible encontrarlos en la entrevista? Sí, dependiendo de las habilidades del entrevistador. Les dejé manejar algunos programas y problemas de libros de texto. Si pasan este nivel, les doy algunos problemas más complejos para juzgar si pueden pensar. Los patéticos pueden ser buenos en la sintaxis, pero es solo porque lo aprenden de memoria sin entenderlo realmente. Fracasarán en la resolución de problemas. Algunos le dirán que no pueden pensar solos y que solo pueden trabajar en lenguaje Ctrl + C, Ctrl + V
DPD
44
Los drones de trabajo de burro al menos hacen trabajo. Es cuando quieren reescribir 10 años de material desarrollado en Haskell con un par de enlaces a OCaml, en 3 semanas, y todo lo demás que tocan se convierte en cr * p. ¡Entonces REALMENTE NO LOS QUIERES!
rapid_now
4

Ya hay un montón de respuestas aquí, pero creo que todavía hay un punto que debe discutirse: el impacto que tiene la contratación de los más o menos chicos 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 SÍ. Por supuesto, en realidad, esto no siempre es posible. El peligroso error que creo que está cometiendo al considerar esta pregunta es pensar que "nuestro software es tan simple que incluso un tipo puede hacerlo". Esto está mal.

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 problemas de capacidad de mantenimiento y escalabilidad, etc. Tendrás que cuidar a tus chicos más o menos a través de problemas más complejos. Tendrás que cuidar a los chicos más o menos a través de decisiones de arquitectura adecuadas.

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

hbatista
fuente
+1. Si. La idea de que puedes contratar chicos que ni siquiera pueden escribir una búsqueda binaria con ayuda y hacer que sean algo más que un peso muerto puro, probablemente productores netos negativos, es completamente ridícula.
Tom Anderson
3

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

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

OK, entonces vas a bajar tus estándares. Eso es genial, probablemente cambiarás de opinión después de contratar a una persona realmente 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 :)

Paweł Dyda
fuente
3

Vamos a dar un paso atrás.

¿Qué estamos intentando hacer? Escribir software

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

Bien, entonces, ¿cuál es el mejor ? No sé, es probable que sea alguien que quiere mucho dinero y tiene un currículum de seis pies de largo con una gran cartera y trabajó 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 el mejor para mí, y por lo mejor, me refiero a alguien que no es ese chico loco de Arnold. Ah, y él debería saber cómo hacer una mierda realmente difícil de la que escuché en la escuela, como "escribir un tipo de burbuja" o como lo llamen. Le pediré a uno de los otros tipos que mencione algunas cosas difíciles que tuvieron que hacer en la escuela, sí.

¿Parece que simplemente no quieres a ese maldito chico de Arnold? ¿Lo harías? Estoy cansado de tener código con errores, las cosas tardan una eternidad en hacerse, y estos nuevos tipos que entrevisto me dicen que tengo que volver a escribir todo.

Bien, entonces, ¿qué le pides al maldito chico de Arnold que haga? Cree un sitio web PHP, escriba algunos jQuery, haga que PHP haga algunos CRUD básicos con MSSQL y cambie los colores de fondo.

¿Suena eso como una tarea bien adaptada 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? Bien, solo necesito a alguien con el conjunto de habilidades que cumpla con mis objetivos.

Oh. Sí.

Incógnito
fuente
@ user1525, no es una aplicación CRUD. Es un software de ingeniería.
Graviton
No siempre. Muchos trabajos no requieren ningún conocimiento de estructuras de datos, algoritmos o complejidad computacional. Claro, no son los trabajos en la búsqueda de google, pero hay una gran demanda de eso. Basta con mirar la mayoría de las publicaciones en las bolsas de trabajo, "Necesito un complemento jquery" o "dame una aplicación de iPhone que se parezca a estos psd". La gente quiere lo mejor o lo más barato.
Incógnito
3

El título de su pregunta menciona una "Aplicación de escritorio normal", pero su texto habla sobre la necesidad de aplicar el conocimiento de la geometría computacional y la programación lineal. Esas son áreas de aplicación que han generado enormes programas de investigación de varias décadas con consecuencias sociales masivas de cualquier avance (memoria, asignación de recursos de resúmenes de programación lineal ). 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,
  • podría no estar familiarizado con las soluciones comunes,
  • probablemente no sabría acerca de las mejores cosas que hay por ahí (pista: la mayoría de los estudiantes de secundaria nunca escuchan sobre las cosas elegantes, si es que escuchan sobre los problemas), y
  • es casi seguro que llevaría mucho tiempo implementar tales cosas (considerando que he visto a algunos de ellos dar un seminario de posgrado completo en ajustes de estructuras de datos, profesor incluido).

En otras palabras, piense si realmente está trabajando en algo peatonal. Si es así, genial, la contratación debería ser mucho más fácil. Si no lo está, espere a alguien que pueda hacer lo que necesita.

Phil Miller
fuente
no necesita reescribir todas las bibliotecas de geometría computacional / programación lineal; todo lo que necesita hacer, en lo que respecta a mi aplicación, es poder saber cómo convertir los problemas en cuestión en términos de programación geométricos / lineales computacionales apropiados y saber cuándo / cómo usar las bibliotecas existentes.
Graviton
2

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

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

Thorsten Müller
fuente
2

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

Cuando el único valor apreciado es la competencia de programación, te encontrarás rápidamente rodeado de personas que solo valoran eso. Dado que la mayoría de los programadores verdaderamente 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, con autoaprendizaje, sociables, competentes y dedicadas. Muestre que su empresa comprende y respeta estos valores y está dispuesta a ayudar a sus empleados a desarrollarlos aún más.

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

Dibbeke
fuente
-1: si dijiste (y el OP habló) dinero, por supuesto, tendría sentido. Sin embargo, no entiendo cómo esta respuesta lo ayudaría. Básicamente estás diciendo que él no puso suficiente marketing en su aplicación si entendí ¿verdad? Bueno, tal vez eso ayudaría un poco, pero por lo general no veo a muchas personas altamente competentes que no le den al menos una cantidad razonable de valor a ... duh ... competencia? .. como dije, reemplace "competencia de programación" con dinero y su respuesta tiene mucho sentido, pero lo siento, no lo entiendo.
n1ckp
Si no comprende mi comentario, tal vez no debería modificarlo. De todos modos, lo que quiero decir es bastante simple. Con el tiempo, conocí a algunos programadores excelentes. Conocen sus idiomas, algoritmos, matemáticas, física ... Sin embargo, lo que los hizo excelentes en primer lugar fue un interés en algo más que el oficio. A menudo valoran la curiosidad en sí mismos y en los demás. Ven la erudición independiente como un rasgo (o valor) importante o se inspiran en aquellos que son creativos a su alrededor. A menudo, estos valores son más importantes que sus ingresos.
Dibbeke
@Dibbeke: bueno, lo modifiqué también en parte porque no veo cómo se relaciona esto con la pregunta. Bueno, pero no estoy en desacuerdo con su último comentario (aunque su respuesta es otra cosa), pero todavía no veo cómo podría ayudar al OP o responder la pregunta real.
n1ckp
@ n1ck Cuando dijo marketing, comencé a preguntarme si basar un proceso de contratación en valores básicos es realmente lo mismo. No lo sé, pero sí reconozco que la construcción de una red social de confianza y respeto está fuertemente influenciada por ello. Esto a su vez influye en la reputación de su empresa y lo ayuda a atraer a los desarrolladores de software de primer nivel.
Dibbeke
@Dibbeke: no estoy seguro si recibí tu último comentario pero creo que estoy de acuerdo al menos un poco contigo. Pero nuevamente, no estoy seguro de que sea útil para el OP (aunque ahora veo más cómo se relaciona con la pregunta). Lo que me hace decir que es él nunca habló nada acerca de su empresa, de modo que sí quizá podría ser una causa de que su compañía tiene mala fama, pero creo que estés sacando conclusiones ..
n1ckp
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. Claro que un aficionado entusiasta puede hacer más daño que bien a una base de código, pero así es como aprenden: arreglando 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 personas que sean razonablemente brillantes, que encajen con la cultura de su empresa, que estén ansiosas por aprender y que aprecien sus propias limitaciones.

Mark Booth
fuente
1

Ciertamente, debe aspirar a contratar solo a los mejores. Eso no significa automáticamente que tendrás éxito en eso: solo hay muchos de los "mejores", y habrá ganadores y perdedores en la batalla para atraerlos. Mucho de esto vendrá de su aptitud y disposición para trabajar duro en el problema, y ​​de los recursos disponibles para usted.

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

Mark Ransom
fuente
1

La búsqueda binaria es un problema interesante porque es bien sabido que la mayoría de los programadores realmente tendrán dificultades para escribirla correctamente ( Bently escribe sobre esto en Programming Pearls ). Tal vez no sea tan malo probarlo siempre y cuando no descarte a los candidatos debido a su incapacidad para resolverlo. Si lo resuelven rápida y correctamente, entonces al menos sugiere qué tipo de programador son para que tenga más información en ese caso particular.

Luego
fuente
1

necesitas contratar a los mejores. pero el término ha sido citado fuera de contexto muchas veces. necesita encontrar el mejor candidato con las habilidades requeridas para ese puesto, y no el 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 (ya lo hizo ...): si tiene otro ingeniero en la misma posición durante 5 años, ¿esperaría que recuerde series de fibonanci y búsquedas binarias?

Si la respuesta es no, cambie su patrón de entrevista. Es posible 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 necesita el puesto, no a un buen programador genérico de libros de texto.

Caramba
fuente
1

Si realmente no le importa la calidad, le sugiero que use uno de los sitios web de outsourcing y comience con pequeños proyectos. Luego puede pagarles si pueden hacer el trabajo, y tener una manera fácil de rescatar si no pueden.

Sin embargo, me pregunto 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 gestionar la complejidad. Podría crear fácilmente una gran cantidad de código heredado instantáneo que vinculará a su equipo en los próximos años. En general, las primeras contrataciones para un nuevo proyecto son las más cruciales y establecerán el tono para todo el proyecto.

Brian Slesinsky
fuente
0

Estoy totalmente de acuerdo con la mayoría de los comentarios anteriores que se refieren a adaptar a una persona a un problema. Esto generalmente resulta en una relación a largo plazo en lugar de contratar a una superestrella para que trabaje en un problema regular, lo que simplemente lo frustrará para que se vaya rápidamente.
Dicho esto, siempre debe intentar contratar a su empresa en lugar de un puesto en particular. Debido a que este mismo tipo cambiará entre equipos tarde o temprano con contactos personales, etc. y podría llegar a ser un peso muerto en otro lugar. Asegúrese de que su empresa tenga pautas de transferencia interna muy estrictas y que tenga una idea clara de lo que hará en su equipo durante los próximos dos años antes de contratar a una persona que cree que podría no cumplir con los requisitos de la empresa (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.

Subu Sankara Subramanian
fuente