<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WendtsWelt &#187; Tech</title>
	<atom:link href="http://www.wendtswelt.de/tech/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.wendtswelt.de</link>
	<description>Ein Blog über Softwareentwicklung, Familie und Freizeit</description>
	<lastBuildDate>Thu, 02 Sep 2010 07:45:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Wie man Leuten den Spaß an Open&#160;Source verdirbt</title>
		<link>http://www.wendtswelt.de/2010/09/open-source-akzeptanz/?piwik_campaign=rss&amp;piwik_kwd=1622</link>
		<comments>http://www.wendtswelt.de/2010/09/open-source-akzeptanz/?piwik_campaign=rss&amp;piwik_kwd=1622#comments</comments>
		<pubDate>Wed, 01 Sep 2010 06:58:08 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Betriebssystem]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Pragmatismus]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.wendtswelt.de/?p=1622</guid>
		<description><![CDATA[Schwarz-Weiß-Denken ist in Teilen der Open-Source-Community üblich. Entweder ganz oder gar nicht. Warum das nach hinten losgehen kann.]]></description>
			<content:encoded><![CDATA[<p></p><div id="attachment_1624" class="wp-caption alignleft" style="width: 240px">
	<img src="http://www.wendtswelt.de/wordpress/wp-content/uploads/2010/08/regeln_einschränkungen.jpg" alt="Foto: Verbotsschilder zum Gemeindekodex in Santa Cruz, Kalifornien" title="Regeln und Einschränkungen können Spaßbremse sein (Lizenz: CC-BY-SA)" width="240" height="360" class="size-full wp-image-1624" />
	<p class="wp-caption-text">Foto: <a href='http://www.flickr.com/photos/infidelic/3822079770/'>Beach Regulations</a> von Thomas. Lizenz: CC-BY-SA</p>
</div>
<p>Menschen hören es nicht gern, dass sie etwas falsch machen.</p>
<p>Oder dass sie etwas ganz anders machen müssen. Einschätzungen wie diese sind immer subjektiv und kommen meist von oben herab rüber.</p>
<p>Ich hatte schonmal <a href="http://www.wendtswelt.de/2006/02/heiliger-krieg-unter-studenten/">über das Schwarz-Weiß-Denken in unserer Zunft</a> geschrieben, wenn es um die Offenheit von Software geht. Dabei ging es um die unter Windows-Nutzern verbreiteten Vorurteile gegenüber Linux.</p>
<h2>Militante Verfechter sind genauso schlimm wie militante Gegner</h2>
<p>Jetzt hat John Poelstra über die <strong>beinahe religiöse Herangehensweise der Verfechter von Open Source</strong> geschrieben: <a href="http://poelcat.wordpress.com/2010/08/10/youre-doing-it-wrong/"><cite>You&#8217;re doing it wrong.</cite></a></p>
<p>Dabei beschwert sich John über die Einstellung, es gäbe nur einen wahren Weg für Open Source. Kleinste Abweichungen davon werden nicht geduldet:</p>
<blockquote><p>Yes, I’m a fan of open source. Yes, I wrote this post on a Mac. Yes, there are more than two colors in the rainbow.</p></blockquote>
<p>So etwas schreckt ab.</p>
<p>Stell dir vor, du hast durch einen Freund das erste Mal von Open Source gehört und bist bereit zu experimentieren und das mal auszuprobieren.</p>
<p>Wenn dir jetzt jemand sagt, das wäre eine Alles-oder-nichts-Entscheidung und du müsstest deine Gewohnheiten komplett umstellen, weil du es sonst &#8220;nicht richtig&#8221; machst &#8212; bist du dann immer noch bereit zu experimentieren?</p>
<p>Natürlich nicht.</p>
<h2>Produktivität und Pragmatismus ist vielen Menschen wichtiger als Politik</h2>
<p>Was Leute wollen, ist Dinge schneller erledigen oder mehr Spaß an der Sache haben. Dann ist Pragmatismus gefragt.</p>
<p><strong>Auch für Entwickler ist diese Art der Bequemlichkeit durchaus ein Thema</strong> &#8212; wer eigene Open-Source-Projekte vorantreiben will, möchte sich nicht erst noch um die Basis seiner Arbeit kümmern. (Ein gutes Beispiel, wie man es nicht machen sollte, zeigt Zed Shaw in seinem zynischen Post <a href=" http://lists.rubyonrails.org/pipermail/rails/2006-May/037763.html"><cite>Why Does Ruby on Debian Blow?</cite></a> von 2006 auf.)</p>
<p>Für die Politik dahinter interessieren sich die wenigsten. <strong>Und das ist auch nicht weiter schlimm.</strong> Projekte, die sich nur prinzipientreue Nutzer leisten und pragmatische vor den Kopf stoßen, werden über kurz oder lang nur noch politische, aber keine fachlichen Diskussionen mehr führen.</p>
<p>Andere Projekte werden da schon längst weiter sein.</p>
<h2>Anleitung zum Spaßverderben</h2>
<p>Wer also Leute von Open Source fernhalten will, wird am besten militanter Verfechter.</p>
<p>Überzeugt Nutzer vom wahren Glauben. Gebt euch nicht mit Kompromissen zufrieden &#8212; die sind was für Weicheier. Und weist immer wieder darauf hin, was Leute alles falsch machen.</p>
<p>Das hören sie besonders gern.</p>
<h2>Und du?</h2>
<p>Hast du auch schlechte Erfahrungen mit militanten Mitgliedern der Community gemacht, die nur Schwarz oder Weiß kennen?</p>
<p>Oder arbeitest du selbst mit Systemen, die so gar nicht frei sind, an eigenen Open-Source-Projekten?</p>
<p>Sag&#8217;s uns in den Kommentaren!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wendtswelt.de/2010/09/open-source-akzeptanz/?piwik_campaign=rss&amp;piwik_kwd=1622/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>So werden Software-Unternehmen zu attraktiven Arbeitgebern</title>
		<link>http://www.wendtswelt.de/2010/08/attraktive-arbeitgeber/?piwik_campaign=rss&amp;piwik_kwd=1531</link>
		<comments>http://www.wendtswelt.de/2010/08/attraktive-arbeitgeber/?piwik_campaign=rss&amp;piwik_kwd=1531#comments</comments>
		<pubDate>Mon, 02 Aug 2010 18:26:33 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[agil]]></category>
		<category><![CDATA[Arbeitgeber]]></category>
		<category><![CDATA[Bewerber]]></category>
		<category><![CDATA[Branche]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[Organisation]]></category>
		<category><![CDATA[Stellensuche]]></category>
		<category><![CDATA[Team]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[Unternehmen]]></category>

		<guid isPermaLink="false">http://www.wendtswelt.de/?p=1531</guid>
		<description><![CDATA[Wie stelle ich mir meinen idealen Arbeitgeber vor? Und was können Firmen in der Software-Branche davon lernen?]]></description>
			<content:encoded><![CDATA[<p></p><p>Als Arbeitnehmer bin ich ziemlich anspruchsvoll.</p>
<p>Das hat sich in den letzten zwei Jahren so entwickelt. Und kommt natürlich nicht von ungefähr. Ich bin schließlich gut bei dem, was ich tue.</p>
<p>Daher hier also die Punkte, über die <strong>Unternehmen aus meiner Sicht ernsthaft nachdenken sollten</strong>, wenn sie neue Softwareentwickler (wie mich) suchen.</p>
<p><a href="http://www.flickr.com/photos/jvk/22461307/"><img src="http://www.wendtswelt.de/wordpress/wp-content/uploads/2010/07/magnet.jpg" alt="Foto: Werkstatt-Schublade mit einem Magneten und vielen Schlüsseln, Schrauben und Klammern" title="Magnet, Foto von John V. Keogh (Lizenz: CC-BY-NC)" width="420" height="315" class="aligncenter size-full wp-image-1568" /></a></p>
<h2>Schwerpunkt Flexibilität</h2>
<p><strong>Versucht eine Firmenkultur zu etablieren, in der Ergebnisse mehr Wert sind als die Zahl der Stunden</strong> &#8211; und wo sie geleistet werden.</p>
<p>Nicht jedem liegt es, zuhause oder im Café zu arbeiten. Aber das Büro steht eben auch nicht bei jedem ganz oben auf der Liste. Lasst die Leute dort arbeiten, wo sie am produktivsten sind.</p>
<p>Unterstützt Mitarbeiter bei der Suche nach der optimalen Work-Life-Balance, vor allem bei Elternzeit, Wiedereinstieg danach oder Teilzeit.</p>
<p>Vermeidet spontane Meetings, um Mitarbeitern in Homeoffice und Teilzeit nicht <a title="brand eins: Mutige arbeiten Teilzeit" href="http://www.brandeins.de/archiv/magazin/-4ccec607a0/artikel/mutige-arbeiten-teilzeit.html">vor den Kopf zu stoßen</a>.</p>
<h2>Zeit für eigene Ideen</h2>
<p><strong>Gebt den Leuten Zeit, eigene Ideen zu umzusetzen.</strong> Ihr werdet erstaunt sein, <a href="http://googleblog.blogspot.com/2006/05/googles-20-percent-time-in-action.html">welche kreativen Lösungen dabei entstehen</a>.</p>
<p>Neue Dinge auszuprobieren macht jedem Spaß und dafür noch bezahlt zu werden, motiviert zusätzlich. Das zeigt Mitarbeitern außerdem, dass sie vom Unternehmen nicht als Humankapital gesehen werden.</p>
<p>Fragt also am besten nicht nach, was das gewünschte Thema jetzt genau mit eurem Produkt oder Service zu tun hat. Vielleicht nichts. Aber darum geht es gar nicht.</p>
<h2>Selbstorganisation und agile Prozesse</h2>
<p><strong>Gebt keine technischen Lösungen oder Werkzeuge vor.</strong> Teams werden in <a href="http://www.wendtswelt.de/2010/03/software-agil-entwickeln-mit-scrum/">vernünftigen Prozessen</a> mit den für sie optimalen Werkzeugen die beste Lösung finden.</p>
<p>Das gilt nicht nur für das Ergebnis, sondern auch für den Weg dorthin. Fördert <a href="http://www.wendtswelt.de/2010/05/retrospektiven/">Selbstorganisation</a>.</p>
<p>Fordert <a href="http://en.wikipedia.org/wiki/ROWE" lang="en" title="Mehr Infos zu Results Only Work Environment">keine Stundennachweise, sondern Ergebnisse</a>.</p>
<h2>Software-Tests</h2>
<p><strong>Testet eure Software <a href="http://www.wendtswelt.de/2010/04/software-testing/">automatisiert</a>.</strong> (Nein, manuelle Tests zählen nicht!) Es wird nicht mehr lange dauern, bis kein Entwickler (m/w) mehr bereit ist, ungetestete Software an Kunden zu liefern &#8212; ich zähle mich bereits zu dieser Gruppe.</p>
<p>Wenn euch test-getriebene Entwicklung ein Fremdwort ist, stellt jemanden ein, der euch damit weiterhelfen kann. Tests sind teuer, aber deswegen heute auf sie und morgen auf die besseren Entwickler zu verzichten, könnt ihr euch nicht leisten.</p>
<h2>Fehlt etwas?</h2>
<p>Viele dieser Punkte setzt mein jetziger Arbeitgeber bereits ansatzweise um. Dadurch weiß ich, wie wichtig sie mir geworden sind oder wo noch nachgebessert werden kann. Und dass ich sie anderswo nicht missen möchte.</p>
<p>Allgemeingültig ist die Liste deshalb aber längst nicht. Und auch nicht vollständig.</p>
<p>Was steht auf deiner? Sag&#8217;s uns in den Kommentaren!</p>
<p>[Foto: <a href="http://www.flickr.com/photos/jvk/22461307/">Magnet</a> von John V. Keogh, Lizenz: CC-BY-NC]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wendtswelt.de/2010/08/attraktive-arbeitgeber/?piwik_campaign=rss&amp;piwik_kwd=1531/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Warum User Stories helfen, bessere&#160;Software zu liefern</title>
		<link>http://www.wendtswelt.de/2010/06/user-stories/?piwik_campaign=rss&amp;piwik_kwd=1262</link>
		<comments>http://www.wendtswelt.de/2010/06/user-stories/?piwik_campaign=rss&amp;piwik_kwd=1262#comments</comments>
		<pubDate>Mon, 14 Jun 2010 18:42:26 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Anforderungen]]></category>
		<category><![CDATA[Features]]></category>
		<category><![CDATA[Methoden]]></category>
		<category><![CDATA[Produktivität]]></category>
		<category><![CDATA[Produktmanagement]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>

		<guid isPermaLink="false">http://www.wendtswelt.de/?p=1262</guid>
		<description><![CDATA[User Stories werden in der agilen Softwareentwicklung eingesetzt, um den Nutzwert von Features zu kommunizieren und Anforderungen transparenter zu machen.]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.flickr.com/photos/psd/3731275681/"><img src="http://www.wendtswelt.de/wordpress/wp-content/uploads/2010/06/user_stories.jpg" alt="" title="WikiData User Stories (Foto von Paul Downey, Lizenz: CC-BY)" width="238" height="240" class="alignright size-full wp-image-1340" /></a>Es gibt zwei Umstände, die bei der Softwareentwicklung nicht gerade helfen, das Produkt in einem nutzerfreundlichen Zustand auszuliefern:</p>
<ul>
<li><strong>Anforderungen werden meist technisch und ohne ihren Nutzen für den Anwender formuliert.</strong> Das lässt zu wenig Spielraum für Alternativen, falls sie notwendig sein sollten. Außerdem wird es erschwert, die Anforderung zu hinterfragen.</li>
<li><strong>Oft vergeht zwischen der Formulierung einer Anforderung und ihrer Umsetzung zu viel Zeit.</strong> Damit ist dann auch die Information über den Nutzen im besten Fall nicht mehr gegenwärtig, im schlimmsten Fall sogar ganz verloren.</li>
</ul>
<p>Abhilfe können User Stories schaffen, die häufig in <a href="/2010/03/software-agil-entwickeln-mit-scrum/">agilen Prozessen wie Scrum</a> benutzt werden.</p>
<h2>Beschreibung von Features nach Schema F</h2>
<p>User Stories formulieren die Anforderung und den zugehörigen Kundennutzen in <strong>Alltagssprache:</strong></p>
<blockquote><p>Als [Nutzer]<br />
kann ich [Dinge tun],<br />
um [daraus einen bestimmten Nutzen zu ziehen].
</p></blockquote>
<p>Das macht es vor der Umsetzung einfacher, über das Feature zu reden, ohne den Kunden mit technischen Details in die Flucht zu schlagen. (Oder sich als Entwickler die Umsetzung vorweg nehmen zu lassen.) Das ist eine der Hauptaufgaben: Konversationen anzustoßen.</p>
<p>Aber auch während der Umsetzung ist das eine Erleichterung, weil die Story die Hintergründe einer Anforderung deutlich macht. Wenn technische Einschränkungen die Anforderung erschweren oder unmöglich machen, lässt die Story Spielraum für Alternativen.</p>
<p>User Stories können also zur <strong><a href="/2010/05/retrospektiven/">Produktivität</a>, Selbstorganisation und Kundenzufriedenheit</strong> beitragen.</p>
<h2>Woran man eine schlechte User Story erkennt</h2>
<p>User Stories werden meist auf Karteikarten, sogenannte Story Cards, geschrieben &#8212; um sie &#8220;klein zu halten&#8221;.</p>
<p>Wie genau man sich an die Formulierungsvorgabe hält, ist jedem selbst überlassen. Die Story soll schließlich einen Zweck erfüllen &#8212; daher ist es legitim, das nach eigenem Ermessen anzupassen.</p>
<p>Eine gute Story lebt davon, dass sie wirklich in Alltagssprache formuliert wird. Dabei ist der dritte Teil, also der Kundennutzen, unbedingt zu beachten.</p>
<blockquote><p>
Als Nutzer<br />
kann ich &#8220;OK&#8221; drücken,<br />
um den Dialog zu schließen.
</p></blockquote>
<p>ist eine denkbar schlechte User Story. Warum?</p>
<ol>
<li>Die Rolle &#8220;Nutzer&#8221; ist zu schwammig formuliert, das passt immer.</li>
<li>Die Aktion &#8220;[OK] drücken&#8221; ist zu technisch formuliert.</li>
<li>Der Nutzen &#8220;um den Dialog zu schließen&#8221; ist gar keiner, sondern lediglich eine weitere Aktion.</li>
</ol>
<p>Von diesem Pseudo-Nutzen zum tatsächlichen kommt man mit der Frage &#8220;Wozu?&#8221; &#8212; &#8220;Um zu drucken.&#8221; Aha, da ist der wirkliche Nutzen! (Die Frage muss unter Umständen wiederholt werden. Um solchen Dingen auf die Schliche zu kommen, bietet sich der <a href="http://www.copyblogger.com/now-featuring-benefits/">&#8220;forehead-slap&#8221;-Test</a> an.)</p>
<p>Dieses Fragen ist übrigens auch ein guter Test, um scheinbar aus der Luft gegriffenen Anfragen von Kunden auf den Grund zu gehen (aber das ist ein anderes Thema).</p>
<h2>Was eine gute Story ausmacht</h2>
<p>Ein viel besseres Beispiel ist:</p>
<blockquote><p>Als Autor<br />
muss ich das Löschen meines Dokuments bestätigen,<br />
um ein versehentliches Löschen zu verhindern.
</p></blockquote>
<p>Der Nutzen &#8220;versehentliches Löschen verhindern&#8221; ist konkret und lässt gleichzeitig Spielraum, den gewünschten Effekt auch anders umzusetzen (z.B. eine Rückgängig-Funktion, nach dem das Dokument ohne Rückfrage gelöscht wurde.)</p>
<h2>Dem Nutzer hilft, wenn man permanent an ihn denkt</h2>
<p>Der explizit formulierte Nutzen führt dazu, dass man als Entwickler nicht nur die technische Herangehensweise sieht, und sich auch in den Nutzer hineinversetzt.</p>
<p><a href="http://www.amazon.de/User-Stories-Applied-Development-Signature/dp/0321205685">Gute User Stories zu schreiben ist nicht so einfach.</a> Zumindest aber helfen sie, bessere Software zu schreiben und sie näher am Nutzer zu orientieren.</p>
<p>Wie siehst du das als Nutzer, Entwickler oder Auftraggeber? Hast du schon Erfahrungen mit User Stories gemacht, die du beitragen möchtest? Werden User Stories vielleicht auch für andere Produkte eingesetzt?</p>
<p>Sag&#8217;s uns in den Kommentaren!</p>
<p>[Foto: <a href="http://www.flickr.com/photos/psd/3731275681/"><cite>WikiData User Stories</cite></a> von Paul Downey, CC-Lizenz]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wendtswelt.de/2010/06/user-stories/?piwik_campaign=rss&amp;piwik_kwd=1262/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Welche Programmiersprachen eignen sich für Anfänger?</title>
		<link>http://www.wendtswelt.de/2010/06/programmieren-anfaenger/?piwik_campaign=rss&amp;piwik_kwd=997</link>
		<comments>http://www.wendtswelt.de/2010/06/programmieren-anfaenger/?piwik_campaign=rss&amp;piwik_kwd=997#comments</comments>
		<pubDate>Tue, 01 Jun 2010 19:58:03 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Basics]]></category>
		<category><![CDATA[Lehre]]></category>
		<category><![CDATA[Programmiersprachen]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Smalltalk]]></category>
		<category><![CDATA[Universität]]></category>

		<guid isPermaLink="false">http://www.wendtswelt.de/?p=997</guid>
		<description><![CDATA[Häufig wird in nicht-technischen Studienfächern Programmieren mit C++ oder Java gelehrt. Warum das keine gute Idee ist und welche Sprachen besser geeignet sind.]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://www.flickr.com/photos/iboy/4333362932/"><img src="http://www.wendtswelt.de/wordpress/wp-content/uploads/2010/05/kind_am_laptop.jpg" alt="" title="Already a Mac addict (Foto von iboy, Lizenz: CC-BY-SA)" width="240" height="240" class="alignleft size-full wp-image-1020" /></a></p>
<p>Mittlerweile bin ich überzeugt, dass im Lehrbetrieb auch Sadisten arbeiten.</p>
<p>Zumindest kommt es mir so vor, wenn ich von Programmierkursen in C++ oder Java höre, die in nicht-technischen Studienfächern zum Curriculum gehören.</p>
<p>Manchmal sogar als Pflichtkurse.</p>
<p>Da kann man nur mit dem Kopf schütteln. Menschen, die nie etwas mit Computerprogrammierung zu tun gehabt haben, muss man behutsam an die Sache heranführen.</p>
<h2>Verbrannte Erde</h2>
<p>Bring Einsteigern <code><a href="http://www.google.de/search?q=public+static+void+main">public static void main</a></code> bei, oder den Unterschied zwischen einfachen und komplexen Datentypen, oder dass sie sich selbst um <a href="http://de.wikipedia.org/wiki/Speicherverwaltung">Speicherverwaltung</a> zu kümmern haben, und du wirst verbrannte Erde hinterlassen.</p>
<p>Du wirst sie in dem Glauben bestärken, dass Computer diese unbeherrschbaren Maschinen sind. Die nur was für diese Freaks sind, von denen sich jeder gern distanziert (auch ich). Du wirst ihnen die letzte Hoffnung nehmen, die Arbeitsweise von Computern auch nur ansatzweise zu verstehen. Im besten Fall rennen sie einfach nur schreiend weg und reden nicht mehr mit dir.</p>
<p><strong>Programmieren soll Spaß machen. Gerade für Einsteiger sollten daher Sprachen gewählt werden, mit denen schnell Ergebnisse erzielt werden können</strong> und die den Fokus nicht auf sich ziehen, sondern bei dem zu lösenden Problem belassen.</p>
<p>Daher hier meine Favoriten, die ich jedem ans Herz legen möchte.</p>
<h2>Ruby: Leichter Einstieg und doch mächtig</h2>
<p>Wie schon erwähnt: Wer gerade erst in die Programmierung einsteigt, will schnell Erfolge sehen, ist ungeduldig. Diese Ungeduld können viele Sprachen, die Anfängern im Studium beigebracht werden, nicht stillen.</p>
<p><img src="http://www.wendtswelt.de/wordpress/wp-content/uploads/2010/05/Ruby_logo.png" alt="" title="Ruby Logo" width="70" height="70" class="alignleft size-full wp-image-1043" /><a href="http://ruby-lang.org/de/"><strong>Ruby</strong></a> hingegen stellt mit der Interactive Ruby Shell (IRB) das ideale Werkzeug zum Ausprobieren von kurzen Programmen bereit &#8212; selbst für Erfahrene.</p>
<p>Mit <a href="http://tryruby.org/"><strong>try ruby!</strong></a> kann man das sogar online ausprobieren &#8212; in 15 Minuten. Und gewinnt dabei einen kurzen Überblick in die Möglichkeiten der Sprache.</p>
<p>Dabei wird dann klar, dass Programmierung nicht nur was für Ariane-Raketen ist, sondern auch für den Hausgebrauch.</p>
<p>(Wer mit solche spielerischen Tutorials nichts anfangen kann und stattdessen lieber Zeichnungen eines &#8212; sagen wir, exzentrischen &#8212; Freaks betrachtet, um seine gängigen Vorurteile aufzufrischen, kann auch gern mal <a href="http://mislav.uniqpath.com/poignant-guide/book/chapter-1.html"><cite>Why&#8217;s Poignant Guide to Ruby</cite></a> durchblättern.</p>
<h2>Smalltalk: Entworfen für Kinder &#8212; aber muss das Erwachsene abhalten?</h2>
<p><img src="http://www.wendtswelt.de/wordpress/wp-content/uploads/2010/05/Squeak_logo.png" alt="" title="Squeak Logo" width="102" height="70" class="alignleft size-full wp-image-1071" /><strong>Smalltalk</strong> und dessen Umsetzung <a href="http://www.squeak.de/"><strong>Squeak</strong></a> ist von jeher für die Kleinsten konzipiert. Es ist ein in sich geschlossenes System zum Programmieren.</p>
<p>Das ist schon deshalb vorteilhaft, weil man von der Datei als Metapher wegkommt &#8212; mancher meint ja sogar, das Konzept von Dateien <a href="http://dustincurtis.com/files.html">liegt im Sterben</a>. Und hat damit nicht ganz Unrecht.</p>
<p>(Nebenbei bemerkt überrascht mich immer wieder, mit welcher Vehemenz sich Otto Normalnutzer die Verzeichnishierarchie zu Nutze machen, um Fotos zu katalogisieren &#8212; wo es doch Programme gibt, die diesen Zweck viel eleganter lösen als jeder Dateimanager dazu im Stande wäre. Aber ich schweife ab&#8230;)</p>
<p>Alles, was man in Smalltalk sieht, kann man untersuchen und verändern. <strong>Das lädt zum Ausprobieren ein, zumal sämtliche Änderungen automatisch protokolliert werden.</strong></p>
<p>Und weil man das nicht in einer Viertelstunde online probieren kann, sei an dieser Stelle das kostenfreie Buch <a href="http://www.squeakbyexample.org/"><cite>Squeak by Example</cite></a> als eine wunderbare Einführung in Squeak Smalltalk empfohlen.</p>
<h2>Überzeugt?</h2>
<p>Hast du während deiner Ausbildung schlechte Erfahrungen mit Programmierkursen gemacht? Bist du ein gebranntes Kind? Mit welcher Sprache wurdest du gequält?</p>
<p>Oder hast du noch einen Tipp, welche Sprache für Anfänger geeignet sein könnte? Hast du mit Ruby oder Smalltalk vielleicht schon Erfahrungen gesammelt?</p>
<p>Sag es uns in den Kommentaren!</p>
<p>[Foto von <a href="http://www.flickr.com/photos/iboy/4333362932/">iboy</a>, CC-Lizenz]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wendtswelt.de/2010/06/programmieren-anfaenger/?piwik_campaign=rss&amp;piwik_kwd=997/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Piwik für&#8217;s iPhone: Nutzerstatistiken für unterwegs</title>
		<link>http://www.wendtswelt.de/2010/05/piwik-iphone/?piwik_campaign=rss&amp;piwik_kwd=871</link>
		<comments>http://www.wendtswelt.de/2010/05/piwik-iphone/?piwik_campaign=rss&amp;piwik_kwd=871#comments</comments>
		<pubDate>Mon, 10 May 2010 19:16:50 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Piwik]]></category>
		<category><![CDATA[Projekt]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.wendtswelt.de/?p=871</guid>
		<description><![CDATA[Als Alternative zu Google Analytics visualisiert Piwik die Nutzerstatistiken mit Flash und sperrt damit iPhone-Nutzer aus. Mit dieser Web-App geht's trotzdem.]]></description>
			<content:encoded><![CDATA[<p></p><p>Wer eine Website betreibt und zuverlässig erfahren möchte, in welchen Bereichen sich eine Optimierung lohnt, um bestimmte Ziele zu erreichen, kommt um <strong><a href="http://de.wikipedia.org/wiki/Web_Analytics">Web-Analytics</a></strong> nicht herum.</p>
<p><img src="http://www.wendtswelt.de/wordpress/wp-content/uploads/2010/05/piwik_iphone_visualize-200x300.png" alt="" title="Visualisierung" width="200" height="300" class="alignleft size-medium wp-image-883" /></p>
<p>Dabei gibt es auch Alternativen zum Platzhirsch <a href="http://www.google.com/intl/de/analytics/">Google Analytics</a>.</p>
<p>Auf WendtsWelt nutzen wir die freie Software <strong><a href="http://piwik.org">Piwik</a></strong> (nähere Infos zur Speicherung von Benutzerdaten stehen im <a href="/impressum/">Impressum</a>). Wer wissen will, was Piwik so alles über Besucher herausfindet, kann sich auf der <a href="http://piwik.org/demo/">Demo-Seite</a> umsehen.</p>
<p>Der Nachteil von Piwik: Die Software nutzt <strong>Flash</strong> für die grafische Darstellung der Daten. Und Flash gibt&#8217;s <strong>nicht auf dem iPhone</strong>. Piwik bietet aber eine <a href="http://dev.piwik.org/trac/wiki/API">API</a> an, um an die Rohdaten zu kommen und damit eigene Anwendungen zu schreiben.</p>
<p>Also haben <a href="http://sebastian.thiele.me/blog/piwik-statistik-furs-iphone/1646">Sebastian</a> und ich uns hingesetzt und eine eigene Web-App geschrieben:</p>
<p><strong><a href="http://awendt.github.com/piwik-iphone/">Piwik für&#8217;s iPhone</a></strong> (und das sieht auch nur dort wirklich gut aus)</p>
<p>Der Vorteil: Es muss nichts weiter installiert werden, weder auf dem iPhone noch auf dem Server.</p>
<p>Fertig ist das Ganze noch lange nicht, aber funktionieren tut es allemal.</p>
<h2>Auf den Schultern von Giganten</h2>
<p>Möglich ist das nur dank folgender Projekte:</p>
<ul>
<li>Piwik</li>
<li><a href="http://jquery.com/">jQuery</a> als Fundament</li>
<li><a href="http://jqtouch.com/">jQTouch</a> für das iPhone Look-and-Feel</li>
<li>das <a href="http://www.filamentgroup.com/lab/update_to_jquery_visualize_accessible_charts_with_html5_from_designing_with/">jQuery-Plugin visualize</a> für die Grafiken</li>
</ul>
<p>Wer mitmachen möchte, kann das gern tun: Der Quellcode ist <a href="http://github.com/awendt/piwik-iphone">frei verfügbar</a> unter MIT-Lizenz.</p>
<p>Über jegliches Feedback, Anregungen, Kritik und Mitarbeit in Form von Patches, Doku oder schlichtes Weitersagen freuen wir uns!</p>
<p>[Screenshot aufgepeppt mit Fabian Kreisers <a href="http://fabian-kreiser.com/downloads/">iPhone Screentaker</a>]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wendtswelt.de/2010/05/piwik-iphone/?piwik_campaign=rss&amp;piwik_kwd=871/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hilf deinem Team, während des Projektes besser zu werden</title>
		<link>http://www.wendtswelt.de/2010/05/retrospektiven/?piwik_campaign=rss&amp;piwik_kwd=787</link>
		<comments>http://www.wendtswelt.de/2010/05/retrospektiven/?piwik_campaign=rss&amp;piwik_kwd=787#comments</comments>
		<pubDate>Wed, 05 May 2010 20:57:23 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Methoden]]></category>
		<category><![CDATA[Organisation]]></category>
		<category><![CDATA[Produktivität]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Team]]></category>

		<guid isPermaLink="false">http://www.wendtswelt.de/?p=787</guid>
		<description><![CDATA[Retrospektiven bieten als regelmäßige, moderierte Meetings die Möglichkeit, Arbeitsprozesse in Teams schrittweise zu verbessern und so die Produktivität zu erhöhen.]]></description>
			<content:encoded><![CDATA[<p></p><p>Wäre es nicht toll, sich <strong>nicht erst nach Projektende</strong> Gedanken zu machen, was alles schief gelaufen ist? Sich mit den anderen darüber auszutauschen und Dinge sozusagen &#8220;unterwegs&#8221; zu verbessern? Und Erkenntnisse aus einer guten Phase zu nutzen, um das Projekt doch noch zum Erfolg zu führen? Mit <strong>Retrospektiven</strong> geht das.</p>
<p><a href="http://www.flickr.com/photos/denicide/3076040648/"><img src="http://www.wendtswelt.de/wordpress/wp-content/uploads/2010/05/schild_sackgasse_umleitung.jpg" alt="" title="Straßenschild Sackgasse/Umleitung, von valentin.d (CC-BY)" width="420" height="317" class="aligncenter size-full wp-image-833" /></a></p>
<p>Retrospektiven sind regelmäßige Meetings. Das Projektteam analysiert darin einen vergangenen Projektzeitraum und formuliert dann Maßnahmen, um die Situation zu verbessern.</p>
<p>Man kann sich leicht vorstellen, dass diese Regelmäßigkeit mehr bringt als sich nach dem Projekt unter dem Titel &#8220;Lessons Learned&#8221; (oder noch beser: <a href="http://www.amazon.de/Post-mortem-Projekte-erfolgreich-auswerten/dp/3826613481"><cite>Post mortem</cite></a>) zusammenzufinden. Wohin das führt, illustriert der erste Teil der Artikelserie <a href="http://www.implementingscrum.com/2007/09/04/scary-team-retrospectives-part-one/"><cite>Scary Team Retrospectives</cite></a>: Symbolisches Schulterklopfen, die Ergebnisse verschwinden in einer Schublade, und das Team ist demoralisiert.</p>
<p>Retrospektiven verfolgen dagegen eine andere Strategie:</p>
<blockquote>
<p>The trick is to make small improvements regularly.</p>
<p>&#8211; Peter Stevens, <a href="http://agilesoftwaredevelopment.com/blog/peterstev/start-trust-start-retrospective"><cite>Start with Trust, Start with a Retrospective</cite></a></p>
</blockquote>
<p>Veränderungen werden quasi &#8220;zwischendurch&#8221; angestrebt. Ihre Auswirkungen haben direkten Einfluss auf den weiteren Projektverlauf, ihr Erfolg wird dadurch messbar.</p>
<h2>Was ist beim Ablauf zu beachten?</h2>
<p>Damit Retrospektiven funktionieren und ihren Zweck erfüllen (nämlich dauerhafte Veränderungen bzw. Verbesserungen herbeizuführen), ist es hilfreich, sind an folgenden Dingen zu orientieren:</p>
<ul>
<li><strong>Zeitplan.</strong> Ewige Diskussionen sind nicht zielführend. Sie kürzt man am besten ab, wenn man sich ein festes Ende setzt und den gesamten Ablauf daran ausrichtet. Für unser Team reicht meist eine gute Stunde aus.</li>
<li>
<p><strong>Aktivitäten.</strong> Das sind sozusagen soziale Lockerungsübungen. Das Team spricht über Emotionen, um ein gemeinsames Verständnis von Ereignissen zu erlangen und daraus Maßnahmen abzuleiten:</p>
<blockquote>
<p>Typischerweise wissen die Teilnehmer eigentlich alles, was sie für Verbesserungen bräuchten. Man muss sie “nur” dazu bringen, das zu erkennen und zu artikulieren, in der Gruppe die besten Lösungen zu erarbeiten und die Lösungen so weit zu konkretisieren, dass sie umsetzbar sind.</p>
<p>&#8211; Catalyst, <a href="http://www.catalysts.cc/projects/retrospectives/"><cite>Retrospektiven</cite></a></p>
</blockquote>
<p>Das kann so aussehen, dass jeder Teilnehmer Ereignisse des zu untersuchenden Zeitraums auf Zettel schreibt und dann an eine Pinnwand heftet. Die ersten Aha-Effekte kommen mit den Zetteln der anderen. Wenn man die Ereignisse dann noch positiv/negativ beurteilt, kommt man ganz automatisch ins Gespräch. Und bekommt eine ungefähre Vorstellung, was besser zu machen ist.</p>
<p>Ohne Aktivitäten wird es darauf hinauslaufen, dass man letztlich <a href="http://www.implementingscrum.com/2007/09/10/retrospectives-not-just-reading-a-book-part-two/">immer dieselben Fragen stellt</a> &#8212; das langweilt selbst die hartgesottenen Teammitglieder und führt nach spätestens zwei oder drei Retrospektiven nicht weiter.</p>
<p>Einen guten Überblick über mögliche Aktivitäten liefert das entsprechende <a href="http://media.pragprog.com/titles/dlret/Activities.pdf">Kapitel</a> aus <a href="http://www.pragprog.com/titles/dlret/agile-retrospectives"><cite>Agile Retrospectives: Making Good Teams Great</cite></a>.</p>
</li>
<li><strong>Moderation.</strong> Das ist empfehlenswert, um die Zeit im Auge zu behalten und die Aktivitäten zu koordinieren.</li>
</ul>
<h2>Die Rahmenbedingungen müssen stimmen</h2>
<p>Damit Retrospektiven tatsächlich funktionieren, müssen einige <strong>Voraussetzungen</strong> erfüllt sein.</p>
<p>Einerseits muss das Team über Arbeitsprozesse selbst entscheiden dürfen. Die besten Maßnahmen sind nichts wert, wenn sie &#8212; als Vorschläge aufgefasst &#8212; noch irgendeinen Dienstweg gehen müssen.</p>
<p>Andererseits muss das Projekt in kurzen Iterationen durchgeführt werden. <a href="/2010/03/software-agil-entwickeln-mit-scrum/">Agile Methoden wie Scrum</a> helfen hier: Zwischen Sprints kann man etwa alle zwei bis vier Wochen eine Retrospektive durchführen.</p>
<h2>Blick über den Tellerrand</h2>
<p><a href="http://de.wikipedia.org/wiki/Kent_Beck">Kent Beck</a> beschreibt im Vorwort zu <cite>Agile Retrospectives: Making Good Teams Great</cite>, wie er Retrospektiven für sich nutzt und seinen Geburtstag zum Anlass nimmt, das vergangene Jahr Revue passieren zu lassen und Dinge in seinem Leben zu ändern.</p>
<p>Was für Erfahrungen habt ihr gemacht? Gibt es einen anderen, ähnlich effektiven Ansatz? Könnt ihr euch vorstellen, Retrospektiven bei euch zu nutzen, um schon im laufenden Projekt etwas zu verbessern?</p>
<p>[Foto von <a href="http://www.flickr.com/photos/denicide/3076040648/">valentin.d</a>, CC-Lizenz]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wendtswelt.de/2010/05/retrospektiven/?piwik_campaign=rss&amp;piwik_kwd=787/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Automatisierte Tests sind wie Checklisten</title>
		<link>http://www.wendtswelt.de/2010/04/software-testing/?piwik_campaign=rss&amp;piwik_kwd=729</link>
		<comments>http://www.wendtswelt.de/2010/04/software-testing/?piwik_campaign=rss&amp;piwik_kwd=729#comments</comments>
		<pubDate>Mon, 19 Apr 2010 20:53:45 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Basics]]></category>
		<category><![CDATA[dokumentation]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Methoden]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[Wartung]]></category>

		<guid isPermaLink="false">http://www.wendtswelt.de/?p=729</guid>
		<description><![CDATA[Was man sich unter automatisierten Tests in der Softwareentwicklung vorstellen muss, wozu sie gut sind und wie sie Softwareentwickler motivieren können]]></description>
			<content:encoded><![CDATA[<p></p><p>Seien wir ehrlich: Softwareentwicklung ist harte Arbeit. Es geht nicht nur darum, einer Maschine beizubringen etwas zu tun &#8212; das wäre ja einfach! Nein, es geht vor allem darum dafür zu sorgen, dass ich und andere in Zukunft daran weiterarbeiten können. <strong>Automatisierte Tests</strong> helfen dabei.</p>
<p><a href="http://www.flickr.com/photos/jenrab/3592366536/"><img src="http://www.wendtswelt.de/wordpress/wp-content/uploads/2010/04/checklist.jpg" alt="" title="'normal' development checklist 18-24m, von Jen Rabulan-Bertram (CC-BY)" width="420" height="315" class="aligncenter size-full wp-image-734" /></a></p>
<p>Wie muss man sich solche Tests vorstellen? <strong>Automatisierte Tests sind wie Checklisten</strong>, die ich schreibe und der Computer überprüft.</p>
<p>Eine solche Liste formuliert <strong>Anforderungen an die Software</strong>. Spezielle Programme arbeiten diese Listen Punkt für Punkt ab und zeigen, wo die Software sich anders verhält als gewollt.</p>
<p>Jeder, der sich einmal bei einer E-Mail-Adresse vertippt hat, weiß, wie pingelig Computer sein können, wenn etwas nicht genau ihren Erwartungen entspricht. Die Dinger sind ganz schön stur, gell?</p>
<p>Genau das macht man sich in Tests zunutze.</p>
<h2>Dokumentation und Sicherheitsnetz in einem</h2>
<p>Was bringen automatisierte Tests? Zunächst einmal eine rudimentäre Dokumentation, was die Software alles kann (vorausgesetzt, alle Tests laufen ohne Fehler durch und sind selbst nicht fehlerhaft programmiert).</p>
<p>Außerdem wird die <strong>Wartbarkeit</strong> der Software mit Tests erhöht. Jede noch so kleine Änderung kann Auswirkungen auf das Verhalten des gesamten Systems haben, <a href="http://blog.xing.com/2009/12/sicherstellen-dass-alles-funktioniert-regressionstests-bei-xing/">wie auch XING weiß</a>:</p>
<blockquote><p>Jede neue Codezeile in einem Programm kann die exisitierenden Funktionalitäten beeinträchtigen.</p></blockquote>
<p>Irgendwie beängstigend, oder? Ohne Tests ist man da als Entwickler weniger motiviert, Änderungen vorzunehmen. Mit Tests sieht die Sache anders aus.</p>
<p>Brillante Idee für ein neues Feature? Schreibe einen Test und entwickle dann die Funktion.</p>
<p>Unleserlicher Programmcode, der zwar tut was er soll, aber trotzdem verbessert werden muss? Kein Problem: Tests geben einem das gute Gewissen, dass sich am Verhalten der Software nichts geändert hat.</p>
<p>Bug gefunden? Der lässt sich mit einem Test nachstellen und dann beheben. So ist man davor geschützt, denselben Fehler nochmal zu machen.</p>
<h2 lang="en">Think big</h2>
<p>Für große Projekte ist ein Argument für Tests unschlagbar: <strong>Wirtschaftlichkeit.</strong> Tests machen Änderungen an großen Systemen überhaupt erst möglich. Software zu warten, die über Jahrzehnte gewachsen ist und deren erste Autoren die Firma längst verlassen haben, ist ohne Tests ein Albtraum. Häufig ist eine Neuentwicklung unumgänglich &#8212; und das kostet!</p>
<p>Für Kunden heißt das übersetzt: Tests sichern die Weiterentwicklung. Und das kann nur gut sein.</p>
<h2>Die Kehrseite der Medaille</h2>
<p>Natürlich können Tests genauso fehlerhaft sein wie andere Programme auch. Dagegen hilft meist nur Erfahrung, um Probleme zu erkennen und zu vermeiden.</p>
<p>Auch die Investition, die für die Entwicklung von Tests notwendig ist, ist nicht zu vernachlässigen: Nicht selten sind Tests länger als die eigentlichen Programme &#8212; sogar in einem Mini-Projekt wie <a href="http://headhunter.heroku.com">Headhunter</a> ist <a href="http://github.com/awendt/headhunter/blob/master/spec/headhunter_spec.rb">der Test</a> mehr als doppelt so lang wie <a href="http://github.com/awendt/headhunter/blob/master/headhunter.rb">das Programm selbst</a>.</p>
<h2>Ausblick</h2>
<p>Dieser Aufwand ist es scheinbar auch, was <a href="http://www.ihotdesk.com/article/19723967/Software-testing-seen-as-costly-but-needed,-poll-finds">manchen Manager</a> davon abhält, in Tests zu investieren. Schade. Solche Firmen werden es in Zukunft schwer haben, Nachwuchs-Entwickler zu finden.</p>
<p>Man kann nur hoffen, dass sich Tests auch bei Kleinst-Projekten durchsetzen. Gerade für Hobbyprojekte kann es durchaus hilfreich sein, das vollständig getestete Programm an jemanden abzugeben, wenn man selbst keine Zeit mehr hat.</p>
<p>[Foto von <a href="http://www.flickr.com/photos/jenrab/3592366536/">Jen Rabulan-Bertram</a>, CC-Lizenz]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wendtswelt.de/2010/04/software-testing/?piwik_campaign=rss&amp;piwik_kwd=729/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Softwareentwicklung und zerbrochene Fensterscheiben</title>
		<link>http://www.wendtswelt.de/2010/04/broken-windows-theorie/?piwik_campaign=rss&amp;piwik_kwd=692</link>
		<comments>http://www.wendtswelt.de/2010/04/broken-windows-theorie/?piwik_campaign=rss&amp;piwik_kwd=692#comments</comments>
		<pubDate>Sun, 11 Apr 2010 12:30:26 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[broken windows]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Theorie]]></category>

		<guid isPermaLink="false">http://www.wendtswelt.de/?p=692</guid>
		<description><![CDATA[Was hat Softwareentwicklung mit zerbrochenen Fensterscheiben zu tun? Und wie kann man Verwahrlosung von Programmcode verhindern?]]></description>
			<content:encoded><![CDATA[<p></p><p>Irgendwann vor ein paar Tagen hat jemand zwei Straßenecken weiter einen Einkaufskorb mit Kabelbinder an einem Schild befestigt. Mittlerweile wird der Korb als Müllbehälter benutzt, und kaputte Stühle wurden auch daneben abgestellt (&#8220;für Bastler&#8221;), die wieder weg sind. Das ganze ist eine wunderbar anschauliche Variante der <a href="http://de.wikipedia.org/wiki/Broken-Windows-Theorie"><strong>Broken-Windows-Theorie</strong></a>.</p>
<p><img src="http://www.wendtswelt.de/wordpress/wp-content/uploads/2010/04/müll.jpg" alt="Foto" title="Innerhalb von einem Tag wurde der Einkaufskorb als Mülleimer benutzt" width="420" height="315" class="aligncenter size-full wp-image-702" /></p>
<p>Diese Theorie besagt, dass z.&thinsp;B. eine <em>zerbrochene Fensterscheibe</em> ausreicht, um weitere Zerstörung und Verwahrlosung zu fördern und beschleunigen. Das kaputte Fenster sollte schleunigst repariert werden, um Schlimmeres zu verhindern.</p>
<h2>Umgeben von Hässlichem</h2>
<p>Das Phänomen ist <strong>auch bei der Softwareentwicklung</strong> zu beobachten. Aufgabe jedes Entwicklers muss sein, lesbaren und wartbaren Programmcode zu hinterlassen. Code kann aber mit der Zeit verwahrlosen &#8212; vor allem, wenn er immer wieder unregelmäßig, unter hohem Zeitdruck und ohne die nötige Sorgfalt geändert wird (womöglich noch von unterschiedlichen Personen). Dazu genügt es, kleine Stellen im Programm unsauber zu hinterlassen.</p>
<p>Der entsprechende <a href="http://c2.com/cgi/wiki?FixBrokenWindows">Artikel im C2-Wiki</a> fasst das so zusammen:</p>
<blockquote lang="en"><p>When you&#8217;re surrounded by ugly things, your attitude and outlook change. You become pessimistic, and your expectations are lowered. Soon you start accepting that &#8220;that&#8217;s just how things are.&#8221; You start producing ugly things yourself.</p></blockquote>
<p>Verhindern kann das, wer Software sorgfältig entwickelt, und dabei problematische Stellen gleich verbessert oder wenigstens als solche markiert.</p>
<h2>Menschen respektieren gut gepflegte Dinge</h2>
<p>Häufig hilft es dabei, das zu lösende Problem nicht isoliert zu sehen, sondern im Kontext: Passt die jetzige Lösung in die Umgebung oder muss ich noch mehr anpassen? Macht meine Lösung etwas anderes überflüssig? Kann jemand, der von dem Problem noch nichts weiß, ohne Erklärung erkennen, was mein Code tut? (Das Thema <em>Refactoring</em>, also Strukturverbesserungen von Programmcode, das hier angeschnitten wird, ist durchaus einen gesonderten Artikel wert.)</p>
<p>Wenn beim Blick auf den Programmcode grobe Schnitzer auffallen, gebe ich mir weniger Mühe. Wenn der Programmcode dagegen einen gut durchdachten und sorgfältig gepflegten Eindruck macht, werde ich das bei meinen Änderungen berücksichtigen und mir mehr Mühe geben.</p>
<p>Das ist insbesondere dann wichtig, wenn man als Entwickler auf <a href="http://www.wendtswelt.de/2010/04/open-source-bewusstsein/">Unterstützung</a> aus ist.</p>
<p>Also: Repariere zerbrochene Fenster schnell.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wendtswelt.de/2010/04/broken-windows-theorie/?piwik_campaign=rss&amp;piwik_kwd=692/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Bewusstsein schaffen für Open Source</title>
		<link>http://www.wendtswelt.de/2010/04/open-source-bewusstsein/?piwik_campaign=rss&amp;piwik_kwd=653</link>
		<comments>http://www.wendtswelt.de/2010/04/open-source-bewusstsein/?piwik_campaign=rss&amp;piwik_kwd=653#comments</comments>
		<pubDate>Tue, 06 Apr 2010 18:39:56 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Engagement]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Organisation]]></category>
		<category><![CDATA[Recruiting]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.wendtswelt.de/?p=653</guid>
		<description><![CDATA[Elizabeth Naramore hat Entwickler gefragt, warum sie nicht zu Open-Source-Projekten beitragen. Wieso eigentlich nur Entwickler? Was ist mit Designern/Textern?]]></description>
			<content:encoded><![CDATA[<p></p><p>Elizabeth Naramore hat ein paar interessante Antworten auf die Frage, <a href="http://naramore.net/blog/why-people-don-t-contribute-to-os-projects-and-what-we-can-do-about-it">warum Entwickler nicht zu Open-Source-Projekten beitragen</a>. Diese Frage hat mich auch schon beschäftigt.</p>
<p><img src="http://www.wendtswelt.de/wordpress/wp-content/uploads/2010/04/i_want_you.jpg" alt="" title="Ich will DICH für Open-Source-Entwicklung begeistern" width="420" height="312" class="aligncenter size-full wp-image-665" /></p>
<p>Was Elizabeth klären wollte, fasst sie wie folgt zusammen:</p>
<blockquote><p>There are so many great opportunities in open source projects. Are people taking advantage of them? Do they even know about them? Do people even care?</p>
</blockquote>
<p>Die drei am häufigsten genannten Gründe, sich als Entwickler nicht zu beteiligen, sind <a href="http://twtpoll.com/7bcf9g">laut ihrer Umfrage</a>:</p>
<ul>
<li>Zeitmangel</li>
<li>Unsicherheit, was zu tun ist</li>
<li>zu wenig Vertrauen in die eigenen Fähigkeiten</li>
</ul>
<p>Als mögliche Gegenmittel dazu sind unter anderem aufgeführt:</p>
<ul>
<li>Aufteilung der ausstehenden Arbeit in kleine Häppchen</li>
<li>genauere zeitliche Bezifferung für Mitwirkung</li>
<li>Klärung der Erwartungen an Mitstreiter</li>
<li>auch einfache Aufgaben für Anfänger übriglassen</li>
<li>Bedarf nach Dokumentation, Design oder Support kommunizieren</li>
</ul>
<h2>Nur ein Teil des Puzzle</h2>
<p>Diese Vorschläge gehören auf jeden Fall umgesetzt, viele davon sind allerdings zu kurz gegriffen oder wenig praktikabel. Entwickler sind von Natur aus eher am Entwickeln interessiert als daran, sich mit klar formulierten Anleitungen auf die Suche nach Mitwirkenden zu machen. Das kostet Zeit, die auch in die Programmierung neuer Features investiert werden könnte. Hier muss erst ein Bewusstsein entstehen, dass man sich das Leben mit ein paar einfachen Dingen leichter machen kann.</p>
<p>Und Schätzungen, wie lange bestimmte Aufgaben dauern, sind ohnehin ein Problemkind unserer Branche. (Das ist mit ein Grund, warum <a href="/2010/03/software-agil-entwickeln-mit-scrum/">agile Methoden</a> so populär sind.)</p>
<h2>Die richtige Frage den falschen Leuten gestellt</h2>
<p>Das größte Problem mit der Umfrage von Elizabeth sehe ich aber in ihrer Zielgruppe: Ich denke, dass es für Open-Source-Projekte kaum Mangel an <em>Entwicklern</em> gibt. Das Problem scheint mir einfach konstruiert.</p>
<p>Zunächst müsste man ermitteln, wer alles einen Beitrag leisten kann (Entwickler, Designer, Texter, &#8230;) und dann herausfinden, welcher dieser Gruppen das überhaupt bewusst ist. Die Frage &#8220;Warum nicht?&#8221; muss allen gestellt werden, nicht nur den Entwicklern. Entwickler, die (aus welchen Gründen auch immer) nichts zu Open-Source-Projekten beitragen, sind meiner Ansicht nach nur ein kleiner Teil. In der Mobilisierung der anderen Gruppen liegt das Potenzial.</p>
<p>Ich kenne Designer, die Open Source zehn Meilen gegen den Wind an Äußerlichkeiten zu erkennen glauben, aber selbst noch keinem Projekt zu einer anständigen Homepage verholfen haben.</p>
<p>Anderes Beispiel: Die offizielle Website vom <a href="http://git-scm.com/">Versionskontrollsystem Git</a>, dessen <a href="http://git-scm.com/documentation">Doku</a> versucht, auch Nicht-Entwickler für das Projekt zu interessieren, wurde von einem Entwickler gestaltet.</p>
<p>Das sind Widersprüche, die untersucht werden müssen. Es scheint, als wären sich beispielsweise Designer zu fein, zu solchen Projekten beizutragen. Die Frage ist: Stimmt das? Und wie könnte man das ändern?</p>
<p>[Bild: Ausschnitt des <a href="http://en.wikipedia.org/wiki/File:Unclesamwantyou.jpg"><q>Uncle Sam Recruiting Poster</q></a>, gemeinfrei, unterliegt also nicht dem Urheberrecht]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wendtswelt.de/2010/04/open-source-bewusstsein/?piwik_campaign=rss&amp;piwik_kwd=653/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Software agil entwickeln mit Scrum</title>
		<link>http://www.wendtswelt.de/2010/03/software-agil-entwickeln-mit-scrum/?piwik_campaign=rss&amp;piwik_kwd=494</link>
		<comments>http://www.wendtswelt.de/2010/03/software-agil-entwickeln-mit-scrum/?piwik_campaign=rss&amp;piwik_kwd=494#comments</comments>
		<pubDate>Tue, 02 Mar 2010 20:43:56 +0000</pubDate>
		<dc:creator>André</dc:creator>
				<category><![CDATA[Tech]]></category>
		<category><![CDATA[agil]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Methoden]]></category>
		<category><![CDATA[Organisation]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Team]]></category>

		<guid isPermaLink="false">http://www.wendtswelt.de/?p=494</guid>
		<description><![CDATA[Mit Scrum erhält man sehr früh im Projekt lauffähige Software, die nach und nach angepasst wird. Damit sind auch Verbesserungen am Entwicklungsprozess selbst möglich.]]></description>
			<content:encoded><![CDATA[<p></p><p>Irgendwann kursierte bei uns im Freundeskreis mal die Bemerkung, man wisse nicht so genau, &#8220;was ich eigentlich den ganzen Tag mache&#8221;. Das habe ich zum Anlass genommen, meine Tätigkeit mal von einem nicht-technischen Standpunkt aus zu betrachten. Ein für mich wesentlicher Bestandteil: Agile Softwareentwicklung mit Scrum.</p>
<p><a href="http://www.flickr.com/photos/royskeane/413103429/"><img src="http://www.wendtswelt.de/wordpress/wp-content/uploads/2010/02/scrum.jpg" alt="Scrum beim Rugby" title="Steam rises from the scrum (Foto von royskeane, Lizenz: CC-BY)" width="420" height="300" class="aligncenter size-full wp-image-519" /></a></p>
<p>Gerade größere Softwareprojekte leiden unter dem Ruf, weder innerhalb des Zeitplans noch innerhalb des Budgets abgeschlossen zu werden &#8212; und wenn überhaupt, dann meist mit der schmerzhaften Einschränkung, dass dringend benötigte Funktionen nur teilweise umgesetzt wurden. Um dem entgegenzutreten, finden in der Branche immer häufiger agile Methoden Anwendung. (Manche gehen sogar so weit, agile Softwareentwicklung als <a href="http://www.heise.de/developer/meldung/Studie-Agile-Softwareentwicklung-ist-Mainstream-912207.html">Mainstream</a> zu bezeichnen.)</p>
<p>Agile Softwareentwicklung versucht, typische Probleme bei der Entwicklung von Software zu vermeiden, indem Bürokratie vermieden und der Fokus auf die zu erreichenden Ziele gelegt wird.</p>
<p>Scrum (&#8220;Gedränge&#8221;) ist nur eine von vielen Möglichkeiten, Software agil zu entwickeln. Auf andere Methoden gehe ich hier nicht ein, weil sich mein Wissen über agile Methoden auf Scrum beschränkt. (Leider sind für mich agile Methoden im Allgemeinen und Scrum im Speziellen nicht immer klar voneinander abgegrenzt, eben weil ich bisher nur mit Scrum gearbeitet habe.) <q><a href="http://internautdesign.com/ruby_on_rails_consulting">Scrum project management eliminates time spent going in the wrong direction</a></q> sollte aber genauso für andere Ansätze gelten.</p>
<h2>Scrum: In Sprints zu vorzeigbaren Ergebnissen</h2>
<p>Nach der Scrum-Methode wird Software in sehr kleinen Schritten (&#8220;Sprints&#8221;, in der Regel zwei bis drei Wochen) entwickelt, ohne das gesamte Projekt von hinten bis vorne durchzuplanen. Ziel dieser iterativen Entwicklung ist es, möglichst schnell lauffähige Software zu erhalten.</p>
<p>Das ist weniger der Unlust am Planen geschuldet als vielmehr der Einsicht, dass die detaillierte Planung für einen größeren Zeitraum sowieso <em>beliebig nutzlos</em> sein wird. Im Alltag würde niemand auf die Idee kommen, sämtliche Mahlzeiten für das nächste halbe Jahr durchzuplanen, nur um sich möglichst ausgewogen und abwechslungsreich zu ernähren. So wie kaum jemand die Einzelheiten der Erziehung seines Kindes bis zur Volljährigkeit festlegen dürfte.</p>
<p>Man fängt also klein an und entwickelt einen Bruchteil der Software &#8212; der für sich genommen einen Nutzen darstellt. Ist der fertig, kann man darauf aufbauend eine gut informierte Entscheidung treffen, was als Nächstes zu tun ist.</p>
<h2>Schneller sehen, wohin die Reise geht</h2>
<p>Die Vorteile für den Auftraggeber dieses <a href="http://gettingreal.37signals.com/ch06_Race_to_Running_Software.php">Rennens zur laufenden Software</a> liegen auf der Hand: Er erhält schnelles Feedback und sieht, in welche Richtung sich das Produkt entwickelt &#8212; und ob das mit seinen Erwartungen übereinstimmt. Damit kann er <em>während der Entwicklung</em> Einfluss nehmen und z.B. einige Details noch weiter ausarbeiten und dafür weniger wichtige Dinge zurückzustellen oder ganz fallen zu lassen. Im schlechtesten Fall kann ein Projekt ganz eingestampft werden, bevor ein ganzes Jahr (oder zwei) vergangen und das Budget vollständig aufgebraucht ist.</p>
<p>Für das Team bietet Scrum schnelle Erfolgserlebnisse (auch durch die kurzen Feedback-Schleifen mit dem Auftraggeber), eigenständiges und selbstorganisiertes Arbeiten und vor allem die Möglichkeit, <em>den eigenen Prozess und damit das Produkt zu verbessern</em>. Wenn Fehler frühzeitig erkannt werden, die Richtung der Entwicklung noch geändert werden kann und in Retrospektiven regelmäßig über den vergangenen Sprint nachgedacht wird, erhöht das die Produktivität und verbessert das Endprodukt.</p>
<p>Natürlich ist auch Scrum kein Allheilmittel: Gerade die oben angesprochene hohe Verbreitung von agilen Methoden erhöht die Gefahr, Prozesse zu verwässern und &#8220;agil&#8221; als Marketing-Etikett zu missbrauchen. Scrum erfordert von allen Beteiligten viel Disziplin und den Mut, die eigene Arbeitsweise zu hinterfragen &#8212; und zwar nicht einmalig, sondern während des gesamten Projektes. Wer dazu bereit ist, wird Software nicht mehr anders als agil entwickeln wollen.</p>
<p>[Foto von <a href="http://www.flickr.com/photos/royskeane/413103429/">royskeane</a>, CC-Lizenz]</p>
]]></content:encoded>
			<wfw:commentRss>http://www.wendtswelt.de/2010/03/software-agil-entwickeln-mit-scrum/?piwik_campaign=rss&amp;piwik_kwd=494/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
