Podstawy do pracy jako programista

0

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.

0

nie przyjęli mnie z powodu tego, że mój czas jest ograniczony jako student na dziennych

Tak ci powiedzieli? ;] Prawie wszyscy ludzie z którymi studiowałem pracowali na 1/2 potem na 3/5 i 4/5 i wszyscy studiowaliśmy dziennie. I żadna korpo w krakowie nie robiła z tego problemu...

  • podstawy elektroniki/ elektroniki cyfrowej (którą się interesuję)

Niekoniecznie, ale to zależy od tego gdzie chcesz pracować. Warto takie rzeczy znać, żeby rozumieć jak to wszystko działa ale w pracy raczej się nie przyda.

  • matematyka dyskretna

Warto, bo uczy odpowiedniego myślenia.

  • inżynieria oprogramowania

Koniecznie skoro chcesz być inżynierem oprogramowania...

  • telekomunikacja tzn transmisja sygnałów itp?

Zależy co będziesz robił w pracy, ale tak samo jak z elektroniką.

Lista jest ok, ale gdybyś dobrze znał te wszystkie zagadnienia to mógłbyś i na seniora startować :P Do listy dodałbym jeszcze:
http://4programmers.net/Forum/Kariera/219772-roznica_pomiedzy_zwyklym_pisaniem_a_zawodowym?p=963107#id963107
Ale tak jak mówię, to nie jest tak ze musisz to wszystko doskonale umieć jako Junior, ale warto mieć przynajmniej blade pojęcie o tych zagadnieniach.

0

Dzięki Shalom za odpowiedz. Zmotywowałeś mnie z tą listą na Seniora ;). Ogólnie to chciałbym się wielu rzeczy na raz nauczyć: baz danych, sieci, elektroniki, telekomunikacji ale jest po prostu za dużo materiału do nauki, także trzeba mieć pewne priorytety.

1

W mojej opinii, seniorem nie jesteś wtedy, kiedy wydaje Ci się, że już umiesz bardzo dużo, ale wtedy kiedy ludzie przychodzą do Ciebie z problemami, a Ty pomagasz im je rozwiązać ;) Mowa oczywiście o problemach związanych z programowaniem, architekturą itp ;)

0

Vikjoz ja skończyłem ten kierunek i wydział jakiś czas temu i nie wiem jak teraz, ale wtedy tak bardzo nie odstawał poziom od np. EAIE, przynajmniej nie jeśli chodzi o ludzi, którzy faktycznie chcieli programować i coś robili w tym kierunku. Nie znam nikogo z mojego roku kto chciał pracować w IT po studiach i mu się nie udało, podstawa (a przynajmniej dużo łatwiej) to jeszcze w trakcie studiów załapać się na jakiś staż i wykazywać chęciami i myśleniem.

PS. Z perspektywy po ukończeniu studiów polecam chodzić na wszystkie wykłady prof. Banasia i przykładać się do jego przedmiotów, w ostatecznym rozrachunku najbardziej się przydają (bez względu na technologie w jakich chcesz kiedyś programować).

1 użytkowników online, w tym zalogowanych: 0, gości: 1