„The Social Network“ – ein Film von und für Programmierer

5 Kommentare

Gestern Abend hab ich den Film „The Social Network“ über Mark Zuckerberg den Gründer von Facebook gesehen. Meiner Meinung nach ein Must-Seen für Programmierer, denn es werden darin (unter anderem) 3 Punkte aufgezeigt, warum sein „Webprojekt“ so erfolgreich war:

1. Finde die simple Idee
Wenn man mal erfolgreiche Ideen/Produkte vergleicht, wird man feststellen, das bei den allermeisten eine simple Idee zugrunde lag, mit welcher sich das entsprechende Produkt von allen anderen abgegrenzt hat. Die Betonung liegt hierbei auf „simpel“ – einfach, unkompliziert, selbsterklärend. (=> KISS)
Bei Facebook war es die Exclusivität, die man plötzlich mit einer niedrigeren Einstiegshürde erreichen konnte und mit der „das wichtigste“ des Uni Alltags virtuell und einfach abgebildet wurde.

2. Geh in den Tunnel
Immer wieder war davon die Rede, eine Person ist gerade im Tunnel und darf deshalb nicht gestört werden. Ich behaupte mal, dass wenn man sich in seine Programmierung vertieft hat, sich also alle Sinne ohne Ablenkung um den Code drehen, ist man 3 mal so effizient, wie wenn man „aus dem Schlaf heraus“ loslegen soll.

3. Begib dich in eine kreative Umgebung
Als schon klar war, das Facebook „cool“ ist (Zitat), ziehen die Entwickler nach Kalifornien. Die erste Szene in deren Haus zeigt, wie Sie Blödsinn man machen und vom Dach des Hauses in einen Pool springen – drinnen hockt einer gerade an nem Rechner.
Wenig später (im gleichen Haus) sind zwei Mädls am Party machen: Playstation, Bong, Saufen. Dahinter hocken ne Handvoll Entwickler im Tunnel.
Ok, das mag etwas übertrieben sein und scheint schon fast sogar Punkt 2 zu widersprechen, aber Inspiration ist nun mal etwas, was nicht von alleine kommt. Kreative Umgebung sieht immer anders aus, jeder hat seine eigenen kreativen Bedürfnisse: Musik, Kunst, Natur… aber wohl eher selten grauer Büroalltag!
Was ich damit sagen will: macht aus eurem Arbeitsplatz eine Umgebung in der ihr euch wohl fühlt.

Natürlich sind das nicht alle Voraussetzungen um erfolgreich zu sein, geschweige denn guten Code zu schaffen. Aber so zumindest das Grundlegende, was man oft übersieht.
Mehr Tipps und Tricks findet ihr im CCD-Wertesystem. :)

PS: ich mag Facebook nicht. Ich glaub ich lösch mich jetzt.

Advertisements

MVC Model geht auch ohne Datenbank!

14 Kommentare

Ich möchte mal ganz kurz etwas Frust über die implementierten MVC Pattern in den ganzen Frameworks loswerden, die ich in meinem kurzen Entwicklerleben verwendet habe:
Warum wird in der abstrakten Schicht der MVC Implementierung immer davon ausgegangen, dass hinter einem Model zwangsläufig eine Datenbank liegt. Ein Model ist doch nur die Abbildung irgendwelcher Daten die wo auch immer her kommen können, oder?! Zum Beispiel können Daten aus einem HTTP Request oder einer statischen Datei kommen, richtig?!

Also wenn dann sollte es einen Mapper geben, der aus der Datenbank die Models zaubert. Aber dass das Model seine eigenen Ursprung kennt finde ich äußerst nervig, denn wenn ich dann mal ein Datenbank unabhängiges Model schreibe, muss ich alle Methoden überschreiben, die irgendwas mit der Datenbank anstellen wollen.

So. Hab ich jetzt MVC falsch verstanden oder einfach nur noch nicht die richtigen Frameworks gefunden?

Modularität ist ein Segen!

2 Kommentare

Jetzt arbeite ich am zweiten Shopsytem diese Woche und ich kann einfach nur kotzen.
Bitte … bitte … wenn du eine Webapplikation strickst: Mach sie Modular!
Dabei sollte jedes Modul und jede Klasse austauschbar, erweiterbar und am besten auch wiederverwendbar sein – und das am besten OHNE irgend eine Datei überschreiben zu müssen.
Selbst „Kern“ Modul sollte man austauschen können. Das würde vieles soviel einfacher machen.

Magento ist da ein sehr schönes Vorbild, auch wenn andere Bereiche des Systems nicht so top sind, was Modularität anbetrifft, kann man sich da echt ein Stück von abschneiden.

nicht private Eigenschaften vermeiden

Hinterlasse einen Kommentar

Heute bin ich zusammen mit einem Kollegen mal unsere internen Checkstyle Regeln durchgegangen um die Sinnhaftigkeit jeder einzelnen gegebenenfalls zur Diskussion für alle Entwickler freizugeben. Dabei sind wir unter anderen auf folgende interessante Regel gestoßen:
Eigenschaft X soll private sein„.
Mit dieser Regel sollen alle protected und public Eigenschaften (=Felder, Properties, Klassenvariablen) vermieden werden. Meine Kollege meinte sogar, dass selbst auf private Eigenschaften am besten nur über getter und setter zugegriffen werden sollte – also aus der eigenen Klasse heraus. Ausgenommen sind nur Konstanten.

Die Vorteile dieser „Privatisierung“:

  • die Sichtbarkeit kann genauer eingestellt werden
  • fehlerhafte Werte können abgefangen werden (auf default/fallback Werte zurückgreifen)
  • es ist möglich, Objekte erst beim Aufruf zu instanzieren (Lazy Loading)
  • AOP kann eingesetzt werden (=> Sicherheit, Caching, Tracking/Logging)

private Methoden vermeiden

4 Kommentare

Ich muss zugeben, ich hab schon lange nichts mehr geschrieben. Aber dieser Blog ist weder tot noch ist es einfach nur eine „Sommerpause“. Ich bin grad am überlegen, wie ich diesen Blog neu ausrichten kann, da ich meiner Meinung nach (noch) nicht in der Lage bin, regelmäßig qualitative Beiträge zu schreiben. Mehr dazu aber wenn es dann soweit ist.

Jetzt erst einmal der Grund für diesen Post: wozu brauch man private Methoden?!
Jede private Methode schränkt Entwickler ein, die entsprechende Klasse nicht effektiv anpassen zu können. Will man kleine Details verändern ist man entweder gezwungen, die Klasse umzuschreiben (ist bei PHP möglich, nicht aber bei Java zum Beispiel) oder von dieser Klasse zu erben und die aufrufende Methode zu kopieren und umzuschreiben. Beides ziemlich doof, weil das eine die Updatefähigkeit einschränkt und bei der anderen „Lösung“ jede Menge Code dupliziert wird.
Aktuell bin ich der Meinung, man verwendet in 98% der Fälle protected anstelle von private Methoden. Und je weniger ein Methode macht – also je mehr die Funktionalität einer Klasse auf verschiedene Methoden aufgetrennt ist, desto einfacher ist es Änderungen an der Klasse elegant und schnell durchzuführen.

Anmerkung: Dieser Post ist aus aktuellem Anlass entstanden. Ich habe mich in dieses Thema nicht hineingelesen oder damit ausführlicher beschäftigt – dieser Post ist also eher als eine Art Theorie zu betrachten.