Opis sytuacji w PO jest prawdopodobnie jednostronny. To jest ok.
Jestem starzejącym się deweloperem (~54 yo) wprowadzonym do firmy, aby nie rządzić, ale dostarczyć trochę doświadczenia. (Szef IT rzeczywiście powiedział “siwe włosy”, lol.) Personel dev był far bardziej adeptem, na bilansie, niż jakikolwiek zespół, z którym pracowałem wcześniej. Dużo mnie nauczyli, szczególnie o pokorze! Ale znaleźliśmy miejsca, w których ich technologiczne czarodziejstwo nie rozwiązywało problemów, a w niektórych przypadkach ukrywało te problemy, ostatecznie je pogarszając. To właśnie tam mogłem się naprawdę przyczynić.
Twoja główna rola brzmi poważnie autokratycznie. Wygląda na to, że otrzymał on mandat od właściciela. Właściciel jest niezadowolony z personelu Deva i sprowadził tego “twardonosego, bezsensownego go-gettera”, aby poprawić szybkość dostaw.
Po pierwsze, spójrz na swój personel. Czy macie słabe strony - deweloperów, którzy nie “widzą Matrixa”? Jeśli tak, znajdź im nowe stanowiska w firmie lub daj im dobre referencje dla pracodawcy, który potrzebuje ich unikalnych umiejętności.
On nienawidzi IDE
Znam kilku, którzy to robią. Sprawia, że przewracam oczami, ale ostatecznie mnie to nie obchodzi. Jeśli ludzie produkują używając vi
, to ok. I love my IDEs.
He doesn’t refactor the code, and doesn’t care about style (which is inconsistent across his own code)
Red flag on the first part. Czy on jest copy-pasterem? Jestem również winny, że nie dbam o styl, ale to dlatego, że używam mojego IDE, aby natychmiast uczynić mój kod Pythona zgodnym z PEP8. Ale on nie używa IDE…
As a side note, style was previously checked by a nightly build, which began to fail since the arrival of the new lead.
He rejects the idea of a nightly build, as well as automated tests. Według niego “każdy profesjonalny programista i tak testuje swój kod ręcznie, więc nie ma powodu, by tracić czas na pisanie testów automatycznych”. Również nocna budowa jest według niego stratą czasu.
To również uruchamia czerwoną flagę, ale z innych powodów niż można by się spodziewać. Zanim ten facet został zatrudniony, ile razy właściciel powiedział, że nie może zrobić X (dać demo, użyć systemu, itp.), ponieważ nocna budowla zawiodła? Co jeśli właściciel zauważy, że problem stanowi nocna budowla? Jak myślisz, co by powiedział Ołowowi, żeby zrobił?
Ale mam obawy co do postawy Ołowianego; zautomatyzowane testy są niesamowite. Tak jak poprzednio, szef może nie rozumieć wartości testów, ale na pewno wie, że Y% pracowników dev płaci za nie. Kiedy przybyłem do mojej obecnej firmy, “mafia 100% pokrycia testowego” przejęła personel dev i poniosła koszty. Jedno złe jabłko później i personel dev znowu mruczał.
On myśli, że kontrola wersji jest w większości bezużyteczna…
Jest to czerwona flaga najwyższego rzędu. On jest tak zły, jak to tylko możliwe. Jest nieodpowiedzialny za pieniądze właściciela.
Wyolbrzymia znaczenie optymalizacji kodu.
W dzisiejszych czasach optymalizacja kodu może coś zmienić. Teraz maszyny są tak szybkie, że jest to mniej ważne. Zamiast tego, musimy teraz martwić się o wydajność baz danych i przepustowość sieci. Ale jego nawyk “optymalizacji kodu” jest trudny do przełamania, zaufaj mi. Muszę sprawić, że nie będę się wstępnie optymalizował. Przynajmniej jego zachowanie w tym przypadku nie jest destrukcyjne, z wyjątkiem czasu. (Masz numery dla jego “połowy czasu”, czy to hiperbola?) Jeśli krytykujesz swojego przełożonego, nie można pozwolić na hiperbolę. Musisz być patologicznie obiektywny.)
On pisze cały SQL ręcznie, i odrzuca pomysł ORM.
Winny jak oskarżony! Nie rozumiem strachu ludzi przed SQL-em. Nie rozumiem zakopywania SQL'a, który jest prosty jak drop-dead, pod warstwami ORM'a, które zatykają. Nic na to nie poradzę :-D Ale proszę, wyrzuć cały swój SQL w jedno miejsce - nie rozpowszechniaj całego kodu.
i dwóch z pięciu programistów nigdy wcześniej nie korzystało z SQL.
To niedopuszczalne. Jest rok 2016.
He rejects frameworks and third libraries, considering that it’s much easier to write stuff from scratch.
He could not be more wrong. Wątpię, żeby twoja firma była tak wyjątkowa, że twoje narzędzia muszą być napisane we własnym zakresie. Mieliśmy kilku programistów, którzy zajmowaliby się narzędziami innych firm - dopóki nie zrobiliby czegoś w sposób, który nie spodobałby się devowi. To była wymówka, by wyrzucić narzędzie i napisać własne. To tylko zwiększa obciążenie personelu deva, spowalniając go dalej. Ten nieprzydatny kod jest drogi w pisaniu, testowaniu, debugowaniu i utrzymaniu. Wydaliśmy tak dużo pieniędzy na -zerową - korzyść. Tych programistów już nie ma.
Postanowił porzucić wszystkie biblioteki i frameworki JavaScript z wyjątkiem jQuery, twierdząc, że kiedy piętnaście lat temu zaczął programować w JavaScript, nie było żadnych frameworków, a życie było o wiele łatwiejsze.
Ten nie jest tak przejrzysty. Powodem jest to, że życie było o wiele łatwiejsze 15 lat temu jest to, że pytanie biznesowe było o wiele prostsze. Stąd ten problem. Sieć została wymyślona jako system wsadowy (wypełnij formularz, prześlij go, uzyskaj odpowiedź, powtórz), a teraz staramy się pisać aplikacje internetowe, które zachowują się jak aplikacje desktopowe. Jego obserwacja jest słuszna, teraz jest ciężko. Ale on nie zdaje sobie sprawy dlaczego. Złożoność narzędzi jest odpowiedzią na bardziej skomplikowane pytanie biznesowe. Dlatego też dokonuje złych wyborów.
Używamy AngularJS i wydaje się on być przyzwoity. Jak wszystkie potężne narzędzia, może być używany dla dobra lub zła.
On myśli, że urządzenia mobilne (w tym tablety) są tylko hype, więc nie ma powodu, aby marnować cenny czas na zapewnienie kompatybilności strony z tymi urządzeniami i zrobić responsive design. Produkt jest publiczną aplikacją internetową, która nie powinna być często używana z urządzeń mobilnych.
Znowu się myli. Oni nie są hype. Są tu po to, żeby zostać, bo są użyteczne. Ale biznes tego nie potrzebuje. Nie rozwijaj rzeczy, których nie potrzebujesz. To jest drogie.
Responsive design, however, could be very interesting to have for this app,…
Is it so interesting you’d pay for the development personally? Jeśli to jest dobry pomysł, to powinieneś być w stanie sprzedać go właścicielowi. W przeciwnym razie nie wydawaj na niego ani grosza.
Prosi zespół, aby przestał korzystać z internetu (szczególnie StackOverflow) i polegał na ich mózgach, dokumentacji offline (nawet nie wiedziałem, że Microsoft nadal sprzedaje płyty MSDN!) i książkach.
Myli się. Internet jest do tego świetny. Jeśli personel Deva kopiuje z Stackoverflow nie rozumiejąc jak działa kod, to oni też się mylą. Czy jest czas na szkolenia i osobiste udoskonalenia w harmonogramie rozwoju? Ciężko jest nie kopiować-wklejać robotycznie, kiedy zawsze jesteś pod bronią.
Podczas gdy ja mam ograniczone informacje, jest tu wiele problemów. Wygląda na to, że właściciel nie dostał kodu, za który płaci tak szybko, jak się spodziewa. Brzmi to tak, jakby słyszał wiele wymówek na temat rzeczy, na których mu nic nie zależy; jest skupiony na wyniku. Jeśli mam rację, masz ranę zadaną sobie samemu i otworzyłeś ją więcej niż raz. Ten ołów jest rozwiązaniem dla właściciela problemu, który postawił personel Deva, a biorąc pod uwagę jego ograniczone informacje, jest to zrozumiałe.
Założę się również, że prowadzisz sklep nieagile i masz słabą definicję wymagań, która zmienia się wraz z wiatrem. Nie ma warstwy izolacji pomiędzy personelem dev a właścicielem. Z wyjątkiem tego ołowiu.
Co możesz teraz zrobić?
1) Pociągnij ołów, że korzystanie z automatycznego testowania i zarządzania kodem jest drogą do celu. Zdobycie z nim wiarygodności może zająć trochę czasu - właściciel prawdopodobnie powiedział mu, że personel jest wadliwy. Zobacz, czy możesz uniemożliwić mu wykonywanie mandatów wymiatających, takich jak “usuń wszystkie te bezużyteczne testowe bzdury i zmień przeznaczenie serwera SVN”. To da ci czas na pokazanie wartości.
2) Kontynuuj zarządzanie kodem na poziomie osobistym. Przynajmniej wtedy będziesz mógł odzyskać swoje własne błędy. Nie mów mu, że to robisz, ale też go nie okłamuj.
3) Kontynuuj automatyczne testy (testy jednostkowe, jeśli nic innego) na poziomie osobistym. Tak jak poprzednio, nie wspominaj o tym, choć nie ukrywaj tego.
4) Pracuj z liderem, aby określić, jakie są rzeczywiste postrzegane problemy. Bądź otwarty, założę się, że istnieją rzeczywiste problemy z personelem. Pracuj z Ołowiem, aby zająć się problemami, a nie objawami.
5) Przedyskutuj z Ołowiem różne tematy rozwojowe, takie jak korzyści płynące z wodospadu i zwinności. Żaden z nich nie jest doskonały. Zadawaj mu pytania, takie jak: “W jakich okolicznościach zautomatyzowane testy byłyby warte zachodu”? Jeśli udzieli wątpliwej odpowiedzi, zapytaj go, jak udane firmy, takie jak Google, zdołały się mimo to rozwijać.
Tak więc widzisz, że chodzi mi o zaangażowanie Lid'a i zobaczenie, gdzie jest jego głowa. Zbuduj zaufanie. Zgodzić się na kwestie kontra objawy. Nie zawsze jest to łatwe, zwłaszcza gdy czujesz, że jest jak Godzilla i rozrywa Twoją pracę na strzępy.
Jest szansa, że nie może iść na kompromis. On zmiażdży zautomatyzowane testy. Zarządzanie kodeksem jest dla nieostrożnych ludzi. My Way or the Highway.
Jeśli jednak dojdzie do tego punktu, nadejdzie czas, abyś odszedł. Praca w sklepie bez narzędzi, a mam na myśli oprogramowanie i narzędzia inżynierii oprogramowania - nie buduje Twojego CV. Zaczniesz gnić w ten sam sposób, w jaki zgnił Lead. W takim razie ruszajcie dalej.