Produktywność programistów - 10000 razy?
23/06/2007 · Link
Na
swoim blogu Alex Barszczewski poruszył ciekawe zagadnienie zarządzania pracownikami o wyjątkowych umiejętnościach (
patrz tutaj), który to artykuł gorąco polecam wszystkim menedżerom w naszej branży, bo z opisanymi w nim wyzwaniami z pewnością przyjdzie nam się spotykać.
Zgadzając się z głównymi tezami artykułu, zdziwiła mnie podana przez Alexa informacja, że programiści różnią się wydajnością nawet 10000 razy. Wow! Czy tak jest w istocie?
Ponieważ wątek "10^n razy" odbiega od głównego nurtu tamtej dyskusji postanowiłem zmierzyć się z nim tutaj.
Niektórzy programiści są 10.000 razy bardziej produktywni od innych
[Krzysiek] w
komentarzu obszernie wyjaśnia skąd bierze się ta liczba. Wniosek z tego wywodu rozumiem następująco:
różnice w różnego rodzaju umiejętnościach programistów są tak duże, że co jeden potrafi zrobić w rozsądnym czasie, inny może nie być w stanie zrobić w ogóle. Co dla mnie, jak i podejrzewam dla większości z Was, nie jest zapewne kontrowersyjną tezą.
Czy to specyfika pracy programistów? Jak to jest w innych zawodach? Weźmy Michała Anioła, Einsteina, Bono, Steve Jobsa, Churchilla, Ala Pacino etc. Przeciętny rzeźbiarz, fizyk, muzyk, polityk, aktor nie osiągnie - nawet mając 10000x więcej czasu - tego co oni. Nawet pan Kaziu, który super równo kładzie kafelki w łazience, nie da się zastąpić tysiącem przeciętnych fachowców. Ale nie mówi się, że produktywność rzeźbiarzy, fizyków, muzyków, polityków, aktorów, kafelkarzy etc różni się więcej niż tysiąckrotnie. Dlaczego?
Niektórzy programiści są w stanie napisać 10000 razy więcej kodu w tej samej jednostce czasu
Nie, nie o taką produktywność nam chodzi, prawda? Produktywność pracownika można pewnie odnieść do dwóch aspektów: czasu wykonania określonego zadania lub mierzalnych korzyści finansowych dla firmy.
Najpierw przyjrzyjmy się
aspektowi czasu wykonania. Postawmy się w sytuacji menedżera zespołu, który ma konkretne zadanie do wykonania, np. wyszukanie w tekście wszystkich wystąpień słów z określonego zbioru. Menedżer taki przygląda się swojemu zepołowi: Tadek to zrobi w godzinę, Zosia w cztery, Wojtek w 1250 dni (10000 godzin).
Ups, chyba przesadziłem, nieprawda? Jeśli Wojtek nie jest w stanie tego zrobić w ciągu maksymalnie kilku dni, to w praktyce przyjmujemy, że nie jest on w stanie wykonać tego zadania w ogóle. I to jest zrozumiałe, trudno, ale mówienie, że jego produktywność jest mniejsza o x od Tadka nie ma sensu. Ich zakres umiejętności jest różny, tak jak różny jest zakres umiejętności Tadka i asystenta prezesa. (Zapewne ten asystent mając 1250 dni jest się w stanie nauczyć podstaw programowania i napisać ten kawałek kodu. To prawie 5 lat, więc nawet studia zdąży zrobić).
A więc przyjmując zdroworozsądkową cierpliwość menedżera, możemy z góry oszacować maksymalną różnicę tak rozumianej produktywności na około kilkadziesiąt (3d / 1h = 24). I to bez żadnych pomiarów!
Jeśli mówimy o
finansowych korzyściach dla firmy, to produktywność pracownika w pewnych branżach może się różnić nawet więcej niż 10000 razy (Steve Jobs, Warren Buffett, Andre Agassi,...). Pewnie jest jakiś powód, dla którego do przebojów filmowych bierze się Matta Damona, Sandrę Bullock czy Julię Roberts pomimo ich
ekstremalnych zarobków. Branże gdzie występuje taka różnica "produktywności finansowej" łatwo zidentyfikować na bazie różnic w dochodach pracujących w nich ludzi (sportowcy, aktorzy, biznesmeni, menedżerowie,...). Nie jest to więc cecha w żaden sposób specyficzna dla programistów.
Ale zaraz - czy to w ogóle dotyczy programistów? Nie potwierdzają tego raporty o
rozpiętości zarobków programistów w porównaniu do wspomnianych rozpiętości zarobków aktorów, menedżerów, sportowców. Jak to więc jest? Czy naprawdę sukces rynkowy produktu zależy od umiejętności gwiazdora programisty?
Ten programista zarobi dla naszej firmy 10000 razy więcej pieniędzy
Dobre gry komputerowe odnoszą sukces, bo były "fajne" - miały dobry pomysł, fabułę, dopracowaną grafikę i dźwięk. Aplikacje internetowe, bo rozwiązywały jakiś istotny problem dla użytkowników (np. dostępu do swojej poczty z różnych miejsc, czy pisania pamiętników). Aplikacje desktopowe, bo były praktyczne, pomysłowe, wygodne. Nawet sukces google.com, firmy utożsamianej ze śmietanką programistów, bardziej opierał się na dobrym pomyśle na przeszukiwanie (page rank) i model biznesowy związany z reklamami (dopasowanie reklam do wyników wyszukiwania, wyświetlanie reklam na stronach użytkowników) niż na niesłychanie wyrafinowanym i misternym oprogramowaniu. A więc istotny jest pomysł, zrozumienie użytkownika, dopracowanie interfejsu i grafiki, właściwy model biznesowy, dobry marketing, etc. Te czynniki (a właściwie ich odpowiednia kombinacja), są w deficycie, a nie umiejętności zaprogramowania określonych funkcjonalności. Osoby będące źródłem kreatywnych pomysłów są "bardziej produktywni" (w finansowym znaczeniu) od osób mało twórczych. Osoby z dobrym zrozumieniem rynku - też. Liderzy potrafiący zmobilizować duże grupy ludzi do bardziej efektywnej pracy - też. Ale to nie muszą (i często nie są) programiści.
I wtedy porównywanie ich produktywności z produktywnością programistów to tak jakby mówić "jabłka są sto razy lepsze od kotleta".
Jedyna znana mi sytuacja, w której faktycznie czysto programistyczne umiejętności są finansowo wynagradzane znacznie powyżej standardu (co zapewne świadczy o wielokrotnie wyższej wartości pracy tych osób dla firmy), to sytuacja osób, które na przykład współtworzyły systemy billingowe dla operatorów telekomunikacyjnych. I ponieważ Ci operatorzy mają mnóstwo pieniędzy, a to są kluczowe dla nich systemy, więc są w stanie zapłacić duże pieniądze za szybkie wprowadzenie usprawnień. Ale nie mówimy tu o wydajności tych programistów, tylko o umiejętnym wykorzystaniu przez nich monopolu na bardzo specyficzną wiedzę. Są oni nie tyle super wydajnymi programistami ile biznesmenami, wykorzystującymi określoną sytuację rynkową.
Disclaimer
Niemniej, jeśli znacie programistów, którzy są choćby 100x bardziej wydajni od przeciętnych, to bardzo proszę, przekażcie im kontakt do mnie, może uda nam się znaleźć pomysł na współpracę?
Zobacz inne wpisy
Cześć,
„Niektórzy programiści są 10.000 razy bardziej produktywni od innych”
Według mnie odnosi się to nie do samego klepania kodu, a raczej do czynności, które są z tym powiązane. Wspomniana produktywność może wynikać z lepszego doboru metod rozwiązujących zadane, szybkości oraz efektywności tworzonych rozwiązań oraz umiejętności spojrzenia na problem z każdej perspektywy. Stworzyć daną aplikacje może każdy, ale nie każdy może ją stworzyć w sposób zapewniający jej optymalne i sprawne działanie w każdej warstwie.
Ważnym elementem jest też zaangażowanie w projekt. Im realizacja wydaje się programiście ciekawsza tym bardziej będzie się starał by produkt został napisany perfekcyjnie.
„Niektórzy programiści są w stanie napisać 10000 razy więcej kodu w tej samej jednostce czasu”
Nie liczy się ilość, ale jakość :)
„Ten programista zarobi dla naszej firmy 10000 razy więcej pieniędzy”
Jeśli stworzy unikalne rozwiązanie, które przebije konkurencyjne to czemu nie? :)
Ot takie skromne zdanie małego pisarza ;-)
Pozdrawiam
Michał
Witam,
Wydaje mi się, że wszyscy biorący udział w dyskusji zapomnieli, że oprogramowanie, nie tylko się pisze, ale *przede wszystkim* konserwuje.
I to jest prawdziwy koszt dla firmy.
Jeżeli dobry programista napisze na czas kod/program, który:
* Nie zawiera błędów, które trzeba ciągle poprawiać (i wstydzić się/tracić reputację przed klientami).
* Łatwo się dostosowuje do zmieniających się wymagań.
* Nie obciąża sprzętu/bazy danych.
* Jest przyjemny w użyciu dla klienta.
Tak widziana ,,wydajność'' programisty rośnie wraz z upływem czasu, bo tworzy nowe rzeczy, zamiast pisać ponownie/poprawiać to co robił wcześniej.
Hmm... Obawiam się, że zapomnieliśmy w tej dyskusji o jeszcze jednym aspekcie. Pensja programisty nie zawsze odpowiada temu, ile firma na nim zarabia. Dlaczego? Bo programiści dosc czesto nie sa zbyt dobrzy w kontaktach spolecznych, czy w domaganiu sie swojego. Poza tym ciezko jest przekonac pracodawce o zyskach przynoszonych przez programiste.
Grzesiek,
Zgadzam się z tym co piszesz. Biorąc wspomniane przez Ciebie koszty konserwacji oraz koszt związany z angażowaniem innych osób przez słabego programistę może się okazać, że jego wydajność jest ...ujemna!
Zresztą tak jak i ujemna może być produktywność murarza, kafelkarza czy hydraulika. Moja ciotka po obejrzeniu kafli położonych przez jednego z fachowców zdecydowała się je stłuc i kłaść ponownie.
Co jeszcze bardziej pokazuje, że trzeba zachowywać się ostrożnie mówiąc o n-krotnie większej wydajności jednego programisty od drugiego - bo ile wynosi ten wskaźnik, gdy jeden z nich ma "produktywność ujemną"? :)
Pozdrawiam,
Marek
Doodge,
Masz rację, wielu z programistów nie potrafi zawalczyć o więcej ze względów na swoje cechy charakteru. Zresztą dla wielu z nich pieniądze nie są głównym czynnikiem motywującym i wcale mogą nie chcieć walczyć o więcej.
Moje rozumowanie jest świadomie uproszczone, bo w tym przypadku zależało mi na zastanowieniu się nad pojęciem produktywności programistów.
Pozdrawiam,
Marek
Dzien dobry,
Przez wiele lat pracowalem w Belgii jako szef projektow informatycznych.
Stosowalismy metode B-ADSc, stworzona przez Polaka mieszkajacego we Francji. Jest SWIETNA. Poprawia niesamowicie wydajnosc i jakosc realizowanych systemow. Ostatnio znalazlem strone http://iegd.institut.online.fr/. Sadze, ze tam mozecie otrzymac wiecej informacji na ten temat. Serdecznie polecam.
Metoda ta jest stosowana do koncepcji dowolnej organizacji : ekipy, przedsiebiorstwa, systemu informatycznego, ...
Zenon K.
06/07/2007,
Zenon
Witam,
Nawiązując do wypowiedzi Grześka - to jest właśnie sedno sprawy. Kiedy patrzysz się na wersję 6.0 danego systemu i szacujesz ile kodu pozostało po poszczególnych programistach, to okazuje się, że ci dobrzy potrafią się różnić w granicach 1:4 a za nimi jest cały peleton osób, po których nic ciekawego nie zostało...
Myślę, że to jest najwłaściwszy sposób pomiaru wydajności programisty.
Ile (i jakiego) kodu zostanie z jego rocznej pracy za 3 lata. Oczywiście zakładając, że nie mówimy o programie jednorazowym.
Natomiast wydajność bieżąca pod tytułem - ktoś robi w 3 dni, co inny może zrobić w godzinę - może oznaczać tylko 2 sytuacje: albo osoba, która rozwiązała dany problem w godzinę jest 'geniuszem' (Sama wymyśliła sposób rozwiązania na skróty) albo - niestety ta druga jest leserem. Co niestety się zdarza.
Witam
Wydaje mi się, że troszeczkę się gubimy z jednego powodu - ponieważ u nas w Polsce programiści często,gęsto robią wszystko - od analizy (wymyślenia fajnego produktu) po programowanie. Szkoda, że jeszcze później nie jadą do klienta i nie sprzedają produktu - wtedy z handlowców można by było zrezygnować. I ok - są tutaj ludzie wybitni, którzy świetnie analizują potrzeby klienta, a do tego są fachowcami i potrafią dobrze programować.
Natomiast dla mnie,osoby która coś tam napisać potrafi, ale nigdy nie będzie uważała się za programistę, takia definicja jest błędna.
Programista to powinien być ktoś, kto potrafi przełożyć konkretne wymagania od aplikacji na kod, zbiór klas w UML'u czy tabel w SQL'u. Ciężko, aby taki programista znał zagadnienia księgowe, logistyczne czy finansowe. Praca programisty jest dużo bardziej wydajniejsza, jeżeli skupia się na swojej robocie. Jeżeli przy tym ma dodatkową wiedzę i to obszerną, to tym lepiej, bo szybciej się z konsultantem zrozumie.
Pozdrawiam
03/11/2007,
Krzysztof Saniak
"Masz rację, wielu z programistów nie potrafi zawalczyć o więcej ze względów na swoje cechy charakteru. Zresztą dla wielu z nich pieniądze nie są głównym czynnikiem motywującym i wcale mogą nie chcieć walczyć o więcej."
heh, znam mniej wiecej 50 programistow, ktorzy postukaja sie w czolo slyszac taka wypowiedz. nie wiem za kogo kadra menadzerska uznaje programistow, ale typowe nerdy z okularami jak denka od jabcokow w powyciaganych swetrach i z tlustymi wlosami to nie jest norma. znam ludzi w motoroli, w sabre, w ige+xao, w ericpolu i co by nie mowic o tych firmach to jest tam sporo fajnych, rozsadnych ludzi potrafiacych sie smiac z czegos co nie ma postaci binarnej. moi znajomi ubieraja sie w markowe ciuchy (np. diesel, dolce), uzywaja dobrych kosmetykow, chodza do porzadnych knajp, jezdza taksowkami, kupuja sobie laptopy, konsole, tv plazmowe, itp. wiec jak mozna twierdzic, ze tacy ludzie nie chcieli by walczyc o lepsze warunki finansowe. przeciez z tego powodu 3/4 kadry sabre to byli pracownicy motoroli. sabre dalo wiecej kasy wiec tam poszli, zero sentymentow, twarda kalkulacja. tylko totalne niedojdy godza sie zarabiac mniej jesli mozna zarabiac wiecej. ale niedojdy sa takze wsrod prawnikow, lekarzy i menadzerow projektow informatycznych :)
06/12/2007,
Marek Grabka
Zdanie o tym, że niektórzy programiści są 10^n razy bardziej produktywni czytałem już w jakiejś książce (coś z klasyki informatyki albo pragmatyczny programista - nie pamiętam...) i powoływano się tam na badania przeprowadzone przez jakaś korporację (IBM?).
01/01/2008,
Łukasz
http://en.wikipedia.org/wiki/The_Mythical_Man-Month
I wszystko jasne.
04/01/2008,
Jean Paul