¿Se aprovecha mi trabajo en una prueba de desarrollador? [cerrado]

154

Estoy buscando trabajo y he postulado a varios puestos. Un empleador respondió. Tuve una entrevista telefónica bastante larga (quizás una hora o más) y luego me prepararon una prueba de desarrollador. Me dijeron que se estimaba que la prueba demoraría entre 6 y 8 horas y que, si los resultados recibían su aprobación, me pagarían por mi trabajo.

Eso me dio una pausa, pero me esforcé. La prueba del desarrollador se realizó en una máquina virtual a la que se accedió a través de RDP . La tarea consistía en implementar una página de búsqueda en un proyecto web que solicita datos del servidor, los muestra en la pantalla en una tabla, tiene un esquema de filtrado de búsqueda bastante complicado (hay aproximadamente 15 estados y al enviar la búsqueda al servidor usted puede buscar por estos estados) además de la búsqueda de cadena / campo. Además, quieren que los iconos SVG cambien de color en ciertos valores de datos y que algunos datos se representen de manera diferente a cómo está estructurado en la base de datos.

En pocas palabras, esto tomó mucho más de 6 a 8 horas. Gran parte se debió a la máquina virtual muy pobre en la que estaba ejecutando (Visual Studio 2013 tardó 10 minutos en cargar, y otros 15 minutos para abrir la solución descomunal de 3 GB).

Me dijeron que después de completar la prueba debería confirmar mis cambios al control de fuente ... Hmm, está bien. Seguí las instrucciones. Y después de cometer los cambios, recibí una respuesta por correo electrónico. Los SVG no estaban coloreados correctamente, hubo un error en este caso extremo, hubo un problema ocasional con esta otra cosa que nunca experimenté, etc. Así que ahora tengo 13-14 horas en esto, y tengo que hacer correcciones de errores. Los hago, y el empleador vuelve con más solicitudes de corrección de errores.

Todo mi trabajo aparentemente va a una aplicación de producción. Noté algunas anomalías en el código donde parecía que otros habían codificado toda una funcionalidad pero no habían tocado nada más.

¿Solo estoy siendo utilizado para mano de obra barata? Incluso si me pagan los 50 dólares prometidos por hora durante 6 horas, ahora he comprometido unas 18 horas a esto. Si soluciono todos los problemas que siguen apareciendo, habré trabajado al menos 16 horas gratis.

He realizado varias pruebas de desarrollador, pero nunca he realizado una durante la cual trabajé en código destinado a producción. Nunca realicé una prueba en la que implementé una característica que estaba en desarrollo para el desarrollo, y nunca realicé una que tomó 4 rondas y un total de más de 20 horas. Tengo la impresión de que están utilizando su prueba de desarrollador para colocar algunas de las funcionalidades de forma económica.

¿Tengo la impresión equivocada? ¿Y es apropiado este protocolo de prueba?

CodeWarrior
fuente
165
Eso es una locura Creo que probablemente te aprovecharon para obtener mano de obra gratuita.
jmq
79
Debes enviar una factura.
toasted_flakes
27
El viejo y bueno desarrollo basado en entrevistas. Debería haber una etiqueta "devabuse".
Den
74
Aquí hay una sugerencia para personas en los Estados Unidos. Siempre que una empresa le solicite que envíe muestras de código, o que haga un trabajo de ejemplo para ellas, cada parte que envíe debe llevar un aviso de copyright: "DERECHOS DE AUTOR (año) (su nombre). TODOS LOS DERECHOS RESERVADOS". Si genera código que se ejecutará en el navegador de un usuario, asegúrese de que el generador también genere una línea de comentarios que contenga ese aviso de derechos de autor. Trajes honestos no tendrán problema con esto. Los deshonestos gritarán.
John R. Strohm
32
Considere informar esta compañía al departamento de trabajo de su estado. Tomar trabajo gratis es generalmente ilegal.
Andrew Medico

Respuestas:

168

Nunca participaría en una prueba de código de esta naturaleza. He tomado muchas pruebas de código y he realizado muchos proyectos de código. Ciertamente no verificaría el código en el repositorio de otra persona bajo ninguna circunstancia. Si no saben lo que necesitan saber después de una muestra de 4 horas con alguna corrección menor de errores en una sesión de programación de pares, entonces nunca lo sabrán.

Al entrar en una prueba, debe saber y dejar en claro algunas cosas por adelantado:

  1. Se debe acordar y saber que cualquier trabajo producido durante la prueba no se puede usar para ningún otro propósito que no sea determinar su habilidad en las tareas requeridas.
  2. Una prueba de código no debe durar más de 4 horas.
  3. No es un empleado de la empresa, por lo que cualquier sugerencia de que se le pueda pagar por el código producido es absurda. Insista en un contrato de pago por escrito si hay alguna pista de esto.
  4. Establezca límites específicos en el tiempo que pasará en cualquier parte de la prueba y luego cúmplalos. Si se encuentra superando los límites por alguna razón, considere por qué está superando ese límite. ¿Es por la presión de ellos? ¿Es porque has cometido errores? ¿Es porque has estimado mal cuánto tiempo debe tomar completar algo?
  5. Manténgase firme si siente que ha cubierto un tema en particular. Si ya ha solucionado un error y le piden que solucione un error casi idéntico, diga "Ya hemos cubierto ese tema con el error x, tal vez podríamos pasar a otra cosa que demuestre algo nuevo".
  6. Bajo ninguna circunstancia debe registrar nada en una tubería de producción. Esto incluye cualquier tipo de rama de desarrollo que en última instancia puede conducir a una tubería de producción. En caso de duda, no registre nada. Para las pruebas de código que no son necesariamente en persona, insisto en que primero se verifique el código en mi repositorio público personal. Esto me da al menos algún tipo de protección contra el uso inapropiado de mi trabajo.
  7. Juzgue por su comportamiento tanto como lo están juzgando. Si sientes que no están siendo francos contigo, llámalos. Si siente que está siendo maltratado, hable.

La empresa con la que se entrevista también está siendo entrevistada por usted. Si así es como están tratando a alguien a quien están entrevistando, ¿es esta una empresa para la que desea trabajar? Entiendo que a menudo las personas necesitan un trabajo y, a menudo, esta necesidad anulará algunos conceptos de sentido común, pero esto siempre debe estar en la vanguardia de su mente. No tengas miedo de salir. Si no se siente bien, sigue tus instintos y vota con los pies.

Joel Etherton
fuente
10
Ya he determinado que no voy a trabajar para ellos. Habiendo visto la monstruosidad de una solución que están usando (y la increíble cantidad de capas de abstracción EN LA PARTE SUPERIOR de Entity Framework), no deseo matar a una pequeña parte de mí todos los días haciendo las cosas que están haciendo. Mañana tengo una reunión telefónica donde discutiremos los problemas que he tenido con esta "prueba".
CodeWarrior
8
peor, si fuera una empresa, no quisiera que las personas no trabajen para mí y hayan firmado todos los NDA apropiados y otros formularios para tener acceso a mi entorno de producción, y su VCS es un entorno de producción ...
partir del
18
Al menos en el Reino Unido, tengo una fuerte sospecha de que hacer que un candidato a la entrevista haga un trabajo real es ilegal o legalmente procesable por el candidato. De cualquier manera, aquí se considera una práctica muy mala, y pasamos mucho tiempo creando pruebas de "trabajo falso" que son lo suficientemente exhaustivas como para evaluar a un candidato, pero no tienen otro uso práctico.
Neil Slater
99
@marcvangend: Mi principal preocupación aquí (con sede en EE. UU.) sería la responsabilidad. Dado que no existe un contrato formal ni una relación directa, si algo sale mal y se explota algo en su software, sería muy simple para ellos culpar a algún "entrevistado". # 1 es una medida de autoprotección solo en lugar de un intento de evitar que me roben mi trabajo. Me han robado mucho de mi trabajo a lo largo de los años, y realmente no me molesta.
Joel Etherton
10
@WayneWerner: O la rima tradicional del consultor. "Las rosas son rojas, las violetas son azules, paga mi trasero".
Joel Etherton
46

Muchas entrevistas son seguidas por pruebas. Esas pruebas son necesarias para garantizar que realmente tenga las habilidades requeridas y para tener una mejor visión de algunas cosas que son difíciles de probar durante la entrevista en sí (como aplicar reglas de estilo a su código).

Dicho esto, una prueba es una prueba.

  • No necesita ser largo. No hay mucho que pueda ver después de ocho horas de codificación que no pueda ver después de treinta minutos. Más importante aún, el código escrito durante la prueba debe revisarse, línea por línea, lo que lleva una cantidad de tiempo importante . No es inusual pasar más de dos horas para revisar el código de prueba escrito durante media hora.

  • No debería tratar con una base de código existente. Comprender la base del código de un producto de mediana escala puede llevar días o semanas (o meses o años, según la calidad del código y la deuda técnica). La propiedad intelectual también puede ser un problema (a menos que el código sea de código abierto).

    Cuando el objetivo es probar cómo el candidato es capaz de mantener la base de código existente, la prueba se puede hacer en una pequeña base de código ficticio (500-600 LOC) escrita específicamente para las pruebas.

  • No tiene que ser una solicitud para desarrollar una aplicación o característica de la vida real. Puede ser un código completamente inútil, escrito con la única intención de mostrar que ha entendido el problema y ha encontrado una forma elegante de resolverlo.

  • No tiene que ser perfecto. Hay errores? Esta bien. Tome nota de ellos para una nueva entrevista con el candidato; Puede ser una excelente oportunidad para ver cómo reacciona el candidato ante esta situación.

  • No tiene que hacerse a través de RDC en una máquina virtual, a menos que no tenga Visual Studio usted mismo. Si el objetivo es ver sus habilidades de codificación y resolución de problemas, no importa dónde haga el ejercicio.

  • Es incuestionable que el código escrito durante esta prueba termine en el control de versiones de la compañía. ¿Por qué contaminarían su control de versiones con algo escrito por un candidato?

Para concluir, cuando se le pide que pase decenas de horas escribiendo código de producción, resolviendo errores y comprometiendo su trabajo al control de versiones de la compañía:

  • O simplemente te están utilizando para implementar funciones de forma gratuita,

  • O realmente no entienden cómo hacer una entrevista.

En ambos casos, busque un mejor lugar para trabajar.

Arseni Mourzenko
fuente
44
+1 por "o meses o años según la calidad del código y la deuda técnica". Además, si es tan malo, alejarán a los desarrolladores que son capaces de resolver un montón de WTF y tienen que contratar a los que lo empeorarán ...
Julia Hayward
Es completamente legítimo tener un problema como "Dadas estas clases de EF, escriba una consulta que devuelva algunos criterios complicados y muestre los resultados en un formulario". No puedo imaginar pedirle al entrevistado que cree ese tipo de entorno por sí mismo en lugar de simplemente darle una VM existente con todo configurado.
Gabe
@ Gabe: buen ejemplo. Pero en este ejemplo, también es obvio para los candidatos que no está buscando una fuerza laboral barata para implementar una función en su nuevo producto, y que el criterio no es tan complicado que tomaría ocho horas obtener una solución.
Arseni Mourzenko
Tienes toda la razón; Solo digo que, bajo cualquier circunstancia, el entrevistador debe esperar proporcionar el entorno que sea necesario para completar la tarea dada.
Gabe
22

No voy a escribir una respuesta larga, pero estoy muy confundido, ¿por qué nadie menciona el tema de los derechos de autor?

En lo que respecta a mi experiencia, nunca he oído hablar de un acuerdo para transferir la propiedad de los derechos de autor del código escrito durante una prueba de desarrollador a la otra parte. Si este es el caso, puede demandarlos por infracción de derechos de autor y los daños otorgados por esto pueden ser bastante agradables, especialmente en los EE. UU. Por las historias que he escuchado. Y si quieren llegar a un acuerdo (proponga esto), puede solicitar una tarifa exorbitante por la infracción (después de lo cual, en principio, todavía no se les permitiría usar su trabajo y aún podría venderles su trabajo si todavía estuvieran interesados )

David Mulder
fuente
14
Nunca he oído hablar de una prueba de codificación que llegue a la producción. El copyright es un problema válido aquí.
Josh
1
Sin mencionar el seguro
Crake
1
Los derechos de autor son un tema interesante, pero tal vez solo si el trabajo no se paga y realmente se usa. Si finalmente se realiza el pago, el copyright probablemente no tenga sentido. Pero se requiere almacenar una copia en otro lugar que no sea el repositorio interno del entrevistador. Idealmente, la copia personal también debe tener una marca de tiempo antes de enviarla al repositorio del entrevistador. Se podrían utilizar varios repositorios de Internet adecuados mientras se evita que el código sea público.
user2338816
@ user2338816: En primer lugar, incluso si se realiza el pago, aún puede demandar por infracción de derechos de autor, ya que el pago en papel a menudo no es un contrato de trabajo, sino un ... ok, no puedo encontrar el término en inglés. Sin embargo, tiene razón en que necesitará una copia del código, ya que primero debe registrarlo en la oficina de derechos de autor antes de poder presentar una demanda.
David Mulder
1
Un +1 cauteloso de mi parte. Ser excesivamente agresivo me parece poco ético: tiene derecho a sus derechos, pero no quiero ser el tipo de persona que demanda quemar la compañía de entrevistas, y tampoco contrataría a alguien que tenga esa reputación. .
Kevin
12

Las personas con más experiencia profesional pueden responder mejor a esta pregunta, pero personalmente no me sentiría muy cómodo con una prueba de desarrollo de más de 20 horas. Parece que están usando la entrevista para completar las tareas de trabajo.

Supongo que no ha firmado ningún documento legal sobre la propiedad del código. Así que esperaría hasta que revisaran el código y lo aceptaran o lo negaran. Entonces, si lo aceptaran, pediría que me paguen por el tiempo completo, más de 20 horas. No estoy seguro de que aceptaría el pago solo por las seis horas sugeridas originalmente. Si esto va a entrar en producción, entonces deberán enderezar la propiedad del código.

Por lo menos, discutir el pago del código debería ayudarlo a decidir si desea aceptar una oferta. No quisiera aceptar una oferta si pensaran que pagarle solo seis horas es justo.

mediocampo99
fuente
3
He determinado que no estoy trabajando para esta empresa. Incluso fuera del examen, hay algunos problemas reales con la forma en que hacen las cosas. El proyecto en el que estaba trabajando era una solución con 132 proyectos. Me dijeron que un desarrollador del equipo defendió la estructura de esa manera, ¡así que lo hicieron a propósito! Quieren que todo el trabajo se realice sobre RDP. Vivo en Hawai y la compañía es East Coast, eso no va a funcionar. Entonces la prueba parece más como si fuera un empleado temporal contratado a bajo precio.
CodeWarrior
Uno de mis antiguos compañeros de trabajo pasó a formar parte de un equipo con una solución con más de 200 proyectos, por lo que esto no es inaudito.
trysis
11

Cuando estaba en condiciones de entrevistar a los desarrolladores, esas pruebas eran cortas y simplemente "pasaban o fallaban", no incluía la corrección de errores, incluso cuando había algunos errores menores en el código. Eso es porque quería evaluar las habilidades del candidato, no obtener una pieza de software lista para producción.

La situación descrita en la pregunta se parece mucho a que alguien está tratando de obtener algo útil de forma gratuita (o barata).

usuario281377
fuente
7

Nunca he hecho una prueba de desarrollo de más de una hora, y todos estos han sido 'rompecabezas', un trabajo para ver si puedo resolver problemas y cumplir un objetivo establecido dentro de un límite de tiempo determinado.

$ 50 (o para mí, £ 25-30) es una tarifa diaria bastante baja, es como pedirle a un plomero que arregle su inodoro a cambio de una bebida.

Mi consejo, en términos inequívocos, es bloguear sobre su experiencia, refiriéndose a la compañía por su nombre en caso de que estén tratando de crear una aplicación completa con esta técnica (la gente a menudo busca en las compañías de Google antes de ir a la entrevista) Sucede de nuevo. La próxima vez que soliciten una corrección de errores, puede nombrar una tarifa diaria de consultoría (al menos 5 veces más de lo que han estado ofreciendo) y hacer saber que los desarrolladores no trabajarán de forma gratuita.

Ser engañado es, tristemente, parte de la vida, pero no tienes que sentarte y aceptarlo.

AJFaraday
fuente
55
Un mal consejo para decirle a la gente que nombre y se avergüence de esa manera, puede terminar con alguien sin problemas legales y profesionales.
Jwenting
1
De hecho, acabo de hablar por teléfono con ellos. Después de rechazar la posición, me preguntaron si podía proporcionar mis críticas, y le expliqué que estaba preocupado por la posibilidad de que me estuviera desarrollando a bajo precio. Según los comentarios que recibí del POC de la compañía, y los controles en su control de origen y en el código fuente, no creo que lo estén haciendo tanto. Parece que 2 personas cada 6 meses más o menos, aproximadamente en promedio para las tendencias de contratación de una pequeña empresa. Dicho esto, todavía no estoy de acuerdo con la práctica. No va a trabajar allí.
CodeWarrior
8
@CodeWarrior Realmente creo que deberías amenazarlos con acciones legales. A menos que haya firmado un contrato de entrega del código, usted tiene derechos de autor de lo que se escribió durante la 'prueba' y, efectivamente, se lo están robando. Empresas como esta continuarán con sus prácticas desagradables hasta que alguien les llame. Si no das un paso adelante, ¿qué pasa con la próxima savia pobre que 'entrevistan'?
Una sombra pálida
@CodeWarrior Dices que rechazaste la posición. ¿Eso significa que te ofrecieron el puesto? ¿Y ha habido más discusión sobre el pago por su trabajo de "prueba de desarrollo"?
user2338816
1
@CodeWarrior Buena llamada! A veces solo necesitas saber cuándo alejarte.
AJFaraday
3

Solo para comparar: la entrevista para mi trabajo actual fue alrededor de 1 hora hablando de lo que hice hasta ahora y de lo que la compañía planea hacer y cómo encajaría. Después de eso trabajamos juntos una semana en un pequeño proyecto que habían mentido alrededor, supongo que solo para ver cómo nos llevamos el uno con el otro. Me pagaron por esto como freelance la misma cantidad que obtengo ahora como empleado, por lo que nunca hubo un día completo de trabajo no remunerado, y mucho menos 3 días.

Si el código se usa realmente en producción, les enviaría la factura por las 24 horas que ha pasado, no es su culpa si sus estimaciones son incorrectas. Asumiendo que no te dejaron estimar cuánto tiempo llevará.

usuario136346
fuente
Cuando dices que trabajaste en un proyecto que "tenían por ahí", ¿fue este un proyecto que usaron en la producción? Como indican otras respuestas, esto es extraño en cualquier situación, ya sea que le paguen o no, y generalmente es peor para la empresa que el candidato.
trysis
Suena como una versión corta de contrato para contratar, que es una práctica comercial normal (aunque no suele ser solo una semana).
Joe
3

Si bien supuestamente le pagan por (parte de) su trabajo, esto no parece un proyecto de prueba , parece una estafa para obtener un trabajo barato / gratuito. Puede ser que haya sido diseñado para ser un proyecto de prueba, simplemente no estructurado o administrado muy bien.

Pero el manejo que es tan malo que parece una estafa, definitivamente es algo que debe tener en cuenta al decidir si acepta el trabajo o no.

Un proyecto de prueba adecuado debería dejar en claro que

  • Tienen un trabajo que desean haber hecho.
  • Según su entrevista, creen que debería poder hacer el trabajo.
  • La finalización exitosa del proyecto no garantiza un puesto.
  • Términos para el proyecto (cuánto pagarán, quién es el propietario del código, si es tiempo y materiales o tarifa plana, tiempo estimado de finalización, etc.).
  • Se revisará el proyecto y se proporcionarán comentarios, no solo un sí / no en cuanto a si obtiene o no el puesto.

Los términos deben ser aceptables para usted, independientemente de si lo contratan; si los términos solo son aceptables si vienen con un trabajo a tiempo completo, no son realmente aceptables.

jmoreno
fuente
2

No creo que realmente usen esto para obtener mano de obra barata.

El motivo es simple. Después de escribir esas pruebas, necesitan que las personas revisen lo que escribes, sí, revisar el código es mucho más fácil que escribir el código en sí, pero todavía lleva mucho tiempo.

Y luego, probablemente necesiten personas para mantener esas pruebas, explicarlas, etc.

Y simplemente no puedo imaginar una compañía de TI que se preocuparía por ahorrar menos de $ 100, especialmente compañías en los Estados Unidos. Nunca es cómo funciona el negocio.

InformadoA
fuente
13
Si obtuvieron más de 20 horas de trabajo y pagaron 6-8 al precio (no increíblemente alto) de $ 50 ph, han ahorrado mucho más de $ 100. ¿Quizás están más interesados ​​en hacer algo barato y rápido que producir código que funcione o sea mantenible? No hay que subestimar la avaricia, la incompetencia y la miopía de las personas por ahí.
jwg
99
No estoy argumentando que sea aconsejable o que valga la pena, solo que es posible que suceda . Hay muchas basura por ahí, incluidas algunas bastante tontas.
jwg
3
@randomA: La cosa es que estás asumiendo un verdadero equipo de desarrollo con un sentido de ética. Siendo más hastiado (o tal vez solo sociópata), puedo imaginar fácilmente a un pequeño equipo titiritero todo: harían el diseño de alto nivel, decidirían qué construir (o arreglar) y desarrollarían el trabajo gruñón como " pruebas de desarrollador ". Ahorraría $ miles por contratar a un grupo de empleados a tiempo completo. Los trabajos de los titiriteros son seguros, porque tal modelo de desarrollo los hace indispensables. Y si ya eres tan codicioso y miope, entonces las revisiones de código y la documentación son una pérdida de dinero. Si parece que funciona, envíelo. : P
cHao
1
Oh, no digo que sea un modelo que valga la pena a largo plazo. Pero a corto plazo, se ve atractivo. La administración estaría a bordo si les mostraras los números correctos (demonios, probablemente sean ellos los que lo pensaron), y legal querría redactar cosas con mucho cuidado, pero si realmente estás pagando lo que dices, paga, AFAIK técnicamente no estás violando ninguna ley. En cuanto a la salud a largo plazo de la base de código, podría agilizar la refactorización como otro grupo de "pruebas".
cHao
1
@Taemyr: uh, si entiendo el OP, su base de código es un desastre fragmentado, ¿algo sobre 132 proyectos en una sola solución VS?
thkala
2

Creo firmemente en las pruebas de código para desarrolladores que se entrevistan para un trabajo. Sin embargo, esto suena como la prueba de código del infierno ... Las pruebas de código nunca deberían involucrar código de producción. Deben ser simples y deben indicar que ninguno de los trabajos realizados será utilizado por la empresa.

Claramente, el trabajo que hizo fue en el código de producción. Se le debe pagar todo su tiempo, como mínimo. Intente hablar con un abogado y vea si cree que valdría la pena demandarlos. Muchos abogados ofrecen consultas iniciales gratuitas. Si el fraude estuvo involucrado, y en este caso se ve de esa manera, usted tendría derecho a cuadruplicar los daños monetarios, y también podría obtener algunos buenos daños punitivos además de eso.

Al demandarlos y ganar, aparecerá algunos titulares y desalentará esta práctica por parte de otros en el futuro, lo que será beneficioso para todos los desarrolladores de software que busquen una nueva posición.

Bob Bryan
fuente
esta publicación es bastante difícil de leer (muro de texto). ¿Te importaría editarlo en una mejor forma?
mosquito
0

Las pruebas de codificación son, lamentablemente, una realidad. Dicho esto, me molesta que me pidan que pase cuatro horas en una prueba de codificación como condición para obtener mi primer examen de teléfono. Es injusto pedirle a un candidato que invierta tanto cuando la compañía ha invertido muy poco en la relación.

Soy un desarrollador senior y puedo pasar su prueba de codificación. Pero no perderé mucho tiempo en eso a menos que la compañía haya mostrado algún interés personal en mí. Por lo general, no completo una solicitud para ninguna empresa con un formulario de solicitud en línea grande y mal escrito que me pide que vuelva a ingresar mi currículum para que su robot mal escrito pueda estropear la búsqueda de palabras clave. Generalmente no estoy de acuerdo en completar una prueba de codificación a menos que sea breve o la estén viendo en vivo y hablen conmigo.

Incluso si no están poniendo su código en producción, una compañía que quiere que pase mucho tiempo escribiendo antes de que descubra si es una buena opción es una compañía que se siente cómoda aprovechándose de usted. Están señalando lo que quieren que sea su relación; Eres el mono código. Ellos llaman los tiros. Y su proceso de entrevista está diseñado para encontrar personas que se sientan cómodas con esa relación.

No seas un mono código. Alejarse.

SeattleCplusplus
fuente