<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>PHP hates me - Der PHP Blog</title>
	
	<link>http://www.phphatesme.com</link>
	<description>PhpHatesMe, but that's ok!</description>
	<pubDate>Wed, 02 May 2012 05:00:21 +0000</pubDate>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<language>en</language>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/phphatesme/noNetwork" /><feedburner:info uri="phphatesme/nonetwork" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
				<title>Meeting. Ich will doch nur arbeiten.</title>
		<link>http://feedproxy.google.com/~r/phphatesme/noNetwork/~3/YS_PNhJGZgo/</link>
		<comments>http://www.phphatesme.com/blog/projektwerk/meeting-ich-will-doch-nur-arbeiten/#comments</comments>
		<pubDate>Wed, 02 May 2012 05:00:21 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Projektwerkstatt]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=12436</guid>
		<description />
					<content:encoded><![CDATA[
<p>Es ist nicht zu schwer verhindern. Das Meeting. Softwareentwickler hassen es, das Management liebt es. Kaum hat der Programmierer sich in ein komplexes System hineingedacht, öffnet sich auf seinem Monitor ein kleines Fenster, welches ihm einen Hinweis gibt, dass er nur noch 15 min Zeit hat, bis der nächste Termin stattfindet. Dies alleine wäre noch nicht schlimm, die Tatsache, dass die meisten Meetings ein Gefühl der Unnötigkeit mit sich bringen, bringt auch den Zorn mit, mit dem manchen Menschen solchen Terminen gegenüberstehen.</p>
<p>Das Meetings nicht unnötig sind, ist den meisten Teamplayern bewusst, der Austausch an Informationen ist wichtig für den Projekterfolg, auch die gemeinsamen Diskussionen beeinflussen die Qualität der Produkte, die es zu erstellen gibt. Trotzdem werden schätzungsweise 50 Prozent aller Gruppentermine als nicht erfolgreich wahrgenommen. Da zu einem erfolgreichen Projekt auch erfolgreiche und nicht weitverbrennende Termine gehören, gilt es zu analysieren, warum das teure Beisammensein häufig erfolglos scheint. Im Normalfall sind es immer wieder die gleichen Probleme die auftreten:</p>
<ul>
<li><strong>Durcheinanderreden und Monologe der Teilnehmer</strong> – Viele dominante Kollegen nutzen solche Augenblicke, um sich zur Schau zu stellen und all ihr Wissen in minutenlangen Monologen wiederzugeben. Zusätzlich passiert es bei hitzigen Debatten, dass alle Teilnehmer gleichzeitig reden wollen. Ist die Stimmung eines solchen Termins erst mal vergiftet, ist es schwer wieder auf eine sachliche Ebene zu gelangen.</li>
<li><strong>Abschweifen vom eigentlichen Thema</strong> – Häufig passiert es, dass die Teilnehmer weit vom eigentlichen Thema abkommen, da kommt von vom eigentlichen Fokus schnell zu Problem B und von dort zu Problem C. Diese Punkte sind sicherlich auch für den Projekterfolg wichtig, trotzdem helfen sie einem nicht beim eigentlichen Grund des Meetings.</li>
<li><strong>Überziehen der Termine</strong> – Eine Stunde rum, diverse hitzige Diskussionen hinter sich gebracht, aber ein Konsens wurde nicht gefunden. So oder so ähnlich enden viele schlecht laufende Besprechungen. Durch die harten Anschläge weiterer Termine bleibt in einem solchen Fall auch keine Zeit mehr noch schnell ein Ergebnis zu formulieren und wenn es dann doch gelingt, wurde es übers Knie gebrochen und wird sicherlich nach kurzer Zeit wieder auf dem Tisch landen.</li>
<li><strong>Unsicherheit beim Ergebnis</strong> – Termin abgeschlossen. Die Teilnehmer gehen mit einem guten Gefühl raus, im Nachgang wird aber klar, dass gar nicht alle Teilnehmer das Ergebnis des Termins identisch in Erinnerung haben. Nach einer Woche werden es immer mehr, die sicher sind, dass genau das Ergebnis in ihrem Köpfen das richtige war und man sich wundert, dass andere nicht genau das gleiche denken.</li>
</ul>
<p>Meetings werden häufig als nervend wahrgenommen und der Grund dahinter nicht analysiert. Häufig sind es aber genau die vier aufgeführten Punkte, die einen eigentlich nützlichen Termin als Strapaze enden lassen. Dabei hilft die Erstellung und die Einhaltung einfacher Meetingregeln bereits das gröbste aus der Welt zu schaffen.</p>
<ul>
<li><strong>Es existiert eine Agenda </strong>- In der Einladung der Besprechung wird bereits genau beschrieben, wie der Termin ablaufen soll. Dieser Ablaufplan wird am Anfang einmal durchgesprochen, damit alle Teilnehmer wissen, was sie erwartet. Das Abschweifen wird somit bereits unterbunden, da eine klare Struktur des Themas behilflich ist sich selbst klarer zu strukturieren.<br />
Zusätzlich können sich Teilnehmer auf Grund der Agenda gezielt vorbereiten. Bemerkungen werden wertvoller und die eingebrachten Informationen hochwertiger. Oft sind Lösungen, die auch den gemeinsamen Tenor treffen, im Vorfeld in den Köpfen ausgearbeitet – vielleicht auch unterbewusst &#8211; und müssen nur erläutert werden. Gur vorbereitete Termine finden häufig schneller zu einem Konsens als spontane Treffen.</li>
<li><strong>Ein Moderator wurde bestimmt</strong> – Die Kunst der Moderation ist sicherlich keine einfache. Die Ernennung eines Moderators erhöht die Struktur aber auf mehreren Ebenen. Zum einen versucht ein guter Moderator fachlich neutral zu agieren, was bedeutet, er kann unterschiedliche Meinungen an einen Tisch bringen und bei der Konsensfindung behilflich sein. Zusätzlich hat er die Aufgabe den Prozess zu verteidigen.</li>
<li>Nähert sich der Termin dem Ende, so muss den Teilnehmern frühzeitig dies mitgeteilt werden, so dass sich auf ein Ergebnis oder weiteres Vorgehen geeinigt werden kann.</li>
<li>Unnötig lange Monologe können, mit Verweis auf die zur Verfügung stehenden Zeit, abgebrochen werden.</li>
<li>Abschweifende Kommentare und Nebendiskussionen müssen unterbunden werden. Je früher hier gestoppt wird, desto einfacher ist der Weg zurück zum Hauptthema.
<ul>
<li><strong>Bestimmung der Ziele</strong> – Damit der Erfolg eines Termins eintreten kann, muss klar definiert werden, was eigentlich das Ziel ist. Dieses Ziel gilt es bereits in der Einladung neben der Agenda festzuhalten. Das Ziel ist zusätzlich ein wichtiges Werkzeug des Moderators. Nur so kann bestimmt werden, ob Monologe, Abschweifungen oder sonstige vermeintliche Störungen zielführend sind.</li>
<li><strong>Ergebnisprotokoll</strong> – Nach Durchführung des Termins müssen die Ergebnisse schriftlich festgehalten werden. Damit dies nicht zur Qual wird – wir wissen wie Informatiker auf die Erstellung von Protokollen reagieren – gilt es das Protokoll bei einem Standardtermin möglichst kurz zu halten. Ein guter Moderator lässt noch im Termin die Teilnehmer selbst die Ergebnissätze formulieren und beharrt darauf, dass kurz und prägnant sind. Wenn man ein Ergebnis nicht auf den Punkt bringen kann, dann ist es noch zu schwammig und muss noch einmal in die Runde gehen.</li>
</ul>
</li>
</ul>
<p>Wie bei allen Regeln sollte mit einer kleinen Anzahl begonnen werden. Reichen sie, dann sollte man mit dem gleichen Verfahren durch alle Termine kommen. Reichen sie nicht, gilt es wieder in die Analysephase zu gehen und Punkte zu entfernen oder hinzuzunehmen.</p>

						<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/php/woruber-ich-nicht-mehr-diskutieren-werden/">Worüber ich nicht mehr diskutieren werde!</a><img src="http://feeds.feedburner.com/~r/phphatesme/noNetwork/~4/YS_PNhJGZgo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/projektwerk/meeting-ich-will-doch-nur-arbeiten/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/projektwerk/meeting-ich-will-doch-nur-arbeiten/</feedburner:origLink></item>
		<item>
				<title>Versuch’ es doch einfach mal.</title>
		<link>http://feedproxy.google.com/~r/phphatesme/noNetwork/~3/icTD6La-hXQ/</link>
		<comments>http://www.phphatesme.com/blog/projektmanagement/versuch-es-doch-einfach-mal/#comments</comments>
		<pubDate>Mon, 23 Apr 2012 05:00:01 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Projektmanagement]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=12433</guid>
		<description />
					<content:encoded><![CDATA[
<p>Das Metier in dem wir arbeiten ist eines der jüngsten. Softwareentwickler können nicht auf eine tausendjährige Tradition zurückschauen, wie es andere Handwerker können. Unsere Standards und Traditionen sind nicht so gefestigt, wie bei anderen. Trotzdem gibt es Richtlinien und Best-Practices, die sich über die letzten Jahre geformt haben. Dies haben wir nicht zuletzt Personen zu verdanken, wie Martin Fowler, der das Refactoring standardisiert hat, Robert C. Martin mit seinem Klassiker zum Thema Clean Code oder der Viererbande, die die Entwurfsmuster niedergeschrieben haben.</p>
<p>Standards scheinen auch in der Softwareentwicklung ein gerne angenommenes Geschenk zu sein, doch leider gibt es immer wieder den Trend zu sagen, dass Standards toll sind, sie aber leider nicht auf die aktuelle Situation passen. Dies ist ein wiederkehrendes Muster bei Bibliotheken [Die Bibliothek], aber noch häufiger sträuben sich Softwareprofis, wenn es um Prozesse geht.</p>
<p>In traditionellen Unternehmen sind es nicht die Entwickler, die die Prozesse machen, sondern das Management oder die Projektverantwortlichen. Wenn die Personen an der organisatorischen Spitze gut und erfahren sind, ist dies auch von Vorteil, da sie sich stärker mit der Materie befasst haben. Leider besteht häufig eine anscheinend natürliche Spannung zwischen Projektmanagement und Softwareentwicklung.</p>
<p>Programmierer neigen dazu Prozessfragen erst einmal sehr kritisch zu sehen. Jede Vorgabe, die einen daran hindert genau so zu arbeiten, wie es für einen als Individuum am besten ist, wird primär als Behinderung wahrgenommen.  <strong>Jeder Mensch ist einzigartig, warum sollte es eine funktionierende Methode geben alle möglichst produktiv zu steuern.</strong> In dieser Aussage stecken gleich zwei „Fehler“. <em>Sind wir wirklich so unterschiedlich?</em> Als Person betrachtet mag dies natürlich stimmen, wenn man aber die Person in ein Unternehmensumfeld steckt, so achtet man darauf, dass ein Team homogen zusammengestellt wird. Man ähnelt seinen Kollegen mit der Zeit immer mehr &#8211; so wie es bei Ehepaaren auch zu beobachten ist. Auch ein Teamleiter ist gut damit beraten sein Team so zusammenzustellen, dass ein ähnliches Gedankengut vorhanden ist. Die zweite falsche Annahme ist, dass es wichtig ist, dass man als einzelner maximal Produktiv sein muss. Natürlich arbeitet man gerne so optimiert wie möglich, das steht außer Frage. Einem Projektverantwortlichen ist es nicht wichtig, dass ein bestimmter  Mitarbeiter produktiv ist, sondern das Team muss maximale Leistung bringen. Wenn dies bedeutet, dass einer der Kollegen nicht sein ganzes Potential ausschöpfen kann, dann muss man damit umgehen können. Einfach ist dieses Umdenken sicher nicht, denn man muss sein egozentrisches Weltbild liegen lassen und das Gesamte sehen. Hat man dies geschafft, kann es einfacher sein, das Projektmanagement und seine Methoden zu verstehen.</p>
<p>Ein Paradebeispiel und gerade derzeit sehr aktuell ist die Einführung von agilen Prozessen, wie zum Beispiel Scrum. Obwohl es eine enorme Erleichterung für den Softwareentwickler bedeutet, ist er häufig sehr kritisch dem gegenübergestellt. Zu viele Unbekannte gilt es zu verstehen. Gewiss sollte man in einer solchen Situation nicht beginnen die neue Methodik zu bekämpfen. Den Gedanken, dass das eigene Projekt so individuell und das Team so besonders ist, dass dieses Vorgehen bei anderen klappen kann, aber leider bei einem selbst nicht, sollte man fürs erste unterdrücken.</p>
<p>Standards entstehen nicht einfach. Die meisten wurden von Experten erstellt, die sich mit der Thematik auskennen und die jahrelange Erfahrungen haben. Standards befinden sich bei anderen auch im täglichen Einsatz und dort funktionieren sie. Wenn man die Personen anspricht, die vor der Einführung kritisch waren, so werden die meisten sicher zurückrudern und sich eingestehen, dass es vielleicht doch eine gute Idee war.</p>
<p>Wichtig bei der Einführung neuer Standards ist, dass die Betroffenen offen mit dem Thema umgehen. Bedenken dürfen ausgesprochen werden, dürfen einen aber nicht dabei behindern es auszuprobieren. Wenn nur genügend Leute versuchen unterbewusst ein System zu sabotieren, dann werden sie es auch schaffen – egal wie gut das System ist. Klar ist auch, dass der Aspekt des Ausprobierens ein wichtiger ist.</p>
<p>Wir leben in einer agilen Welt. Entscheidungen, die getroffen wurden können revidiert werden. Wenn nach ein paar Wochen klar ist, dass der Standard wirklich nicht zu einem passt, dann hat man kaum etwas verloren. In den meisten Fällen wird man aber überrascht sein, dass es sich bei einem doch gut in das Gesamtsystem einbetten lässt.</p>
<p><em>„Leute, die sagen es kann nicht klappen, sollen denen nicht im Wege stehen, die es gerade machen.“</em></p>

						<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/projektwerk/projektwerkstatt-status-quo/">Projektwerkstatt: Status Quo</a><img src="http://feeds.feedburner.com/~r/phphatesme/noNetwork/~4/icTD6La-hXQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/projektmanagement/versuch-es-doch-einfach-mal/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/projektmanagement/versuch-es-doch-einfach-mal/</feedburner:origLink></item>
		<item>
				<title>Zerbrochene Fenster.</title>
		<link>http://feedproxy.google.com/~r/phphatesme/noNetwork/~3/GnnZR62LcAc/</link>
		<comments>http://www.phphatesme.com/blog/softwaretechnik/zerbrochene-fenster/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 05:00:56 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[Softwaretechnik]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=12429</guid>
		<description />
					<content:encoded><![CDATA[
<p>1982 haben die US-amerikanischen Sozialforscher James Q. Wilson und George L. Kelling die „Broken Window Theory“ aufgestellt<a title="" href="#_ftn1">[1]</a>. Diese Theorie handelt von der Verwahrlosung New Yorks zu der damaligen Zeit. Sie besagt, dass harmlose Verstöße gegen die Norm, wie beispielsweise ein zerbrochenes Fenster, der Beginn sind für den vollständigen Niedergang eines ganzen Systems.</p>
<p>Mögliche Beweise kann man viele finden. So wurde zur Unterlegung der Theorie ein vollkommen intakter Jaguar in die südliche Bronx gestellt. Vier Tage vergingen und das Auto konnte ohne Kratzer wieder abgeholt werden. Keiner kam auf die Idee den Wagen anzufassen oder schlimmeres damit zu machen. Das gleiche Experiment wurde kurz darauf wieder mit diesem Jaguar ausgeführt. Die einzige kleine Schraube an der gedreht wurde, war das Einschlagen eines der kleinen Fenster. Innerhalb von vier Stunden lag das Auto auf dem Rücken, wurde angezündet und ausgenommen. Die Lehre aus diesem Test lautet „Beschädige etwas und kümmere dich nicht darum, andere werden es somit genauso behandeln“. Man muss aber nicht unbedingt ein Auto opfern, um einen Beweis für eine solche Theorie zu gewinnen. Die Beobachtung seines eigenen Mikrokosmos reicht häufig aus. Da wäre die aufgeräumte Wohnung, in der man sich am wohlsten fühlt und die erste Zeit wird man den Teufel tun und irgendwo etwas liegen lassen, sobald aber die ersten Teile nicht mehr auf ihrem Platz liegen findet das Chaos seinen Weg.</p>
<p>Wir als Softwareentwickler kennen dieses Vorgehen nur zu gut. Ist der erste Verstoß gegen die geltenden Regeln erst mal geschehen, so lassen der zweite und dritte nicht lange auf sich warten. Ist das System aber sauber, so tut es uns Entwicklern in der Seele weh, den ersten Fehler zu begehen, denn die meisten erkennen die Eleganz eines reinen Systems.</p>
<p>Es darf nicht vergessen werden, dass es viele Junior-Entwickler in Projekten gibt. Häufig passen sie sich an die Qualität des Codes an, den sie vorfinden. Sollten also keine Kommentare vorhanden sein, so wird er auch keine schreiben. Fehlt die Testabdeckung, so wird sich ein Junior nicht hinsetzen und Unit Tests schreiben. Dafür fehlen meist einfach die Erfahrungswerte und das Wissen, dass diese Eigenschaften von gutem Code einem zum späteren Zeitpunkt weiterhelfen.</p>
<p>Um ein System auf die Dauer sauber zu halten, gilt es möglichst viele Regeln, die man sich gesetzt hat automatisiert zu überprüfen. Es darf nicht passieren, dass sich der Verfall heimlich einschleicht. Ist ein Verstoß erst mal eine Weile im System wird sich niemand mehr verantwortlich fühlen, passiert das Auffinden jedoch zeitnah, so existiert auch noch eine Bindung zum Code.</p>
<p>Regeln die heutzutage einfach automatisiert geprüft werden können sind beispielsweise:</p>
<ul>
<li>Formatierungsregeln</li>
<li>Validierung des Output-Formats</li>
<li>Einhaltung minimaler Testabdeckung</li>
<li>Fehlerfreier Testdurchlauf</li>
<li>Softwaremetriken</li>
</ul>
<p>Alles was einfach überprüft werden kann, sollte auch gemacht werden.</p>
<p>Bei der Einführung solcher Prüfungen, kann auch sehr viel falsch gemacht werden. Leicht kann der verantwortliche Qualitätsmanager über sein Ziel herausschießen. Sollte zum Beispiel jemand auf die Idee kommen nach dem Lesen dieses Abschnitts die aufgestellten Formatierungsregeln automatisiert zu testen, so ist dies fürs erste eine gute Idee. Wenn der Mechanismus dann das erste Mal durchgelaufen ist, wird man feststellen, dass bereits hunderte von Fenstern eingeschlagen wurden, also viele falsche Formatierungen gefunden wurden. Die Entwickler werden auf diese Art nicht mitgenommen werden. Ob man jetzt 50 oder 51 Probleme hat, ist einem herzlich egal.</p>
<p>Um neue Regeln sauber einzuführen müssen wir das Problem in kleine Häppchen zerlegen und diese dann peu à peu bereinigen. <em>Wir haben neue Formatierungsregeln?</em> Diese müssen vielleicht nur für neuen Code gelten oder wir schalten jeden Monat ein neues Verzeichnis zur Überprüfung hinzu. Wichtig dabei ist, dass der Schmutz, welcher sich über die Jahre gesammelt hat überschaubar bleibt, die Entwickler müssen das Gefühl haben es in einer humanen Zeit hinzubekommen.<em> Wer räumt schon gerne den Müll von anderen auf?</em></p>
<div><br clear="all" /></p>
<hr align="left" size="1" width="33%" />
<div>
<p><a title="" href="#_ftnref1">[1]</a> Broken Windows (http://www.theatlantic.com/magazine/archive/1982/03/broken-windows/4465)</p>
</div>
</div>

						<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/tools/was-man-sich-mal-anschauen-sollte/">Was man sich mal anschauen sollte</a><img src="http://feeds.feedburner.com/~r/phphatesme/noNetwork/~4/GnnZR62LcAc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/softwaretechnik/zerbrochene-fenster/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/softwaretechnik/zerbrochene-fenster/</feedburner:origLink></item>
		<item>
				<title>Soll: Performant; Ist: Schwierig | Team-Entwicklung in Software-Projekten</title>
		<link>http://feedproxy.google.com/~r/phphatesme/noNetwork/~3/Wlyg2l-6hH8/</link>
		<comments>http://www.phphatesme.com/blog/projektmanagement/soll-performant-ist-schwierig-team-entwicklung-in-software-projekten/#comments</comments>
		<pubDate>Thu, 29 Mar 2012 13:00:00 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[Vorträge]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/blog/projektmanagement/soll-performant-ist-schwierig-team-entwicklung-in-software-projekten/</guid>
		<description />
					<content:encoded><![CDATA[
<p>Der Vortrag &#8220;Soll: Performant; ist: Schwierig / Teamentwicklung in Software-Projekten&#8221; beschreibt wesentliche Momente der Entwicklung von Teams und Maßnahmen zur Unterstützung dieses Prozesses. Die Phasen der Team-Entwicklung laufen immer ab, wenn sich Leute finden, die an einem Projekt wollen oder sollen. </p>
<p>Man sollte diese Phasen und den Ablauf der Teamentwicklung kennen. Wenn man diese ignoriert, stellt sich ein beliebig gutes oder schlechtes Ergebnis ein (was Motivation des Teams / Abwanderung und Zulauf, Zusammenarbeitsformen, Arbeitsergebnisse angeht). </p>
<p>Wenn man diese Prozesse kennt, kann man steuernd und bewusst eingreifen, um insgesamt bessere Ergebnisse zu erzeugen. Der Vortrag reflektiert sowohl berufliche Teams als auch Open Source Projekte und beantwortet Fragen zur Zielsetzung und -erreichung, Motivation und Beständigkeit. </p>

							<img src="http://cdn.slidesharecdn.com/20120320janosch007sollperformant-istschwierig-120320124120-phpapp02-thumbnail-2?1332267421" />	
				<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/projektmanagement/soll-performant-ist-schwierig-team-entwicklung-in-software-projekten/"></a><img src="http://feeds.feedburner.com/~r/phphatesme/noNetwork/~4/Wlyg2l-6hH8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/projektmanagement/soll-performant-ist-schwierig-team-entwicklung-in-software-projekten/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/projektmanagement/soll-performant-ist-schwierig-team-entwicklung-in-software-projekten/</feedburner:origLink></item>
		<item>
				<title>Scrum löst eure Probleme nicht.</title>
		<link>http://feedproxy.google.com/~r/phphatesme/noNetwork/~3/mI0UTDSnhqQ/</link>
		<comments>http://www.phphatesme.com/blog/projektmanagement/scrum-lost-eure-probleme-nicht/#comments</comments>
		<pubDate>Mon, 26 Mar 2012 05:00:19 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Projektmanagement]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=12393</guid>
		<description />
					<content:encoded><![CDATA[
<p>Starke Worte für einen der größten Verfechter der agilen Herangehensweise. <strong>Scrum löst die meisten Probleme die ein Unternehmen hat nicht, aber es zeigt sie auf</strong>. Nehmen wir das klassische Beispiel der Priorisierung. In den meisten Software-Unternehmen werden Task-Tracking-Tools eingesetzt, betrachtet man dort die Art nach der Priorisiert wird, so existiert dort meist eine Handvoll Einstufungsmöglichkeiten. Blocker, sehr wichtig, wichtig, muss irgendwann mal gemacht werden usw.. Was passiert in solchen Unternehmen mit der Priorität? Natürlich ist alles erst mal sehr wichtig. Es könnte ja das nächste große Ding dabei sein und wenn wir das nicht alles sofort umsetzen, haben wir ein Problem. Wenn aber alles eine sehr hohe Einstufung bekommt, dann haben wir im Endeffekt gar keine Bewertung vorgenommen. Was ist denn jetzt wichtiger? Feature A oder Feature B? Meist weiß es der Produktverantwortliche selbst nicht. Dieses Vorgehen ist nicht optimal, aber verstößt auch gegen keine Regel des Wasserfallmodels oder anderen veralteten Standards.</p>
<p>Bei Scrum ist es anders. Es wird vom Product Owner verlangt alle Features in eine Reihenfolge zu setzen. Es ist eine einfache Liste mit Wünschen und wie bei allen Listen gibt es keine Einträge, die auf derselben Position verharren. Das Team, welches das Projekt technisch betreut weiß also immer genau, was als nächstes ansteht und was zum jetzigen Zeitpunkt das Potential hat bald umgesetzt zu werden.</p>
<p><em>Wo war aber das eigentliche Problem? </em>Im ersten Beispiel war es der Produktverantwortliche, der sich nicht entscheiden konnte, was denn momentan das wichtigste ist und wie die verschiedenen Features untereinander gewichtet werden sollen. <em>Hilft uns Scrum dabei dieses Problem zu lösen? </em>Ein klares <strong>Nein</strong>. Das gute an Scrum ist aber, dass es uns als Rahmenwerk dazu zwingt unser Projekt besser zu verstehen. Es zwingt uns eine klare Reihenfolge zu definieren. Der Product Owner muss sich hinsetzen und Gedanken darüber machen in welcher Reihenfolge die Punkte abgearbeitet werden sollen. Er reflektiert sein Produkt immer und immer wieder, redet mit anderen Stakeholdern und stimmt sich mit ihnen ab.</p>
<p>Oft ist einem gar nicht klar, was dies eigentlich bedeutet und wird als pure Schikane empfunden. Dem ist aber nicht so. Die Entwickler haben auf einmal nicht mehr den riesen unsortierten Berg an Arbeit vor sich liegen und können uns strukturierter beginnen anzufangen. Wünsche, die ganz hinten auf der Liste stehen müssen erst mal gar nicht mehr in Betracht gezogen werden und es wird nur das entwickelt, was gerade relevant ist. Auch wird den Verantwortlichen klar, was es vielleicht nicht in das nächste Release schaffen wird und man kann sich frühzeitig darauf einstellen. Es handelt sich also keinesfalls um Schikane.</p>
<p>Nehmen wir ein zweites Beispiel. Bei Scrum gibt es täglich ein aktuelles Sprint-Burndown-Chart, das dazu verwendet wird den Fortschritt im aktuellen Sprint zu visualisieren.</p>
<p><img class="alignnone" src="http://upload.wikimedia.org/wikipedia/commons/8/8c/Burn_down_chart.png" alt="" width="636" height="260" /></p>
<p>Die optische Aufbereitung hilft den Entwicklern zu erkennen, wann sie mit ihrer Arbeit hintendran sind und wann sie nahe an der erhofften Geschwindigkeit liegen. Man könnte jetzt meinen, das Burndown-Chart löst das Problem des faulen Entwicklers und es ist dazu da ihn immer wieder drauf hinzuweisen, dass er härter arbeiten soll. Viele Arbeitgeber sehen dies genauso. Zum Glück ist dies aber falsch.</p>
<p>Das Burndown-Chart ist ein Werkzeug um Probleme aufzuzeigen. Sobald etwas Unerwartetes im Diagramm zu sehen ist, heißt es, dass man nachforschen muss, um herauszubekommen, was der Grund dafür ist. In den allermeisten Fällen ist es nicht das faule Team, sondern Rahmenbedingungen, die nicht stimmen. Häufig sind es Rahmenbedingungen wie unaufgelöste Abhängigkeiten, ungenaue Schätzung durch zu viele unbekannte technische Voraussetzungen oder zu ungenaue Beschreibung der eigentlichen Features.</p>
<p>Scrum gibt auch in diesen Fällen nicht vor, wie die Probleme zu lösen sind, es hilft einem aber zeitnah festzustellen, dass dort Probleme existieren. Wie diese zu lösen sind, muss das Team entscheiden.</p>
<p>Probleme in Unternehmen sind zwar häufig ähnlich, aber doch immer wieder ein wenig anders. Ein Projektmanagement-Framework zu schaffen, welches alle möglichen Probleme löst ist also fast unmöglich zu konzipieren, ohne dass das Regelwerk die Umfang einer Enzyklopädie annimmt. Scrum geht also den richtigen Weg indem es einem die Werkzeuge an die Hand gibt Probleme aufzudecken und sich bei der Lösung im groben erst einmal  heraushält.</p>

						<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/tools/doctrine-common-annotations/">Doctrine Common - Annotations</a><img src="http://feeds.feedburner.com/~r/phphatesme/noNetwork/~4/mI0UTDSnhqQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/projektmanagement/scrum-lost-eure-probleme-nicht/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/projektmanagement/scrum-lost-eure-probleme-nicht/</feedburner:origLink></item>
		<item>
				<title>Frontend SPOF</title>
		<link>http://feedproxy.google.com/~r/phphatesme/noNetwork/~3/YiMW26jIymQ/</link>
		<comments>http://www.phphatesme.com/blog/webentwicklung/frontend-spof/#comments</comments>
		<pubDate>Sat, 24 Mar 2012 14:00:00 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Vorträge]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/blog/webentwicklung/frontend-spof/</guid>
		<description />
					<content:encoded><![CDATA[
<p>Presentation from the March Hamburg Web Performance Meetup about Frontend Single Points of Failure</p>

							<img src="http://cdn.slidesharecdn.com/frontendspof-120322081358-phpapp02-thumbnail-2?1332422333" />	
				<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/webentwicklung/frontend-spof/"></a><img src="http://feeds.feedburner.com/~r/phphatesme/noNetwork/~4/YiMW26jIymQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/webentwicklung/frontend-spof/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/webentwicklung/frontend-spof/</feedburner:origLink></item>
		<item>
				<title>HTML5 und node.js Grundlagen</title>
		<link>http://feedproxy.google.com/~r/phphatesme/noNetwork/~3/yccvEmAu6X0/</link>
		<comments>http://www.phphatesme.com/blog/webentwicklung/html5-und-node-js-grundlagen/#comments</comments>
		<pubDate>Thu, 15 Mar 2012 14:00:00 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Tools & Helferlein]]></category>
		<category><![CDATA[Vorträge]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/blog/webentwicklung/html5-und-node-js-grundlagen/</guid>
		<description />
			<content:encoded><![CDATA[<img src="http://feeds.feedburner.com/~r/phphatesme/noNetwork/~4/yccvEmAu6X0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/webentwicklung/html5-und-node-js-grundlagen/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/webentwicklung/html5-und-node-js-grundlagen/</feedburner:origLink></item>
		<item>
				<title>Schnell. Schneller. Am schnellsten?</title>
		<link>http://feedproxy.google.com/~r/phphatesme/noNetwork/~3/FlSr4wpqZ18/</link>
		<comments>http://www.phphatesme.com/blog/softwaretechnik/schnell-schneller-am-schnellsten/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 06:00:37 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Softwaretechnik]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=12303</guid>
		<description />
					<content:encoded><![CDATA[
<p>In Laufe eines Projektes kommt man immer wieder in die Situation zwischen zwei Möglichen Implementierungen unterscheiden zu müssen. Da Technologie-Evaluierung eine gern gesehene Abwechslung zum manchmal eintönigen Programmieralltag, vertieft man sich häufig in diese Aufgabe.</p>
<p>Wird die Untersuchung gewissenhaft durchgeführt, startet man häufig mit einer Matrix, die mit relevanten Qualitätskriterien gefüllt werden. Häufig ist einer der ersten Punkte, die dort auftreten Geschwindigkeit, da es für ein System wichtig ist schnell zu reagieren und dem Benutzer ein angenehmes Nutzungsgefühl zu gewährleisten. Ein großer Fehler, der bei einer solchen Evaluierung häufig gemacht wird ist das Denken in Vergleichen. Technologie 1 ist schneller als Technologie 2. Aus diesem Grund ist Technologie 1 besser als Technologie 2. Richtig. Zumindest wenn es rein um die Performance geht. Nehmen wir mal ein konkretes Beispiel. Wir betrachten zwei Webserver, der eine kann 6.000 statische Anfragen pro Sekunde abarbeiten, der andere bis zu 10.000. Ist die zweite Technologie besser als die erste? Ja, auf die Performance bezogen sicherlich. Betrachtet man das Szenario ein wenig genauer, muss man noch mal einen Schritt zurückrudern.</p>
<p>Genau wie in sehr vielen anderen Problemen der Softwareentwicklung  spielt hier das Anforderungsmanagement eine wichtige Rolle. Der Projektverantwortliche hat die Aufgabe die nicht-funktionalen Anforderungen zu definieren. In den meisten Fällen wird die Forderung an die statischen Anfragen pro Sekunde unter 6.000 liegen. In unserem fiktiven Projekt nehmen wir 1.000 als Richtwert.</p>
<p>Vergleicht man jetzt die beiden Webserver, so wird klar, dass sie mit ihrer Geschwindigkeit beide in Frage kommen. In der aufgestellten Evaluierungsmatrix darf also nicht der Punkte der Geschwindigkeit aufgeführt sein, sondern die Frage „Schnell genug?“ mit ja oder nein muss beantwortet werden. Die tatsächliche Geschwindigkeit darf als Fußnote natürlich notiert sein. Wichtig hierbei ist, dass einem klar wird, dass somit andere Qualitätskriterien wie Wartbarkeit, Erlernbarkeit oder Erweiterbarkeit nun einen höheren Stellenwert gewinnen. Wahrscheinlich sollte man jedem Informatiker nach dem Studium oder der Ausbildung einen Zettel mit „<em>Habt ihr an die Anforderungen gedacht?</em>“ in die Hand drücken, um ihm sein Leben zu erleichtern.</p>
<p>Diese Art zu Vergleichen ist nahe verwandt mit dem „You ain’t gonna need it“-Paradigma, da man Optimierungen, die derzeit nicht notwendig sind auch nicht mit in die Messung einbezieht.</p>
<p>Solche Entscheidungen gilt es aber nicht zu treffen, wenn es um den Einkauf von Software geht, sondern auch wenn man die Eigenimplementierung vorzieht. Einen großen Wert auf Geschwindigkeit zu legen ist sicherlich keine schlechte Eigenschaft eines Softwareentwicklers, doch muss einem klar sein, dass Optimierung oft nicht ohne einen gewissen Preis zu erhalten ist. Wie überall im Leben ist es so, dass wenn man sich sehr stark auf eine Thema konzentriert andere hinten über fallen. In den Performance-Fällen ist es häufig die Wartbarkeit oder Erlernbarkeit, die zuerst in Vergessenheit gerät.</p>
<p><em>Warum ist dies schlimm? </em>Jeder Programmierer hat sicherlich seine eigene Prioritätenliste, was Anforderungen an den eigenen Code angehen. Bei vielen steht Geschwindigkeit an erster Stelle, diese Entwickler vergessen aber sehr häufig, dass Hardware um einiges günstiger ist, als das Gehalt eines Mitarbeiters. Die Rechnung, die einen nach einer solchen Performanceoptimierung serviert wird ist einfach. Die Anzahl der Server, die eingespart werden muss in Verhältnis stehen zu dem Mehraufwand, den ein Entwickler benötigt um das System zu warten oder weiterzuentwickeln. Meist ist es nämlich doch günstiger einen zusätzlichen Server aufzubauen, um damit Performance zu gewinnen, als das vorhandene System zu beschleunigen.</p>
<p>Diese Regeln gelten solange man in einem eigenen Projekt arbeitet, man also Herr seiner Anforderungen ist und die Skalierung des Systems selber übernehmen kann. Findet man sich im Produktkontext wieder, sieht die Welt anders aus. Hier geht es um Alleinstellungsmerkmale der Software, die man verkaufen will und schneller zu sein als die Konkurrenz ist sicherlich ein wichtiges Kaufkriterium. Ich gehe aber davon aus, dass die meisten Webentwickler in Projekten und nicht an Produkten arbeiten.</p>

						<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/allgemein/valueobjects-teil-2/">ValueObjects (Teil 2)</a><img src="http://feeds.feedburner.com/~r/phphatesme/noNetwork/~4/FlSr4wpqZ18" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/softwaretechnik/schnell-schneller-am-schnellsten/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/softwaretechnik/schnell-schneller-am-schnellsten/</feedburner:origLink></item>
		<item>
				<title>Stellt die richtigen Fragen!</title>
		<link>http://feedproxy.google.com/~r/phphatesme/noNetwork/~3/WL8dgg4NBYw/</link>
		<comments>http://www.phphatesme.com/blog/webentwicklung/phmnetwork-phmnetwork-stellt-die-richtigen-fragen/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 06:00:08 +0000</pubDate>
		<dc:creator>Daraff</dc:creator>
				<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=12197</guid>
		<description><![CDATA[Als Scrum-Master darf ich derzeit nicht wirklich aktiv mitprogrammieren. Ist einerseits ok, da die anderen sonst eh neidisch sind auf den tollen Code, den ich schreibe, andererseits kann man natürlich nicht so viel von seinen Erfahrungen weitergeben....]]></description>
					<content:encoded><![CDATA[
<p>Als Scrum-Master darf ich derzeit nicht wirklich aktiv mitprogrammieren. Ist einerseits ok, da die anderen sonst eh neidisch sind auf den tollen Code, den ich schreibe, andererseits kann man natürlich nicht so viel von seinen Erfahrungen weitergeben. Und da ich gerne mein Wissen teile, mache ich das derzeit auf einer Metaebene. Konkret sieht das im Moment so aus, dass ich versuche das Team dazu zu bringen, die richtigen Fragen selbst zu stellen.</p>
<p>Warum ist das aber so wichtig? Ich glaube sobald wir aufhören kritisch zu uns selbst zu sein, beginnen wir unsauber zu arbeiten. Derzeit arbeiten wir an einem großen Symfony2-Projekt und das Team ist eines der besten mit dem ich je zusammenarbeiten durfte. Jetzt gab es vor kurzem einen Zeitpunkt, wo wir den Symfony-Weg verlassen haben, um performanter Rendern zu können. Ist das gut? Nein, den Standardweg zu verlassen ist sicher keine gute Idee, denn ab dort wird es für andere schwierig sich einzuarbeiten und allgemeine Tutorials helfen einem auch nicht mehr. Ist es für unsere Situation trotzdem der bessere Weg? Ja ist es. Die Standard-Seite rendert 5-fach so schnell wie zuvor.</p>
<p>Das Team hat vorher nicht explizit über dieses Thema geredet, jeder hatte im Kopf, dass wir Performance gewinnen mit dem Vorgehen und das ist ja schließlich gut. Was es aber wirklich heißt, das war den meisten nicht klar. Wichtige Fragen, die wir uns also stellen mussten waren zum Beispiel “Verlassen wir den Standard-Weg?”, “Was bringt uns diese Optimierung?”, “Brauchen wir sie im Moment?”, “Optimierungen haben meist auch Nachteile, welche sind diese hier?”.</p>
<p>Nachdem wir alle Pros und Contras aufgenommen hatten, haben wir uns dafür entschieden die Änderungen vorzunehmen. Jetzt denken einige, dass wir so lange diskutiert haben und dann kam trotzdem das gleiche bei raus, was schon vorher im Raum stand. So viel haben wir also nicht gewonnen. Naja wenn man Dinge nicht hinterfragt und trotzdem richtig liegt, dann nennt man das <strong>Glück</strong> und das kann man ja bekanntlich nicht immer haben.</p>
<p>Wichtig ist auch, wenn man die richtigen Fragen in einem formellen Rahmen immer wieder fragt, wird sich jeder Entwickler diese schon im Vorfeld gestellt haben und damit sind die Antworten bereits bekannt. Dadurch werden die Entwickler wieder ein Stück besser.</p>

						<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/tools/externals-mit-git-eure-konzepte/">Externals mit Git ... eure Konzepte.</a><img src="http://feeds.feedburner.com/~r/phphatesme/noNetwork/~4/WL8dgg4NBYw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/webentwicklung/phmnetwork-phmnetwork-stellt-die-richtigen-fragen/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/webentwicklung/phmnetwork-phmnetwork-stellt-die-richtigen-fragen/</feedburner:origLink></item>
		<item>
				<title>Mobile Developer Conference (MDC) 2012</title>
		<link>http://feedproxy.google.com/~r/phphatesme/noNetwork/~3/HRxIt7j4TUc/</link>
		<comments>http://www.phphatesme.com/blog/konferenzen/mobile-developer-conference-mdc-2012/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 06:00:42 +0000</pubDate>
		<dc:creator>Nils Langner</dc:creator>
				<category><![CDATA[Konferenzen]]></category>
		<guid isPermaLink="false">http://www.phphatesme.com/?p=12024</guid>
		<description />
					<content:encoded><![CDATA[
<p>Die Neue Mediengesellschaft Ulm, wird dieses Jahr wieder mit ein paar Konferenzen durchstarten und da ich auf der Web Developer Conference selbst im Advisory Board sitzen werden, um möglichst spannende Tage zu gestalten, habe ich gedacht, dass ich doch mal eine weitere Konferenz ankündige, die für einige von euch sicher auch interessant sein könnte. Die <a href="http://www.mobile-developer-conference.de/">Mobile Developer Conference</a> in meiner wunderbaren Heimatstadt Hamburg (darf man als Zugezogerer überhaupt Heimatstadt sagen? Verstößt sicherlich gegen irgendeinen hanseatischen Kodex). Der Event findet schon nächste Woche satt, deswegen solltet ihr euch ranhalten und schnell buchen.</p>
<p>Hier noch die offizielle Ankündigung:</p>
<blockquote><p>Die <strong>Mobile Developer Conference (MDC)</strong>, die <strong>Konferenz für Mobile-Entwickler</strong>, findet vom 13. &#8211; 14. Februar 2012 zum vierten Mal im Radisson Blu Hotel in Hamburg statt. Nach dem Start 2011 in den deutschen Großstädten <strong>München</strong>, <strong>Köln</strong> und <strong>Hamburg </strong>wird die Konferenz um einen weiteren Tag und einen Thementrack in Hamburg erweitert.</p>
<p>Ein breites Wissen der mobilen Plattformen ist heutzutage erforderlich – auch Themen wie Marketing der App sind relevant. Die Verzahnung mit der IT-Infrastruktur im Unternehmen erfordert ein hohes Maß an Prozessen in mobilen Projekten. Die Mobile Developer Conference widmet sich diesen Themen ausführlich. Aktuelle Trends und Lösungen werden Ihnen präsentiert, damit Sie für Ihre Projekte gerüstet sind.<br />
&nbsp;</p></blockquote>
<p>So wie es aussieht werde ich beim abendlichen Feiern/Essen dabei sein. Wer mich also sieht, am besten ansprechen und ein Bier zischen.</p>

						<br />
		Vor einem Jahr: <a href="http://www.phphatesme.com/blog/phmnetwork/softwareentwickler-%e2%80%93-das-untere-ende-der-nahrungskette/">Softwareentwickler – das untere Ende der Nahrungskette?</a><img src="http://feeds.feedburner.com/~r/phphatesme/noNetwork/~4/HRxIt7j4TUc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.phphatesme.com/blog/konferenzen/mobile-developer-conference-mdc-2012/feed/</wfw:commentRss>
		<feedburner:origLink>http://www.phphatesme.com/blog/konferenzen/mobile-developer-conference-mdc-2012/</feedburner:origLink></item>
	</channel>
</rss>

