Czy programista ma wolną wolę w wyborze technologii?

0

Mówi się, że to nie pisarz wybiera temat, tylko temat wybiera pisarza.

Programista wybiera język/technologię czy odwrotnie? :D

Tak się zastanawiam... bo ja się prawie od roku miotam pomiędzy różnymi rzeczami i niczego nie mogę się nauczyć porządnie. W międzyczasie napisałem jakąś sieciową appkę w C, organizer na desktop w C#, grę na androida, parę frontendowych rzeczy w HTML/CSS/JS. Ostatnio uczę się Django i teraz buduję internetową księgarnię... ale tak czuję ostatnio, że chętnie bym wrócił do Androida albo za Objective-C się wziął i coś na iOS zaczął kodzić.

Tylko, że to trochę takie błędne koło. Pracuję jako tester prawie rok i przez cały czas chcę "przeskoczyć" na programistę, no ale w niczym nie jest dość dobry, żeby pracować.
To jest tak, że np. teraz Django i webdev wydaje mi się nudny i jakiś taki "skostniały" :P a programowanie mobilne pod Andorida/iOS wydaje mi się nagle MEGA interesujące. I za każdym razem tak jest po paru miechach siedzenia w czymś... A 3 miechy temu Django było dla mnie po prostu idealne i cudowne i to już miała być miłość przynajmniej na kilka lat :D

Podziwiam ludzi, którzy np. idą w Jave EE, bo dobra kasa i dużo roboty. Poważnie mówię. Może niepotrzebnie chcę, żeby praca była jednocześnie moim hobby...

No dobra. Jak to jest u Was i czy możecie mi coś poradzić (najlepszej z własnego doświadczenia).

PS Nazwa tematu żartobliwa, ale nie znalazłem lepszej oddającej sedno wątku. Jakbym napisał "Jak wybrać technologię?" to by było wiadomo, że jakiś newbie pyta czy lepsza jest Java czy C# :D

0

Myślę, że bardzo trudno na początku kariery wybrać coś co będzie nam dawać satysfakcję przez naście lat. Spisz sobie swoje spostrzeżenia nt różnych wyborów i po ich analizie wybierz kierunek rozwoju który ma aktualnie najwięcej sensu. Np skoro najbardziej kręcą cię aplikacje na smartfony, to może w tym kierunku się specjalizuj?

Myślę, że łatwiej jest zrobić apkę na smartfona, którą kilku ludzi będzie regularnie używać niż coś webowego na co ludzie będą wchodzić z własnej woli, a nie z przypadku. Gdybyś pracował zawodowo jako programista aplikacji mobilnych to dzięki temu miałbyś motywację by dłubać sobie coś po godzinach, wykorzystując doświadczenie zdobyte w godzinach pracy.

1

Ja w trakcie swojej kariery zajmowałem się najróżniejszymi rzeczami: byłem programistą baz danych, programowałem aplikacje okienkowe w Delphi i C++, tworzyłem aplikacje webowe w Pythonie i JS, pracowałem w malutkim startupie i wielkiej korporacji. Najdłużej wytrzymałem 2 lata i 11 miesięcy w jednej firmie, odszedłem żeby nie wpaść w 3 miesięczny okres wypowiedzenia. Obecnie pracuję ponownie w dużym korpo. Potrzebuję co jakiś czas odmiany, żeby czuć, że się rozwijam. Takie podejście do pracy sprawiło, że mam szerokie perspektywy zawodowe, nie jestem niewolnikiem jednej technologii i jednej firmy. Jeżeli czymś się zmęczę i będę potrzebował odmiany, to nic nie będzie mnie blokowało przed zmianą.

1

Wszystko zależy od tego, w jakiej jesteś sytuacji i co Ci się trafi. Sam zajmuję się aplikacjami mobilnymi na Androida, zdecydowałem się na to świadomie i nie żałuję. Wcześniej robiłem inne rzeczy (głównie aplikacje webowe). Generalnie, jeśli nie siedzisz na okrągło w jednym projekcie lub nie wykonujesz pracy odtwórczej typu customizacje jednego projektu, tylko masz różne ciekawe zadania, to raczej szybko Ci się to nie znudzi. Ponadto, ta technologia jest na tyle niedojrzała, że ciągle się coś zmienia, ciągle dochodzi coś nowego, wiele rzeczy nie jest jasnych i trzeba samemu wytyczać szlaki. W związku z tym, nie masz wrażenia, że bawisz się starociami, tylko narzędziami klasy "bleeding edge", których mało kto używa w najnowszej wersji, bo codziennie ktoś je developuje i puszcza commity. Zatem masz do czynienia z najnowszymi technologiami z prawdziwego zdarzenia. Ma to oczywiście wady i zalety ;). Dodatkowo, masz więcej możliwości, niż w przypadku aplikacji webowych. Możesz wchodzić w interakcję z innymi urządzeniami, korzystać z komponentów sprzętowych, sensorów, korzystać z różnych metod komunikacji (3G, WiFi, Bluetooth), etc. Jest wiele fajnych bibliotek i rozwiązań. Jest fajne IDE oparte na IntelliJ. Generalnie, nawet jak ktoś długo siedzi w temacie, to i tak będzie miał się czego uczyć. Pojawiają się też nowe wyzwania, których nie ma w przypadku aplikacji webowych. Dodatkowo, jeśli potrafisz programować aplikacje webowe, możesz sobie tworzyć własny back-end i webservice'y, z których korzystają aplikacje mobilne. Ofert pracy też jest sporo w różnych miastach. Dodatkowo, jak poznasz dobrze Javę, to możesz potem próbować ogarniać inne javowe frameworki - np. Springa, który jest dość popularny. Na pewno będzie Ci łatwiej, gdy będziesz miał doświadczenie w programowaniu aplikacji na Androida, niż gdybyś miał zerowe doświadczenie w Javie. Ogólnie uważam, że Java to dobry wybór w kwestii technologii używanych zawodowo. Później można gładko brnąć np. w Scalę. Ponadto, w przypadku aplikacji mobilnych, oprócz zwykłych aplikacji użytkowych, możesz pisać także gry, których tworzenie odbywa się w zupełnie inny sposób. Dodatkowo, Google napędza rozwój systemu Android, więc za tą technologią i jej rozwojem stoi też silna firma.
Poza projektami w pracy, piszę też w w miarę wolnego czasu projekty prywatne, więc nie uważam się za osobę wypaloną i sporo muszę się jeszcze nauczyć, pomimo tego, że trochę już siedzę w tej technologii (ok. 2 lat). Ten zapał może też wynikać z faktu, że niedawno skończyłem studia i generalnie nie jestem jeszcze stary. Może za jakiś czas mnie to znudzi lub coś innego zainteresuje mnie bardziej i wtedy zmienię obszar działań. :)

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