code it

Martins Tech Blog

Motivationsfaktoren gesucht

Was ist euch eine gute Software wert? Möchte ein Unternehmen beispielsweise ein neues ERP-System einführen, so legt es für eine Standard-Software oft nicht weniger als mehrere Zehntausend Euro auf den Tisch. Hinzu kommt dann noch Anpassung der Software an die Gegebenheiten im Unternehmen und vermutlich auch noch ein paar Tage Consulting in denen den Anwendern erklärt wird, wie mit der Software umzugehen ist.

Und wie sieht das Ganze im Consumer-Markt aus? Hier soll alles nach Möglichkeit kostenlos sein: Eine Office-Anwendung für lau, um die Briefe zu schreiben; kostenlose Browserspiele, um sich die Zeit zu vertreiben. Ein Spiel für die Konsole für um die 40 Euro ist da schon grenzwertig. Und Anwendungen auf dem Smartphone? Natürlich auch kostenlos.

Klar, der Vergleich hinkt etwas, so ist ein Unternehmen darauf ausgerichtet, Gewinne zu erzielen und das Kapital sinnvoll zu investieren. Eine Möglichkeit dafür ist es, eine Infrastruktur aufzubauen, die das Arbeiten effizienter macht. Im Consumer-Bereich gibt es diese Art der Investition so nicht. Dort wird Software meist aus dem Affekt gekauft oder weil man von der Werbung auf der Verpackung so angetan ist.

Wenn ich mir nun die Bewertungen verschiedenster Apps im Marketplace anschaue, dann ist dort ein immer wiederkehrendes Bild: "Ich finde die Anwendung super, ich hatte in den 4 Leveln der Trial-Version viel Spaß, aber 2,99 Euro für die Vollversion ist mir viel zu teuer. Deswegen gebe ich 2 von 5 Sternen.", "Super App und auch gut, dass sie kostenlos ist. Aber die PC-Variante unterstützt noch das durchsuchen. Deswegen 1 von 5 Sternen." Und gefühlt sind das die gleichen Leute, die noch vor 2 Jahren ein Monatsabo für 4,99 € pro Woche für Klingeltöne abgeschlossen haben.

Was soll nun meine Motivation dafür sein, eine dieser kostenfreien, super bedienbaren und selbsterklärenden Apps zu entwickeln für eine Zielgruppe, deren Bedürfnisse ich so schwer erfüllen kann? Wie ich eben gelernt habe, brauche ich ja nebenbei noch eine andere Arbeit, die mir erlaubt meine Miete und mein Essen zu zahlen. Ich möchte gar nicht sagen, dass ich nicht gern mal jemandem helfe, eine Software oder ein Framework voranbringe oder mich in der Community einbringe ohne überhaupt nur im entferntesten daran zu denken, dafür Geld zu verlangen. In diesen Fällen ist die Motivation die, zu sehen, wie sich die Welt durch meine Arbeit ein klein wenig verbessert hat.

Was ist also die Konsequenz? Der Markt für Apps im Smartphone-Bereich ist in meinen Augen aktuell nur bedingt interessant. Der Marketplace wird überschwemmt von Anwendungen, die ohne jeden Anspruch auf Nutzen und Qualität auskommen. Wozu brauche ich sechs verschiedene Taschenlampen-Apps, die lediglich die Blitz-LED auf Dauerbetrieb stellen (gefühlt ist das ein Dreizeiler) oder den vierundzwanzigsten Umrechner zwischen verschiedenen metrischen Systemen. Dem gegenüber stehen Firmen, die den Marketplace als Marketing-Platz verstehen und deswegen hier Geld anlegen. Motivation hier ist, dass man Präsenz zeigen und nach Möglichkeit sogar auf den vorderen Plätzen gelistet werden möchte, um entweder kostenpflichtige Mehrwerte zu verkaufen oder eben andere Verkaufskanäle zu pushen.

Sieht man nun einmal den Fall, dass man als Entwickler eben keine 08/15-App hier platzieren möche und auch nicht die Rückendeckung eines großen Unternehmens hat, das etwas Marketingbudget übrig hat, wie sieht dann die Rechnung aus? Ich komm nicht aus der Spiele-Entwicklung. Aber um ein XNA-Spiel mit mehreren Leveln zu entwicklen, braucht man mit Konzeption, Umsetzung und Test gefühlt mindestens einen Monat (wenn nicht sogar noch wesentlich länger). Selbst wenn ich hier den gerade in den Medien so präsenten Mindestlohn ansetze und einen App-Preis von 1,99 Euro, muss ich die Anwendung noch immer mehrere hundert Mal verkaufen. Und in dieser Rechnung ist meine Zeit, mich mit dem technologischen Fortschritt auseinanderzusetzen, mich weiterzubilden usw. noch gar nicht mit enthalten - mal ganz davon zu Schweigen, dass die Anbieter (Apple oder Microsoft oder wie sie auch heißen mögen) vom Kuchen auch ein nicht unerhebliches Stück abbekommen wollen.

Sind Softwareentwickler nun arm dran? Nein, sind Sie nicht. Ich kenne viele, die sehr hoch qualifiziert und immer auf dem aktuellen Stand des technologischen Fortschritts sind. Und ich kenne mindestens genauso viele, die sich gern in Opensource-Projekten, in der Community oder an sonstigen frei verfügbaren Projekten beteiligen. Aber allen ist gemein, dass sie am Ende eine Kosten-Nutzen-Rechnung auf machen. Und dann zählt entweder das Geld, das auf dem Konto ankommt oder eben die Genugtuung, die sich durch positive Resonanz einstellt.

Was ist nun eigentlich Ziel dieses ganzen Plädoyers? Nein, ich mache mich gerade nicht dafür stark, dass jedwede Software kostenpflichtig sein soll. Jede Vertriebsart hat ihre Daseinsberechtigung und es gibt für alles ein Angebot und eine Nachfrage. Was mich aber ärgert ist, sind Bewertungen fern jeder Realität. Warum bekommt eine Anwendung eine Bewertung, die in Schulnoten ausgedrückt durchgefallen bedeutet, wenn man für Level 5 bis 20 eben mal 2 Euro zahlen muss oder wenn die Smartphone-Variante mal ein Feature noch nicht implementiert hat, eben weil das zugrundeliegende System gerade erst ein Jahr alt ist und vielleicht bestimmte Aktionen gar nicht unterstützt? Ich bin der Meinung, eine gute Arbeit sollte auch honoriert werden - egal auf welche Weise. Die Zukunft wird sonst wohl sein, dass man zwischen mehreren hundert Taschenlampen-Apps auswählen kann, aber sinnvolle Anwendungen umsonst sucht.

Shake it!

Zugegeben, für den unbedarften Zuschauer sieht es etwas lustig aus, wenn man jemanden sieht, der sein Smartphone in der Hand hält und einmal kräftig schüttelt. Aber im Grunde gibt es diese Geste ja schon in vielen Systemen. In Windows 7 minimieren sich daraufhin alle anderen Fenster (Aero Shake), iTunes spielt daraufhin das nächste Lied und auch unter Windows Phone 7 Apps setzt sich diese Geste durch - hier wird sie meist zum Aktualisieren des aktuellen Screens eingesetzt - den meisten wird das wohl aus der Facebook-App bekannt sein.

Wer selbst die Shake-Geste in seiner Anwendung verwenden wollte, stand vor dem Problem, dass zwar alle Windows Phone 7 Geräte über einen Beschleunigungssensor verfügen und dieser auch per API anprogrammierbar ist, dass aber eine einfache Möglichkeit diese Geste zu ermitteln eben nicht gegeben ist. Das Silverlight-Toolkit bringt zwar einige Gesten mit, so z.B. Flip, Pinch und Tap, aber Shake fehlt auch hier.

Eine Abhilfe schafft die Shake Gesture Helper Library, die seit vergangenen Freitag im App Hub zu finden ist. Damit steht ein Helper zur Verfügung, der Events feuert, sobald eine Shake-Geste erkannt wird. Dabei ist frei konfigurierbar, wie häufig das Smartphone geschüttelt werden muss - und wer die Unterscheidung braucht, kann auch noch erkennen entlang welcher Achse geschüttelt wurde. Im beigefügten Beispiel ist hier die Anzahl notwendiger Richtungsänderungen auf 5 gesetzt - ich denke das ist etwas hoch gegriffen. Ich selbst höre nach 3 mal auf, zu hoffen, dass beim Schütteln mehr passiert als dass potenziell mein Smartphone aus der Hand fällt.

Auf jeden Fall ist es ein interessanter Helfer, der wohl dafür sorgen könnte, dass man demnächst wieder häufiger Anwender sieht, die ihr Windows Phone schütteln, denn den Entwicklern ist es damit sehr einfach gemacht, auch dieses Feature zu verwenden.

Nachlese zum Februar-Treffen der .NET Usergroup Dresden

Jetzt ist es schon fast eine Woche her, dass das Februar-Treffen der .NET Usergroup Dresden stattgefunden hat. Es hat mich persönlich sehr gefreut, dass wir mit Hendrik einen neuen Sprecher akquirieren konnten. Er ist zwar schon länger Mitglied der Usergroup, konnte aber bisher nur selten an unseren Treffen teilnehmen.

Auch das Thema war sehr interessant. Ich selbst habe bisher als Mocking Framework eher auf Rhino.Mocks gesetzt. Aber warum nicht auch mal umsehen, ob es andere Frameworks gibt, die vielleicht besser oder intuitiver sind. Aus diesem Grund fand ich die Einführung in Moq ganz spannend - auch, weil man sich so direkt mal über die Stolpersteine unterhalten konnte.

Ganz geschickt hatte Hendrik in seinen Live-Coding-Beispielen auch schon Methoden-Stubs für Beispiele andere Frameworks wie Rhino.Mocks vorbereitet. Die Stubs hab ich zwar nicht verwendet, aber ich hab aus einem meiner Projekte ein paar Testmethoden gezeigt. So konnten wir hier zumindest schon mal anschneiden, dass es viele Gemeinsamkeiten gibt, die sich im Grunde nur in Details unterscheiden.

Nachdem wir im vergangenen Jahr gemeinsam mit Alexander einen LdL-Abend gemacht haben, bei dem es um Unittesting ging, war es dieses Mal etwas schwer, alle abzuholen und so war Unittesting für einige nur theoretisch bekannt und in der Praxis noch nie eingesetzt worden, andere "alte Hasen" verwenden es täglich und in allen Projekten.

Eine Zusammenfassung von Hendrik sowie seine Slides und die Code Samples findet man in seinem Blog.

Mit dem Abend stehen nun auch schon die kommenden Usergroup-Treffen bis Mai zumindest thematisch fest. Für März ist ein Coding-Dojo geplant. Ich bin sehr gespannt wie das wird. Ein Einladung dazu wird es geben, sobald Räumlichkeiten und genauer Termin feststehen.

Einladung zum Treffen der .NET Usergroup Dresden am 17.02.2011

Am 17.02. wird das nächste Treffen der .NET Usergroup Dresden stattfinden. Wir treffen uns 19:00 Uhr bei der T-Systems MMS.

Der Abend steht unter dem Thema Unittesting. Hendrik Lösch wird zunächst noch einmal kurz auf die Grundlagen eingehen, bevor er dann ausgiebig erläutert, wie das Framework Moq beim Schreiben der Tests helfen kann. Dabei geht es darum, wie Abhängigkeiten aufgebrochen, Methodenverhalten emuliert und Methodenaufrufe validiert werden können.

Das Thema bietet genug Gesprächsstoff und bestimmt hat jeder schon einmal Erfahrungen mit dem ein oder anderen Mocking Framework sammeln können. Aus diesem Grund schließen wir an den Vortrag eine offene Diskussion über eure verwendeten Frameworks an, bei der ihr gern eingeladen seid, eure Erfahrungen mit eurem bevorzugten Framework vorzustellen und auch gern am Notebook das ein oder andere Beispiel zu zeigen.

Wir freuen uns auf viele Teilnehmer. Mehr Informationen und einen Link zur Gästeliste findet ihr auf der Event-Seite.

5 Jahre und etwas reifer

Ganz heimlich, still und leise ist es herangekommen und zugegeben es wurde auch nicht groß gefeiert: Im Januar 2011 hatte ich ein Jubiläum, ist doch Unique Software da fünf Jahre alt geworden. Es ist noch fast wie gestern, dass ich zum Gewerbeamt gegangen bin und mein Baby an den Start gebracht hab - mein eigenes Unternehmen.

Visual Basic als Programmiersprache sollte es damals sein und für das Web ein bisschen HTML. Naja, der Lauf der Zeit hat gezeigt, dass das eben nicht ausreicht. Mittlerweile liegt der Hauptfokus doch eher auf C# und allen möglichen Ausprägungen, die das .NET Framework zu bieten hat mit den typischen Vertretern wie ASP.NET, WPF und Silverlight - und an Unittests war in meiner Welt damals auch noch nicht wirklich zu denken.

Inzwischen ist aus dem einstigen Hobby von damals ein Beruf und im Grunde auch eine Berufung geworden. Wenn man es so will, dann ist Februar 2011 die zweite Geburt, denn seit diesem Monat ist es eben nicht mehr das kleine Kind, das mal nebenbei geschaukelt wird, sondern ein etwas größeres Kind, um das man sich schon den ganzen Tag kümmern muss.

Ich bin sehr gespannt, was die Zukunft bringt. Sicher ist, Softwareentwicklung ist im Moment eine sehr schnelllebige Profession und ähnlich wie vor 10 Jahren noch niemand an die technologischen Möglichkeiten von heute zu denken gewagt hat, so werde ich sicher auch in wenigen Jahren zurückblicken und mich wundern wie altmodisch doch das war, was wir heute state of the art nennen.

Was steht nun an? Ich denke auf jeden Fall ein paar spannende Projekte. Also ran an die Tastatur!