Tak w ramach walki o moje 50 linii kodu dziennie męczę dzisiejsze zadanie z LeetCode i stwierdzam, że prawdziwe IDE i Debugger pomagają ;-)
Zwykle staram się zadania robić tylko w edytorze LeetCode, w razie rozmowy tak to będzie wyglądać.
Gdy chcę jeszcze bardziej wyostrzyć moje kung-fu to nawet używam nawet "blindfold programming", czyli próbuję robić zadanie w głowie i dopiero jak je "napiszę w głowie" i przetestuje w głowie to piszę kod.
Ale nie zawsze się da, czasem zadanie jest za trudne, czasem ja za głupi ;-)
Wtedy jest czas na big guns ;-)
Wrzucenie kodu do IntelliJ i zabawa z Debuggerem :-)
Ja wiem, że "I'm supposed too" uruchamiać ten kod w głowie w razie jakiegoś interview... co jest wg. mnie formą sprawdzenia tak naprawdę IQ i pamięci krótkotrwałej gdzie IQ często służy do tego by wymyślić sposób na "zchunkowanie" zadania tak by móc je zmieścić w pamięci krótkotrwałej.. inna sprawa czy to jest naprawdę dobry sposób na testowanie programistów.
Bo ja twierdzę, że do normalnej pracy nie chcesz tych najbystrzejszych oni i one (chociaż one są zwykle bardziej powściągliwe przed robieniem głupich rzeczy) mogą przesadzić w komplikacji, w końcu potrafią to ogarnąć...
Ale wracając do Debuggera, on Ci daje takie szerokopasmowe spojrzenie na wykonanie kodu. Masz ciągle widok aktualnego stanu, w razie coś się dziwnego dzieje możesz się cofnąć (drop frame... co zresztą zachęca człowieka do dodawania metod, bo drop frame polega na powrót po prostu na początek wykonania danej metody, bo zrzucana jest 1 ramka ze stosu)....
Widzisz kod, widzisz stan zmiennych i często jest tak, że dochodzić do pewnego miejsca... nie wykonasz tego kroku jeszcze a już widzisz problem ;-)
Ma to oczywiście też wady, bo po jakimś czasie zaczyna się leczyć objawowo. Jak ta zmienna powinna zostać np. zwiększona o 1 to się dodaje to zwiększanie i próbuje dalej... więc w końcu może powstać potworek, który działa, ale nie wiadomo czemu... choć to jest rzadki przypadek.
Inna sprawa, że widzę, że znów w czasach lambd i cloud coraz więcej developerów jedzie "sprawdzę na cloudzie" i znów do debugowania używa się logów ;-)
No bo po co móc uruchomić kod na lokalnej maszynie, gdzie masz możliwość przeglądania stosu i wszystkiego... nie, zróbmy trudniej!
(taka metauwaga... ja ten tekst piszę jako przerywnik by się zresetować z jednego podejścia i zaatakować innym i przyznaję, że do pisania tego tekstu używam tylko ułamka mocy obliczeniowej mózgu w porównaniu do kodowania ;-))
Podobne postybeta
Kontekstowe zapominanie ;-)
Referencje w Java'ie
Nowy potworek na tapecie ;-)
Moja możliwa zemsta za zamknięcie Google+ ;-)
Focus