Miałem za zadanie zarządzać projektem zleconym niektórym ukraińskim programistom.
Firma zatrudniła ich za pośrednictwem Elance po stałej cenie . W tym momencie mój szef zostawił mnie w spokoju, aby sobie z nimi poradzić i wykonać pracę. Stworzyłem szczegółową specyfikację kompletnej rzeczy, którą trzeba było zrobić.
Projekt obejmował radzenie sobie z takimi rzeczami jak XMPP, RabbitMQ i baza danych. Podczas pierwszego spotkania z nimi (zawsze IM) dokładnie wyjaśniłem, co powinni zrobić. Wydawało się, że to rozumieją - i byli bardzo pewni, że da się to łatwo zrobić.
Na razie w porządku. Ale po tygodniu, kiedy się ponownie spotkaliśmy, byli pełni nieporozumień na temat tego, co należy zrobić. Kiedy zapytałem jednego z programistów, czy znał XMPP, powiedział, że po raz pierwszy z nim pracuje. Na naszym pierwszym spotkaniu bardzo konkretnie wspomniałem o złożoności projektu i zastosowanych technologiach. Ponadto wielokrotnie prosiłem ich o napisanie funkcjonalnej specyfikacji dokładnie, w JAKI sposób by to zrobili. Ale powiedzieli „NIE” i nalegali, aby woleli napisać kod. Powiedziałem ok.
Projekt zakończył się po 3 tygodniach i dostarczył to, co było potrzebne. W tym momencie zacząłem przeglądać kod. W większości było to w porządku, ale pojawiają się pewne ważne problemy:
- na stałe zakodowali niektóre rzeczy, które należało rozdzielić na plik konfiguracyjny
- było wiele plików konfiguracyjnych, które musiałem skonsolidować w jednym
- napisali absolutnie NIE dokumentację
- kilka innych drobnych zmian
Poprosiłem ich o wprowadzenie tych zmian (z wyjątkiem dokumentacji) - I mieliśmy kłótnię.
Powiedzieli, że ponieważ cena została ustalona, niesprawiedliwie prosiłem ich o wprowadzenie jakichkolwiek zmian po ukończeniu działającego kodu. Że pracowali nad projektem nieracjonalnie dużo czasu, a teraz całkowicie błędnie było prosić o cokolwiek.
Wreszcie wprowadzili zmiany i projekt się zakończył. Ale pozostawia mi kilka pytań ...
Zrobili, co było potrzebne, ale ja potrzebowałem tego właściwie , i stąd zmiany. czy naprawdę byłem niesprawiedliwy?
Dlaczego wyraziłem zgodę na kodowanie bez specyfikacji funkcjonalnej?
Dlaczego nie upewniłem się, że wszystko zrozumieli za pierwszym razem?
Czy ktoś znajduje się w tej samej pozycji? Czy uważasz, że istnieje lepszy sposób zarządzania projektami zleconymi na zewnątrz?
-- AKTUALIZACJA --
Dzięki za wszystkie opinie - po zastanowieniu się nad całym doświadczeniem mogę stwierdzić ...
Chociaż z mojej strony nie byłem niejasny w specyfikacjach, z pewnością nie zmusiłem ich do ironii, jak sugerowano. Tak więc na wynos jest: zawsze bądź jak najbardziej szczegółowy - czytaj swoje specyfikacje również z ich perspektywy i zobacz, czy coś przegapiłeś. Powtórz to co najmniej trzy razy.
Samo określenie, co powinien zrobić kod, to za mało. Musisz określić, jak powinien wyglądać kod. Jaka będzie struktura katalogów; nawet nazwy plików, jeśli to możliwe. Pozwoli ci to zaoszczędzić wiele czasu później. Ściśle określ wytyczne kodowania, zmienne konwencje nazewnictwa, wewnętrzny format dokumentacji itp. Upewnij się, że przestrzegają tych wytycznych, a jeśli nie, krzycz.
Zażądaj od nich specyfikacji funkcjonalnej - nalegaj, aby była napisana przed jakimkolwiek kodem. To spowoduje wiele nieporozumień i nieporozumień.
Przejrzyj kod w trakcie jego opracowywania, aby wcześniej zidentyfikować anomalie i je poprawić. Porozmawiaj z nimi przynajmniej raz na dwa dni.
Na koniec spróbuj nawiązać z nimi dobry kontakt. Spraw, by poczuli, że doceniasz ich pracę. Nie popychaj ich przesadnie, aby pasowały do twoich wytycznych - zamiast tego poproś o to i powiedz im, że znacznie ułatwi ci to utrzymanie kodu po zakończeniu projektu.