Cześć,
Zastanawiam się nad przesiadką na jedną z powyższych technologii. Pracuję jako programista PHP od 1,5 roku i nie bardzo widzę możliwości i czuję chęć do dalszego rozwoju w tym języku. Zastanawiam się w związku z tym nad zmianą technologii na Go/Scalę lub Kotlina. Przez kilka dni testowałem Go i bardzo mi się spodobał jednak zastanawiam się nad liczbą ofert pracy. W wymienionych wyżej językach rzadko widuję stanowiska juniorskie, a na takie chciałbym aplikować. Jeśli już to raczej stanowiska mid/senior. Co uważacie i co moglibyście mi doradzić?
Pozdrawiam
Co cię motywuje do zmiany na konkretnie te języki? Sam język, ekosystem? W jakim kierunku konkretnie chcesz się rozwijać?
Chciałbym pracować w czymś nieco ambitniejszym niż typowe klepanie CRUDów tak jak ma to miejsce teraz, a mam wrażenie, że pozostanie w PHP właśnie z tym się wiąże.
Zmiana języka nie zmienia charakteru projektu. Software house będzie pruł CRUDy dla klientów bo za to płacą, czy robią to w Scali, Go, Javie czy w VBA. Raczej powinieneś patrzeć pod kątem firmy i konkretnego projektu niż języka. Ładując się w Kotlina masz jakieś 90% szansy pisać te same crudy co zespół obok w javie, tylko będziesz używał data class zamiast lomboka (ale nadal ze springiem i innym gównem).
devRandom napisał(a):
Zmiana języka nie zmienia charakteru projektu
Niby tak ale każdy język ma jednak swoją specyfikę
- Go ma GoRutyny do pracy wielowątkowej/wielozadaniowej
- Kotlin to często aplikacje mobilne
- Scala ma dobrą integrację ze Sparkiem oraz programiści Scali wariują na temat programowania funkcyjnego
- A PHP jest najlepszy w robieniu prostych i tanich stron
Trochę to stereotypowe, ale takie są głowne feature'y języków i ich społeczności. Oczywiście CRUDy w Scali też są :P Ale wtedy można sobie chociaż monadę poflatMapować :P
pauldros napisał(a):
Chciałbym pracować w czymś nieco ambitniejszym niż typowe klepanie CRUDów tak jak ma to miejsce teraz, a mam wrażenie, że pozostanie w PHP właśnie z tym się wiąże.
Wiadomo. Lepiej pisać crudy w javie, niż w phpie. Szybciej, wygodniej i więcej Ci zapłacą. Kilka adnotacji, parę testów i dobranoc ;). Odnośnie scali i go, to te dwa języki są po przeciwnych biegunach pod względem swojego designu. Jeżeli nie chcesz klepać tych crudów, to poszukaj firm, które robią coś ciekawszego, sprawdź, czego używają i tego się zacznij uczyć.
A czy oceniacie te 3 kierunki jako sensowne dla osoby, która zamierza startować na stanowisko juniorskie z PHP deva? Czy raczej któraś z tych technologii jest bardziej przeznaczona dla osób o wyższym poziomie doświadczenia bądź przesiadającej się osoby z innej technologii?
PHP to raczej nie jest najlepszy język do zaczynania kariery, ale jeśli jesteś w tym 1,5 roku i nie wiesz, że w PHP piszę się również fajne projekty to obawiam się, że w każdym języku będziesz miał podobnie. CRUDy to jest chleb powszedni w każdej praktycznie technologii nastawionej na biznes, bo biznes potrzebuję CRUDów. Żeby robić coś ambitniejszego trzeba mieć trochę wiedzy/doświadczenia i umieć ogarnąć sobie pracę, w której CRUD'ów się nie pisze.
Zastanawiam się co kierowało Tobą przy wyborze tych języków bo każdy jest z innej parafii. Niemniej Twój algorytm wyszukiwania powinien wyglądać tak:
- znaleźć sobie poletko na którym nie królują CRUDY
- wybrać coś z czego masz już jakąś wiedzę albo uważasz, że byłoby dla Ciebie interesujące
- dobrać technologie do tego (nie tylko język, ale cały stack, który się stosuje).
Droga do pracy z bardziej złożonymi projektami wiedzie tak na prawdę nie przez język, a przez wiedzę domenową i obycie z wieloma technologiami/rzeczami typu docker, chmura, architektura aplikacji, bazy danych itp itd, a język to tylko dodatek wynikający z tego co w danym zastosowaniu jest modne.
Tak jakby były tylko proste CRUDy... tymczasem CRUD może być obudowany softem składającym się z setek tysięcy linii kodu, gdzie każda reakcja na C/R/U/D wywołuje kaskadę innych akcji.
Go jest spoko (używam na AWS) a Kotlin jest jeszcze bardziej spoko (używam na Androidzie)...
ALE język programowania nie ma żadnego znaczenia, ucz się konceptów a nie języków.
Języka nauczy się nawet małpa (komputer) a konceptów tylko istota inteligentna i pracowita :) - moim zdaniem właśnie znajomość i rozumienie konceptów czyni z ciebie lepszego programistę, nie znajomość języków.
A już zwłaszcza że "znam język X" oznacza najczęściej "znam język X w wersji która akurat była jak zacząłem się uczyć", a dana firma może potrzebować 2 wersje do tyłu, 3 wersje do przodu bądź dowolnym miks powyższych.
pauldros napisał(a):
Zastanawiam się nad przesiadką na jedną z powyższych technologii. Pracuję jako programista PHP od 1,5 roku i nie bardzo widzę możliwości i czuję chęć do dalszego rozwoju w tym języku. Zastanawiam się w związku z tym nad zmianą technologii na Go/Scalę lub Kotlina. Przez kilka dni testowałem Go i bardzo mi się spodobał jednak zastanawiam się nad liczbą ofert pracy. W wymienionych wyżej językach rzadko widuję stanowiska juniorskie, a na takie chciałbym aplikować. Jeśli już to raczej stanowiska mid/senior. Co uważacie i co moglibyście mi doradzić?
Ja powiem tak - zbyt wielu ludzi traktuje naukę/obczajkę nowego języka zbyt poważnie, jakby to była jakaś decyzja życiowa.
Nawet jeśli poświęcisz kilka godzin na napisaniego prostej apki w jakimś nowym, nieznanym języku, nie znaczy że musisz od razu się w nim doktoryzować. Jeśli Ci się nie spodoba, możesz spróbować inny, aż znajdziesz taki który Ci na prawdę leży, i dopiero w nim douczyć się bardziej.
Ja próbowałem ogarniać około 25-35 języków, z których 20 nigdy mi się nie podobały, Swift/ObjectiveC, R, CoffeeScript; ale były takie które mi się mega spodobały, Kotlin, Go, Clojure, etc.
Moja rada: Podejdź do wyboru języka do obczajki, tak jakbyś podszedł do wyboru serialu na netflixie na weekend.
Ten wątek może być pomocny
Niszowe technologie - Scala
ALE język programowania nie ma żadnego znaczenia, ucz się konceptów a nie języków.
Nie do końca się zgadzam. Przykład? W Javie możesz wykorzystać Vavra ale Scali masz miemutowalne kolekcje i monady jak Either by default więc tam będzie łatwiej. Z tego co wiem C# nie ma takich sealed class jak Java czy Kotlin(sealed w C# to nie to samo co w Javie) -to też wpływa na możliwość projektowania aplikacji. Oczywiście nie warto przeceniać roli języków ake nie należy ich niedoceniać.
scibi_92 napisał(a):
ALE język programowania nie ma żadnego znaczenia, ucz się konceptów a nie języków.
Nie do końca się zgadzam
To ja może od razu też się nie zgorzę :P IMHO monady i niemutowalność oraz ogólnie FP najłatwiej robić w Haskellu ewentualnie w Idrisie. Wszystko inne wymaga od nas dodatkowej dyscypliny. Wiec wybór języka ma znaczenie. Z drugiej strony nie ma co panikować, bo to że poświęci się miesiąc czy pół roku na naukę języka X nie znaczy że nie można zostać programistą języka Y
KamilAdam napisał(a):
wybór języka ma znaczenie
Z jednej strony tak, ale z drugiej strony, jak ktoś jest słabym koderem, to w scali napisze g**no, a jak ktoś jest dobrym koderem, to nawet w php napisze elegancki kod. ;)
wiciu napisał(a):
KamilAdam napisał(a):
wybór języka ma znaczenie
Z jednej strony tak, ale z drugiej strony, jak ktoś jest słabym koderem, to w scali napisze g**no, a jak ktoś jest dobrym koderem, to nawet w php napisze elegancki kod. ;)
Jak ktoś jest wirtuozem to i na rozwalonym pianinie zagra. Ale dalej lepiej uczyć się na normalnym sprzęcie :)
BTW w Scali 2 bardzo łatwo napisać totalne g'wno :D Nawet ma to nazwę Sclava czyli robienie z Scali Javę :P
Ale żeby np zrobić imperatywną kupę w Haskellu to trzeba się nieźle wysilić :(
Moim zdaniem język to tylko narzędzie do realizacji celu.
Programista ma płacone za wartość biznesową, a nie za piękny kod. Piękny kod może być tylko środkiem do tego celu.
pauldros napisał(a):
Zastanawiam się nad przesiadką na jedną z powyższych technologii. Pracuję jako programista PHP od 1,5 roku i nie bardzo widzę możliwości i czuję chęć do dalszego rozwoju w tym języku.
Nie, żebym przesadnie cenił PHP, ale jeżeli w 18 miesięcy wyczerpałeś możliwości rozwoju, to marnujesz się ;)
Zastanawiam się w związku z tym nad zmianą technologii na Go/Scalę lub Kotlina.
Co ci szkodzi napisać jakąś pierdołkę w dowolnym z tych języków? W większości projektów skill w dowolnym języku programowania, to może 10% potrzebnych umiejętności. Reszta to wiedza dość uniwersalna, jak dzielić kod na części, jak korzystać z bazy danych, co to są kolejki, wątki. Różnice pomiędzy językami są tutaj bardzo niewielkie. Masz jakieś tam różnice w składni, czasami ekstrasy w jakiejś dziedzinie i cos tam napiszesz prościej, a coś trudniej. Zastanów się lepiej co chciałbyś pisać: front end, backend, aplikacje mobilne, big data, machine learning, embedded, gry. Sprawdź jakie narzędzia są najpopularniejsze w każdej z tych dziedzin, oraz z jakiego powodu i już wiesz w którą stronę iść.
Przez kilka dni testowałem Go i bardzo mi się spodobał jednak zastanawiam się nad liczbą ofert pracy. W wymienionych wyżej językach rzadko widuję stanowiska juniorskie, a na takie chciałbym aplikować. Jeśli już to raczej stanowiska mid/senior. Co uważacie i co moglibyście mi doradzić?
Co oznacza dla ciebie poziom juniorski? Pro tip, jeżeli firma poszukuje mida, to całkiem możliwe, że warto wysłać CV, nawet jeżeli nie masz komercyjnego doświadczenia, ale masz przyzwoitą wiedzę na temat tego co masz robić. Może się zdarzyć, że trafisz na jełopów, którzy uważają, że wiedza o jakimś niszowym ficzerze danego języka to must have, ale sporo jednak patrzy na świat nieco rozsądniej.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.