W czym się specjalizować (React, może Android albo Django)?

2

Cześć, wiem że w tytule trochę bałagan, ale zaczynając od początku od paru (mniej niż 6) miesięcy pracuje jako junior fullstack, znam dosyć dobrze(na poziomie juniora) Jave i trochę Reacta z Reduxem, bawiłem się Springiem i Node oraz MySQL. Problem jest taki, że w obecnej pracy ze względu trochę na specyfikę firmy, a trochę na obecny kryzys "rzucają mnie trochę po różnych technologiach" , a ja sam nie mam odczucia jak bym się rozwijał w takim tempie jak bym chciał. Reacta lubię natomiast mam z nim dwa problemy:

  • firmy zazwyczaj wymagają umiejętności mocno frontonowych, a ja jestem daltonistą (tzn. nie widzę swiata na czarno-biało, ale czasem nie odróżniam brązów od czerwieni lub ciemnopomarańczowego, żółci od zieleni)
  • analizując raporty serwisu no-fluff-jobs widzę że na oferty z Reactem przypada największa liczba kandydatów
    screenshot-20200425124747.png

Ostatnio właśnie, ze względu chyba na to ze znam jave dostałem do robienia projekt na Androida (androida nie znam wcale, ale po pierwszym tygodniu, jak zacząłem się odnajdywać to nawet przypadł mi do gustu), no i zastanawiam się jaką drogę obrać. Idealna technologia to taka w której nie spędzał bym większości czasu na utrzymaniu projektów sprzed dekady lub dwóch i więcej i która po kilku latach doświadczenia pozwoliłaby mi na pracę zdalną (raczej względy mieszkaniowe i koszty wynajmu w dużym mieście, niż wizja mnie siedzącego pod palemką z laptopem na kolankach)?
Dodam, że nie mam wykształcenia informatycznego, ale pokrewne w stopniu inż. na dobrej uczelni

3

Wybierz to w czym pisanie sprawia Ci przyjemność, a cała reszta sama sie ułoży.

1

Praca zdalna myślę, że po czasie będzie wszędzie (w sensie jeśli będziesz miał doświadczenie to w każdej z tych technologii). Ja zgadzam się z przedmówcą. Jeśli wybierzesz technologię, którą lubisz to będziesz chciał się w niej mocno rozwijać i będziesz dobry. Jeśli będziesz dobry to zatrudnią Cię do pracy zdalnej. Serio to jest aż tak proste, wystarczy, że potrafisz dostarczyć to czego pracodawca od Ciebie oczekuje.

Napisz kilka mniejszych, większy projektów w technologii, którą lubisz, zetkniesz się z masą problemów na drodze itd. Po tej drodze reszta drogi już będzie prosta bo będziesz potrafił rozwiązać dowolny problem (jeden dłużej, inny krócej) w swojej technologii.

Interesuj się tym, zrozum dlaczego coś jest tak a nie inaczej, jakby to można inaczej napisać itd. Pisz jak najczytelniejszy kod - to klucz do sukcesu.

7

Specjalizować się długoterminowo to najlepiej w niczym. Lepiej czas zainwestować w „ogólny rozwój”, który umożliwi szybką adaptacje do dynamicznie zmieniającego się środowiska. 10 lat temu nie dało się specjalizować np. w Dockerze czy Kotlinie.

Na pewno nie powinieneś wychodzić z założenia, że np. całe życie pojedziesz na Javie. Podobnie jak z inwestowaniem - trzeba dywersyfikować :)

1

Ale mimo wszystko trzeba mieć w czymś specjalność bo jak ktoś jest dobry we wszystkim to tak naprawdę w niczym. Owszem trzeba być wszechstronnym, interesować się tematem do okola itd. Ale ostatecznie zajmujesz się potem w pracy jedną rzeczą bo od innych masz kolegów. Zamykać się nie warto ale specjalność w większości przypadków trzeba mieć i tak jest łatwiej i przyjemniej

0

Dzięki za odpowiedzi, w sumie to mnie troche uspokoiliście. Wygląda na to, że będe jeszcze przez jakiś czas doszlifowywał Recta i JS, bo w tej chwili najbardziej to mi leży, po drodze Node i Mongo i zobaczymy gdzie z tym zajde ;)

1

Wiesz, Ci juniorzy to przeważnie jest taka konkurencja, że żadna jeśli napiszesz kilka mniejszych i chociaż z dwa większe projekty. To są przeważnie osoby, które napisały jakieś dwie trzy aplikacje TODO i tyle, inaczej te ogłoszenia po dwóch dniach by schodziły a często jednak wiszą długo bez żadnej konkretnej osoby.

Musisz się wybijać ponad konkurencję. Ale tak jest w każdej branży, jeśli jesteś lepszy od innych to Cię wezmą

4

Jeśli chodzi o wybijanie poza konkurencje, to dobre wrażenie robi szeroko rozumiana dojrzałość (wysławianie się, komunikacja, współpraca, radzenie sobie w stresujących sytuacjach, feedback) i znajomość realiów procesu developmentu (podejście produktowe, skąd się biorą wymagania, dla kogo i po co robisz soft, miary). Zwróć uwagę na aspekty poza stricte techniczne, a będzie git.

EDIT. Zapomniałem o najważniejszym - zaangażowanie i fun z tej roboty :)

0

Charlsowi raczej chodzi o to, że jako developer rzucasz inne światło na produkt i wymagania rzucone przez klienta i menadżera. W dobrej firmie (moim zdaniem) menedżer stoi pomiędzy programistą a klientem. Jeśli klient chce coś nierealnego lub głupiego to rolą menadżera jest przekazanie tej informacji i pokazanie, że jest to bezsensu bo programista mówi tak i tak.

No i też często programista tylko narzeka, że coś jest głupie itd. a nie próbuje zrozumieć produktu i wymagań klienta, a co tam, że bez tych klientów tak naprawdę by nie istniał. Produkty robimy dla klientów i taka jest prawda.

2
leechy napisał(a):
  • analizując raporty serwisu no-fluff-jobs widzę że na oferty z Reactem przypada największa liczba kandydatów

Plus za to spostrzeżenie. Niczym Don Kichot z wiatrakami, z uporem godnym lepszej sprawy walczę z rozumowaniem "na X jest więcej ofert niż na Y". Co z tego wynika, dopóki nie wiesz, ilu kandydatów przyciąga X, a ilu Y??

Idealna technologia to taka w której nie spędzał bym większości czasu na utrzymaniu projektów sprzed dekady lub dwóch i więcej i która po kilku latach doświadczenia pozwoliłaby mi na pracę zdalną

Myślę, że Android jest niezłym (i bezpiecznym) wyborem.
Moim zdaniem ryzyko, że wpakują cię w jakiegoś starego molocha, miałbyś większe w webówce; szczególnie rzeźbiąc w Javie.
Projekty androidowe angażują też - statystycznie - mniejszą liczbę ludzi, a to sprzyja temu, żeby team mógł działać w rozproszeniu (nie potrzeba aż tylu kanałów komunikacji, więc koordynacja jest mniejszym problemem). Inaczej mówiąc, łatwo zorganizować pracę zdalną.
Nie chcę wywoływać jakiegoś flejma, ale w świecie Androida nie ma też zjawiska "wciąż nowych lepszych frameworków", znanego JavaScriptowcom. Narzędzia i techniki oczywiście się rozwijają, ale w spokojniejszy sposób.

1

W programowaniu w danym języku. A jeszcze lepiej w danej branży.
Pytać o specjalizowanie się w frameworkach to jak pytać o specjalizowanie się w bieganiu tylko w jednym modelu obuwia.
Jeśli znasz branże i znasz język to odnajdziesz się w dowolnym frameworku z tej branży w tym języku napisanym.
Nie ma znaczenia czy to embedded, webdev, gamedev, czy data science. Jeśli skupisz się tylko na frameworku, to zginiesz bez niego.

1

Nie wiem w czym powinieneś się specjalizować, ale jeśli interesuje Cię pisanie na Androida to powinieneś się też zainteresować językiem Kotlin. Kotlin ma nowocześniejszą i bardziej zwięzłą składnię niż Java i prawdopodobnie jest już częstszym wyborem przy pisaniu nowych projektów na Androida niż Java.
Każdą bibliotekę napisaną w Javie można używać w Kotlinie oraz w Kotlinie można pisać także aplikacje serwerowe działające jak Java na JVM, aplikacje kompilowane do natywnej paczki wykonywalnej oraz frontend

1

firmy zazwyczaj wymagają umiejętności mocno frontonowych, a ja jestem daltonistą (tzn. nie widzę swiata na czarno-biało, ale czasem nie odróżniam brązów od czerwieni lub ciemnopomarańczowego, żółci od zieleni)

Ale przecież to może być zaleta, jeśli się rozwiniesz w stronę bycia specjalistą od dostępności https://developer.mozilla.org/en-US/docs/Web/Accessibility

Problem jest taki, że w obecnej pracy ze względu trochę na specyfikę firmy, a trochę na obecny kryzys "rzucają mnie trochę po różnych technologiach" , a ja sam nie mam odczucia jak bym się rozwijał w takim tempie jak bym chciał.

Ale jakby cię wpuścili w jedną technologię, to również mógłbyś mieć odczucie, że stoisz w miejscu i nie rozwijasz się w takim tempie, jakbyś chciał, tylko robisz to samo cały czas przez pół roku.

Idealna technologia to taka w której nie spędzał bym większości czasu na utrzymaniu projektów sprzed dekady lub dwóch i więcej

Nawet jak projekty nie będą przed dekady, to wystarczy, że będą sprzed kilku miesięcy i już często jest takie spaghetti, że głowa mała, jeśli coś zostało napisane na kolanie. Nie wiem, czy da się uciec od legacy, chyba, że robiąc greenfieldy i samemu pisząc kod, który ktoś kiedyś będzie uważał za legacy xD

0

Na pewno nie powinieneś wychodzić z założenia, że np. całe życie pojedziesz na Javie. Podobnie jak z inwestowaniem - trzeba dywersyfikować

@Charles_Ray zasadniczo masz racje, ale trzeba wziąć pod uwagę że koleżka jest na początku. I tak wiadomo że powinno się uczyć szerokiego spektrum - paradymady, wzorce, ale wszystko po kolei. Moim zdaniem średnio ma sens uczenie się jednocześnie Javy webowej, CSS i jeszcze pisania aplikacji na Androida w Kotlinie w tym samym czasie :D
Więc np. jeśli uczyć się pisania dobrego kodu, umiejętności korzystania z OOP/FP to na przyklad w ramach rozwoju pisania aplikacji backendowych a nie mobilki, backendu i frontu jeszcze :D

0
V-2 napisał(a):

Nie chcę wywoływać jakiegoś flejma, ale w świecie Androida nie ma też zjawiska "wciąż nowych lepszych frameworków", znanego JavaScriptowcom. Narzędzia i techniki oczywiście się rozwijają, ale w spokojniejszy sposób.

Proponuję zainteresować się iOS

Objective C, rok 1984. Zapewne 24 stycznia 1984 r, ale nie jestem pewien. /1
Swift, release date June 2, 2014;

iOS dev to nie moje klimaty ale znajomi mówią, że na zmianie z Androida na iOS wyszli lepiej zawodowo i finansowo. No i w porównaniu do "rozproszonego" Androida to Apple trzyma porządek nad ekosystemem twardą ręką.

/1 Słyszałem, nie wiem, prawda czy żart, że w Apple początek kalendarza i "epoki" to 24 stycznia 1984 :)
Chcieli się wyróżnić od 1 stycznia 1970?

1
BraVolt napisał(a):

iOS dev to nie moje klimaty ale znajomi mówią, że na zmianie z Androida na iOS wyszli lepiej zawodowo i finansowo. No i w porównaniu do "rozproszonego" Androida to Apple trzyma porządek nad ekosystemem twardą ręką.

Oczywiście pod wieloma względami w świecie iOS jest wygodniej. Z mojego doświadczenia objawia się to np. tym, że w projektach prowadzonych równolegle na obie platformy jeśli któraś z wersji rozwija się w szybszym tempie, to prawie na pewno jest to iOS.

Nie spotkałem się natomiast z dowodami, żeby występowały znaczące różnice w zarobkach. Ta opinia krąży na zasadzie mądrości obiegowej, twardych danych jest podejrzanie mało.

Przykładowe statystyki z USA:

https://www.businessofapps.com/app-developers/research/ios-android-developer-salary/

Nawet jeśli da się wykazać jakieś korelacje, to z punktu widzenia pojedynczego developera na wysokość pensji i tak w znacznie większym stopniu wpłyną inne czynniki i wybory zawodowe.

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