Witam!
Jest to mój pierwszy post na forum, więc witam wszystkich użytkowników ;). Chciałbym was zapytać o podstawy, które powinien znać programista niezależnie od języka, w którym programuje. Aktualnie jestem studentem 3 roku Informatyki przemysłowej na AGH. Niestety kierunek nie jest za dobry jeśli chodzi o AGH, ale był to mój błąd z powodu tego, że nie dostałem się na najlepszy wydział AGH i niestety nie mogę cofnąć czasu, chociaż bardzo chciałbym :/.
Przechodząc do tematu,szukam pracy jako programista Javy na pół etatu, ostatnio miałem rozmowę, niestety nie przyjęli mnie z powodu tego, że mój czas jest ograniczony jako student na dziennych, ale nie poddaję się i szukam dalej.
Po ostatnim obejrzeniu paru konferencji IT, w której Wojciech Seliga (chodzi o to video)
wyjaśniał co powinien znać programista Javy, stwierdziłem, że zwyczajnie g**no umiem jako programista Javy. Ale obejrzenie konferencji tylko zmotywowało mnie do działania. Wylistowałem sobie wszystkie technologie, które podczas pracy w Javie mogą się przydać. Jednak nie chcę ograniczać się do Javy, a być po prostu dobrym programistą niezależnie od języka.
Jakie technologie/ powinien znać wg. was programista niezależnie od języka w jakim programuje? Pomijam tutaj rzeczy, których uczy się na informatyce na studiach.
Informatyka jest strasznie rozległą dziedziną, chciałbym być dobry w każdej dziedzinie, w sieciach, telekomunikacji, ale niestety raczej się tak nie da :(.
Czy programista wg. was powinien was znać takie rzeczy jak:
- podstawy elektroniki/ elektroniki cyfrowej (którą się interesuję)
- matematyka dyskretna
- inżynieria oprogramowania
- telekomunikacja tzn transmisja sygnałów itp?
na razie jestem na etapie zgłębiania Springa i Mavena oraz różnych wzorców projektowych (MVC/Singleton znam), które jakby nie było są podstawą w Javie, co tylko pokazuje, że jestem na początku i tak naprawdę nic nie umiem.
Jeśli chodzi o technologie, które powinienem znać, to czy ta lista wystarczy na stanowisko Juniora? z góry przepraszam za angielski, ale zawsze notuję po angielsku ;)
- how a garbage collector works
- resource management
- network programming
- TCP/IP HTTP etc.
- transactions,
- consistency
- interfaces, classes +
- collections, hash codes, algorithms, comp. complexity +
- concurrent programming: synchronizing, semafores
- steam management
- thread-safety
- byte code manipulations, reflections, Aspect-Oriented Programming as base to understand frameworks such as Spring etc.
- Web stack: servlets, filters, socket programming
Libraries: JDK, GWT, Apache Commons, Joda-Time, Dependency Injections: Spring, Nano
Tools:
IDE: very good knowledge
- debugger
- profiler
- web analyzers: Wireshark, firebugs
- unit testing
Databases, SQL,
UML as a base of Software Engineering
Basics of Computer Networks
Pozdrawiam i dziękuję z góry za motywujące odpowiedzi.