Jeder der schon mal einem 2 jährigen zu Essen geben musste/durfte, weiss, dass dies eine grosse Herausforderung sein kann. Ich durfte dies vor ein paar Tagen wieder mal bei meiner Tochter erfahren. Ich habe aber auch gemerkt, dass Scrumprinzipien bei der Fütterung behilflich sind. Wollen wir doch mal kurz die verschiedenen Prozesse bei der Fütterung analysieren. (mehr …)
Blog
-
Scrum und Getting things done (GTD)
Scrum (übersetzt Gedränge -> Chaos) und "Getting things done" (GTD, alles strukturiert und ordentlich) haben mehr miteinander zu tun als man denkt.
In der Software Entwicklung bei meinem Arbeitsgeber bin ich massgeblich an der Einführung von Scrum beteiligt. Scrum hat mich so begeistert, also habe ich versucht, die Scrum Ideen auf meine täglichen Arbeiten zu übertragen. Erst später habe ich von GTD erfahren und konnte mit Freude feststellen, dass meine Arbeitsabläufe stark denen von GTD ähneln.
Zusammenfassung Scrum
Scrum gehört zu den agilen Entwicklungsprozessen. Oberstes Ziel von agilen Entwicklungsprozessen ist ein zufriedener Kunde. Der Kunde sieht nach jedem Sprint (Iteration) ein fertiges Zwischenprodukt. Er kann spielen und testen und Feedback geben, ob sich das Projekt/Produkt in die gewünschte Richtung entwickelt. Falls Diskrepanzen zwischen seiner Vision und dem Zwischenprodukt bestehen/entstehen, kann der Produktowner Korrekturen anbringen.
Der ungefähre Scumablauf sieht wie folgt aus:
- Product Backlog mit Userstories füllen und diese schätzen. Eine Userstory umfasst gewünschte Features, welche wiederum aus konkreten Tasks bestehen.
- Wichtigste Userstories durch Productowner selektieren und in Sprintbacklog übertragen. Ein Sprint ist eine Iteration (z.B. 1 Monat oder auch nur 1 Woche). Nach 1 Monat sind die Userstories aus dem Sprint umgesetzt und getestet und die Software ist einsatzfähig.
- Team organisiert sich, damit die Userstories im Sprint umgesetzt werden können. Dazu trifft sich das Team täglich für max 15 Minuten zum Daily Scrum. Wenn ein Sprint definiert ist und sich das Team dazu verpflichtet hat, dann kommen keine neuen Features mehr rein (die müssen dann auf den folgenden Sprint warten).
- Bei Sprintende gibt es die Retrospektive: Was ist gut gelaufen, was schlecht, was wollen wir verbessern.
- Das Zwischen-End-Produkt wird vom Kunden begutachtet, Feedback gegeben und abgenommen. Es geht wieder zu Schritt 2.
Wer es genauer wissen will, es gibt sehr viele Ressourcen. Einfach mal bei Google oder Wikipedia anfangen oder schauen, was es hier im Blog zu Scrum gibt.
Quelle: Wikipedia – Sebastian Wallroth – Der Scrumprozess schematisch dargestellt. Zentral sind die Sprints (Iterationen), welche jeweils ein lauffähiges Produkt erzeugen.
Zusammenfassung GTD
Der GDT Prozess von David Allen sieht eigentlich sehr ähnlich aus. Alle Aufgaben, die reinkommen werden aufgeschrieben. Ziel: 1 zentraler "Posteingang". Dieser kann papierig oder Elektronisch sein, halt was einfacher ist. In regelmässigen Abständen wird dieser Kanal (diese Kanäle) durchgearbeitet und in Kontextlisten sortiert (z.B. @Telefon, @Büro, @Einkaufen usw.) und bestimmt, welche Punkte wann erledigt wird.
Die folgende Grafik zeigt es noch ein wenig ausführlicher auf. Und wer mehr wissen möchte soll einfach mal Google befragen.
Quelle: Wikipedia – René Weber – Der GTD Prozess schematisch dargestellt mit ein wenig mehr Details, als ich sie zusammengefasst habe.
Die Grafik sieht es vielleicht nicht sehr ähnlich (einfach) wie die von Scrum aus, wenn man jedoch alles mal gedanklich durchspielt, dann stellt man doch grosse Ähnlichkeiten fest.
Der Rapsli Prozess
GTD kannte ich bis vor einigen Tagen lediglich vom Namen, wusste jedoch nicht, was sich dahinter verbirgt. So habe ich mein eigenes "Framework" gebaut, welches auf Scrum basiert aber anscheinend viel Ähnlichkeit mit GTD aufweist. Dabei beachte ich folgende Grundsätze:
- Einfachheit. Sonst besteht die Gefahr, dass man an den Prozessen erstickt. Einfache Dinge mache ich lieber.
- Regelmässigkeit. Der Mensch ist ein Gewohnheitstier. Einfache Dinge sind auch einfacher regelmässig durchzuführen.
Mein Prozess sieht daher wie folgt aus:
- Ich habe zwei Backlogs: Eine Excel Tabelle und eine Taskliste (Remember the Milk). Die Excel Tabelle ist für vage Aufgaben, Ideen, interessante aber nicht konkrete Gedanken. In dieser Liste gibt es auch eine Selektion "Ziele". Die Taskliste umfasst explizite Tasks, welche nach der Umsetzung sofort abgehakt werden können.
- Sprintdauer beträgt 1 Woche. Immer am Freitag nehme ich mir 15-30 Minuten Zeit (fest im Terminkalender eingeplant), um mein Backlog durchzuschauen. Unter Umständen ergibt sich aus den Gedanken (aus der Excel Liste) ein konkreter Task. Zudem führe ich eine kurze Selbstreflexion durch, wie ich an meinen längerfristigen Zielen vorankomme und schreibe in ein paar wenigen Stichworten auf, was ich gelernt habe (damit ich beim wöchentlichen Review schnell die vergangenen Lessons Learnt durchschauen kann)
- Täglich schaue ich ganz kurz 1x auf alle Tasks (besonders die ohne Enddatum) und schaue, ob sich etwas davon am kommenden Tag einfach erledigen lässt.
Grösste Herausforderungen
Wichtigster und ebenfalls schwierigster Punk (meine Meinung) ist das konsequente Sammeln von Informationen. Schlussendlich ist es einfach ein Gewohnheitssache, Informationen nicht einfach im Kopf zu archivieren (und damit vergessen), sondern effektiv zu Papier zu bringen.
Was Bringts?
Ich habe viele (meist) kleinere Aufgaben, welche ich leicht vor mir herschieben kann (meistens wenn mich niemand dazu drängt) und hoffentlich (wahrscheinlich) bin ich nicht der Einzige mit diesem Problem. Jetzt jedoch, wenn ich einen Task auf meiner Liste habe, dann gebe ich auch mein Möglichstes, um das zu erledigen. Falls ich es nicht schaffe, dann lege ich mir gegenüber auch Rechenschafft darüber ab.
Meine Frau profitiert ebenfalls davon, denn ich habe endlich die Kartonschachtel, welche seit Wochen im Schlafzimmer steht aus- und weggeräumt.
Was für ein System setzt du ein, um möglichst viel in möglichst wenig Zeit zu erledigen (bzw. überhaupt etwas zu schaffen)?
Foto via Flickr by darkmatter's
-
Schluss mit öden Corporate PowerPoint Präsentationen
Ich finde diese Corporate PowerPoint Präsentationen immer todlangweilig. Die sehen doch immer gleich aus: Irgendwo das Logo, irgend ein Header und ein Footer, wo noch ein wenig Datu, Firmenname usw. drin steht. Dann links ein bisschen Text und rechts ein Bild. Langweilig.
Ich habe mal mit Prezi ein wenig herumexperimentiert. Sehr erfrischend. Besonders um Präsentationen zu erstellen, kann man Mindmappingmässig vorgehen und dann am Schluss alles miteinander verbinden.
Aber auch mit PowerPoint lassen sich extrem cool Präsentationen machen:
-
Drupal Freelancer verdienen mehr als Joomla Freelancer
Ein Drupal Freelancer verdient im Durchschnitt knapp 1000$ pro Projekt, während ein Joomla Freelancer für ein Projekt knapp 500$ verdient. Das ist auf jeden Fall die Aussage einer Studie, welche von DoNanza (grösste Suchmaschine für Heimarbeit und Freelancearbeiten) durchgeführt wurde. WordPress Entwickler sind sogar noch etwas tiefer.
Ich stelle mir die Frage, was zu dieser Kluft führt. Sind Joomla Entwickler weniger talentiert, lieferen schlechtere Qualität und sind daher schlechter bezahlt? Wohl kaum. Als Grund für diese Kluft sehe ich viel eher die unterschiedliche Marktposition von Drupal und Joomla:
Drupal: Anspruchsvolle, grosse Communityprojekte, komplexe Designs, viel Individualismus.
Joomla: KMU und Vereinsseiten.Durchschnittliches Projektbudget bei WordPress-, Joomla- und Drupalprojekten.
Sicher gibt es Ausnahmen. Ich denke jedoch, dass dies in etwa die Richtung aufzeigt. Nehmen wir einfach mal an, diese Annahme stimmt (Kommentar ist offen, falls du anderer Meinung bist), dann gibt es u.a. folgende Variablen, welche das Honorar (Projektbudget) beeinflussen: Projektdauer, Qualifikation des Entwicklers und in der heutigen Globalisierung der Projektumsetzungsort (grosser Unterschied ob in der Schweiz oder in Ungarn).
Anzahl an Projekten in WordPress, Joomla und Drupal
Noch vorweggenommen: Es geht nicht genau hervor, ob die Zahlen auf Themer, Entwickler oder "Modulkenner und Klicker" (also derjenige, der die Seite konfiguriert) bezogen sind, sprich mit oder ohne PHP Kenntnisse. Ich gehe mal einfach davon aus, dass für die Zahlen in Joomla eher weniger PHP Kenntnisse benötigt werden als für Drupal (eine gute Drupalsite ohne PHP zu bauen ist sehr utopisch).
Drupalprojekte dauern länger
Logischerweise, je länger ein Projekt dauert, umso teurer wird es. In der Studie wäre es daher noch interessant, dies zu erfahren, was wir leider nicht können. Daher müssen wir auf unsere Annahme zurückgreifen: Drupal: grosse Communityprojekte, Joomla: KMU. Wir können somit annehmen, dass die Drupalprojekte im Durchschnitt länger dauern. Ein Drupalentwickler kann somit auch weniger Projekte pro Jahr durchführen. Kein Grund also, dass Drupal Entwickler besser verdienen.
Drupal Entwickler sind besser qualifiziert als Joomla Entwickler
Verbleibt noch die zweite Variable: Qualifikation des Freelancers. Und wie lässt sich diese messen. In der Wirtschaft ist (oftmals) der Stundensatz ein Gradmesser für Qualifikation (ob der Lohn von Gates oder Vasella lediglich von ihrer Qualifikation abhängt…???). Als ich als Drupal Freelancer während dem Studium gearbeitet habe, war mein Stundensatz noch bedeutend tiefer als er dies jetzt sein würde. Alles was sich geändert hat, ist ein Masterdiplom, welches ich besitze und 2 Jahre Erfahrung. Interessant wäre, wenn noch irgend ein Java oder .Net CMS in der Statistik wäre. Ich würde davon ausgehen, dass dort das Einkommen pro Projekt nochmals massiv höher ist, da die Einstiegshürde höher ist und höhere Ansprüche an den Entwickler gestellt werden. Vor ein paar Monaten habe ich mal ein wenig mit dem Java Springframework experimentiert (wenn Drupal ein Kinderdisney Buch ist, dann ist das Java Springframework "Krieg und Frieden" von Leo Tolstoi). Ein Javaprojekt umzusetzen erfordert daher auch ein höheres Budget, da mehr Komplexität und besser Qualifizierte Entwickler benötigt sind.
Ich gehe daher mal davon aus, dass Drupalentwickler tendenziell besser ausgebildet sind als dies ein Joomla Entwickler ist. …ich lass mich mal wieder auf eine hitzige Diskussion ein…. Ich denke jedoch, dass allgemein in PHP Projekten gut ausgebildete Entwickler/Architekten fehlen.
Drupal fehlen kompetente Entwickler
So. Ich habe mir wieder Feinde geschaffen. Ich denke jedoch, dass es wirklich ein Problem von Drupal/PHP ist, gute Software Entwickler/Engineere zu finden (nicht dass es die nicht gibt, aber neben den guten Entwickler gibt es auch sehr viel Ramsch). Die Art und Weise, wie ein ausgebildeter Entwickler Probleme löst ist komplett anders, als dies ein "Garagenprogrammierer" macht. Die Fähigkeiten, Probleme zu erkennen, zu verstehen und selbstständig Lösungen zu entwickeln ist anspruchsvoller als man denkt. Es ist jedoch für einen ausgewachsenen Software Engineer, welcher 4-5 Jahre studiert hat, wenig attraktiv ein paar Websites zu bauen. Ein Tiefbauengineer baut wohl auch lieber den Gotthard Tunnel als ein Sandloch. Wäre ein interessantes Thema für einen eigenen Artikel. Daher ist es wohl auch so schwierig gute PHP Leute zu finden.
Nicht zuletzt ist es auch ein Lohnproblem. Die Grafik von indeed.com zeigt dieser sehr schön auf. PHP ist verhältnismässig einfach zu erlernen und wird in eher einfacheren Projekten eingesetzt. Die Löhne sind daher auch tiefer.
Quelle: indeed.com
Fazit
Wer schlussendlich besser verdient lässt sich nicht wirklich aus den Zahlen belegen. Schade ;). Es zeigt jedoch wieder mal, dass für alle ein Markt vorhanden ist. Joomla und WordPress wachsen schnell mit einfachen und kleineren Projekten. Drupal sucht sich die grösseren, individuelleren Projekte heraus, obwohl hier vermehrt auch Anstrengungen im Gang sind, Drupal als Produkt (z.B. OpenPublish, OpenAtrium usw) besser am extrem schnell wachsenden Joomla Markt zu platzieren.
Was sind deine Erfahrungen? Verdienen Drupalentwickler besser?
-
Drupalseiten einfach für Mobile aufbereiten (Tutorial) – Teil II
Im ersten Teil ging es darum, das Theme zu wechseln, sobald ein Benutzer mit einem Mobiltelefon kommt. Das ging ja auch ganz einfach, wir verlieren dabei jedoch Cachingmöglichkeiten. Für kleinere Seiten sicher kein Problem, falls es etwas grösser wird jedoch undenkbar.
Caching wird ab einer bestimmten Popularität der Webseite unumgänglich. Daher ist es doch sehr erstrebenswert, auch für unser Problem eine Lösung zu finden. Wollen wir doch zuerst mal ganz schnell ein paar Cachingmechanismen in Drupal anschauen:
- Einzelne Elemente cachen (z.B. Blockcache). Nehmen wir an, wir hätten einen Block der die Weltformel berechnet und das dauert 20 Sekunden. Wir wollen natürlich nicht, dass diese bei jedem Seitenaufruf neu berechnet werden wird, da das Resultat jeden Tag gleich bleibt: Wir berechnen den Block einmal und zwischenspeichern (cachen) das Resultat. Dem nächsten Besucher wird dann der bereits berechnete Block serviert.
- Für den anonymen Besucher wird die ganze Seite gecached. Z.B. der Page Cache oder Boost. Vom Prinzip her genau gleich wie das Beispiel vorher, aber halt auf die ganze Seite bezogen.
Nehmen wir also an, wir schalten den Page Cache an:
- Ein Besucher (Fritz) kommt. Drupal und die Datenbank rechnen und rendern. Die Seite wird ausgegeben und das ausgegebene Stück HTML wird zwischengespeichert.
- Ein weiterer Besucher (Hans) kommt auf die selbe Seite. Bevor Drupal überhaupt irgend etwas macht, wird im Cache geschaut, ob da evtl. bereits etwas vorhanden ist: Hurra, ja: Seite servieren und schluss.
- Ein IPhone Jünger (Steve, natürlich via IPhone) kommt auf eine neue Seite (die weder Fritz noch Hans vorher besucht haben). Drupal schaut im Cache, findet nichts. Drupal merkt, aha, hier kommt ein IPhone daher, also Theme umstellen. Jetzt wird gearbeitet und die Seite zusammengestellt und das HTML schlussendlich ausliefern und im Cache ablegen.
- Hans folgt Steve. Drupal schaut wieder im Cache und findet eine Seite, weiss jedoch nicht, dass die im Cache liegende Seite eigentlich nur für Mobilgeräte gültig ist. Hans bekommt nun die Mobileseite ausgeliefert… er wird wohl nicht wirklich begeistert sein.
So. Wir haben also zwei Möglichkeiten. Beide sind in Drupalumsetzbar:
- Die Mobileseite so auslieferen, dass Drupal für Mobile und Desktop das Gefühl hat es wäre eine andere Seite (mittels Subdomain)
- Den Cachingmechanismus so anpassen, so dass er nach Theme unterscheidet.
Ich habe mich für die erste Möglichkeit entschieden, da diese viel einfacher umsetzbar ist:
- Einen Domainalias http://m.rapsli.ch anlegen (die Domain zeigt auf den gleichen Server wie rapsli.ch), ein sog. Domain Alias. Leider wird diese Möglichkeit nicht von allen Hostern angeboten (besonders nicht von den günstigen).
- Jetzt geht es nur noch darum, mobile Geräte auf diese Domain weiterzuleiten. Dazu dient ein einfacher Eintrag in der Datei .htaccess
1. RewriteCond %{SERVER_NAME} !^m.rapsli.ch$ [NC]
a bunch of user agent tests
- RewriteCond %{HTTP_USER_AGENT} (nokia|symbian|iphone|blackberry|android) [NC]
- RewriteRule ^(.*)$ http://m.rapsli.ch [L,R=301]
Kurze Erklärung dazu:
Zeile 1: Da es es lediglich um einen Domain Alias handelt, verwenden beide Domains das gleiche .htaccess. Um zu vermeiden, dass ein Mobilgerät immer wieder weitergeleitet, machen wir auf der Subdomain nichts.
Zeile 2: Wir stellen die Bediengung, dass es nokia, symbian, iphone,…. ist
Zeile 3: Falls das alles zutrifft, dann machen wir die Weiterleitung auf m.rapsli.chDas war es dann eigentlich auch schon. Jetzt können wir den Cache auch wieder einschalten.
-
Drupalseiten einfach für Mobile aufbereiten (Tutorial)
Mit dem IPhone ist das mobile Internet in eine neue Runde gegangen. Das WAP hat ja nicht wirklich den Durchbruch geschafft. Ich glaube ich war 1x auf einer WAP Seite mit meinem Handy und auch genauso schnell wieder weg. Fürchterlich. Zweckdienlich, aber nicht wirklich spassig.
Jetzt sieht es schon ganz anders aus. Täglich bin ich eigentlich mobile im Internet unterwegs. Zu den Websites welche ich fleissig aufrufe gehören u.a. Tagesanzeiger.ch und Twitter. Erst da merkt man, wie viel angenehmer es ist, auf einer solche Seite zu lesen anstatt eine ganz normale, welche nicht fürs Mobile optimiert ist. Auf diesen Seiten muss man dann nämlich immer blöd nach rechts scrollen. Nervig.
Noch nerviger: Das Feed wird nur als Teaser freigegeben. Das führt dann dazu, dass man auf die Seite gehen muss um den kompletten Eintrag zu lesen und die Seite ist dann meistens nicht für Mobile optimiert -> diese Einträge lese ich dann in vielen Fällen nicht.
Meine Bitte: komplettes Feed rausgeben. Alle Mobileleser werden euch dafür dankbar sein.
Also, ich habe mich immer über mein eigenes Blog genervt. Ich konnte es zwar einigermassen auf meinem Android G1 lesen, aber wirklich gut war auch das nicht. Falls jemand anderer Meinung ist, kann er das gerne im Kommentar geben
Mobile Theme Tutorial – 10 Minuten
Voraussetzungen:
- Browscap installieren.
- [Update] Mobile Theme installieren (danke redpanda)
- Seven Theme aktivieren.
Das ist eigentlich auch schon alles. Das ganze noch konfigurieren und schon macht man alle Mobilebenutzer glücklich:
admin/settings/browscap
admin/build/themes/settings/global
Jetzt noch die Blöcke ein wenig umkonfigurieren. Das Seven Theme kennt links und rechts keine Regions. Sprich, falls man dennoch Blöcke haben möchte, dann würden die wohl ganz unten im Footer am meisten Sinn machen.
Schon fertig und das Internet hat wieder eine Seite mehr, welche auch für Handybenützer einfach lesbar ist. Natürlich lässt sich das ganze noch beliebig ausbauen und verschönern.
Einen kleinen Wehrmutstropfen gibt es allerdings: Falls der Pagecache aktiviert ist, dann funktioniert das ganze nicht. Ausweg: Eine Subdomain, z.B. http://m.rapsli.ch und dann für diese Domain das Theme wechseln.
PS: Irgendwie klappt es nicht so ganz mit Screenshots auf meinem Android. Wäre cool, wenn jemand einen Screenshot irgendwo hochladen könnte. Danke.
-
Scrum in einem Drupalprojekt Teil III
Im Teil II dieses Artikels habe ich die allgemeinen Randbedingungen beschrieben. Hier in diesem Beitrag möchte ich ein paar Aspekte beleuchten: Wo sind Fehler aufgetreten, was ist gut gelaufen, was müssten wir besser machen, usw.
Fangen wir doch mal mit den Positiven Sachen an
- Kunde war alle zwei Wochen für einen Nachmittag bei uns, um das Projekt anzuschauen und offene Fragen zu besprechen, sowie die Planung der nächsten Aufgaben. Das ganze Team war jeweils während des Eröffnungsteils anwesend. Dadurch hatte auch das ganze Team ein "Gespür" für den Kunden.
- Projektstart war extrem positiv. Das Team war voll drin, wurde nicht durch andere Projekte/Arbeiten abgelenkt. Es herrschte super Stimmung. Jeder fühlte sich als Teil des Teams und Projekts. So macht es auch gleich mehr Spass. Die positive Stimmung ist auch immer gut für die Kommunikation. Dailys Scrums waren in dieser Zeit sehr aufgestellt, unterhaltsam und zugleich informativ.
- Drupal ist hervorragend für Scrum geeignet. Bereits nach einigen Tagen gibt es eine funktionierende Anwendung, die zwar noch Ecken und Kanten hat, aber immerhin läuft.
- Unser Scrumboard war zwar sehr einfach, aber sehr effektiv. Wir konnten uns voll und ganz auf den Scrumprozess konzentrieren, ohne dass wir uns noch mit irgendwelchen Tools hätten plagen müssen. Von daher für den Einstieg ein super gute Lösung: Jeder sieht auf einen Blick, wer gerade woran arbeitet und wer evtl. noch Hilfe braucht.
Es gibt aber auch einige Mängel
- Das Projekte verwässerte gegen Projektabschluss: Mitarbeiter wurden aus dem Team gezogen (Todsünde) und viele Ablenkungen durch andere Projekte/Arbeiten waren hier die Hauptkomponenten. Wenn man den Projektverlauf ein wenig genauer anschaut, dann waren die ersten Sprints sehr effektiv: Es gab viel Arbeit, jeder war beschäftigt. Gegen Ende des Projekts gab es dann keine grossen Baustellen mehr, sondern noch schleifen und feilen an den Ecken. Irgendwie gab es hier noch einen Koordinationsmangel im Kleinen.
- Leider mussten wir feststellen, dass der Kunde seinen Pflichten nicht nachkam und so extrem viel Inhalt fehlte. Das führte dazu, dass: Migrationen nicht gemacht werden konnten, ein Gesamtbild der Seite sehr spät möglich war und eben User Stories als (theoretisch) abgeschlossen waren, aber halt noch nicht getestet werden konnten, weil noch Inhalte/Daten Fehlten. Beispiel: Paymentschnittstelle Postfinance. Eingekauftes Modul, installiert. Task abgeschlossen. Es fehlten Zugangsdaten, um das ganze auch richtig zu testen. 1 Monat später kamen die dann: 1/2 Tag Aufwand, um es einzurichten und daraus resultierende Fehler noch zu beheben.
Was würde/werde ich im nächsten Projekt anders machen
Den Kunden noch besser mit einplanen und einbeziehen. Dazu gehört meiner Meinung:
- Dem Kunden bei Projektbeginn klip und klar machen, dass sein Mitarbeiten unbedingt notwendig ist. Auch der Kunde hat Pflichten! Er muss verstehen, dass wenn er seine Sachen nicht tut, die logische Folge ist, dass sich das Projekt verspätet.
- Bessere Definition von fertig. Solange man Userstories abschliessen kann, welche nur die Aufmerksamkeit des Entwicklers brauchen, ist es wohl relativ klar. Sehr oft ist man jedoch auf irgendwelche Daten angewiesen: Zugangsdaten zu Schnittstellen, Musterdaten usw. Fertig ist ein Task erst, wenn diese Sachen mit drin sind … der Kunde muss das auch verstehen.
-
Umstieg von TYPO3 auf Drupal
Vor 2 Wochen habe ich bei ein paar Entwicklern eine kleine Drupaleinführung für Entwickler gemacht. Dabei waren ca. 7 Entwickler anwesend. Einige kamen aus der Joomla Welt (bzw. haben dort Erfahrungen gesammelt) und andere von TYPO3. Einen Drupal vs. Joomla Beitrag habe ich ja bereits geschrieben… und der scheint die Gemüter hochzutreiben. Daher ein paar Zeilen zu Drupal vs. TYPO3.
Ich muss fairerweise sagen, dass ich keine tiefen TYPO3 Kenntnisse habe. Ich habe es vor langer Zeit mal lokal installiert und musste an der Uni einmal ein paar Inhalt ändern. Mag durchaus sein, dass sich seither einiges geändert hat… ich bin schon mal gespannt auf Kommentare ;).
Wie dem auch sei. Aus dem Gespräch mit den TYPO3 Kennern kommt immer das eine oder andere heraus. TYPO3 scheint auf jeden Fall ein sehr mächtiges Werkzeug zu sein. Respekt. Der grosse Unterschied zwischen Drupal ist jedoch sehr grundlegend:
Inhalte (sog. Nodes) in Drupal landen alle in einem riesigen Topf. Alle sind gleich. Es gibt keine Struktur und es gibt keine eigentlich Seiten, sondern nur lose Inhalte. Es liegt nun am Bauer einer Seite, diese Strukturen herzustellen, dazu gibt es diverse Möglichkeiten: Taxonomy, Inhaltstypen, CCK.
TYPO3, so wie ich das sehe, hat Seiten. Sprich: Ich lege eine Startseite, eine About us und eine Kontaktseite an. Dann kann ich natürlich auch Hierarchien anlegen, welche dann in einem schönen Menubaum dargestellt werden. Ich bearbeite jedoch die Seite als ganzes. Möchte ich also einen Inhalt von A nach B verschieben, dann mache ich das wirklich physikalisch… kopieren (wahrscheinlich kann man auch irgendwelche Verküpfungen machen, sollte ein Inhalt doppelt vorhanden sein).
In Drupal ist wie gesagt der Grundgedanke anders und viel weniger auf solche starren Seiten ausgelegt, sondern Inhalt erstellen und dann über Ansichten an den entsprechenden Orten erscheinen lassen.
So, ich lasse mich sehr gerne belehren… Für alle Drupal Fans: Hier kann man mal ein wenig mit Typo3 spielen.
Hier ein paar Screenshots aus dem Backend, wenn eine Seite erstellt wird:
-
Techup.ch – Meetings für Techies
Bin erst gerade vor kurzem über die Seite tech.ch gestolpert. Ausgezeichnet. Ich habe sogar mit Freuden festgestellt, dass es einige Events in Basel gibt. Canoo veranstaltet ein treffen (wobei ich wohl mit meinen Java Kenntnissen keine grosse Hilfe bin.
Wieder einmal jedoch ist alles in Zürich. Wird endlich mal Zeit, dass auch hier in Basel etwas stattfindet. Aber auch sonst hat es einige äusserst interessante Beiträge mit dabei.
Die Seite ist einfach und übersichtlich. Genau so mag ich es. Ein Klick auf die Tags filtert die Beiträge wie erwartet heraus. Einziges Feature, welches ich vermisse ist eine direkte Einbindung in Google Calendar, via iCal oder so ähnlich (wäre natürlich hübsch wenn es auch gefilterte ginge). … ob sie wohl bereits daran arbeiten?
-
Scrum in einem Drupalprojekt Teil II
Vor zwei Monaten habe ich einen ersten Scrum Erfahrungsbericht geschrieben. Damals standen wir noch am Anfang des Projektes. Jetzt zwei Monate später stehen wir mehr oder weniger am Ende. Ein guter Zeitpunkt, um ein kleines (oder grösseres) Fazit zu ziehen.
Wer nicht weiss, was Scrum ist, soll doch am Besten mal bei Wikipedia vorbeischauen. Dort gibt es eine ausführliche Erklärung
Zuerst einige Randbedingungen:
- Als Backlog dient Jira. Eine ältere Version ohne Agile/Scrum Unterstützung
- Sprintdauer sind zwei Wochen.
- Teamgrösse: 4 Entwickler und 1 Designer
- Das Projekt basiert auf Drupal. Es ist eine Tageszeitung mit diversen Schnittstellen an Redaktionssysteme und SDA.
Der Prozess sah ungefähr wie folgt aus:
- Retrospektive. Dazu musste jedes Teammitglied zu den folgenden 4 Punkten Auskunft geben:
- Teamgeist
- Zufriedenheit mit den Tasks
- Ablenkung von Aussen
- Kommunikation im Team
- Backlog schätzen. Wir haben es mit sog. Scrum-Pokerkarten gemacht. Ich persönlich fand diese Methode extrem nützlich.
- Sprint erstmals grob zusammenstellen
- Dem Kunden als ganzes Team zeigen, was wir gemacht haben
- Sprint definitiv festlegen
- Fragen und Details im kleinen Rahmen mit dem Kunden diskutieren
- … sprinten… daily scrum … sprinten … daily scrum… und dann fängts wieder von vorne an
Für die Sprintplanung haben wir ein einfaches Flipchart verwendet, das ungefähr so aussah:
Die blauen Zettel stellen User Stories dar. Die gelben Zettel die daraus resultierenden Tasks. Die Tafel stand in unserem Büro und so hatte jeder stets im Blick, was noch offen ist.
Von der technischen Umsetzung gingen wir grob gesagt wie folgt vor:
- Design kam geliefert als Photoshop Datei
- Drupal Grundinstallation, diverse Grundinhaltstypen
- Zentrale Elemente für die Zugriffsberechtigung auf Artikel
- Implementation der diversen Schnittstellen
- Erstellung der Übersichtsseiten
- Aufräumarbeiten und der ganze Rest
Die ganzen Entwicklungen haben wir in Features gepackt und dann via SVN regelmässig (1x pro Stunde) auf den Entwicklungsserver gestellt. Dadurch hat jeder Entwickler laufend die Änderungen von den anderen Teammitgliedern auch bei sich gehabt und ist zu jederzeit aufgefordert, Bugs in Jira als solches festzuhalten. Kleinere Bugs haben wir daher nicht immer gleich sofort gesammelt, sondern sog. "Bugdays" geplant, an denen sich das Team ausschliesslich Bugs widmet. In diesem Projekt hielt sich die Anzahl an Bugs massiv in Grenzen (oder kommen noch 😉 daher hatten wir auch keine wirklichen "Bugdays".
Damit sind jetzt auch die Randbedingungen klar. Um diesen Eintrag nicht noch weiter in die Länge zu ziehen, werde ich die daraus gezogenen Erfahrungen in einem nächsten Blogpost schildern, denn es gibt doch die eine oder andere Lehre.