Follow my new blog

Mittwoch, 22. Oktober 2008

Photosynth - Rundumblick ganz einfach

image Den Eindruck zu verewigen, den man als Mensch mit einem Blick oder gar einem Rundumblick hat, ist schwer. Eine Videokamera ist nicht immer zur Hand, ein "Photo Stitcher" recht umständlich zu bedienen, ein 360° Objektiv teuer. Also was tun?

Microsoft Photosynth nutzen!

Ein echt cooles Tool aus dem Forschungslabor von Microsoft, das nun den Weg in die breite Öffentlichkeit gefunden hat.

Mit Photosynth ist der Rundumblick ein Kinderspiel:

  1. Einfach Fotos schießen nach Belieben. Sie im Kreis drehen für einen 360° Blick oder um das "Objekt der Begierde" fotografierend herumwandern. Egal.
  2. Fotos zu Photosynth hochladen.
  3. Photosynth macht daraus eine "Galerie", in der man sich mit der Maus bewegen kann: sich in der Szene drehen, nach oben/unten blicken, heranzoomen.

Ja, heranzoomen geht auch, denn man kann Totale und Close-Up mischen. Photosynth erkennt das und macht die Szene "tiefer", wo mehr Details verfügbar sind.

Ich habe das grad mal mit einem Blick von meinem Balkon ausprobiert. Hier das Ergebnis:

Die Detailbilder sind leider etwas unscharf, weil die Belichtung nicht optimal war. Aber der Gesamteffekt und -nutzen wird schon deutlich, denke ich. Am Wochenende werde ich daher mit meiner Frau losgehen und für ihren Beruf relevante Szenerien einfangen. Daraus machen wir dann Synths und stellen sie auf ihre Homepage (die wir gerade einem Redesign unterziehen). Dann können sich ihre Kunden einen viel besseren Eindruck davon machen, was sie erwartet.

image Meine Frau ist Bestatterin :-) Die Szenerien werden also Friedhofskapelle, Ruhewald oder Anonymes Feld auf dem Ohlsdorfer Friedhof sein. Photosynth macht da keinen Unterschied ;-)

Montag, 20. Oktober 2008

Ist der Fachkräftemangel hausgemacht? [OOP 2009]

image Im Karriere Special der SIGS-DATACOM findet sich ein Artikel mit dem Titel "Neue Software-Entwickler braucht das Land". Hört sich interessant, weil realistisch an. Ich kenne nur Firmen, die Entwickler suchen, aber keinen, der ohne Projekt wäre. Wir brauchen also neue bzw. mehr Entwickler. Auch der Statistik offener Stellen darf man im Großen und Ganzen wohl trauen. Die spricht von mehreren Zehntausend unbesetzten IT-Stellen. Soweitsogut.

Erhellend finde ich den Artikel dann jedoch nicht. Er ergeht sich in sehr pauschalen Beschreibungen von Projektszenarien und allgemeinen Anforderungen an Entwickler. Nichts, was wir nicht schon gehört hätten. Mehrfach hören, schadet zwar auch nicht, doch diesen Beitrag finde ist so durchweg im Überflug, dass er mir nichts bringt. Und er gipfelt dann in 8 gut gemeinten Tipps zur Fitness für Entwickler. Er soll mitbringen:

  • Fähigkeit, in kurzfristig zusammengestellten internationalen Projektteams schnell produktiv zu werden
  • Branchenkenntnisse
  • Beratungs- und Requirements Engineering-Fähigkeiten
  • große, auch internationale Mobilität, da häufig Einsatz vor Ort beim Kunden
  • Laufende Anpassung des Know-Hows an neue Trends
  • örtliche und zeitliche Flexibilität
  • Erfahrung mit Standardsoftware und Software-Frameworks
  • Methodenwissen (Entwicklungsprozess und Tools)

Als ich diese Liste gelesen habe, da musste ich denn doch lachen. Oder weinen? Ja, es ist wohl eher zum Weinen. Denn wer solches fordert, der muss sich nicht wundern, dass er immer noch Entwickler sucht. Solche Entwickler müssen wirklich erst "neu gebacken werden". Ich kenne zumindest keinen.

Ein näherer Blick auf die Tipps enthüllt, warum das so ist:

Unzweifelhaft ist, dass ein Softwareentwickler "laufende Anpassung des Know-Hows an neue Trends" vornehmen muss, "Methodenwissen" braucht und "Erfahrung mit Standardsoftware und Software-Frameworks" erforderlich sind. Das alles gehört zum Kern des Berufs "Softwareentwickler", zu seinen technisch-fachlichen Kompetenzen, zu seinen Hardskills. (Was genau mit "Methoden" und "Standardsoftware" gemeint ist, bliebe zwar zu diskutieren und ist auch wohl unterschiedlich nach Lösungsdomäne (z.B. Mobile Software vs. Games vs. Web-Anwendungen), aber nehmen wir mal an, dass wir da einen Konsens fänden.)

Auch Branchenkenntnisse sind sicherlich nicht aus dem Kompetenzportfolio des Softwareentwicklers wegzudiskutieren. Allerdings: Sie brauchen Zeit. Meist mehr Zeit als der Erwerb der (grundlegenden) Fachkompetenzen.

Sind Softwareentwickler immer auch Berater?

image Wie stehts nun aber mit den "Beratungs- und Requirements Engineering-Fähigkeiten"? So sehr ich auch für einen Aufbau von Softskills bei Softwareentwicklern bin (s. dazu auch meinen Beitrag "Software braucht Soft Skills" im selben Heft) - ich wüsste nicht, warum zum Beruf "Softwareentwickler" zwangsläufig "Beratungs- und Requirements Engineering-Fähigkeiten" gehören sollten. Ein Softwareentwickler ist eben ein Entwickler von Software und kein Berater und kein Requirements Engineer. Wer Fähigkeiten zur Beratung oder zur Anforderungserhebung sucht, der sollte nicht Softwareentwickler, sondern Berater und Requirements Engineers suchen. Ein gutes Auftreten beim Kunden, die Fähigkeit zum Zuhören und zur Zusammenarbeit mit dem Kunden sollen natürlich alle Softwareentwickler haben. Aber Zuhören und Zusammenarbeit sind nicht gleich Beratung und Anforderungsanalyse. Autor Rolf Unterberger schießt hier für meinen Geschmack weit übers Ziel hinaus. Das kann nur Frust und Unsicherheit erzeugen.

Kann man Teams kurzfristig bilden?

Jetzt Teamfähigkeit: Selbstverständlich sollen Softwareentwickler Teamkompetenz besitzen. Softwareentwicklung ist Teamwork. Und das ist umso schwerer, je weiter die Teammitglieder kulturell und zeitlich und politisch voneinander entfernt sind. (Auch im selben Raum!)

Herr Unterberger fordert aber quasi Unmögliches, wenn er die Fähigkeit zur Produktivität verlangt, wenn solche Teams kurzfristig zusammengestellt werden. Unmöglich ist das nämlich, weil in seiner Formulierung von den "kurzfristig zusammengestellten internationalen Projektteams " ein Widerspruch steckt. Es ist ein Widerspruch, den Manager nur ungern zur Kenntnis nehmen. Es kann nicht sein, was nicht sein darf. Denn dass es überhaupt ein Team gibt, wo kurzfristig und auch noch kulturübergreifend Menschen an ein Projekt gesetzt werden, das ist unmöglich.

Teams, d.h. Gruppen von Menschen mit gemeinsamen Werten und klaren Aufgabenverteilungen und gegenseitigem Vertrauen usw., echte Teams, die brauchen Zeit. Menschen müssen zu Teams zusammenwachsen. Dekretieren kann man das nicht. "Du, du, du und du, ihr seid jetzt ein Team! Los, hopp! Und schon produktiv sein! Ab morgen alle 1000 km von zuhause fort." Das funktioniert nicht. Egal, welche Teamkompetenz Entwickler mitbringen.

Teams brauchen Zeit. Das echte, "systemische" Team und das "organisatorische Team" sind zwei ganz unterschiedliche soziale Systeme. Echte Teams müssen durch gute Führung aus Gruppen geschmiedet werden. Zeit und solch gute Führung ist nun aber nicht jedes Managers Sache. Also fordert der Manager, dass Softwareentwickler am besten mal solche Superkompetenzen mitbringen sollten. Die würden ihm nämlich das Leben leichter machen. Aber: das ist unmöglich und führt daher nur zu Frust und Unsicherheit bei denen, die solche Tipps lesen.

Flexibilität über alles?

Zuguterletzt die üblichen Flexibilitätsforderungen. Softwareentwickler - wie quasi jeder moderne Arbeiter - sollten nicht zu sehr an ihrer Zeit oder an bestimmten Orten hängen. Flexibilität in allen vier Dimensionen ist gefragt.

Das ist natürlich keine neue Forderung. Ihr Alter macht sie nur nicht einlösbarer oder weniger kontraproduktiv.

Menschen brauchen einfach Fixpunkte in ihrem Leben, Planbarkeit, Heimat, soziale Bindungen (die mit Ort und Zeit zu tun haben). Nimmt man ihnen diese qua Jobbeschreibung, können sie nicht mehr optimal motiviert sein. (Dass es immer Ausnahmen gibt, Menschen, die in der Ferne aufblühen, die oft wechselnde Herausforderungen suchen, die sich voll reinhängen wollen, das ist unzweifelhaft. Aber sollten ihre Fähigkeiten (oder Persönlichkeitsstörungen?) deshalb zu einer branchenweiten Norm erhoben werden?)

Aber halten wir uns nicht mit solchem Grundsätzlichen auf. Nehmen wir mal an, es gibt nicht nur einzelne, sondern viele, die überhaupt wie gefordert flexibel sein können und wollen. Wo sind die denn zu finden? Ich denke, da gibt es keine zwei Meinungen: bei denen, die jünger als 30 oder maximal 35 Jahre sind.

Was bedeutet das für die freundliche Tipp-Sammlung des Artikels? Sie richtet sich an "die Jugend", an Menschen am Anfang ihrer Berufstätigkeit. Wenn wir das Erwerbsleben mal noch bis zum 67. Lebensjahr denken, dann dauert es von einem Ausbildungsabschluss mit ca. 25 Jahren knapp 40 Jahre. Laut Anforderungen des Artikels an Menschen, die die Softwareentwicklung zu ihrem Beruf erkoren haben, können von diesen 40 Jahren aber höchstens 10 professionell und attraktiv für Arbeitgeber geleistet werden. Denn nach den ersten 25% des Erwerbslebens erfüllen Softwareentwickler 2 von 8 Kriterien nicht mehr. Sie werden dann - ganz menschlich - unflexibel, weil sie sich den Wunsch nach Heim und Familie erfüllen wollen. Heute München, morgen Dubai, übermorgen Lima? Das ist nichts für Softwareentwickler, die auch mal jemand anderes sehen wollen als hyperflexible Teamkollegen.

Der Widerspruch

Aber selbst wenn Autor Rolf Unterberger mit flexiblen Softwareentwicklern bis 35 Jahre zufrieden wäre, er fände doch keine, die seine Anforderungen erfüllen. Denn die stehen im Widerspruch zueinander. Flexibilität widerspricht Erfahrung. Wer jung ist, mag flexibel sein. Aber er kann durch sein geringes Alter eben nicht die harten und weichen sonstigen Kompetenzen entwickelt haben, die die anderen Punkte fordern.

Wer in den ersten 10 Jahren seiner beruflichen Praxis als Softwareentwickler steckt, der kann nicht "Branchenkenntnisse" haben, "Beratungs- und Requirements Engineering-Fähigkeiten" besitzen und in "kurzfristig zusammengestellten internationalen Projektteams schnell produktiv" werden. Das ist Quatsch!

Er kann zwar von allem vielleicht ein bisschen. Von dem einen mehr, vom anderen weniger. Aber er kann es nicht in der Solidität, wie es der Artikel mit seinen pauschalen Forderungen suggeriert, dass er es können sollte.

Hausgemachter Fachkräftemangel

Und so kann ich nur konstatieren: Wenn die Liste des Mitzubringenden im Artikel von Rolf Unterberger wirklich ernstgemeint ist, dann ist der Fachkräftemangel hausgemacht. Solche Fachkräfte kann es nicht geben. Solche Forderungen sind Illusionen von Managern, die wenig Bezug zum Metier der Softwareentwicklung und zu den Menschen haben, die sie entwickeln. Im milden Fall sind solche Manager so stark unter Druck, dass sie keinen anderen Ausweg wissen, als den Druck so an die Anzustellenden weiterzugeben. Im anderen Fall sind solche Manager... nun, ich sage mal... nein, das verkneife ich mir doch.

Fazit: Nicht jeder Karriererat ist ein guter Rat! Nicht jeder Checkliste sollte man folgen. Der gesunde Menschenverstand sollte auch bei der Karriereplanung eingeschaltet bleiben.

Networking pur - Der .NET Open Space Event in Leipzig

image Wer den Erfahrungsaustausch sucht, interessante Leute aus der DACH-Entwicklergemeinde kennenlernen will oder etwas rund um .NET lernen will, der ist mit dem .NET Open Space Event gut bedient. Zum ersten Mal fand der am vergangenen Wochenende in Leipzig statt - und wird dort hoffentlich auch in Zukunft seine Heimat haben. Ich freue mich jedenfalls schon auf den nächsten.

Anders als bei den üblichen Entwicklerkonferenzen, wo ein Content Management die Themen und Referenten plant, organisiert sich ein Open Space Event selbst. Die Agenda ist offen, nur das Oberthema - hier: .NET - steht fest, damit sich grundsätzlich Gleichgesinnte zusammenfinden.

Und dann gehts los! Sind die Gleichgesinnten "auf einem Haufen", hat jeder die Möglichkeit, ein Thema vorzuschlagen, über das er gern sprechen möchte. Dabei ist es egal, ob er oder sie kompetent zum Thema ist oder nicht. So habe ich z.B. am 2. Tage das Thema "Funktionale Programmierung" vorgeschlagen, ohne Experte darin zu sein. Mich hat einfach der Meinungsaustausch gereizt und vielleicht die eine oder andere Meinung eines unter den Gleichgesinnten anwesenden Experten. Dass dann da keiner war, sondern wir eher alle nur Einäugige oder Blinde, hat dem Erfolg jedoch keinen Abbruch getan.

image

Stefan Lieser leitet die Themenfindung. Foto: Kurt Häusler.

Wenn ein Thema genügend Interessenten findet, finden die sich bei einem Open Space Event in einem von den Organisatoren bereitgestellten Raum zusammen und diskutieren einfach. Das war´s. Keine weiteren Vorgaben, keine Verpflichtungen, kein großes Regelwerk.

Interesse an einem Thema und Lust auf Gespräch in einer mehr oder weniger großen Runde, das ist alles. So waren die Runden manchmal klein (wie beim Thema Parallelverarbeitung, wo wir zu knapp zehnt waren), ein andermal groß (wie beim Thema Testen, an dem alle knapp 90 Teilnehmer mitdiskutiert haben).

image

Bei großer Teilnehmerzahl und vielen Meinungen kann der Austausch durch einen "Fishbowl" moderiert werden. Drei Diskutanten sitzen vorne und tauschen sich aus - bis sie durch Zuhörer, die etwas beitragen möchten, abgelöst werden. Foto: Kurt Häusler.

Zu jeder Zeit konnten max. 4 Themen gleichzeitig in Gruppen besprochen werden. Das hat manches Mal für Frust gesorgt, weil es mehr als ein interessantes Thema gab. Aber es war ok. Breit interessierende Themen wurden deshalb als "general session" alleinstehend behandelt, entweder in einem Raum oder in mehreren Gruppen.

Der Wert des .NET Open Space war für jeden Teilnehmer damit proportional zu seinem Engagement: Wer ein Thema dringend behandeln wollte, hat es für ein Gruppengespräch vorgeschlagen. Wer in einer Gruppe etwas fragen/sagen wollte, hat einfach den Mund aufgemacht. Es gab keinen Rückzug darauf, dass da ja ein Sprecher nur sein Wissen loswerden wollte, um anschließend in einer Speaker Lounge zu verschwinden. Jeder war Zuhörer und Sprecher gleichzeitig - wenn er/sie wollte. So ergab sich ganz natürlich ein intensives Networking, wie man es auf keiner üblichen Konferenz findet.

image

Networking at its best im Foyer des Veranstaltungsortes. Foto: Kurt Häusler.

Rundum also ein innovativer Event, der mir etwas gebracht hat. Ob der Technical Summit von Microsoft im November das auch leisten wird, weiß ich hingegen noch nicht. Manchmal ist weniger Aufwand eben mehr. Denn der .NET Open Space war bescheiden ausgestattet, da er keine weitläufigen Show Floor mit Ausstellerbuden oder Handouts oder Giveaways zu bieten hatte. Macht aber nichts. Alles war völlig ausreichend. Vor allem das Caterin mit süßen Sachen :-)

image

Das süße Catering war sehr verführerisch. Der schlanken Linie der Open Space Besucher wären ein paar mehr Gemüsesticks beim nächsten Mal zuträglicher ;-) Foto: Kurt Häusler.

Der .NET Open Space hat zum ersten Mal stattgefunden. Open Spaces als Eventformat sind aber nicht neu. In England und den USA hat die Alt.Net Gemeinde sie schon länger für sich entdeckt. Und anno 2001 hatte sogar Microsoft in Deutschland schon einmal einen Open Space im Anschluss an den Technical Summit veranstaltet. Damals aber nur offensichtlich wenig memorablem Erfolg, da ich keinen getroffen habe, der sich daran erinnern konnte. Nun, so haben manche Ideen eben ihre Zeit. Die für Open Spaces scheint nun endlich gekommen. Lange überfällig und deshalb gut so.

Gerade deshalb ist natürlich auch noch nicht alles perfekt gelaufen in Leipzig - wenn denn das überhaupt ein Kriterium ist. Die Themenfindung könnte schneller laufen und lief auch am zweiten Tag schon schneller. Ein wenig mehr "Moderation" könnte sein, damit auch "schwächere Stimmen" einmal Gehör finden oder Sessions nicht so einfach "ins Normale" abdriften. Denn wenn aus dem Gespräch ein - wenn auch wohlmeinender - Monolog wird, der Raum dunkel ist und mehr als eine Stunde Powerpoint den Takt angibt, dann... ja, dann ist der Abstand zum Üblichen zu gering. Dann verlagert sich das Gespräch wieder ins Zufällige und in die Pausen.

Doch das sind Kleinigkeiten. Unterm Strich hat mit der Event sehr gut gefallen. Ich habe auch ansonsten nur positive Stimmen gehört. Gratulation und Dank an das Event-Team Alexander Groß, Stefan Lieser, Torsten Weber!

image

Die Teilnehmer können es nicht lassen. Auch nach Stunden des Networkings während der Gruppendiskussionen setzen sie die Gespräche bei der Abendveranstaltung in einer gemütlichen Leipziger Kneipe fort. Foto: Kurt Häusler.

Dienstag, 14. Oktober 2008

ADC 08 - Runden auf einem runden Event

imageimage Das hat Spaß gemacht! Runden drehen auf der ADC 2008. Mit einem Segway! Zuerst im Schildkrötenmodus mit nur 9km/h, dann mit 20km/h. Huiiii... das ging ab auf dem Parkplatz des Veranstaltungsortes in Frankenthal. Eine Leichtigkeit des Fahrens, die man nicht vom Fahrrad oder Auto kennt. Denn ein Segway-Gefährt lässt sich so einfach Steuern wie die eigenen Beine: total intuitiv. Eine kleine Gewichtsverlagerung in die Wunschrichtung und schon ändert der Segway seinen Kurs. Vor, zurück, auf der Stelle - und dann auch Treppen runter :-)

Mit dem Segway hatte Hannes Preishuber als Veranstalter der ADC 2008 ein glückliches Händchen für einen Hingucker, ein Gimmick, das Techis begeistert. Weiter so! Auf der ADC 2009 sollte es ein paar mehr Segways geben und einen Parcours zur Entwicklung der Fahrgeschicklichkeit...

Doch nicht nur die Runden mit dem Segway haben die ADC 2008 zu einem runden Event für mich gemacht. Die Stimmung der Teilnehmer war gut, der Abendevent launig - mit einem Quiz, bei dem angesichts des ganzen Neuen auch mal solide Kenntnisse frührerer Technologien wie GWBASIC gefragt waren.

Das Fachliche kaum auch nicht zu kurz. Keine Sorge. Neno Loje und Bernd Marquardt hatten in bewerter Manie ein solides Programm zusammengestellt - das zeitgemäß einiges in punkto Parallelprogrammierung zu bieten hatte.

Dazu habe ich auch beigetragen mit einem Vortrag zum Thema Microsoft Concurrency Coordination Runtime. Asynchrone Programmierung liegt mir grad sehr am Herzen. Der zweite Vortrag drehte sich um Unit Tests mit Attrappen (Mock Objects). Und dann habe ich spontan noch die Herausforderung angenommen, die Keynote zu halten. Neno hatte mich am Wochenende angerufen, ob ich für den kurzfristig verhinderten Frank Fischer von Microsoft einspringen könnte mit einem architekturorientierten Thema. Auch wenn ich dafür dann etwas improvisieren musste, bin ich doch ganz zufrieden mit dem Vortrag. Er gab mir die Chance, die Notwendigkeit zu einem Bewusstseinswandel vom synchronen zum asynchronen Denken bei der Planung von Software darzustellen. Keynotes sollen ja nicht so technisch sein ;-)

image

Wer mag, kann sich den Beispielcode der Attrappen- und CCR-Vorträge hier herunterladen. Enjoy!

Nachtrag:

Hier der Beispielcode der Architektur-Workshop Tage zum Download:

Sonntag, 12. Oktober 2008

Zusammenwachsen - Wie die Wiesn Frontend und Backend verbindet

O/R Mapping (ORM) ist mehr als LINQ to Sql oder NHibernate. Die ORM-Welt ist vielfältiger - und wird nun auch noch bunter. Denn ein Hersteller von "bunten Steuerelementen" für WinForms, ASP.NET, WPF und Silverlight will jetzt Farbe in die manchmal recht schwarz/weiß gezeichnete ORM-Welt bringen.

image Telerik - noch immer eher ein Newcomer, wenn auch ein starker, und noch nicht so bekannt in Deutschland - hat den ORM-Hersteller Vanatec in sein Portfolio integriert. Vanatecs O/R Mapper OpenAccess, der einer der ersten für die .NET- und Java-Plattform war, schließt nun die Klammer, die Telerik mit seinen Steuerelementen um .NET-Anwendungen geöffnet hatte.

Die offizielle Verlautbarung findet sich hier. Inoffiziell wurde die Entscheidung jedoch schon beim jährlichen Treffen des Vanatec Expert Advisory Council (EAC) bekannt gegeben. Vanatec hatte sich schon vor Jahren den Kontakt zur Community auf die Fahne geschrieben, um möglichst dicht am Markt zu entwickeln. So wurden alljährlich Entwicklungsfortschritte und "Communitybefindlichkeiten" auf einem EAC-Treffen diskutiert - das nicht zufällig während der Münchener Oktoberfestzeit statfindet ;-)

image 
v.l.n.r.: Jörg Neumann, Tilman Börner, Neno Loje, Ralf Westphal

Die Freude der hier abgebildeten EAC-Mitglieder ist deshalb aber nicht nur der guten Stimmung und Wiedersehensfreude zuzuschreiben. Eher wird umgekehrt ein Schuh draus: Auslöser für gute Stimmung und lachende Gesichter ist der Gewinn für die Entwicklergemeinde, den der Zusammenschluss von Telerik und Vanatec bedeutet.

Der ist zum einen finazieller Art, da die Telerik Suite ohne Preisaufschlag (!) nun auch noch OpenAccess enthalten wird, also einen ORM, der hier und heute mehr bietet als LINQ to SQL und den Kinderkrankheiten, unter denen Microsofts Entity Framework noch länger leiden wird, lang entwachsen ist.

Zum anderen besteht der Gewinn für die Community darin, dass Telerik nun versuchen wird, zusammenwachsen zu lassen, was zusammengehört: Frontend und Backend, Darstellung und Objekte, View und Model. Denn da gibt es noch einiges in punkto Datenbindung zu tun. Relationale Daten in Objekte wandeln (mapping) und dann auch noch mit ihrer Beziehungsvielfalt leicht editierbar anzuzeigen (data binding): das ist immer noch eine Herausforderung. Da muss immer noch zuviel Infrastrukturcode geschrieben werden, der vom eigentlich Wichtigen, der Geschäftslogik, ablenkt.

Wir dürfen also gespannt sein auf die Ideen, die Telerik+Vanatec in den nächsten Monaten umsetzen. Auf dem EAC-Treffen wurde dazu schon leidenschaftlich diskutiert... worunter am Ende zum Glück die Eintracht nicht gelitten hat:

image

Pro sit! - möge uns allen der Zusammenschluss nützen.

PS: Die Telerik Geschäftsführung aus Bulgarien war natürlich auch mit auf dem Oktoberfest. Aber es schien, als sei deutsche Ausgelassenheit - oder besser: oktoberfestige - deren Sache nicht so ganz. Ist ja auch gewöhnungsbedürftig, selbst für mich als Nordlicht.

Peter Brunner (rechts), der Geschäftsführer von Vanatec, war dafür umso besser gelaunt :-)

image

Wer würde das nicht verstehen? Es werden besonders spannende Monate für ihn und seine Jungs bis zum nächsten Oktoberfest :-)

Donnerstag, 28. August 2008

Die Aschenputtel-Strategie - Ein 80:20-Kriterium für neue Technologien und Konzepte

Wie und wann entscheiden Sie sich eigentlich für den Einsatz einer neuen Technologie oder eines Konzeptes? Wann legen Sie mit IronPython los? Wie entscheiden Sie, ob Sie den Entity Framework benutzen?

image Aschenputtel konnte die Tauben um Entscheidungshilfe bei der Sortierung von Linsen bitten - "die Guten ins Töpfchen, die Schlechten ins Kröpfchen". Sie hingegen sind auf sich allein gestellt. Wie entscheiden Sie zwischen Gutem und Schlechtem, d.h. Lernwürdigem und dem, was Sie ignorieren?

Diese Frage sprang mir bei der Lektüre von Kevin Hazzards Serie über F# in den Sinn. F#, Microsofts funktionale Programmiersprache, nimmt gerade Anlauf, um in den Mainstream der Programmierung zu springen. Aber lohnt sich der Lernaufwand für F# wirklich? Dito beim ADO.NET Entity Framework. Dito für die Windows Workflow Foundation. Dito für alles Neue, Vielversprechende.

image Wir leben im Überfluss. An Optionen für unseren Werkzeugkasten mangelt es nicht. Und wenn wir die Qualität unserer Arbeit ständig steigern wie auch produktiver werden wollen, dann tun wir gut daran, immer wieder Neues zu lernen. Ohne eine Strategie ist es jedoch schwer, aus dem Überfluss für uns Geeignetes auszuwählen. Deshalb schließen viele Entwickler die Augen und blenden den Überfluss auf Jahre aus - um dann bei einem Jobwechsel mit einer dramatisch veränderten Welt konfrontiert zu werden, die es ihnen sehr schwer macht, auf die aktuellen Züge aufzuspringen. Eine Vogel-Strauß-Strategie ist also denkbar ungeeignet für mittel- und langfristigen Erfolg in unserer Branche.

Eine Fahne-im-Wind-Strategie bringt es andererseits aber auch nicht. Niemand tut gut daran, möglichst immer beim Neuesten schnellstmöglich dabei zu sein. Bleeding edge technology heißt nicht umsonst so: an forderster Entwicklungsfront kann man sich leicht schneiden und viel Zeit in den Sand setzen.

Von welcher Strategie können Sie sich nun aber helfen lassen? Ich nenne sie mal...

Die Aschenputtel-Strategie - oder: 80:20 einmal anders

Aschenputtel hat zwar nicht diese Strategie angewandt, aber sie hatte zumindest eine Strategie (der Delegation) und war damit organisierter als viele Softwareentwickler, wenn es um die Trennung des "Guten" vom "Schlechten" geht.

Meine Idee einer Strategie lautet nun ganz simpel:

Etwas Neues ist "gut" oder "lernwürdig" oder "adaptionswert", wenn es bei 80% der Projekte zu 20% "Einsparungen" führt.

image Die 80:20 habe ich natürlich aus Effekthascherei gewählt :-) Das Verhältnis ist durch die Pareto-Verteilung zu Ruhm gekommen und insofern ein eye catcher. Letztlich geht es mir aber nicht um 80% der Projekte, sondern nur um einen genügend großen Prozentsatz, den jeder selbst für sich bestimmen muss. Ich halte nur nichts davon ihn viel höher zu setzen. Wer nach Neuem sucht, dass in 100% oder 95% der Fällen "der Bringer ist", wird kaum fündig und somit de facto zum Vogel Strauß.

Auch die 20% sind nur ein Anhaltspunkt. Die Einsparungen sollen einfach deutlich sein. Sie sollen sie nicht mit der Lupe suchen müssen. Sie sollen nicht in zufälligen Fluktuationen untergehen und auch nicht unterhalb der Messbarkeitsgrenze liegen. Da sich die Branche mit Messungen eh schwer tut, ist also ein Prozentsatz nötig, der Verbesserungen mit dem bloßen Auge erkennbar macht. Sie müssen sich auch dem oberflächlichen und gelegentlichen Betrachter recht leicht erschließen.

Nochmal etwas laxer und im Ganzen formuliert: Wenn Sie auf eine neue Technologie stoßen, einem neuen Konzept begegnen, dann fragen Sie sich: Bringt mir diese Neuerung in einem großteil meiner Projekte einen deutlichen Vorteil?

Hört sich eigentlich einfach an oder gar normal. Fragen Sie sich das nicht ohnehin? Durchaus - aber dennoch glaube ich, dass diese ausdrückliche Formulierung noch etwas bringt.

  1. Durch diese Formulierung wird betont, dass eine Neuerung nicht immer, sondern nur häufig einen Vorteil bieten muss. Allzuleicht verfallen Softwareentwickler und ihre Chefs nämlich in ein Optimierungsdenken, dass mit weniger als 100% kaum zufrieden ist. 100% oder Perfektion sind aber für den Fortschritt und gerade für Lernprozesse eine zu hohe Marke.
  2. Die ausdrückliche Formulierung macht nicht nur dem Betrachter etwas bewusst, sondern ist eine Mahnung an den Anbieter der Neuerung. Sie führt ihm nämlich die Pflicht vor Augen, den Betrachtern es möglichst schnell und einfach klar zu machen, wieviele und wie sie Vorteile bietet. Als Betrachter will ich nämlich nicht lange rumrätseln, ob und wie F# oder das Entity Framework vielleicht und eventuell helfen könnten. Ich will konkret und mit Bezug auf meine bisherige Praxis erfahren, warum und wie sie mir etwas bringen.

Gerade der zweite Punkt vernachlässigen die Beseelten aber häufig. Wer über F# oder SQL Service Broker oder MSF oder Software Factories schreibt, ist selbst meist so davon überzeugt, dass er sich in allgemeinen und abstrakten Beschreibungen der visionierten Vorteile ergeht - dabei aber den noch nicht beseelten Betrachter aus den Augen verliert.

Gerade auch bei der oben erwähnten F#-Serie ist mir das aufgefallen. Kevin ist so begeistert, dass er bei aller Mühe mir in 4 Folgen seiner Serie nicht deutlich gemacht hat, warum ich F# lernen sollte. (Und das, obwohl ich schon ein F# Buch im Schrank stehen und zu 2/3 gelesen habe.) Er kommt einfach nicht auf den Punkt. Er greift nicht an den vorteilhaften Differenzen zu C# an. Er kehrt nicht den Mehr(!)wert heraus.

Information ist "ein Unterschied, der einen Unterschied macht" - so definiert es Gregory Bateson. Damit ich einen positiven Unterschied in meiner Arbeit durch etwas Neues realisiere, muss mir sein "Verkäufer" aber erstmal einen positiven Unterschied zu meinen bisherigen Vorstellungen und Gewohnheiten deutlich machen. Welcher Unterschied macht also welchen Unterschied? Zum Beispiel: Was an F# im Unterschied zu C# macht also welchen Unterschied in meiner Arbeit aus?

Es genügt nicht, nur die ersten Unterschiede aufzuzeigen. Implizite strenge Typisierung, Funktionen als Werte, Currying... das sind Unterschiede zu C#. Die werden auch allerorten beschrieben. Doch welchen Unterschied machen Sie für meine Arbeit. Nicht dass ich sie anwenden könnte, dass sie überhaupt da sind, motiviert Sie oder mich zum Einsatz von F# - es sei denn, wir sind sehr akademisch interessiert. Nein, der Unterschied muss einen spürbaren (20%) Unterschied in unserer täglichen Arbeit machen.

Irgendwas muss ich durch den Wechsel von A auf B, von C# auf F# (oder Python oder Ruby), von ADO.NET auf das Entity Framework (oder NHibernate oder OpenAccess) usw., irgendwas muss ich durch diesen Wechsel "einsparen". Ja, ich denke, es geht immer ums Sparen. Woanders mag es ums Schöne oder Interessante gehen, aber in unserer Branche geht´s vor allem ums Sparen. Das Neue soll uns Zeit sparen oder es soll uns Ressourcen sparen.  Die Zeit kann beim Entwurf oder bei der Herstellung von funktionalen wie nicht-funktionalen Eigenschaften oder bei der Produktion oder der Wartung gespart werden. Oder wir brauchen zur Entwicklungszeit oder zur Laufzeit weniger Ressourcen wie Prozessorleistung oder Speicherplatz oder Bandbreite.

Also: Was, wann und wieviel spare ich, wenn ich auf F# usw. umsteige?

Das (!) ist die Masterfrage, die die "Verkäufer" von Technologien und Konzepte zu allererst und klar und verständlich und ohne Umschweife zu beantworten haben. Natürlich geht das nicht immer in so harten Zahlen wie die 80:20 suggerieren. Aber die Mühe sollte man der Darstellung schon ansehen, diesem Ideal möglichst nahe zu kommen.

Anbieter sollten sich als Leitlinie bei ihren Darstellungen Fragen wie diese nehmen, die mir bei Lektüre einer Darstellung im Kopf herumgehen:

  • Hilft mir das, um den Aufwand bei der Codierung um 20% zu reduzieren?
  • Hilft mir das, um in 80% meiner Projekte deutlich mehr Fehlerfreiheit zu erreichen?
  • Hilft mir das, um den Wartungsaufwand um 20% zu reduzieren?
  • Hilft mir das, um 80% meiner Software deutlich länger attraktiv am Markt zu halten?
  • Hilft mir das, um 20% mehr Performance oder Skalierbarkeit zu bieten?

Vorstellungen von Neuem, die mir diese und ähnliche Fragen nicht beantworten, sind in nicht-akademischen Kreisen oder außerhalb der Freizeitlektüre nutzlos. Wer mich motivieren will, der muss mir klar machen, dass sein Angebot diese Leistung erbringt. Wenn ich nicht in 80% meiner Projekte 20% Verbesserung in einem Bereich spüre, der mir überhaupt bewusst ist (oder lohnenswert bewusst gemacht werden kann), dann bin ich nicht motiviert.

Insofern werde ich mich erstmal nicht weiter mit F# oder Python oder dem Entity Framework beschäftigen. C# und db4o/OpenAccess/Persistor.NET sind derzeit gut genug. Mir konnte bisher nicht klar gemacht werden, dass das Neue irgendetwas um 20% verbessert.

Noch nicht - aber das kann natürlich anders werden. Beobachten werde ich den Markt weiterhin. Irgendwann mag eine Botschaft auftauchen, die auch mir den 20%-Gewinn von F# & Co deutlich macht.

Fazit

Mir und Ihnen als Beobachter des Marktes kann ich nur empfehlen, die Aschenputtel-Strategie bewusst anzuwenden. Fragen wir uns bei allem, was wir lesen/sehen, ob es danach ins Töpfchen oder Kröpfchen gehört.

Den Anbietern von Neuem (manchmal bin ich das auch selbst ;-) kann ich nur empfehlen:

  • Kennzeichnen Sie Ihre Angebote als "motivierend" oder "informierend" oder "unterhaltend". Bei motivierenden Inhalten müssen die 80:20-Fragen klar beantwortet werden. Bei informierenden Inhalte ist das nicht mehr in der selben tiefe nötig, dann bin ich ja schon motiviert, wenn und weil ich den Beitrag lesen. Dann geht es nicht mehr ums Ob und Warum, sondern das Wie. Bei unterhaltenden Angeboten schließlich geht es um, nun, Unterhaltung. Da will ich keine "Kaufentscheidungen" treffen oder etwas lernen.
  • Holen Sie Ihre Zielgruppe(n) da ab, wo sie heute stehen. Im Zeitalter des Überflusses geht es nicht mehr darum, ein Vakuum zu füllen. Wir alle haben schon Lösungen für die meisten Probleme, die mehr oder weniger gut gehen. Ihr Angebot muss sich also nicht nur gegen die Wettbewerber, sondern vor allem etablierte, schon vorhandene Technologien/Konzepte (oder schlicht Gewohnheiten) durchsetzen. Am besten zeigen Sie, wie etwas mit dem Neuen geht, das bisher nicht ging, aber gehen sollte. Oder Sie zeigen, wie etwas, das heute schon geht, mit dem Neuen eben 20% "besser" geht (leichter, schneller, verständlicher, skalierbarer usw.).
  • Bedenken Sie, dass Ihre Zielgruppe(n) selten vor der Entscheidung zwischen dem "Einkauf" von Neu.A oder Neu.B stehen. Es geht meistens um Alt.A oder Neu.B. Soll überhaupt etwas anders gemacht werden? Nicht wie anders, sondern ob anders, ist die oft erst durch die Lektüre eines Angebotes aufgeworfene Frage.

Als Informations- oder Motivationsempfänger sind wir offen. Das ist sozusagen unser Angebot - letztlich auch, weil wir nicht anders können. Wir wollen und müssen schauen, wo wir etwas verbessern können. Sparen - so ganz allgemein - ist Programm in der Programmierung. Und nicht nur da.

Anbieter, oder genauer: Motivierer sollten das respektieren und auf den Punkt kommen. Klare Aussagen, klare Beispiele, statt Hype.

Zum Glück ist es mit der Aschenputtel-Strategie aber einfach, zwischen Fluff, Hype, Enthusiasmus und Reellem, Bedenkenswerktem, Wahrhaftigem zu unterscheiden.

Sonntag, 24. August 2008

Datenzugriff heute - Die Qual der Wahl beleuchtet

imageADO.NET oder LINQ to SQL oder Entity Framework... was leisten eigentlich diese Datenzugriffstechnologien? War schon ADO.NET bei seiner Einführung ein rechter Brocken, den wir als cursorliebende Entwickler zu schlucken hatten, so ist die Datenzugriffswelt seitdem nicht wirklich einfacher geworden - aber vielfältiger. LINQ to SQL und Entity Framework versprechen zwar viel, wie stehen sie aber wirklich im Vergleich zu einander und mit ADO.NET da?

image Etwas Ordnung in dieses Gemenge versucht dieser Tage ein Artikel im hierzulande recht wenig bekannten, aber nicht minder guten CoDe Magazine zu bringen. Unter dem Titel "Data Access Options in Visual Studio 2008" stellt Julia Lerman diese drei Datenzugriffstechnologien recht lesenswert nebeneinander. Der Artikel kann - obwohl ziemlich lang - das Feld zwar nicht komplett ausleuchten, doch er gibt einen guten Überblick, wie ich finde. Und das sogar ganz kostenlos in der online Version des Magazins.

Für knapp 20 EUR gibt´s das CoDe Magazine aber auch auf Papier ins Haus geliefert - um es ganz bequem im Lehnstuhl oder auch am Strand lesen zu können. Das gönne ich mir gern. (Und der Herausgeber, Markus Egger, ist ein Netter, mit dem man auf der VSone oder der ADC auch in Deutschland plaudern kann.)