fbpx
devstyle.pl - Blog dla każdego programisty
devstyle.pl - Blog dla każdego programisty
4 minut

Dev-refleksje podczas grania w NFS


07.03.2013

Gutek niedawno napisał o swoich przemyśleniach odnośnie programowania podczas jazdy samochodem. Takie myśli mogą nas dopaść wszędzie. Od tego naprawdę nie ma ucieczki… o ile jesteśmy faktycznie odpowiednio zaangażowani.

Need For Speed: Most Wanted

Mnie ostatnio dopadły one podczas grania w doskonałe NFS: Most Wanted na Androida. Jeszcze p…asja? Czy już p…ierdolec?

Dla tych którzy nie grali: są to wyścigi samochodowe;). Gracz otrzymuje kilka trybów wyścigów. Jest tam oczywiście standardowe “dojedź pierwszy do mety”, jest “dojedź do mety w określonym czasie”… Ale tryb, który wywołał we mnie programistyczne myśli, to: “Speed run”.

“Speed run”

Speed Run polega na przejechaniu całej trasy uzyskując jak najwyższą średnią prędkość od startu do mety. Zdobycie złotych medali w tej kategorii sprawiało mi spore kłopoty dopóki nie zauważyłem, że do problemu trzeba podejść w inny niż zwykle sposób.

W każdym wyścigu da się wykonać masę interesujących czynności. A to efektownie podriftować na zakrętach. A to wycisnąć z fury maksymalnego kopa doładowując “nitro”. A to rozwalić konkurenta albo radiowóz. W Speed Run trzeba jednak zapomnieć o większości z tych możliwości. Tam nie ścinamy zakrętów, bo nikt nas nie ściga. Można pokonywać pętle po zewnętrznej stronie, bo nie zależy nam na czasie. Nie staramy się wchodzić w zakręty driftem, bo na kilka sekund obniża to aktualną prędkość. Liczy się tylko i wyłącznie wysoka prędkość, o którą łatwiej przy zewnętrznej bandzie nawet jeśli przez to przejedziemy te kilkadziesiąt metrów więcej w skali całej trasy. Nie odpalamy też nitro jadąc z wystarczającą szybkością tylko po to, żeby jechać przez chwilę jeszcze szybciej. Nitro zostawiamy na sytuacje, w których ta prędkość znacznie spadnie, na przykład z powodu stłuczki – aby jak najszybciej powrócić do podbijania średniej.

Nie staramy się przywalić goniącego nas radiowozu. Co z tego że fajnie się roztrzaska dodając bonusowe nitro, skoro na istotną chwilę nas to spowolni?

Efekt jest taki, że dojeżdżamy do mety ze średnio imponującym czasem. Podczas jazdy nie rozwalimy policji i się nie poślizgamy. Nie zwracamy uwagi na skracanie trasy, bo tu nie liczy się każdy metr. Generalnie: w normalnym wyścigu tym sposobem jazdy dojechalibyśmy pewnie na ostatnim miejscu.

Ale tutaj się to sprawdza.

Dev-drift czy dev-nitro?

I dochodzimy do sedna. My, jako programiści, też mamy cały wachlarz opcji do wykorzystania podczas codziennej pracy. Czym w Twoim zespole jest drift – może próbą wdrożenia nowego pomysłu do projektu, potencjalnie zakończoną porażką? Czym jest nitro – może zostaniem przez kilka dni po godzinach? Czym jest ścięcie zakrętu – może jakimś refactoringiem czekającym aż ktoś się wreszcie za niego weźmie?

Jak często podczas pracy zastanawiasz się w jakim “trybie” pracujesz, a w jakim pracować powinieneś? Czy w skali całego zespołu ustalacie co jest aktualnie priorytetem? Jakie asy z programistycznego rękawa wyciągać podczas aktualnego sprintu…bo nie każdy z nich zawsze znajduje zastosowanie? Jakie jest Wasz cel w danym momencie? Efektowna jazda? Średnia prędkość? Najkrótsza trasa? Imponujący czas?

Dev-sukces

Jeśli wszyscy pracujący nad projektem mieliby ten sam wspólny cel i zdefiniowali techniki oraz czynności nadające się do osiągnięcia właśnie jego, być może organizacja pracy uległaby poprawie? Być może dałoby się uniknąć nieporozumień i konfliktów?

Być może więcej projektów kończyłoby się sukcesem?

0 0 votes
Article Rating
14 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Łukasz
11 years ago

świetne porównanie!

Sebastian
Sebastian
11 years ago

Hehe :) Na chłopski rozum :D

hexcrafter
hexcrafter
11 years ago

Porównanie jak najbardziej trafne, natomiast “bo nie zależy nam na czasie” i “dojeżdżamy do mety ze średnio imponującym czasem” – nie prawda. Jak najbardziej zależy nam na czasie, ponieważ średnia prędkość jest ilorazem drogi i czasu. Droga jest stała natomiast jedyną zmienną w równaniu jest czas, na podstawie którego później jest obliczana średnia prędkość – im krótszy czas tym większa średnia prędkość. Średnią prędkością może być produktywność (chwilowa). Długa jazda na wysokich obrotach zwykle źle się kończy :)

Sebastian
Sebastian
11 years ago

Czytając artykuł bardzo szybko przywołała mi się w pamięci książka Orsona Scotta Carda “Gra Endera” (http://lubimyczytac.pl/ksiazka/47898/gra-endera) – bardzo polecam jeśli ktoś nie czytał (ktoś nie czytał???). Wychodzenie poza ramy standarodwego – bezpiecznego – myślenia, podejmowanie nieszablonowych decyzji. Być może część okaże się porażką, inne doprowadzą nas do zwycięstwa i przetrą nowe szlaki, którymi będziemy mogli (nawiązując do poprzedniego posta) podzielić się ze społecznością.

hexcrafter
hexcrafter
11 years ago

Start i meta nie zmieniają się w trakcie gry. Dystans od A do B zawsze jest stały. Droga którą pokonasz nie ma znaczenia. Jaki jest sens średniej prędkości jeśli ostateczny czas jest dłuższy a na dodatek mogłeś kołować lub jechać w przeciwnym kierunku ?? Odnośnie tego przypomniał mi się dowcip:

Na budowie Kowalski lata w te i z powrotem z pustą taczką.
Widząc to kierownik pyta:
– Co tak z tą pustą taczką latacie?
– Panie kierowniku – mówi Kowalski – taki zapi3&|)0I, że nie ma kiedy załadować.

// no offence

trackback
11 years ago

Dev-refleksje podczas grania w NFS | Maciej Aniserowicz o programowaniu…

Dziękujemy za dodanie artykułu – Trackback z dotnetomaniak.pl…

hexcrafter
hexcrafter
11 years ago

Takie podejście sprawdza się tylko w grze (chociaż może to być rozwiązane na kilka sposobów). Nie mogę sobie wyobrazić zastosowania trybu średniej prędkości w pracy nad projektem.

zabanet
zabanet
11 years ago

Porownanie mi sie bardzo podoba. Procent, co do Gry Endera, to zanotuj koniecznie i najlepiej podbij troche priorytet, bo ksiazka jest genialna. Pierwsze miejsce na mojej liscie od lat. Polecam tez kolejne czesci i w ogole zadna ksiazka O. S. Card’a nie byla dla mnie strata czasu.
A co do NFSa na andku, to z kolei ja bede musial sprobowac ;)

Sebastian
Sebastian
11 years ago

zabanet,
ciesze się, że spotykam tu takiego fana twórczości Carda jak ja :) Nie chciałem ciągnąć – jakby nie patrzeć pobocznego – wątku ale faktycznie “Gra Endera” to książka którą można i trzeba wpisać na listę “Must Read”.
A nawiązując do wątku to ja zdecydowanie dzisiaj snuje leniwie po zewnętrznej krawędzi jezdni podziwiając wystawy mijanych sklepów. Taki dzień… może to zmiana pogody. Jutro będę musiał zapewne ściąć pare zakrętów. Tutaj dochodzi coś takiego jak czynnik ludzki. W skali całego projektu mogą się wydarzyć różne rzeczy na które nie mamy żadnego wpływu – ktoś się rozchoruje, ktoś źle się czuje czy zwyczajnie zabrnął w jakiś zaułek (i nie może wcisnąć R żeby wrócić na tor). Ale jako programiści mamy różne narzędzia, o których wspomniał % dzięki którym możemy utrzymać dobrą średnią.

WhiteLightning
11 years ago

Dla mnie wniosek z postu jest jeden: jesli nad czyms pracujemy, powinniśmy się skupiać tylko na tej jednej rzeczy (można pójść w coś w stylu Pomodoro). I wtedy osiągniemy lepszą prędkość. Z mojego doświadczenia, takie podejście naprawdę się sprawdza.

Kurs Gita

Zaawansowany frontend

Szkolenie z Testów

Szkolenie z baz danych

Książka

Zobacz również