Node.js jak wygląda praca?

1

Hej,

Aktualnie mam ok 9 lat doświadczenia jako programista .NET. Mimo, że technologia rozwija się świetnie, szczególnie w .NET Core widzę przyszłość, to wiadomo, że technologie sobie, a rynek pracy sobie. Jestem na etapie, gdzie chyba przyszedł czas na zmianę, chcę jakiegoś powiewu świeżości oraz rozpocząć pracę zdalną. W .NET ofert na programistę zdalnego nie ma za wiele, a nowe projekty to chyba jeszcze większa rzadkość. Język ten jest głównie skierowany do korporacji, a w szczególności jest lubiany przez banki oraz wszelkiego rodzaju duże systemy ERP/CRM. Będąc już w wielu projektach i firmach, spotykamy się z dużym legacy, dużą ilością już napisanego kodu i dość skomplikowaną logiką biznesową (co akurat jest ciekawe). Jednocześnie w pakiecie programisty .NET jest użeranie się z VS i ReSharperem i ciągłe narzekanie jak to wolno działa. Zaś pod względem architektury od paru lat mocno jest forsowany CQRS i DDD, jednak nie zawsze jest ona wdrażana ;)

W czasie wolnym robię pet project w Node.js w duecie z TypeScript / Angular7 i muszę przyznać, że programuje się w tym całkiem przyjemnie, a pracy zdalnej jest naprawdę sporo. Chciałbym się zapytać Was, jakie projekty realizuje się w Node? Wiem, że każda firma zajmuje się czymś innym i niektórzy tworzą startupy w .NET/Javie, jednak biorąc ogół rynku, to jak wspomniałem .NET = korpo/banki. Przeglądając oferty na Node, często widać stos z MongoDB, co może (ale nie musi) sugerować, że Node świetnie będzie się wpasowywać w prostsze aplikacje, szczególnie CRUDy, gdzie dość ważny jest time to market. Patrząc a Tiobe i Stack Overflow survey, zarówno .NET jak i Node mają się dobrze i raczej wszystko wskazuje na ich dalszy rozwój (z przewagą Node).

Czym Wy, programiści Node się zajmujecie, jakiego rodzaju projekty. CRUDy, czy może strumieniowanie ? Czy z perspektywy czasu nie żałujecie decyzji? Czy praca jest przyjemnością, czy może bardziej rzucacie niecenzuralne słowa pod nosem mając za zadanie dopisać kolejną linię kodu?

3

Hej,

Tak jak w każdym języku to czy będziesz klnąć zależy od jakości kodu który został wyprodukowany i z kim pracujesz. W jednym projekcie pisanie apki będzie bajką w drugim koszmarem. Z mojego licznika wychodzi, że prawie co drugi projekt jest spaprany przez kogoś niedoświadczonego (prościutkie CRUDy niektórzy potrafią tak skomplikować, że przez miesiąc się w tym nie odnajdziesz).

Nodejs cechuje całkowita dowolność, tam nie ma jednego frameworka, jedynego słusznego sposobu pisania aplikacji. Musisz ciągle przebierać w technologiach i dopasowywać je odpowiednio do potrzeb. To samo tyczy się architektury.

Głównymi kilentami są startupy, w których JS często jest tym głównym językiem. Wiele średnich i małych biznesów decyduje się na node'a ze względu na niższe koszty i szybszy czas developmentu. Klienci to jest jedna z głównych zalet tego języka.

Bardzo dużą zaletą jest na pewno to, że prawie wszystko teraz napiszesz w JS. Aplikacje desktopowe, mobilne, strony www, CRUDy, IoT w relatywnie krótkim czasie. To jest wynik tej elastyczności języka. Tak więc prędzej czy później będziesz musiał napisać coś innego niż CRUDzik z angularem i mongołem (osobiście bardzo nie lubię tego stacku i uważam go za jeden z gorszych).

Co do samej specyfiki pracy jako nodowiec; utrzymaniówki jako takiej jest mało, a jak już jest to polega głównie na dopisywaniu kolejnych featurów. Praca w małych teamach, często piszesz sam. Masz sporą swobodę co do wyboru technologii (na greenfieldzie oczywiscie). Dockery, AWSy, serverlessy czy mikorserwisy to codzienność.

Czy żałuję, że w nim robię?
Nie.
Czy praca sprawia mi przyjemność?
Na greenfieldzie tak, na brązowym raczej nie (chyba, że projekt był pisany przez prosów).
Czy projekty są ciekawe?
Tak, ale nie zawsze z tego "programistycznego" punktu widzenia.

0

Przeglądając oferty na Node, często widać stos z MongoDB,

W jednym projekcie będzie Mongo, w innym Postgres. Normalnie, jak to na backendzie.

To co różni Node od innych platform backendowych to nie moda na jakąś konkretną bazę danych, tylko raczej sam model programowania oparty o JS (jednowątkowy, asynchroniczny, nieblokujący), no i fakt, że skrypt JS to jest serwer (sam sobie nasłuchuje na porcie), a nie jest odpalany przez jakiś zewnętrzny serwer typu Apache. Tym sposobem w Node możesz robić np. coś, co działa sobie cały czas w tle, i robi coś więcej niż odpowiadanie na żądania HTTP (np. utrzymuje połączenie z klientami i wysyła im jakieś dane), i ma jakiś swój wewnętrzny stan.

(nie wiem jak to w .NET jest rozwiązane, ale jak pisałem w PHP i Pythonie, to tam model programowania był całkowicie inny, gdzie skrypty w zasadzie odpowiadały tylko na requesty HTTP, mieliły dane i zwracały do klienta i tyle).

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