Uproduktiv med Ruby on Rails

Ruby on Rails fremhæves ofte for at gøre udviklerne mere produktive (muligvis på bekostning af den udviklede applikations performance, men det er en anden og meget omdiskuteret historie).
 
Men når man først for nylig er kommet i gang med at udvikle i Ruby (og Rails), så føles det mildest talt ikke sådan.
 
Helt, helt simple ting som at loade noget fra en URL kræver opslag i bøger eller på nettet. Man falder og slår sig på tåbelige ting som at glemme at konvertere et tal til en streng inden konkatenering.
 
Når jeg koder Java, så flyder koden på mærkværdigvis af sig selv; underbevidstheden transformere feature-ideer til syntax-checket kode, mens mine bevidste hjerneprocesser lægger projektplaner eller vandrer til kaffeautomaten.
 
Men når jeg koder Ruby, så er det lidt ligesom at lære at holde på en blyant igen. Godt nok har jeg hjælp af en Ruby-plugin til mit udviklingsmiljø (IntelliJ), der fanger en del syntaks-bommerter og i nogle tilfælde kan slå API-dokumentationen op, uden at jeg skal ud at rode i en browser, men alligevel så går det bare slet ikke i det
tempo, det plejer.
 
Misforstå mig ikke; det er spændende og udfordrende at rode sig ud i noget nyt, men det er også frustrerende ikke at kunne arbejde med den produktivitet, man er vant til.
 
Om jeg på et tidspunkt vil erfare, som Ruby on Rails-miljøet praler med, at man kan være en mere effektiv udvikler med Ruby on Rails, ja det vil jo vise sig. Men jeg hører gerne fra jer kloge koner (m/k) derude, som har erfaringer med emnet. ![Eksternt billede](http://www.version2.dk/uploads/smil3dbd4d6422f04.gif" alt=")

Kommentarer (20)
sortSortér kommentarer
  • Ældste først
  • Nyeste først
  • Bedste først
#1 Martin Bøgelund

Nu er jeg "grøn" i både Java og Ruby, men har dog lænet mig op ad MVC i en del år efterhånden. Her er det min fornemmelse at RoR har en del at at byde på, bl.a. gennem sit "convention instead of configuration".

Hvor bruger du mest tid og flest kræfter - i kodeboksen eller i designboksen?

  • 0
  • 0
#2 Torben Mogensen Blogger

Jeg har ikke selv prøvet Ruby on Rails, men jeg har ikke specielt lyst til at lave store eller komplicerede programmer i et dynamisk typet sprog. Alt for mange trivielle fejl bliver ikke fanget før på køretid, så der skal væsentligt mere afprøvning til. Endvidere er RoR's udstrakte brug af reflection bekymrende. Det er meget svært at lave dækkende afprøvning af kode, der bruger reflection i stor stil.

Generelt synes jeg, at brug af reflection på køretid vidner om manglende support for generisk programmering i modul- og typesystem. Et godt modul- og typesystem kan virke som reflection på oversættelsestid.

  • 0
  • 0
#4 Anne-Sofie Nielsen

Hvor bruger du mest tid og flest kræfter - i kodeboksen eller i designboksen?

Det kommer helt an på projektet! I det RoR-projekt, jeg sidder og roder med nu, har jeg skullet tilføje noget funktionalitet til en eksisterende applikation, så rammerne var givet på forhånd, og dermed var design-delen af arbejdet nok lidt mindre end det ellers ville have været.

Og når man så samtidigt skal lave det i et nyt sprog og framework, ja så kommer kode-delen nemt til at fylde en del.

Alt for mange trivielle fejl bliver ikke fanget før på køretid, så der skal væsentligt mere afprøvning til.

Ja det er indtil videre også min erfaring, at jeg ofte løber ind i fejl, som jeg i Java ville have fundet på compile-time. Det bliver selvfølgelig heller ikke bedre af, at jeg som "nybegynder" i RoR også laver flere fejl end normalt...

  • 0
  • 0
#5 Søren Berg Glasius

Jeg har prøvet RoR et par gange, men det har aldrig helt føltes som "hånd i handske" for mig. Til gengæld har jeg forelsket mig i Groovy og Grails. For det første fordi indlæringskurven for en gammel Java-haj som mig har været ganske let, for det andet fordi jeg føler jeg har fået programmerings-glæden tilbage. Jeg synes ganske enkelt det er sjovere at udvikle i Grails end i andre MVC frameworks på Java platformen. At jeg så samtidig får et stort Grails community, en stabil teknologi (baseret på Spring Framework, Hibernate og Sitemesh), og fuld adgang til alle Java API'er derude, ja det er jo en rar sidegevinst (RoR kan også kalde Java når man bruger JRuby, men Groovy og Grails compiles til byte-code, hvilke gør sammensmeltning med Java meget nemt) Og ja, der er de samme problemer som RoR, det kræver unit-testing, for at sikre det virker. Men gør alt kode ikke det? /Søren

  • 0
  • 0
#6 Brian Jensen

Hej Anne-Sofie

Misforstå mig ikke; det er spændende og udfordrende at rode sig ud i noget nyt, men det er også frustrerende ikke at kunne arbejde med den produktivitet, man er vant til.

Jeg har arbejdet med RoR i et godt stykke tid efterhånden og jeg vil give dig ret i at det har en stejl indlæringskurve. Men der gik vel også et stykke tid inden du var produktiv i java? ;-)

Det største problem jeg har lagt mærke til når folk skifter til ROR fra et andet sprog er at de skriver ikke ruby kode med en ruby tankegang. Desværre medfører dette at koden ikke er særlig elegant.

  • 0
  • 0
#7 Brian Jensen

[qoute]Og ja, der er de samme problemer som RoR, det kræver unit-testing, for at sikre det virker. Men gør alt kode ikke det?[/quote]

Du unittester vel i forvejen så det tilføjer da ikke overhead? ;-)

  • 0
  • 0
#8 Anne-Sofie Nielsen

Men der gik vel også et stykke tid inden du var produktiv i java? ;-)

Helt sikkert, men dengang var jeg ung og entusiastisk og kodede mest i min fritid, så da tænkte jeg ikke så meget i produktivitet, som nu, hvor jeg har ting, der skal ud af døren... ;-)

  • 0
  • 0
#12 Anne-Sofie Nielsen

Har du kigget på andre udviklingsmiljøer hvis du føler dig uproduktiv? At skulle slå dokumentation op for at foretage kald burde være unødvendig med dagens standarder for IDE værktøjer!

Jeg bruger Ruby plugin'en til IntelliJ, som jeg er vant til at arbejde med. Der kan man bruge Ctrl+Q for at se dokumentationen på funktioner mv.

Har du nogen smarte udviklingsværktøjer?

  • 0
  • 0
#14 Troels Jensen

Jeg har efterhånden brugt RoR til forskellige hobbysites et par år. Mine erfaringer er som følger:

Man kan ikke blive effektiv hvis ikke man bruger det ofte og helst har en editor der forstår det (jeg bruger vims rails-plugin, som gør det nemt at skifte mellem MVC-delene f.eks.) - så jeg ville ikke anbefale det hvis man bare skal lave eet projekt.

RoR er et moving target - ny funktionalitet kommer til hele tiden, så det gælder om at bruge nettet meget hvis man vil slippe for at blive fanget en delopgave som er besværlig fordi man ikke har opdaget at en smart løsning er blevet implementeret.

RoR er det mest gennemarbejdede web-framework jeg er stødt på - ihvertfald til mine behov. Når det kommer til MVC-opdeling, konventioner, deployment og databasemigrations, har jeg ikke kunnet finde noget der var lige så modent.

Jeg har tidligere skrevet sites i php, og jeg skriver overvejende i perl. RoR giver mig ofte en oplevelse af at det er til for programmøren og ikke omvendt. Det er endda selvom jeg stadigvæk ikke er helt stiv i ruby.

Forresten, hvis der er en ting man vil lave i RoR, men som man ikke helt kan hitte ud af, kan jeg anbefale at se et railscast om emnet. De er temmeligt informative.

  • 0
  • 0
#15 Ole Østergaard

Det er en helt anden verden med Ruby, Rails, dynamiske typer, metaprogrammering, dårlig hjælp fra IDE'et osv.

Kommer man til Ruby-land og regner med at kunne kode derudad med sin IDE som primære værktøj, så får man det hårdt. I stedet bør man have en referencebog liggende ved siden af skærmen, så man hele tiden kan slå op hvordan man læser filer, formaterer tal osv.

Fordelen ved dette er også at man i samme omgang får præsenteret nogle "best practices" om det man er i gang med - koder man fx Java, kan IDE'et godt hjælpe med at lave en "open" på et fil-objekt, men det er ikke sikkert at du får hjælp til at lave en "close" i den rigtige finally-blok.

Husk at starte med dine unit-tests! Så kan du sidde og nusse lidt om koden og gøre den mere og mere læsbar. Det er også noget jeg oplever med Ruby: "Føles" koden ikke rigtig, så viser det sig altid at der er en bedre, mere præcis og kønnere måde at udtrykke den på. Java er blot ét stort syntaks-helvede, og det kan man ikke gøre noget ved :-)

  • 0
  • 0
#16 Anne-Sofie Nielsen

Kommer man til Ruby-land og regner med at kunne kode derudad med sin IDE som primære værktøj, så får man det hårdt. I stedet bør man have en referencebog liggende ved siden af skærmen, så man hele tiden kan slå op hvordan man læser filer, formaterer tal osv.

Inden jeg gik i gang med projektet havde jeg læst mig igennem Dave Thomas' "Programming Ruby"-bog samt udvalgte kapitler af "Agile Web Development with Rails" - det var begge to nogle gode bøger, syntes jeg.

Men denne uge har jeg ikke haft bøgerne til rådighed, da jeg har arbejdet hjemme for at køre min mindste datter ind i vuggestue (og jeg var selvfølgelig ikke smart nok at huske at tage bøgerne med hjem inden), så derfor har jeg været overladt til mit IDE, min hukommelse og Google...

  • 0
  • 0
#18 Søren Berg Glasius

Men denne uge har jeg ikke haft bøgerne til rådighed, da jeg har arbejdet hjemme for at køre min mindste datter ind i vuggestue (og jeg var selvfølgelig ikke smart nok at huske at tage bøgerne med hjem inden), så derfor har jeg været overladt til mit IDE, min hukommelse og Google...

Jeg synes nu også man tit kommer længst med Google (og det gælder et hvert programmeringssprog). Jeg overraskes og forundres dagligt over den mængde eksempler, gode råd og tips der findes "derude..."

Happy hacking..

/Søren

  • 0
  • 0
#19 Carsten Gehling

Jeg overraskes og forundres dagligt over den mængde eksempler, gode råd og tips der findes "derude..."

Også jeg - og ind imellem får det mig også til at tænke på før '95 (som nok var det år, hvor jeg først rigtig fik adgang til Indernettet). Der sad jeg og terpede i de (rigtig mange) bøger, der fulgte med når man købte Borland Delphi mv.

Jeg er blevet en mere doven programmør siden da (pga. løsningen på et problem som regel kun ligger en Google søgning væk). Men jeg er (tror jeg da selv) dermed også blevet en hurtigere programmør.

  • Carsten
  • 0
  • 0
#20 Kim Falk

Spændende tråd. Specielt fordi det berøre et problem som software udviklere altid har, blot fra et andet perspektiv: Det her med oplevelsen af at noget nyt altid er mere besværligt.

I de fleste projekter jeg har været med til hvor det har handlet om at skrifte eksisterende systemer ud, er der altid brugere der fortæller os at det jo altså lyder meget godt det der "nymodens noget", men det gamle virkede jo fint, så hvorfor skal det så skiftes ud, "når nu vi arbejdede meget hurtigere på det gamle system"

Men det spændende ved Ruby og RoR er jo netop at det er noget helt nyt og en anden tankegang. Og selvfølgelig er det svært, det skal det da være ellers lærte man jo ikke noget nyt.

Tilbage til Anne-Sofie Nielsen, syntes jeg at det også er en vigtig pointe at det er et eksisterende projekt som du bygger videre på, det gør det altid sværere at skulle sætte sig ind i andres kode - hvad enten det er Java, ruby eller Beta.

Giv Ruby ti år, og så se hvad der føltes mest rigtigt. (Jeg syntes stadig BETA er det bedste sprog.)

  • 0
  • 0
Log ind eller Opret konto for at kommentere