Tak mnie dzisiaj naszło, podsumowałem liczbę linii kodu, którą dzisiaj wygenerowały moje palce czasami z pomocą resharpera, ctrl+c, ctrl+v i mojego konwertera klas na knockout JS.
Łącznie dziś napisałem: 4956 linii kodu, w tym cshtml: 2141, C#: 1771 i JS: 1044. Czy jest to wydajna praca? Czy to nie jest wydajna praca?
Popatrzmy na taski, całość zamknęła 20 tasków i 4 Product Backlog Items i około 5 bugów.
Czy to już jest wydajnie?
Nie czuje abym coś dzisiaj tak naprawdę napisał. Czy to oznacza, że mógłbym więcej napisać? Nie sądzę, rzadko mi się zdarzają takie dni jak dzisiaj.
My programiści możemy generować tego kodu od … i jeszcze więcej jak potrzeba, tylko pytanie po co i czy rzeczywiście to co robimy ma ręce i nogi?
Co jest ważne dla nas podczas pracy – napisanie masy linijek kodu? Zamknięcie tasków? Satysfakcja?
Ja osobiście uwielbiam dni kiedy muszę coś rozgryźć, to mnie bawi, to mnie pociąga. Mogę w trakcie takiego dnia napisać jedną linijkę kodu i będę uważał, że byłem wydajny, to co zrobiłem, zrobiłem dobrze i będę miał z tego pełną satysfakcję – teraz jak i podczas następnych dni.
Dni, kiedy wygenerowałem ponad 3K linijek kodu, oznaczają iż robię za kodera, osobę która już wszystko rozkminiła (lub zostało jej powiedziane co dokładnie ma zrobić) i teraz pora zamknąć to jak najszybciej i przejść do kolejnego problemu. Więc siedzę i nawet myśleć nie muszę by wygenerować kod. Dokładnie wiem co chcę, jak chcę i gdzie chcę. Nie odwalam fuszerki, jednak piszę bez natchnienia, z jedną myślą – niech to się już skończy.
Ale czy to oznacza, że jak napiszę 10 linijek kodu podczas dnia to jestem wydajny? Oczywiście, że nie. W 60% przypadków oznacza to, że się opierdalałem lub nie pracowałem na pełnych obrotach.
Czy więc wydajność naszej pracy można mierzyć za pomocą linii kodu?
Zdecydowanie NIE. Nie możemy i nie powinniśmy mierzyć tak wydajności. Dużo lepszym IMO wyznacznikiem jest podejście do problemu i sposób jego rozwiązania. To jest najważniejsze. To jak zabieramy się do pracy, i to jak ją kończymy. Tutaj warto obserwować programistów i poznać ich nawyki. Niektórzy zanim zaczną pracę patrzą na strony w Internecie beznadziejnie klikając w linki aż w końcu coś w głowie zaskoczy, niektórzy od razu siadają do edytora, inny do kartki papieru, a jeszcze inni piszą maila do X z pytaniem: te, robiłeś to? To podaj kod.
Jak poznacie nawyki pracy programisty i jej końcowe efekty to będziecie wstanie dopiero powiedzieć czy pracuje on wydajnie czy nie. Każdy z nas jest inny, i wiedza o tym jak każdy z nas pracuje jest kluczem do tego by pod koniec dnia/tygodnia stwierdzić, że Y był wydajny.
Seth Godin idzie trochę dalej do przodu i podaje definicję wydajności: wydajności nie powinno się mierzyć na podstawie tego co aktualnie robi dana osoba, ale czy myśli ona już o kolejnych krokach – nie zawęża swojego pola widzenia do danej sytuacji w danym okresie czasu.
Ma on moim zdaniem racje. To, że mogłem dzisiaj napisać 4K linii kodu, było spowodowane tym, że dwa tygodnie temu podjąłem pewne decyzje, które ułatwiły mi znacząco pracę dzisiaj i ułatwią pracę później kiedy będę musiał siąść do tego kodu. Co prawda, nie dała mi ona satysfakcji dzisiaj, jednak jest to końcówka tego co przez ostatnie kilka tygodni dawało mi satysfakcję.
Pytanie do was, co wy uważacie za wydajną pracę? Kiedy uważacie, że wasza praca jest wydajna?
Nie możemy też popadać z skrajności w skrajność. Myślę że człowiek/programista produktywny nie ważne co by robił czy to zwykły klepacz kodu (4k kodu dziennie) czy ktoś z zadaniem specjalnym (50-100) gdzie cały dzień to rozwala. Ważne aby to po prostu sumiennie ukończyć jak najlepiej się potrafi i nie opierdalać się na fb, tw czy oglądaniu pierdół na kwejku.
jeśli po zakończonym zadaniu (niekoniecznie musi ono trwać 8 h) jesteś w stanie sam do siebie powiedzieć – zasłużyłem na guinessa, to znaczy, że wszystko gra! ;)
zgadza sie nie mozna. ale czy wydajnosc programisty mozna miezyc za pomoca sumienia programisty? ja mam zwycaj, ze zanim rozpoczne prace musze odwalic prasowke (w to zalicza sie FB, Twitter, blog posty i newsy ze swiata). Nie mysle przy tym, tylko przegladam strony az w koncu cos zaskoczy u mnie w glowie. Srednio 20 min to trwa.
w dni nie produktywne, nie jestem wstanie nic zrobic, przegladam tylko net. napisze jedna linijke i jestem z tego powodu zadowolony gdyz udalo mi sie przezwyciezyc brak weny. ale czy to powoduje ze jestem produktywny bo jestem zadowolony z tego co zrobilem, ze udalo sie mi w koncu mimo takiego dania napisac ta linijke?
:) z tym guinessem to roznie bywa, czasami twierdze ze za sluzylem bo… po prostu zaslozuzylem :)
Nie raz zdarzyło mi się przez cały dzień nie napisać 'produktywnej' linii kodu, przez co rozumiem kod, który nie trafi na serwery produkcyjne. Czasem trzeba poświęcić chwilę nad rozważenie kilku różnych konceptów i wybranie tego najlepszego do postawionego przed nami zadania. Taką formę pracy właśnie najbardziej lubię. Poszukiwanie rozwiązań, testowanie, jak się to sprawdzi w rzeczywistości. Późniejsze zbudowanie na tej podstawie 4k linii kodu już tak nie cieszy.
To prawda, że mierzenie pracy po napisanych linijkach jest bez sensu. Co z tego, że ktoś naprodukuje 1k linii, jak potem trzeba je przerabiać i często wychodzi ich o połowę mniej.
Kiedyś zdarzyło mi się usłyszeć na rozmowie kwalifikacyjnej, ile linijek kodu miał mój największy projekt… Czy ludzie myślą, że my liczymy każdą napisaną linijkę i chwalimy się tym wśród innych?
Mnie osobiście najbardziej motywują do pracy (pisania kodu) wyzwania. Mam na myśli wykonanie zadania, a raczej rozwiązanie problemu, z którym dotychczas nie miałem okazji się zmierzyć. Tym samym muszę zaimplementować coś zupełnie nowego dla mnie.
Podczas pracy nad problemem zmieniam zdanie sto razy. Lecz liczy się tak na prawdę efekt finalny – czy jestem zadowolony z rozwiązania? Tak. Wydaje mi się, że na dzień dzisiejszy, przy mojej obecnej wiedzy i doświadczeniu napisałem ten kod najlepiej jak tylko mogłem.
Co nie zmienia faktu, iż ten kod (bądź co bądź mojego autorstwa) będę w stanie jeszcze ze dwadzieścia razy zmienić w przyszłości, udoskonalając go zgodnie z nabytą w ten czas wiedzą.
Nawiązując do samej wydajności, to strasznie nie lubię dni kiedy: mam parę spotkań, po kilka razy ktoś przychodzi z pytaniem/prośbą/problemem, co jakiś czas trzeba odpisać na maila, należy coś przygotować na boku. W momencie kiedy człowiek nie może skupić się dłuższą chwilę na zadaniu (problemie), to rozwiązanie albo będzie słabe, albo nie dość szybko przyjdzie do głowy.
Dodatkowo w tym temacie polecam ten artykuł: http://bogumilwiatrowski.pl/wspolpraca/coding-flow-nie-przeszkadzaj-programistom-w-pracy
Produktywność to ciekawe zagadnienie w naszej branży. Ja miałem takie tygodnie że tylko kod usuwałem i uważam je zdecydowanie za jedne z najbardziej produktywnych i satysfakcjonujacych :-)
Comments are closed.