Czytać.
Nie, naprawdę czytaj.
Przeczytaj wszystko o algorytmie i projekcie, jakie możesz znaleźć. Są tam fenomenalne książki. Książki algorytmów Sedgewick są dobre. Dobry jest również Podręcznik projektowania algorytmów autorstwa Skieny. Razem te książki towarzyszą mi na każdym półce w każdej pracy, do której się udam, wraz z The Mythical Man-Month.
Więc zapytaj.
Rozmawiaj z ludźmi, których szanujesz. Zapytaj ich, jakie mieli punkty decyzyjne i dlaczego podjęli decyzje. Ci dobrzy zawsze będą mogli powiedzieć: „Wybrałem X, ponieważ pod tym względem jest lepszy niż A, B. Mógłbym pójść z C, ale czułem, że to był lepszy wybór z tego powodu”.
Następnie zrób.
Twórz rzeczy. Twórz rzeczy, których nigdy nie będziesz używać. Twórz rzeczy, których nigdy nie będziesz potrzebować. Idź napisz program, który rozwiązuje łamigłówkę Sudoku. Teraz zrób to jeszcze raz. I jeszcze raz. Zbuduj to 5 zupełnie różnych sposobów. Zbuduj program, który generuje łamigłówki Sudoku i nakarm go solverami. Znajdź najszybszy solver. I wtedy...
Dowiedz się dlaczego.
„Co” prawie nigdy nie jest ważne. To znaczy, tak, bardzo ważne jest zakończenie projektu, ale na koniec, jeśli wiesz „co”, nie wiedząc „dlaczego”, to równie dobrze możesz nigdy tego nie zrobić. Masz punktora na swoim CV. Zdobądź ciasteczko i pogratuluj sobie. „Dlaczego” jest o wiele ważniejsze niż „co”.
Dla przypomnienia Sudoku było przykładem. Spędziłem dużo czasu na tym ćwiczeniu z mnóstwem zagadek logicznych na Kongregate i wiele się nauczyłem po drodze.
http://www.amazon.com/Bundle-Algorithms-Parts-1-5-Fundamentals/dp/020172684X/
http://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena/dp/1848000693/
http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/