Obecnie pracuję jako Java developer w raczej standardowych technologiach jak Spring/Spring Boot/JPA/Maven + relacyjne/NoSQL bazy danych itp.
Podchodzę jednak do tematu ambitnie i z pasją, zdaję sobie sprawę, że cały stack technologii/projektów w jakich na razie pracuję jest raczej bardziej klepaniem formatek (ale nie klepię u Janusza tylko w dużej zachodniej korpo ;)). Chciałbym kiedyś na pewnym etapie pracować przy bardziej złożonych projektach wymagających wiedzy inżynierskiej z jaką miało się do czynienia na studiach.
Dlatego powoli staram się zdobywać wiedzę z rzeczy, które raczej są niezależne od języka programowania, a przydatne przy poważnych projektach.
na razie przyszło mi do głowy to:
- Algorytmy i struktury danych: wiadomo podstawa, przerobiłem kurs z MIT: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/lecture-videos/
- Architektury komputerów: jak działa pamięć itp. np. https://www.akkadia.org/drepper/cpumemory.pdf
- Concurrency: Java Concurrency in Practice, może jakieś książki z parallel computing?
- Systemy operacyjne
- Sieci: jak działa TCP/IP pod maską
- Matematyka dyskretna np. teoria grafów, podstawy kryptografii?
- Elektronika ?
Jak widać, materiału do nauki jest mnóstwo, a czas ograniczony.
Czy warto też ćwiczyć umysł/analityczne myślenie np. rozwiązując zagadki logiczne, zadania na logikę, aby poprawić zdolności analityczne?
W firmach jak Facebook/Google kładą na to spory nacisk przy rekrutacji.
Pytanie do doświadczonych @Shalom:
Czy wiedza, którą wymieniłem przydała Ci się do efektywnej pracy w ESA i CERNie? ;) Zdaję sobie sprawę, że zespół jest bardzo duży w takich projektach.
Czy te rzeczy, które wymieniłem są niezbędne przy pracy np. w HFT?
Z góry dzięki.