Archive for July, 2009

Seit dem ich Code schreibe, steht für mich ein klarer und verständlicher Code an oberster Stelle. Ich hatte dann vor ca. eineinhalb Jahren Code Complete und The Pragmatic Programmer gelesen und dadurch die ersten Antworten bekommen, WIE man den Code unter Kontrolle hält. Anfang 2009 sind wir – ich und Stefan – durch den Podcast von Hanselman und Uncle Bob auf das Thema SOLID gestoßen – und darüber auch eine ausgiebige Diskussion geführt. Eins war uns klar: die Ideen, die dahinter stecken, könnten die Antwort auf unsere Suche sein.

Deshalb hat mich sehr gefreut, als ich von der Seite Clean Code Developer erfahren habe. Ihr Inhalt hat mich sofort begeistert. Sie beschreibt einen – wahrscheinlich DEN – möglichen Weg um ein professioneller Softwareentwickler zu werden.

Am letzten Wochenende auf dem .NET Open-Space-Süd habe ich das große Vergnügen gehabt, Stefan Lieser, einen der Gründer von Clean Code Developer-Seite kennen zu lernen und so konnte ich in den 2 Tagen viel über den Weg von einem Creepy-Code-Programmer zu einem Clean-Code-Programmer erfahren.

Die Grundidee ist ganz einfach: genauso wie ein Arzt oder ein Architekt, muss auch ein professioneller Softwareentwickler Verantwortung für seine Arbeit und für die Ergebnisse dieser Arbeit übernehmen. Er/sie muss sicherstellen, dass der Code korrekt, evolvierbar und effizient ist und dass er selbst immer sein Bestes gibt. Damit ist nicht gemeint, dass jeder ein Guru sein muss. Nein, professioneller Softwareentwickler ist derjenige, der an einem Wertesystem festhält und immer die Qualität des Codes vor den Augen hat.

Viele werden sagen “Wozu die Mühe, es funktioniert auch so!”. Klar, wenn man nur für den Jetzt programmiert. Dann, nach kurzer Zeit passiert das unvermeidliche: jemand – oder der Entwickler selbst – muss den furchterregend schlechten Code bugfixen/verändern. All diese Entwickler, die solche Aufgaben hatten, werden Tests zu schätzen wissen. Diese Tests kosten zwar etwas Mühe aber bescheren einem einen ruhigen Schlaf.

Zu einem genauso großen Problem führt, wenn man das elementarste aller Prinzipien nicht respektiert: Don’t-Repeat-Yourself (DRY). Wie oft passiert, dass man eine Methode, ein Verhalten anpassen muss und überall nach verstreuten Kopien vom Code suchen muss? Könnt ihr jedes Mal garantieren, dass ihr alle erwischt habt? Das wäre keine Frage, wenn der Entwickler des Codes das DRY-Prinzip respektiert.

Der Code, den ein Entwickler schreibt, gehört meistens nicht ihm. Ich bin sicher, keiner von uns möchte als “Creepy-Coder” beschimpft werden, wenn jemand anderer unserer Code verstehen oder weiterentwickeln muss.

Nimmt eure Arbeit ernst und werdet ein professioneller Entwickler. Ihr werdet nach kürzester Zeit die Freude an einem korrekten und qualitativen Code entdecken und auch eure Teamkollegen und Chefs werden dafür dankbar sein.

kick it on dotnet-kicks.de

Comments 1 Comment »

Wir sind zu viert früh morgens in München aufgebrochen, um bei unserer ersten .NET Open Space-Veranstaltung teilzunehmen.

Da wir eine relativ lange Anfahrt hatten, waren fast alle schon da, als wir ankamen. Es waren um die 60 Leute.
Während der Vorstellungsrunde haben wir gemerkt, dass das Open Space nicht nur von Gurus besucht wird, sondern auch von Einsteigern. Wir hatten befürchtet, dass wir dort fehl am Platz sind, da wir relativ neu in der .NET-Community sind und noch relativ wenig Wissen weitergeben können. Aber wir wurden freundlich aufgenommen und können Jedem nur empfehlen, beim nächsten Mal dort hinzugehen. Einen schnelleren Weg, Wissen aufzubauen, gibt es nicht!

Falls sich jemand nicht mehr an uns erinnert, hier ein Bild von uns 🙂


(von links nach rechts: Andreas Seebauer, Stefan Kölle, Thomas Christian, Christina Hirth)

Es gab zwar keine vorher festgelegten Themen, aber diese wurden vor Ort vorgeschlagen und danach demokratisch bestimmt. Es wurden sehr interessante Bereiche besprochen, aber leider konnte man nicht in jeden Open Space gleichzeitig. 🙂

Für uns am interessantesten waren:
MVC, DDD, IoC und DI (danke an Albert, Markus, Thomas, Peter, Stefan und Sergey)

Das Themenboard :

Am Sonntag hat uns besonders die Clean-Code-Development-Runde gefallen. Wir sind dabei, dies in unserem Team umzusetzen. Für alle, die es nicht kennen, gibt es hier alle Informationen.

Die Organisation war einwandfrei. Das Essen war lecker und Getränke waren massenhaft vorhanden. Danke an Thomas und Alex.

Raum 5 war auch das absolute Highlight. Es war immer sehr entspannend da oben.
Leider haben wir die Party verpasst, da wir nicht dort übernachtet haben. Wir hätten zu gerne Alberts Bauchtanz gesehen. 🙂

Beim Gewinnspiel hat natürlich Stefan den Hauptpreis (eine Telerik-Lizenz) gewonnen. 🙂

Auch einen Tag nach dem .NET Open Space Süd sind wir immer noch voller Begeisterung und müssen das Erlernte erst einmal verarbeiten. Für uns ist jetzt schon klar, dass wir unbedingt beim nächsten Mal wieder dabei sein wollen.

Wir raten wirklich jedem Programmierer, der besser werden möchte, das nächste Open Space zu besuchen. Man trifft dort freundliche und teilweise sehr erfahrene Entwickler, die ihr Wissen gerne weitergeben.

Bis zum nächsten Mal.

Comments No Comments »

Angeregt durch die Diskussion auf dem Open-Spaces zum Thema schemalose Datenbanken, werden wir heute bereits die Vorabversion unserer StupidDB als open-source releasen.

Die StupidDB entstand bei uns aus der Notwendigkeit, immer wieder Objekte und Files schnell und einfach zu speichern, dies serverlos und trotzdem skalierbar und hochverfügbar vorzuhalten. Die StupidDB lässt sich am besten wie folgt beschreiben:

StupidDB ist ein einfaches Objektspeicherungs-Framework auf dem Filesystem. Vergleichbar mit dem WebCache kann man in der StupidDB jegliches Objekt ablegen, welches kosteneffizient auf dem Filesystem gespeichert wird. Geladen werden können Objekte und Binärdaten mit einem eindeutigen Key und einer Partition. Den echten Speicherort auf der Festplatte ermittelt StupidDB selbst. Durch Replikation des Filesystems z.B. per Windows-DFS ist zudem eine einfache Hochverfügbarkeit und Skalierbarkeit der Datenbasis herzustellen.

Angeregt durch einen Blogeintrag von tilllate.com letztes Jahr, entstand bereits vor einem Jahr die erste Version von StupidDB, welches bis zum Blogeintrag nur aus einem Konzept bestand. Leo Büttiker hat zwar ein leicht anderes Konzept als unsere Implementierung, in den Kernpunkten ähnelt sich aber das Design. StupidDB bekam durch diesen Blogpost damals jedoch seinen Namen.

Für folgende Anwendungsszenarien sehen wir StupidDB als geeignet:

  • Userdaten wie Fotos und Mediadaten, die eine Datenbank nur unnötig aufblähen
  • temporäre Daten
  • Statusdaten
  • Versionierung von Daten

Als Vorteile gegenüber z.B. MogileFS, CouchDB zählt für uns vor allem, dass kein zentraler Server für die Datenbank benötigt wird, sondern nur ein Share im Netz. Die Implementierung ist dadurch enorm vereinfacht. Mit weiteren Windows-Board-Mitteln kann man danach das ganze System um Hochverfügbarkeit und Skalierbarkeit einfach ausbauen.

Die Nutzung selbst ist denkbar einfach. Folgendes Mitarbeiter-Objekt möchte ich speichern.

65 public class Mitarbeiter

66 {

67 public int Id { get; set; }

68 public string Name { get; set; }

69 public string Vorname { get; set; }

70 public string Ort { get; set; }

71 public string Plz { get; set; }

72

73 public string VollerName

74 {

75 get { return string.Format(“{0} {1}”, Vorname, Name); }

76 }

77 }

Dazu nutzt man die Put-Methode der StupidDB.

20 IStupidDB stupidDB = new StupidDB(“test”);

21 Mitarbeiter mitarbeiter = new Mitarbeiter

22 {

23 Id = 1,

24 Name = “Christian”,

25 Vorname = “Thomas”,

26 Ort = “Rosenheim”,

27 Plz = “83026”

28 };

29 stupidDB.Put( “TestPartition”, “EinMitarbeiter”, mitarbeiter );

Um das gleiche Objekt wieder zu lesen, nutzt man mal eine Get Methode. Die Parameter sind Partition und Key:

32 Mitarbeiter mitarbeiterAusgelesen =

33 (Mitarbeiter)stupidDB.GetObject(

34 “TestPartition”,

35 “EinMitarbeiter”,

36 typeof(Mitarbeiter)

37 );

38 if (mitarbeiterAusgelesen != null)

39 {

40 Console.WriteLine(“Name des Mitarbeiters: {0}”,

41 mitarbeiterAusgelesen.VollerName);

42 }

Die StupidDB selbst wird über die app.config definiert.

3 <configuration>

4 <configSections>

5 <section name=stupidDB type=Aztec.StupidDB.DBConfigCollection, Aztec.StupidDB, Version=1.0.0.0, Culture=neutral allowLocation=true allowDefinition=Everywhere/>

6 </configSections>

7 <stupidDB>

8 <DB name=test root=temp\test tiefe=3 versionierung=false />

9 </stupidDB>

10 </configuration>

Wer sich den aktuellen Code einmal ansehen möchte, kann dies gerne unter folgendem Link ansehen:
https://stupiddb.svn.sourceforge.net/svnroot/stupiddb/trunk

kick it on dotnet-kicks.de

Comments 7 Comments »

Es ist soweit, morgen geht es los: unsere erste Open Space Veranstaltung.


.NET Open Space vom 11.07. bis 12.07.2009 in Ulm

Wir fahren zu viert hin, alle sehr gespannt und erwartungsvoll, mit sehr viele Fragen in den Taschen.

Ich habe auch noch eine geheime Frage, worauf ich eine Antwort finden hoffe: warum sind außer mir keine Frauen dabei !! 🙂

Comments 2 Comments »