Argumenty za Rails dla potencjalnych klientów

Myślę, że to nie tylko mój problem, ale więcej osób ma podobne doświadczenia. Chodzi o przekonanie potencjalnego klienta do Rails. Czasem klient ma jakąś-tam wiedzę o sieci (zrobiła kiedyś stronę o swoim psie w PHP), albo chce mieć taki serwis jak X (“ale X jest w PHP!”), albo nawet przychodzi skubany z gotowym opisem architektury aplikacji, projektem bazy danych i pełnym spisem wymaganych narzędzi, gdzie w środku - boldem - jest zaznaczony ZOPE.

Zakładając, że sytuacja nie jest beznadziejna, a projekt może być ciekawy, intratny i wręcz modelowy dla Rails - jakie polecicie argumenty żeby przekonać klienta do RoR?

Z mojej strony kilka obserwacji:

  • Jeśli człowiek ma wbite do głowy “PHP” i przyjmie się taktykę “PHP jest złe”, to on to odbierze jako “jesteś głupi”. FAIL.
  • Większość popularnych argumentów dotyczy i trafia do programistów, a nie “normalnych ludzi”. DRY? FAIL!
  • “Active…co?” EPIC FAIL!

Zaproponuj dwie różne ceny - jedną za serwis napisany w PHP, a drugą za napisany w Rails.

Podniosę nieco poprzeczkę:

Jak przekonać szefa lub menadżera projektów do Railsów?
Jak w małej firmie, która rozwinęła już kilka narzędzi w php (innym języku) migrować na Railsy?

Sprawa nie jest łatwa, przede wszystkim jak zwykle pionierzy biorą na siebie duże obciążenie - serwis napisany php: klient ma obiekcje, ale zawsze może powiedzieć “konkurencja nie lepiej wygląda”; serwis napisany w ror: klient ma obiekcje i uderza do programistów “to wy mnie do tego cholerstwa przekonaliście”, a że takich oszołomów nie brakuje, to nie muszę pisać, dlatego polskie firmy nastawione na ror nie pracują dla polskich klientów, ci najpierw muszą się wyedukować i koło się zamyka, bo kto ma ich oświecać.

Z biznesowego punktu widzenia RoR jest porażką.
Wybierając taką technologię skazuje się współpracę z jedną firmą, bo jak nie będę z nich zadowolony to następnej będę szukał 2 miesiące. Za mało jest firm / freelancerów robiących coś w RoR.
Dla firmy technologia to trzeciorzędna sprawa. Znacznie ważniejsze są koszty rozwoju i utrzymania rozwiązania oraz ryzyko, że nie znajdą kogoś na zastępstwo jak wykonawca się nie wywiąże ze swoich zobowiązań.

Częsciowo się zgadzam z zaar-em. Z moich doświadczeń wynika, że do ruby on rails można przekonać firmy, dla których technologia jest drugorzędna (i ufają mi, że to co napiszę będzie działać i będzie to można dalej rozwijać), albo firmy, w których ktoś siedzi, kto sam programuje w ror, i potrzebuje wsparcia z zewnątrz przy rozwoju/pisania nowego serwisu. Jak klient chce np. PHP, to bardzo ciężko będzie go przekonać, bo dla niego taki wybór to duże ryzyko biznesowe.

Ja się spotkałem z innym problemem - ceny :slight_smile: Ja podałem cene X za wykonanie aplikacji w RoR i w odpowiedzi uslyszalem - “Co ? Inny programista PHP powiedzial ze to bedzie kosztowac $((X/10))”. W swiadomosci niektorych klientow jest zaszyty warunek price.lower if lang == “php”.

Jakich argumentow uzyc ? Trudno powiedziec. Mi (i pewnie jak wiekszosci osob na tym forum) duzo lepiej i sprawniej sie programuje w rubym. Refaktoring kodu tez moim zdaniem jest latwiejszy w ror. Niby w php pojawily sie frameworki typu symphony czy zend ale z nich nie korzystalem.
Mozesz sprobowac strzału - modyfikacje i rozszerzanie aplikacji w RoR bedzie latwiejsze niz w PHP (tylko ze pewnie wszyscy wiemy ze to troche sciema - zawsze mozesz powiedziec ze chodzi Ci o mechanizmy pluginow i otwartosc klas :wink:

Pozdrawiam
Pawel

No właśnie argument o modyfikacjach, maintenansie i nowych ficzerach do istniejących aplikacji chodzi mi po głowie.

Załóżmy, że developer X tworzy serwis czy aplikację. Po paru miesiącach potrzebny jest nowy ficzer czy poprawka, ale X jest na wczasach na Malediwach.

I tutaj moje twierdzenie:
Tw. 1.1. Szybciej i taniej będzie znaleźć dobrego programistę Y do tego zadania, jeśli projekt będzie napisany w Rails.

Chodzi mi o to, że Y siada do projektu i od razu widzi co i jak. Ze względu na specyfikę RoR wszystko jest na swoim, jedynym słusznym, miejscu, w dużej mierze napisane w pewien, jedyny słuszny, sposób. W związku z tym znalezienie nowej osoby do projektu to “jedynie” znalezienie dobrego programisty Ruby on Rails.

Do PHPowego projektu dochodzą wymagania - framework (spośród ok. 5 poważnych), język szablonów (też kilka), ORM, … I lista odpowiednich kandydatów się zawęża. Jeśli nie używał wcześniej dokładnie tych narzędzi, to dochodzi trochę czasu na wprowadzenie go w projekt. A jeśli kod był od początku pisany po partyzancku - nie nowina w świecie PHP - to już w ogóle szkoda gadać…

@lucassus: Miałem dokładnie taką sytuację w agencji, w której pracowałem. Nie pocieszę Cię za bardzo, bo to było doświadczenie “grochem o ścianę”. Był całkiem spory cms w PHP, na którym firma wdraża serwisy dla klientów. Z dużą ilością starego, zaschniętego kodu, który wszyscy bali się dotykać. Ale nowe ficzery trzeba było dodawać…takie rzeźbienie w g…

W którymś momencie wyraziłem opinię, że szybciej nam pójdzie napisanie wszystkiego od nowa w RoR niż dodanie jakiejś funkcjonalności do istniejącego kodu. Reakcja? “Hmmm…naprawdę?..Rabi (!) powiadasz…ciekawe…to teraz siadaj do pehapa i rzeźb dalej”.

Argumentem przeciwko Rails dla klienta jest również mniej firm hostingowych, przynajmniej w Polsce. Prosty przykład zlecenia, gdy klient chce przebudować swoją stronkę napisaną w PHP, to jest wielce prawdopodobne, że serwer, na którym wisi nie wspiera RoR. Wtedy bądź tu mądry i przekonuj klienta, że fajnie byłoby zmienić przy okazji hosting. Rozwiązaniem jest posiadanie wykupionego dedyka i zaoferowanie hostingu u siebie po konkurencyjnych cenach, ale czy to dla klienta nie za duże ryzyko?

Byłem raz na wykładzie Paula Klippa dotyczącym sprzedawania projektów robionych w Agile. Ponieważ wiemy dosyć dobrze, że RoR dobrze współgra z tą metodologią, a jej “sprzedawania” też napotyka opór, głównie “starych wyjadaczy”, to przytoczę kilka argumentów, które on przedstawił, przemawiających na korzyść Agile (i RoR).

Zacznijmy od tego, że każdy produkt (nie tylko informatyczny), charakteryzowany jest przez trzy czynniki:

  • koszt (do którego można zaliczyć również czas wykonania)
  • funkcjonalność
  • jakość

Często w projektach informatycznych zapomina się o ostatnim czynniku. W szczególności klienci mało kiedy pytają o to, czy nasz produkt będzie niezawodny. Częściowo dlatego, że przyzwyczajeni są do kiepskiego oprogramowania.

W kontekście Agile Paul wskazał, że jeśli zafiksujemy dwa czynniki (kosz oraz funkcjonalność), to oczywiście trzeci będzie musiał na tym ucierpieć. Innego wyjścia nie ma. Wiadomo, że oprogramowanie tworzone w pośpiechu jest zwykle dużo gorszej jakości.

Jak to przenieść na RoR:

Czas wykonania - ze względu na to, że dużo typowych funkcjonalności jest w RoR zaszytych (powiedzmy CRUD), a wiele można znaleźć w pluginach, to czas wykonania serwisu będzie krótszy. Na kliencie świetne wrażenie zrobi demonstracja działającego produktu już po jednym dniu developerki. Niech to będzie sam panel logowania i banalny CRUD na jednym modelu oparty powiedzmy o ActiveScaffold. Mniejsza o to, że w php korzystając z gotowych rozwiązań też można coś takiego zrobić. Tego klientowi mówić nie musisz :slight_smile:

Funkcjonalność - w szczególności w kontekście rozwoju aplikacji. Ze względu na w pełni obiektowy charakter rubiego oraz narzuconą domyślną strukturę Railsów, wprowadzanie w nich zmian i dodawanie nowych funkcjonalności jest IMHO dużo łatwiejsze, przejrzystsze, wymaga podejmowania znacznie mniejszej liczby kluczowych decyzji. Dla klienta oznacza to właśnie, że jeśli po zakończeniu projektu będzie chciał dalej go rozwijać (a znacie jakiegoś klienta, który by nie chciał), to po prostu mniej za to zapłaci. Nie wspominając już o tym co w pop. punkcie - pluginach. Raz miałem sytuację, w której trzeba było dodać Captche - wszytko sprowadzało się do zainstalowania jednego pluginu i dodania 3 linijek. Bez ściemy - po prostu zadziałało jak trzeba. Jak znam życie, to np. w jakimś phpowym cmsie, musiałbym nad tym spędzić cały dzień.

Jakość - testowanie to też praktyka Agile, która jest, jakby to powiedzieć, “wspierana” przez Railsy. Jeśli klientowi zależy na niezawodnej aplikacji to powiedz mu, że Ruby posiada najlepszy framework do testowania czyli RSpec (ja sam do niego tak przekonany nie jestem, bo na co dzień używam Shouldy, ale taka opinia krąży wśród znawców :wink: Zaproponuj mu, że wygenerujesz mu tekstową wersję specyfikacji aplikacji. Oczywiście nie będzie tego czytał w całości, ale jak zobaczy poziom szczegółowości to nabierze szacunku do Twojej pracy :slight_smile: Tak samo jak w punkcie 1 - dla innych języków też istnieją frameworki do testowania, ale Railsy naprawdę wspierają tę fazę tworzenia oprogramowania.

Oczywiście pozostaje problem masy - fakt: w Polsce RoR jest niezwykle mało popularny. Możesz jednak powiedzieć w sekrecie swojemu klientowi, że na niektórych uczelniach kształci się studentów w tej technologii (konkretnie na UJocie :), więc jak będzie miał deficyt programistów, to może zgłosić się do mnie :wink:

Możesz też wskazać mu, że Polska ciągle nie należy do elity innowacyjnych rozwiązań, a jeśli zainteresuje się tym co dzieje się za granicą, to szybko przekona się, że RoR rulez. Możesz też przytoczyć fakt, że powstało wiele projektów właśnie dla PHP, które kopiują Railsy. Tyle, że kopie zawsze pozostają w tyle za oryginałem.

Tego akurat bym klientowi nie mówił. Może on uznać, że skoro istnieją rozwiązania podobne do Rails, ale napisane dla PHP to po co ma np. płacić za hosting RoR, jeżeli prawie to samo może mieć w PHP i postawione na znacznie tańszym serwerze. To, że kopie pozostają w tyle za oryginałem nie przemówi chyba zbytnio do klienta.

Panowie podchodzicie do tematu od strony programisty/wykonawcy.
Podejdźcie od strony biznesowej.
Zleciłem napisanie społecznościówki w RoR i teraz bardzo żałuję, że to nie PHP.
Dałem się przekonać, że to taka fajna technologia, która ułatwi i przyspieszy rozwijanie projektu.
Gówno prawda.
Szukaliście dobrego developera RoR? Toż to 2 m-ce roboty. A i tak zdecydowana większość odpowie zarobiony jestem i może za X tygodni będę zainteresowany.
Przez RoR całość jest opóźniona o 3 m-ce.

[quote=zaar]Panowie podchodzicie do tematu od strony programisty/wykonawcy.
Podejdźcie od strony biznesowej.
Zleciłem napisanie społecznościówki w RoR i teraz bardzo żałuję, że to nie PHP.
Dałem się przekonać, że to taka fajna technologia, która ułatwi i przyspieszy rozwijanie projektu.
Gówno prawda.
(…)[/quote]
A podasz jakies konkretny co poszlo nie tak ? Bo moja magiczna kula podpowiada mi ze zdecydowales sie na RoR pod wplywem podwykonawcy, ale on spartolil robote a Ty masz problem ze znalezieniem kogos kto po nim naprawi - a to nie jest problem technologi tylko ludzi.

Czy jakbys sie zdecydowal na PHP to napewno bys nie mial takich samych problemow jak teraz z RoR ? Nie sadze.

Pozdrawiam
Pawel

Ja osobiście nie starałbym się przekonywać klienta, który już wybrał technologię do jej zmiany. Tzn. można przekonywać pośrednio pokazując działający prototyp po kilku dniach, wprowadzając szybko zmiany + produkując dobrą dokumentację i przejrzysty model.

Jeśli masz klientów, którzy np. wybierają PHP a Ty chcesz programować w RoR to albo poszukaj takich, którzy nie zwracają uwagi na technologię albo takich, którzy chcą RoR.

U mnie w pracy np. 95% klientów nie zwraca uwagi na technologię, tzn. pytają co oferujemy ale nie mają specjalnych technologicznych wymagań poza funkcjonalnymi (poza tymi, którzy mają już istniejące systemy). Nie mieliśmy jeszcze klienta, który powiedziałby: “słuchajcie, ten RoR jest do kitu, zróbcie to w PHP”. W większości wypadków są bardzo zadowoleni z jakości więc można powiedzieć, że przekonujemy ich “po fakcie”.

Co do hostingu to przynajmniej u nas ten “problem” odpada, bo utrzymujemy wszystkie serwisy na naszych serwerach.

Zespół jest mały, wszyscy wolimy klepać w Rubim niż np. w PHP więc nie słyszymy tekstów w stylu “Rabi powiadasz?” :slight_smile: (BTW. ten “rabi” to jakieś lokalne spolszczenie ? Już któryś raz to słyszę )

Jeśli jesteś na tyle odważny aby przekonywać klientów/szefa to IMHO robiłbym to tylko wtedy gdy zespół programistów jest mały, wszystkim podoba się rozwiązanie typu RoR i czują się z nim dobrze a Ty masz decydujące zdanie odnośnie technologii i wiesz, że podołasz ew. problemom.

Zawsze możesz poszukać innej pracy jeśli utkniesz :slight_smile: W Polsce rynek powolutku się rozkręca co widać po ofertach pojawiających się na tym forum a np. w UK czy Holandii problemu ze znalezieniem pracy w RoR/Rubim nie ma.

Tzn. najpierw wybrałeś technologię a dopiero później szukałeś dewelopera ? :slight_smile:

Przed takim ambitnym zadaniem stanęliśmy kiedyś w poprzedniej firmie. Od razu nadmienię, że klient nie dał się przekonać (pomimo przychylności jego IT managera). Reakcja była mniej więcej taka: Ruby on Rails? WTF? Everybody knows PHP! Ponieważ z wiadomych przyczyn zależało nam na wykorzystaniu tej technologii, opracowaliśmy dokument prezentujący przewagi Rubiego jako key business advantage. Niestety nie zadziałał.

A argumenty były takie:

  • czas i koszt: zestaw wbudowanych narzędzi przyspieszajacych proces developmentu, co oznacza niższe koszty i większą elastyczność. Niektóre zmiany mogą być wprowadzane nawet na późnym etapie developmentu.
    RoR jest innowacyjną technologią skracającą czas tworzenia aplikacji dwa do trzech razy w porównaniu do PHP.

  • jakość aplikacji: mniej czasu spędzanego na programowaniu logiki aplikacji - wiecej na testach i dopracowywaniu detali. Konsekwencje: lepszy user experience i wyższa użyteczność. RoR posiada wbudowane konwencje, ułatwiające dbałość o jakość kodu. Jakość jest z reguły niedoceniana, lecz ważna, ponieważ jednym z jej składników jest niezawodność, co w języku biznesowym oddaje rachunek zapobiegania stratom.

  • elastyczność i łatwa modyfikowalność / rozszerzalność: łatwa migracja pomiędzy różnymi bazami danych. Architektura railsów pozwala na łatwe rozszerzenia / modyfikowanie funkcjonalności. Przejrzystość kodu pozwalająca na uniezależnienie się od jednego dostawcy oprogramowania.

  • wydajność: co prawda wolniejszy niż czysty PHP, ale szybszy niż PHPowe frameworki np. Symfony http://wiki.rubyonrails.org/rails/pages/framework+performance

  • bezpieczeństwo: chroni aplikacje przed większością typowych prób ataków - redukuje ryzyko tworzenia niezabezpieczonej aplikacji i pomaga chronić dane

  • przenośność i kompatybilność: wspiera różne systemy operacyjne, serwery HTTP, systemy baz danych

Plus lista rubiowych firm i rubiowego softu oraz pełne zachwytu cytaty: http://www.rubyonrails.pl/cytaty

[quote=ruthrsc]A podasz jakies konkretny co poszlo nie tak ? Bo moja magiczna kula podpowiada mi ze zdecydowales sie na RoR pod wplywem podwykonawcy, ale on spartolil robote a Ty masz problem ze znalezieniem kogos kto po nim naprawi - a to nie jest problem technologi tylko ludzi.

Czy jakbys sie zdecydowal na PHP to napewno bys nie mial takich samych problemow jak teraz z RoR ? Nie sadze.

Pozdrawiam
Pawel[/quote]
Serwis powstał tylko, że zamiast w 2m-ce powstawał w bólach przez prawie 5.
I to jest problem technologii gdyż z PHP nie musiałbym szukać następców aż tak długo.
Zapewniam Cię, że gdyby to było PHP projekt powstałby bez takich przebojów.

Tzn. najpierw wybrałeś technologię a dopiero później szukałeś dewelopera ? :)[/quote]
:smiley:
Nie. Do takiej zostałem namówiony właśnie przez takiego ambitnego wykonawcę, który bardzo mnie przekonywał jaka to wspaniała technologia. Poległ gdyż aplikacja go przerosła. Następny wykonawca też poległ (często wypowiadają się chłopaki na tym forum) i wycofał się. 3 dokończył ale teraz rozmawiam z zaprzyjaźnioną firmą o przepisaniu wszystkiego na PHP. Nie stać mnie na takie tracenie czasu. I to jest największa bolączka RoR, brak ludzi do pracy.

Tzn. najpierw wybrałeś technologię a dopiero później szukałeś dewelopera ? :)[/quote]
developerzy czasami zmieniają pracę i na ich miejsce trzeba szukać nowych… :wink:

O developerów trzeba dbać to nie odejdą w połowie projektu i dadzą czas na znalezienie nowych.