RoR przeżyje, ale…
Jakiś czas temu, czyli kilka miesięcy temu zadawałem głównie sobie to samo pytanie. Zwłaszcza po przeczytaniu setek artykułów za i przeciw RoR. Doszedłem do wniosku, że warto poznać i zacząć używać.
jeśli chodzi o backend to jestem w pełni przekonany.
Moje założenie nie było takie, że chce szukać potem pracy jako programista. Lubię programować w ograniczonym zakresie, ale nie był to mój główny cel, ja głownie zarządzałem i tworzyłem projekty. Dla mnie ważne było to, aby szybko rozwiązać problem, chciałem poznać ideę i jak to działa, aby móc potem z programistami rozwiązywać problemy. Aby nie słuchać potem “nie da się”, ale to zajmie wiele miesięcy lub poprawki będą sporo kosztować. A w rezultacie okazywało się, że problem da się rozwiązać nawet w jeden dzień, dlatego dla mnie to była konieczność zapoznać się z filozofią RoR.
Ale zacząłem się uczyć języka Ruby (wcześniej też Python i napisałem wiele użytecznych skryptów), potem przeszedłem do Sinatry, a na koniec do RoR.
Jakie są moje odczucia po tych wielomiesięcznych doświadczeniach. Każdy wie, że RoR jest dojrzały, co wszędzie piszą i naprawdę można szybciej i nawet znacznie szybciej stworzyć aplikacje webowe niż w innych frameworkach. Ale teraz dochodzimy do sedna, do czego nam jest potrzebny RoR? Co chcemy osiągnąć?
Bez javascript jest trudno!
Ja miałem łatwiej, bo wiedziałem czego chcę, a mianowicie chodziło mi o kursy językowe, szkolenia itp.
Samo programowanie backendu było i jest przyjemne, ale frontend to inna sprawa, jakby osobna, okazało się, że tu bez javascript niestety nie da się dalej nic zrobić w moim przypadku. Potem, gdy zacząłem dalej drążyć, to przy wielu użytkownikach i działaniach sprawdzających wyniki na bieżąco w czasie rzeczywistym zadania/naukę szybkość działania ma znaczenie.
W moim wypadku okazało się, że javascript jest ważniejsza z uwagi na interaktywność. Backend niestety też musiał być szybszy i tu niestety wnioski były następujące RoR do mojego zadania mniej się nadawał niż Elixir/Phoenix (po zrobionych testach), gdzie czas reakcji jednak się liczy, gdzie oczekiwanie 1,2 sekundy to za długo, gdzie odpowiedź musi być natychmiastowa, przykładem są gry działające w czasie rzeczywistym lub np. serwery aplikacji czy gier, w Phoenix/Elixir działa to rewelacyjnie. Ale ido RoR można dołączyć podobne mechanizmy działania w czasie rzeczywistym.
Natomiast dobrze RoR się sprawił do zarządzania użytkownikami i postępami, wyszukiwaniem, tu jest masa gotowych rozwiązań. Więc do pewnych zastosowań RoR nadal jest najlepszy.
Alternatywy
Pomimo, że przeczytałem blog Piotra Solnicy, o jego wycofaniu się z RoR, poznałem argumenty za i przeciw innych, to moim zdaniem RoR przetrwa jak PHP.
Co do szybkości, jeśli powiodą się testy np z Ruby+Truffle lub z jruby lub innym kompilatorem, i np. w wersji np RoR 6.X uda się zoptymalizować szybkość działania, to wtedy RoR może być jeszcze mocniejsze i uniwersalniejsze. Są już obiecujące przesłanki: http://jruby.org/bench9000/ Szybkość poprawiona nawet 30 razy!
Ale jedno jest pewne trudno uciec od javascript, ale node,js dla mnie osobiście jest jeszcze nie do końca dojrzałe, samo pisanie w js też nie sprawia przyjemności jak w ruby. Co prawda patrzę na rozwiązania typu Meteor i to wygląda coraz lepiej.
Ale to co mógłbym polecić i widzę rozwiązania RoR z vue.js, Samo vue,js jest godne poznania.
A może GO?
I jeszcze na koniec, Elixir/Phoenix to podobno ma być przyszłość, ale czy na 100%? Tego nikt nie jest w stanie obecnie przewidzieć. Moim zdaniem jest silniejszy konkurent, który może być znaczącym graczem, który ma ogromne wsparcie techniczne i finansowe. A jest nim GO. Właśnie nad nim siedzę już od pewnego czasu i sądzę, że ma naprawdę szansę stać się silnym graczem. Jest już na 15 pozycji jeśli chodzi chodzi o popularność. ale idea mi odpowiada. Dla programistów RoR to też może być alternatywa.
Na koniec
Podsumowując, RoR jest nadal wspaniały i moim zdaniem przetrwa, ale na rynku jest też duża konkurencja i bardzo dobrze. Co ciekawe ta konkurencja powstała z inspiracji RoR. Trzeba sobie odpowiedzieć na pytanie czy che się być od backendu, czy full stack? Jeśli full to javascript jest w zasadzie niezbędna, a jesli jest niezbędna to jedna frameworki js jak vue lub Meteor są do rozważenia, pomijam kobyły typu Angular 2 (niekomptybilny z Angular), React itp. Jednak jak to w życiu nic nie jest do końca pewne, poza jednym …
Więc trzeba się rozwijać i doskonalić poznając alternatywne rozwiązania.