Archiv

Posts Tagged ‘Ruby’

Mittels Technologieradar die Übersicht behalten

12. Februar 2014 1 Kommentar

Bei all den vielen neuen Werkzeugen, Techniken und (JavaScript-) Frameworks die wie Pilze aus dem Boden schiessen ist es äusserst schwer den Überblick zu behalten. Überall sieht man neue Dinge und vieles davon sieht so spannend aus dass man dies gleich ausprobieren will. Nur ist die Menge mittlerweile viel zu gross um dies auch zu tun.

Was man bräuchte ist eine Art Filter mit dem man sich gezielt auf einige ausgewählte Themen und Werkzeugen konzentrieren kann. Man müsste wichtigeres von unwichtigem trennen können ohne dabei zu viel Zeit mit dem Kategorisieren zu verlieren. Was ich bräuchte wäre etwas wie der Technology Radar von ThoughtWorks, nur halt für mich und meine Interessen.

 

Von ThoughtWorks zum eigenen Technologieradar

ThoughtWorks veröffentlicht in etwa alle 6 Monate eine Aktualisierung ihres Technologieradars. Die Grafik ist dabei eine Zusammenfassung der internen Diskussionen und zeigt auf in welche Richtung sich die IT-Branche aus ihrer Sicht bewegt. Statt grosser Dokumente hilft einem eine einzige Grafik abzuschätzen ob man Zeit in die entsprechende Technologie investieren soll oder besser gleich eine Migration plant. Dazu dienen diese 4 Ringen:

  • Hold (abwarten): Keine neuen Projekte mit diesen Technologien starten.
  • Assess (einschätzen): Genauer hinschauen ob sich daraus etwas entwickelt.
  • Trial (ausprobieren): In kleineren und weniger wichtigen Projekten Erfahrungen sammeln.
  • Adopt (umsetzen): Bereit um in kritischen Anwendungen verwendet zu werden.

Neal Ford ist nicht nur beim Radar von ThoughtWorks involviert, sondern spricht auch an Konferenzen über den Nutzen eines persönlichen Technologieradars. In diesem Blogpost erklärt Ford wie man damit auch einen Realitätsabgleich machen kann. Fixiert man sich zu sehr auf einen Hersteller bekommt man nicht mehr mit wie sich die Welt um einen herum verändert – bis es zu spät ist und man keinen neuen Arbeitgeber findet.

Das Festlegen auf die einzelnen Technologien und wo man diese sieht ist der aufwändigste Teil um selber einen Technologieradar zu erstellen. Hier kommt es ganz auf die eigene Einschätzung an, da angesichts der schnellen Veränderungen objektive Kriterien kaum weiterhelfen.
Sobald man alles beisammen hat geht es mit der grafischen Darstellung recht schnell. Dank der grossen Vorarbeit von Brett Dargan uns seinem Projekt Techradar braucht man nur noch eine JSON-Datei anzupassen und schon hat man seine Grafik.

 

Mein Technologieradar

Für meine Grafik bin ich recht schnell von ThoughtWorks abgewichen. Wenn auch etliche Technologien gleich sind so hat mir die Vorlage nicht ganz entsprochen. Der Quadrant “Techniques” ist bei mir weiter gefasst und beinhaltet neben technischen Lösungsansätzen auch Verfahren und Methoden. Gleiches gilt für den Quadranten “Infrastructure” der bei mir auch Plattformen und Services umschliesst.

Techradar_201401

 
 
Techniken, Verfahren & Methoden
Tech201401_Techniques
In diesem Quadranten gibt es bei mir die meisten Einträge in den Ringen “Adopt” und “Trial”. Dies war nicht so geplant, zeigt aber einen interessanten Nebeneffekt des Technologieradars: Durch die grafische Darstellung kann man eine thematische Häufung von Einträgen erkennen die einem so vorher nicht bewusst war.

Bei all den Dingen die ich anschauen oder umsetzen will gibt es eine grosse Ausnahme: Es muss aufhören aus reiner Bequemlichkeit in einer API 1:1 die Limitierungen der darunterliegenden Systemen weiterzureichen. Nur weil SQL Server Null-Werte als 1.1.1753 maskiert braucht ja nicht jeder Konsument der API in seiner Anwendung die Null-Konvertierung selber durchzuführen. Auch wenn ich dies bisher vor allem im Bereich von Datenbanken angetroffen habe gibt es keinen Grund dies nicht auch bei anderen Systemen zu beachten.

 
Infrastruktur, Plattformen & Services
Tech201401_Infrastructure
Das grosse Thema in diesem Quadranten ist die Cloud. Trotz all der NSA Enthüllungen gibt es hier Chancen die zu gut sind um sie zu ignorieren. Angefangen bei GitHub über Code Climate bis hin zu Amazon und Azure gibt es unzählige Einsatzgebiete die auf eine Erkundung warten.

Bei RavenDB habe ich am längsten um die Einteilung gerungen. Da mir noch einige wichtige Informationen für den Produktiveinsatz fehlen blieb es schlussendlich beim Einsatz in kleineren Projekten. Die Wissenslücken für den Einsatz in geschäftskritischen Anwendungen sollte ich aber bald schliessen können.

 
Tools
Tech201401_Tools
Viel Auszuprobieren gibt es für mich bei den Tools. Rund um Ruby gibt es eine Vielzahl von Helfern fürs Testing und den Aufbau von Entwicklungsumgebungen. Bei .Net vermisse ich bisher so ausgereifte Werkzeuge. Daher wird es Zeit genau zu prüfen wie weit SpecFlow und MSpec, respektive Puppet und Chef gekommen sind.

Ein weiteres spannendes Thema sind für mich Micro ORMs. Realistisch betrachtet wechselt man kaum je die Datenbank bei einem Projekt aus. Daher sind OR-Mapper wie Entity Framework oder NHibernate mit ihren Abstraktionsschichten oft ein grosser Overhead der einem den Zugriff auf datenbankspezifischen Funktionen nur über Umwege erlaubt. Micro ORMs könnten da eine Alternative sein die eine vertiefte Abklärung verdienen.

 
Sprachen und Frameworks
Tech201401_Lang
Sowohl für C# wie für Ruby Entwickler dürften die meisten Einträge in diesem Quadranten nachvollziehbar sein. Wo es wohl einige Erklärung braucht ist der “Hold” Ring.

Bei den Desktop-Frameworks wie WPF aber auch WinForms halte ich mich derzeit zurück. Angesichts verteilter Standorte, Home Office und der Verbreitung von Tablets setze ich viel eher auf die Webentwicklung. Diese allerdings abseits von WebForms und Silverlight. Da Silverlight selbst von Microsoft nicht mehr in allen IE-Varianten unterstützt wird ist diese Technologie definitiv gestorben – auch wenn die Supportseite einem eine andere Geschichte erzählen will.

Sehr skeptisch bin ich auch bei TypeScript. Hier handelt es sich aus meiner Sicht um eine Lösung auf der Suche nach einem Problem. Die Probleme vieler Entwickler mit JavaScript lassen sich nicht durch ein aufgepfropftes Typensystem lösen – viel eher muss man JavaScript als eigenständige Sprache akzeptieren und die Eigenheiten lernen. Und sollte TypeScript tatsächlich länger bleiben kann man später immer noch auf diesen Zug aufsteigen.

 

Fazit

Beim Zusammenstellen des Technologieradars muss man sich plötzlich festlegen. Es genügt nicht mehr nur eine vage Liste mit interessanten Technologien zu haben – nun wird auch eine Einteilung in die Kreise und Quadranten benötigt. Es bleibt einem nichts anderes übrig als die einzelnen Technologien zu ordnen und zu klassifizieren.

Der grosse Nutzen dieser Übung liegt für mich im bewussten Auseinandersetzen mit den einzelnen Technologien und der Entscheidung, ob diese nun einen Platz im Radar finden oder nicht. Dabei spielt es keine grosse Rolle wo genau sich diese auf der Grafik befinden. Viel wichtiger ist welche Technologien es überhaupt hinein schaffen.

Wieviel mir die ganze Übung am Ende bringen wird muss sich noch zeigen. Die ersten Erfahrungen waren allerdings so hilfreich dass ich die Erstellung eines eigenen Technologieradars sehr empfehlen kann.

Schlagworte: , , ,

5 Bücher die jeder Software-Entwickler kennen sollte (Ausgabe 2014)

7. Januar 2014 2 Kommentare

Vor gut 1.5 Jahren habe ich bereits einmal eine Top 5 Liste mit Büchern veröffentlicht. Seither habe ich viel gelesen und es ist daher höchste Zeit die Leseempfehlungen zu aktualisieren.

Ich versuchte wiederum eine möglichst technologieneutrale Liste zusammenzustellen. Frameworks kommen und gehen und sind stellenweise in erschreckend kurzer Zeit wieder obsolet. Die hier vorgestellten Bücher behandeln Themen die schon länger aktuell sind und es allem Anschein nach noch einige Jahre bleiben werden.

 

Practical Object-Oriented Design in Ruby

POODR Obwohl sehr viel über OO-Design geschrieben wird ist es sehr schwer ein gutes Buch für den Einstieg zu finden. Sandi Metz hat einen guten Mittelweg zwischen Theorie und Praxis gefunden und es gelingt ihr dieses Thema in verständlichen Schritten zu erklären. Auch wer sich mit Ruby nicht auskennt kann hier viel über OO-Design lernen.

Da die Beispiele recht kurz sind kann man sich auf genau den behandelten Teilaspekt konzentrieren. Dies hilft nicht nur Einsteigern sondern ist auch sehr gut als Auffrischung für erfahrene Programmierer geeignet.
(ISBN: 978-0-3217-2133-4 | detaillierte Rezension)

 

Refactoring

Trotz seines Alters ist Refactoring nach wie vor das Standardwerk zur Restrukturierung von Code. Der ausführliche Katalog mit Strategien zur Verbesserung der Codebasis ist aus meinem täglichen Entwicklerleben nicht wegzudenken.

Dies bedeutet keinesfalls dass ich alle darin vorgestellten Methoden auswendig kenne. Aber Refactorings wie das Umbenennen von Variablen oder das Extrahieren von Methoden sind Dinge die jeder beherrschen sollte. Diese sind sehr einfachen und verbessern den Code doch enorm.
(ISBN: 978-0-201-48567-7 | detaillierte Rezension)

 
 

The Art of Unit Testing (Second Edition)

The Art of UnitTesting 2nd editionRoy Osherove liefert das aus meiner Sicht bisher beste Buch über Unit Testing. Es gibt viele Bücher die gut sind, seine Erklärung von komplexeren Themen wie dem Mocken von Abhängigkeiten ist aber immer noch unerreicht. Und mit der 2. Ausgabe wurden die Praxisbeispiele und Tipps nochmals besser.

Gerade diese Praxisbeispiele helfen einem dabei auch die komplexeren Bereiche mittels Unit Tests abzudecken. Nur wenn man diese Herausforderungen meistern kann wird man Unit Tests in die eigenen Projekte integrieren.
(ISBN: 978-1-6172-9089-3 | detaillierte Rezension)

 
 

Clean Code

Unit Tests und Refactoring sind Techniken die den Code sauberer machen. Wenn einem diese Richtung gefällt ist Clean Code von Robert C. Martin der nächste Schritt.

Sein Buch geht den Weg weiter und verbindet verschiedenste Erkenntnisse in der Software-Entwicklung der letzten Jahre zu einem Ganzen.
Bei Clean Code ist es aus meiner Sicht aber besonders wichtig das man das Ziel bei all den Regeln nicht aus den Augen verliert. Verständlicher Code sollte immer vor einer in Stein gemeisselten maximalen Anzahl Zeilen für eine Methode gehen.
(ISBN: 978-0-13-235088-4 | detaillierte Rezension)

 
 

Patterns of Enterprise Application Architecture

Patterns of Enterprise Application ArchitectureDas 2. Buch von Martin Fowler in meiner Liste behandelt die Patterns rund um Geschäftsanwendungen. Die Problemstellungen in diesem Bereich sind so grundlegend dass die meisten Entwickler in ihren Projekten damit zu tun haben – ganz egal ob ihre Projekte den Stempel „Enterprise“ tragen oder nicht.

Fowler beschränkt sich nicht nur darauf die einzelnen Patterns aufzulisten, sondern erklärt auch die jeweiligen Vor- und Nachteile. Diese Gegenüberstellung macht für mich den Wert dieses Buches aus, da man nur so eine fundierte Entscheidung treffen kann.
(ISBN: 978-0-3211-2742-6 | detaillierte Rezension)

 
 

Soweit meine aktualisierte Liste von Büchern die ich als “Must-Read” bezeichne. Ich würde mich freuen zu erfahren was andere Entwickler als unverzichtbare Bücher auflisten.

 

Schlagworte: , , ,

Was man von der Baruco 2013 gesehen haben muss

18. November 2013 2 Kommentare

Die Baruco (Barcelona Ruby Conference) ist zwar schon fast 2 Monate her, allerdings sind die Videos erst seit letzter Woche alle online. Die Idee pro Tag ein Video zu veröffentlichen ist recht praktisch um fortlaufen die Präsentationen anzuschauen. Wartet man allerdings vor allem auf die zuletzt gehaltene Präsentation ist dies nicht gerade ideal.

Den Organisatoren gelang es eine Top-Liste an Referenten einzuladen die mit viel Freude und Enthusiasmus ihre Präsentationen hielten oder Workshops durchführten. Da aber nicht jeder 2 Tage Zeit hat um alle Videos anzuschauen habe ich die 5 ausgewählt die man unbedingt sehen sollte:
 

Here Be Dragons” von Katrina Owen (@kytrinyx) handelt nur vordergründig von schlechtem Code. In einer an ein Computerspiel erinnernden Präsentation zeigt Katrina das man nicht ein schlechter Mensch sein muss um schlechten Code zu schreiben. Vielleicht hatte der entsprechende Programmierer ja auch nur einen schlechten Tag oder die Anforderungen änderten sich fortlaufend. Wie man dennoch als Team zusammenarbeiten kann wird ebenso gezeigt wie die dazu passenden Erkenntnisse aus der Spieletheorie.

 

Der 2. Tage wurde von Paolo Perrotta (@nusco) mit der Keynote “Hunters and Gatherers” eröffnet. Dass Evolution nicht linear verläuft dürfte den meisten wohl bekannt sein. Was für Umwege dabei in Kauf genommen müssen zeigt Paolo anhand des Längenproblems. Die Bestimmung der geografischen Länge beschäftigte die Seefahrt für über 2000 Jahre und war das Problem schlechthin. Dies ist nicht nur eine interessante Geschichtslektion, sondern zeigt auch worauf wir uns in der IT einstellen müssen.

 

Wen man von Regeln spricht denken die meisten an Einschränkungen. Wie daraus auch neue Möglichkeiten entstehen können zeigt Sandi Metz (@sandimetz) in “Rules“. Um Ruby Code zu schreiben empfiehlt uns Sandi diese 5 Regeln:

  • Maximal 100 Zeilen pro Klasse
  • Maximal 5 Zeilen pro Methode
  • Maximal 4 Parameter pro Methodenaufruf (keine Hashes als Umgehungslösung)
  • Nur 1 Instanzvariable pro Rails-View
  • Maximal 2 Klassen pro Rails-Controller Action

Wer sein eigenes Projekt gegen diese Regeln prüfen will findet mit sandi_meter das passende Gem.

 

Matt Wynne (@mattwynne) sprach in “Treating objects like people” nicht nur über den Stellenwert der Zusammenarbeit aller im Projekt beteiligten Personen sondern auch über Cucumber. Dieses Projekt ist keinesfalls tot. Obwohl es länger recht still war wird nun wieder aktiv entwickelt und für die nächste Version gibt es zahlreiche interne Verbesserungen. Die Hauptentwickler haben die Firma Cucumber.pro gegründet und bieten nun auch Support und Unterstützung für Unternehmen an.

 

Wie man mit Ruby Spiele für iOS entwickelt zeigte Brian Sam-Bodden (@bsbodden) in “iOS Games with RubyMotion“. Dies geht ganz ohne Objective-C und auf einer unglaublich hohen Abstraktionsebene. Die dafür notwendigen Bibliotheken zeigt Brian ebenso wie weitere hilfreiche Werkzeuge um die Levels zu erstellen. RubyMotion ist definitiv ein Projekt das ich mir einmal genauer anschauen werde.

 

Fazit

Die Baruco 2013 war eine sehr spannende Konferenz die mein Interesse an Ruby deutlich gesteigert hat. Die vorgestellten 5 Videos zeigen einen guten Querschnitt der Präsentationen und wer Zeit hat soll ruhig auch ein Blick auf die Präsentationen von Avdi oder Matz werfen.
 

Schlagworte: ,

Buch-Rezension zu “Smalltalk Best Practice Patterns”

25. Juli 2013 Kommentare aus

Smalltalk Best Practice PatternsSmalltalk Best Practice Patterns” von Kent Beck erschien bereits 1996, doch stosse ich in letzter Zeit immer wieder auf dieses Buch. Überall wird erzählt wie wegweisend dieses Buch sei und wie viel man damit über objektorientierte Programmierung lernen könne. Die Besprechung bei Ruby Rogues in den Folgen 23 und 24 überzeugte mich schliesslich dieses Buch zu lesen – obwohl ich nie in Smalltalk programmiert habe.

Um es vorweg zu nehmen: Es gibt nur wenige Teile in diesem Buch die einzig für Smalltalk eine Bedeutung haben. Der grösste Teil ist so geschrieben das dieser auch für Sprachen wie C#, Ruby oder Java nützlich ist.

 

Viele gute Ideen

Die Tipps zur objektorientierten Programmierung fand ich nicht schlecht. Allerdings waren mir viele Konzepte bereits bekannt und als Einstieg in die objektorientierter Programmierung finde ich POODR besser geeignet.

Was aber in diesem Buch gut dargelegt wird ist das „Wieso?“. Als die Objektorientierung noch nicht so verbreitet war wie heute musste man noch argumentieren. Es brauchte Überzeugungsarbeit und konkrete Beispiele wie damit die Arbeit leichter wird. In heutigen Büchern findet man so etwas leider meist nicht mehr.

Kent Beck verkauft einem seine Empfehlungen nicht als den einzig selig machenden Weg. Jede Entscheidung hat Vor- und Nachteile die man entsprechend Abwegen muss. Mir hat dabei besonders gefallen dass die Nachteile gleich an Ort und Stelle dargelegt werden. So muss man nicht lange Suchen und kann gleich abschätzen ob das Pattern für einen in Frage kommt.

Die Kurzreferenz am Ende des Buches bringt jedes vorgestellte Pattern mit wenigen Sätzen auf den Punkt. Durch das Plus an Informationen gegenüber dem Index findet man auch dann das passende Pattern wenn einem der Name entfallen ist. Diese Zusammenfassung ist zudem als Gedankenstütze äusserst hilfreich.

 

Wie nützlich ist das Buch heute?

Wenn man mit Ruby entwickelt hat das Buch auch heute noch seine Berechtigung. Man erfährt hier den Ursprung von so manchem Sprachkonstrukt und worauf man auch in Ruby achten sollte. Blöcke, Inject() und das Konzept mit dem senden von Meldungen gehen so sehr auf Smalltalk zurück das man die Patterns von Kent Beck 1:1 weiter verwenden kann.

Arbeitet man mit .Net ist der Nutzen nicht so offensichtlich. Obwohl zahlreiche Konzepte von Ruby nach .Net geflossen sind ist die Distanz zu Smalltalk doch deutlich grösser. “Clean Code” und “The Art of Readable Code” greifen zudem viele Ideen aus diesem Buch auf und erklären diese mittels C# (oder Java) – ein Umweg über Smalltalk ist dadurch unnötig.

Seit anfangs 2013 gibt es dieses Buch auch als E-Book. Wäre die Nachfrage danach gering hätte sich der Verlag fast 17 Jahre nach der Erstveröffentlichung diese Mühe sicher nicht gemacht. Mit dem wiedergefundenen Interesse werden vielleicht auch einige der handwerklichen Eigenheiten (wie der Zusammenfassung oder dem Abwägen von Vor- und Nachteilen) in aktuelle Bücher einfliessen – wünschenswert wäre dies allemal.

 

Fazit

Ich finde es immer wieder erstaunlich seit wie vielen Jahren die gleichen Herausforderungen und Probleme gelöst werden müssen. Smalltalk Best Practice Patterns zeigt Lösungen die auch heute noch Code verbessern können. Je nach Programmiersprache braucht es aber einiges an (mentaler) Arbeit bevor man die hier gezeigten Lösungen verwenden kann.

 

Zum Buch

Smalltalk Best Practice Patterns” von Kent Beck, 1996 Prentice Hall, ISBN 978-0134-7690-2, 240 Seiten, Englisch

Schlagworte: , ,

Buch-Rezension zu “Agile Web Development with Rails 4″

4. Juli 2013 Kommentare aus

Agile Web Development with Rails 4Die Veröffentlichung von Rails 4 dürfte für etliche Entwickler ein Anlass sein sich einmal mit diesem Webframework zu beschäftigen. Aber wo soll man anfangen? Web-Tutorials wie Railstutorial.org sind zwar ausführlich, aber noch nicht auf Version 4 aktualisiert und die offizielle Dokumentation ist nicht unbedingt für Einsteiger konzipiert.

Agile Web Development with Rails 4” von Sam Ruby füllt diese Lücke. Die neuste Version dieses Buches befindet sich noch im Beta-Programm, ist aber als E-Book (PDF, epub und mobi) bereits erhältlich. Durch den gelungenen Aufbau ist dieses Buch nicht nur für Einsteiger sondern auch für Rails 3.x Entwickler interessant.

 

Teil 1: Kurzübersicht

Zu Beginn liefert einem dieses Buch einen Schnelldurchgang durch Rails 4. Man erfährt so in 4 Kapiteln was Rails eigentlich ist, wie man bei der Installation vorgehen muss und was man von Ruby wissen sollte.

Damit werden vor allem die Leser ohne vorgängige Erfahrung mit Ruby oder Rails abgeholt und mit dem nötigen Hintergrundwissen für die weiteren Teile versorgt. Wer Rails bereits kennt kann diesen Teil ohne Probleme weglassen.

 

Teil 2: Eine Anwendung erstellen

Dem Buchtitel folgend wird in diesem Teil eine Webanwendung nach agilen Grundsätzen erstellt. Mittels eines Webshops wird sowohl Rails erklärt wie auch gezeigt auf was man achten muss wenn man eine Webanwendung iterativ mit zusätzlichen Funktionen erweitern will. Sehr Praxisnah wird dabei mit einer ganz einfachen User Story begonnen die dann zu immer neuen Wünschen und Anpassungen führt.

So lernt man nicht nur ein neues Framework sondern auch den dazugehörigen Arbeitsfluss kennen. Als Nebeneffekt von diesem Ansatz sieht man auch gleich etliche Werkzeuge und Hilfsmittel die einem das Leben erleichtern können. Auch wenn im Buch selber der Platz für eine ausführliche Erklärung fehlt, so weiss man doch wonach man suchen muss.

 

Teil 3: Das Innenleben von Rails

Im letzten Teil wird gezeigt was im Hintergrund passiert damit Dinge wie Migrationen funktionieren und man von der URL zur richtigen Methode auf dem passenden Controller kommt. Dieses Wissen ist spätestens dann von Vorteil wenn man mit den gewöhnlichen Mitteln und Generatoren nicht mehr weiter kommt.

Muss man dies für den Einstieg wissen? Nein, aber wenn es einem interessiert findet man hier eine gute und tiefgreifende Erklärung. Und zu wissen dass hinter einem rake migrate eine klar definierte Abfolge von Aktionen und nicht etwa Magie steckt kann sehr schnell hilfreich werden.

 

Fazit

Ob man sich zum ersten Mal mit Rails beschäftigt oder nur die Neuerungen von Version 4 kennenlernen will, mit diesem Buch findet man den passenden Einstieg. Durch den iterativen Ansatz bei der Beispielanwendung lernt man nicht nur etwas über Rails, sondern bekommt einen sehr praxisnahen Einblick in dazugehörige Arbeitsweise. Dies wird genutzt um auf die häufigsten Anfängerprobleme hinzuweisen und erspart einem viel Zeit für die Fehlersuche. Daher kann ich dieses Buch allen empfehlen die sich mit Rails 4 beschäftigen wollen.

 

Zum Buch

Agile Web Development with Rails 4” von Sam Ruby, 2013 The Pragmatic Programmers, ISBN 978-1-93778-556-7, 450 Seiten, Englisch

Schlagworte: ,
Follow

Erhalte jeden neuen Beitrag in deinen Posteingang.

Schließe dich 245 Followern an