Me encargaron gestionar un proyecto que se subcontrató a algunos desarrolladores ucranianos.
La compañía los contrató a través de Elance a un precio fijo . En ese momento, mi jefe me dejó solo para manejarlos y hacer el trabajo. Creé una especificación detallada de todo lo que debía hacerse.
El proyecto implicó lidiar con cosas como XMPP, RabbitMQ y Database. En mi primer encuentro con ellos (siempre MI) les expliqué a fondo lo que tenían que hacer. Parecían entenderlo, y estaban muy seguros de que se haría fácilmente.
Hasta aquí todo bien. Pero después de una semana, cuando nos volvimos a encontrar, estaban llenos de malentendidos sobre lo que había que hacer. Cuando le pregunté a uno de los desarrolladores si conocía XMPP, dijo que estaba trabajando con él por primera vez. En nuestra primera reunión, mencioné muy específicamente la complejidad del proyecto y las tecnologías involucradas. Además, repetidamente les pedí que escribieran una especificación funcional de exactamente CÓMO lo harían. Pero dijeron NO e insistieron en que preferirían escribir el código. Dije ok.
El proyecto se completó después de 3 semanas y entregaron lo que se necesitaba. En ese momento comencé a revisar el código. Estuvo bien en su mayor parte, pero hay algunos problemas importantes:
- codificaron algunas de las cosas que debían separarse en un archivo de configuración
- había múltiples archivos de configuración que necesitaba consolidar en uno
- escribieron absolutamente NINGUNA documentación
- algunos otros cambios menores
Les pedí que hicieran estos cambios (excepto la documentación). Y tuvimos una discusión.
Dijeron que, dado que el precio era fijo, estaba siendo injusto al pedirles que hicieran algún cambio una vez que completaran el código de trabajo. Que habían trabajado durante un tiempo razonable en el proyecto y que ahora era completamente incorrecto pedir algo.
Finalmente, ahora han realizado los cambios y el proyecto ha terminado. Pero deja algunas preguntas en mi mente ...
Hicieron lo que era necesario pero yo lo necesitaba correctamente , y de ahí los cambios. ¿Fui realmente injusto?
¿Por qué acepté dejarles codificar sin tener una especificación funcional?
¿Por qué no me aseguré de que entendieran todo la primera vez?
¿Alguien se encuentra en la misma posición? ¿Crees que hay una mejor manera de gestionar proyectos subcontratados?
- ACTUALIZACIÓN -
Gracias por todas las opiniones: después de reflexionar sobre toda la experiencia, puedo concluir ...
Aunque no era vago en las especificaciones de mi lado, ciertamente no las hice revestidas de hierro como se sugiere. Entonces, la conclusión es: siempre sea lo más específico posible: lea sus especificaciones también desde su perspectiva y vea si se perdió algo. Repítalo al menos tres veces.
Solo especificar lo que el código debería hacer no es suficiente. Debe especificar el aspecto que debe tener el código. Cuál será la estructura del directorio; incluso los nombres de los archivos si es posible. Esto te salvará de muchas molestias más adelante. Especifique estrictamente las pautas de codificación, las convenciones de nomenclatura variable, el formato de documentación interna, etc. Asegúrese de que cumplan con esas pautas, y si no, grite.
Exija una especificación funcional por su parte: insista en que se escriba antes de cualquier código. Esto eliminará muchas confusiones y malentendidos.
Revise el código mientras se está desarrollando para identificar las anomalías antes y corregirlas. Hable con ellos al menos una vez cada dos días.
Por último, trate de hacer una buena relación con ellos. Hazles sentir que aprecias su trabajo. No los presione exageradamente para que se ajusten a sus pautas; en su lugar, solicíteles que lo hagan y dígales que esto le facilitaría mucho más el mantenimiento del código una vez que completen el proyecto.