Lohnt es sich Ruby on Rails zu lernen?
5 Stimmen
1 Antwort
Nun, die große Popularität um Ruby ist inzwischen abgeklungen und stattdessen wirst du in diversen Foren vermutlich Personen finden, die Einladungskarten zur Grabrede verteilen. Das sollte dich aber nicht beirren, wenn du Ruby lernen möchtest, denn die Sprache und auch das Rails-Framework, nach dem du fragst, werden durchaus noch weiterentwickelt.
Die Vorteile von Ruby liegen in der niedrigen Einstiegshürde (die Sprache ist leicht zu lesen, leicht zu lernen) und in dem nun vorliegenden Toolset, welches über die letzten fünfzehn Jahre reifen konnte. Das bedeutet, du kannst mit Ruby ziemlich rasch Anwendungen entwickeln. Aus diesem Grund ist die Sprache beispielsweise für Rapid Development / Prototyping keine abwegige Wahl.
Rails wiederum wirkt daran mit und versucht dir durch gesetzte Konventionen Entscheidungen abzunehmen und gewisse Projektstrukturen und (generell den) Code zu vereinfachen. Lies dazu nur einmal die Rails Doktrin. Sowohl Ruby als auch Rails ist daran gelegen, die Produktion guten Codes zu unterstützen. Möglicherweise hält Rails dir gegenüber auch das Versprechen, während des Entwickelns glücklich zu machen.
Für die Entwicklung gibt es praktischerweise eine Aufteilung der einzelnen Entwicklungsumgebungen (Development, Test, Produktion). Diese Struktur wird in der professionellen Entwicklung allgemein gern angewandt, da sich so gerade Testphasen besser einplanen lassen. Es ist etwas, was zumindest für Projektteams ein sinnvolles Konzept ist. Testing-Tools lassen sich für Ruby zudem leicht finden (z.B. minitest, rspec).
Des Weiteren gibt es eine Vielzahl an Bibliotheken, die dir bei der Lösung bestimmter (meist allgemein bekannter) Probleme helfen. Du musst nicht oft das Rad neu erfinden.
Insofern lässt sich schon ein erstes Fazit ziehen: Rails lohnt sich für dich, wenn du auf einfachem Wege und in kurzer Zeit eine Webanwendung entwickeln möchtest. Vor allem für kleine bis mittelgroße Webanwendungen (z.B. ein Kleinhändler-Shop) ist das Framework gut geeignet.
Folgend möchte ich noch auf ein paar Nachteile eingehen, um unter anderem auch die letzte Aussage stärker zu begründen.
Die Auswahl an Hostern ist im Gegensatz zu dem viel populäreren PHP natürlich stärker begrenzt. Dies ist aus meiner Sicht dennoch nur ein sehr kleiner Nachteil, denn die Suche sollte sich trotz allem nicht als sonderlich schwer erweisen. AWS, Azure, Bluehost oder RailsHoster wären Optionen.
Ein oft benanntes Problem hingegen richtet sich auf die Ladegeschwindigkeit / Performance. Programme mit Ruby selbst und auch Rails gelten als nicht gerade schnell. Es ist daher gut möglich, dass man sich intensiver mit Code-Profiling sowie Caching- und Preloading-Techniken auseinandersetzen muss. Für kleine bis mittelgroße Webseiten ist das problemlos tragbar (zum Vergleich: Shopify basiert auf Rails). Mit zunehmender Komplexität wird es schwieriger, vor allem wenn schlechte Designentscheidungen getroffen wurden (also das übliche Übel). Öfter wird das Performance-Problem durch eine (bspw. horizontale) Skalierung verlagert. Diverse Performance-Optimierungstipps findest du hier (oder in anderen, zahlreichen Webartikeln zu dem Thema).
Ansonsten (und das schreibe ich oft bei solchen Fragen): Für den eigenen Entwicklungsprozess lohnt es sich immer wieder, sich auch mit neuen Technologien auseinanderzusetzen, um zu sehen, wie diese an Probleme herangehen / sie lösen. Es setzt lediglich voraus, dass du die Zeit und Motivation mitbringst, dich diesen genauer zu widmen.
Wie oben geschrieben: Mit zunehmender Komplexität kannst du zunehmend auf Probleme stoßen, die aufwendiger (oder kostenintensiver) Lösungen bedürfen. Ersteres wohl eher, als wenn du andere Technologien (wie Java, C#, ...) wählen würdest.
Hobby-Soloprojekte kommen aber wohl nicht so weit, als das man sich darüber große Gedanken machen müsste. Meine Vorstellung von großen Anwendungen umfasst eher (z.B. E-Commerce-)Plattformen, die mehrere hundert Nutzer fast rund um die Uhr ansprechen sollen.
Kann ich es nicht für große Anwendungen verwenden?