<?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/"
	xmlns:series="http://unfoldingneurons.com/"
	>

<channel>
	<title>DaRaFF&#039;s Blog</title>
	<atom:link href="http://daraff.ch/feed/" rel="self" type="application/rss+xml" />
	<link>http://daraff.ch</link>
	<description>Gedanken über Themen, die mich beschäftigen</description>
	<lastBuildDate>Mon, 19 Mar 2012 19:25:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Lessons Learned @ NZZ &#8211; Teil3 &#8211; Code Reviews</title>
		<link>http://daraff.ch/2012/03/lessons-learned-nzz-teil3-code-reviews/</link>
		<comments>http://daraff.ch/2012/03/lessons-learned-nzz-teil3-code-reviews/#comments</comments>
		<pubDate>Mon, 19 Mar 2012 19:25:31 +0000</pubDate>
		<dc:creator>DaRaFF</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Qualität]]></category>
		<category><![CDATA[code review]]></category>
		<category><![CDATA[software qualität]]></category>

		<guid isPermaLink="false">http://daraff.ch/?p=1749</guid>
		<description><![CDATA[Heute möchte ich über das Thema Code Reviews berichten. Vorgeschichte In der NZZ haben wir Ende des letzten Jahres unsere Code Repositories in Richtung Github gezügelt. Weil das Entwicklerteam in kurzer Zeit sehr stark gewachsen ist, mussten wir Wege finden, &#8230; <a href="http://daraff.ch/2012/03/lessons-learned-nzz-teil3-code-reviews/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Heute möchte ich über das Thema Code Reviews berichten.</p>
<h1>Vorgeschichte</h1>
<p>In der NZZ haben wir Ende des letzten Jahres unsere Code Repositories in Richtung Github gezügelt. Weil das Entwicklerteam in kurzer Zeit sehr stark gewachsen ist, mussten wir Wege finden, die Codequalität auf einem hohen Stand zu etablieren. Dies haben wir mit Code Reviews und <a href="http://help.github.com/send-pull-requests/">Pull Requests</a> auf Github versucht.</p>
<h1>Der Prozess</h1>
<p>Ein neues Feature/Bugfix wird in einem neuen Branch, vorzugsweise mittels Pairprogramming, entwickelt. Sind der/die Entwickler der Meinung, dass Feature sei fertig, wird auf Github ein so genannter Pull Request eröffnet. Ein Pull Request zeigt die Unterschiede zwischen 2 Branches an (z.B. zwischen dem develop und dem feature Branch). Der Reviewer (Auch ein Entwickler, aber keiner der das Feature implementiert hat), macht nun folgende Dinge.</p>
<ul>
<li>Unittests durchlaufen lassen</li>
<li>Stylechecks durchlaufen lassen</li>
<li>Reviewen der Differenzen vom Pull Request</li>
<li>Feedback auf der Github Plattform bezüglich Mängeln</li>
</ul>
<p>Ist alles ok, integriert der Reviewer den Code in den develop Branch. Gibt es Mängel, sind die Entwickler wieder in der Pflicht und müssen die Mängel beheben. Dieses Ping Pong Spiel geht so lange weiter, bis der Reviewer der Meinung ist, dass alles ok ist.</p>
<h1>Fazit</h1>
<p>Als wir die Idee mit den Codereviews auf Github hatten, dachten wir, dass dies eine Verbesserung der Codequalität bringen könnte.</p>
<p>Der Effekt war aber deutlich grösser als erwartet. Die Qualität hat sich massiv gesteigert und die Knowhowverteilung ist auch besser geworden, da nun immer 2-3 Leute den Code kennen.</p>
<p>Da ich selber auch Reviewer bin, kann ich folgende Dinge dazu sagen:</p>
<ul>
<li>Code-Reviews haben sehr positive Auswirkungen auf die innere Qualität eines Projektes</li>
<li>Code reviewen ist sehr streng/anspruchsvoll</li>
<li>Entwickler lernen sehr viel aus den Feedbacks</li>
<li>Als Reviewer lernt man selber auch sehr viel dazu</li>
<li>Knowhow verteilt sich noch besser</li>
<li>Checkstylefehler, schlechte Variablennamen usw. sind einfach zu finden. Softwaredesignfehler sind aber sehr schwierig auszumachen und werden häufig zu wenig genau unter die Lupe genommen</li>
<li>Wenn man es seriös macht, benötigen Code Reviews sehr viel Zeit. Wenn man also unter Zeitdruck ist, leidet häufig auch die Qualität der Reviews</li>
</ul>
<p>&nbsp;</p>
<p>Was denkt Ihr über Code Reviews? Sind diese sinnvoll und wenn ja, warum? Oder sind sie nur Arbeitsbeschaffung?</p>
<p>&nbsp;</p>
<div id="socialshareprivacy_ea3f889f7ad04a5659ee98c812344a9b"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google in die USA &uuml;bertragen und unter Umst&auml;nden auch dort gespeichert. N&auml;heres erfahren Sie durch einen Klick auf das <em>i<\/em>.","settings_perma":"Dauerhaft aktivieren und Daten&uuml;ber&shy;tragung zustimmen:","cookie_path":"\/","cookie_expire":365,"cookie_domain":"","css_path":"http:\/\/daraff.chsocialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_facebook.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE"},"twitter":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_twitter.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":""},"gplus":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_gplus.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://daraff.ch/2012/03/lessons-learned-nzz-teil3-code-reviews/'
				$(document).ready(function(){
					$('#socialshareprivacy_ea3f889f7ad04a5659ee98c812344a9b').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --> <p><a href="http://daraff.ch/?flattrss_redirect&amp;id=1749&amp;md5=5f706f093b9d85102f3bf45a02e98ba6" title="Flattr" target="_blank"><img src="http://daraff.ch/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://daraff.ch/2012/03/lessons-learned-nzz-teil3-code-reviews/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30420&amp;url=http%3A%2F%2Fdaraff.ch%2F2012%2F03%2Flessons-learned-nzz-teil3-code-reviews%2F&amp;language=de_DE&amp;category=text&amp;title=Lessons+Learned+%40+NZZ+%26%238211%3B+Teil3+%26%238211%3B+Code+Reviews&amp;description=Heute+m%C3%B6chte+ich+%C3%BCber+das+Thema+Code+Reviews+berichten.+Vorgeschichte+In+der+NZZ+haben+wir+Ende+des+letzten+Jahres+unsere+Code+Repositories+in+Richtung+Github+gez%C3%BCgelt.+Weil+das+Entwicklerteam+in...&amp;tags=code+review%2Csoftware+qualit%C3%A4t%2Cblog" type="text/html" />

		<series:name><![CDATA[Lessons Learned @ NZZ]]></series:name>
	</item>
		<item>
		<title>Lessons Learned @ NZZ &#8211; Teil2 &#8211; Distributed SCRUM Teams</title>
		<link>http://daraff.ch/2012/03/lessons-learned-nzz-teil2-zusammenarbeit-von-distributed-scrum-teams/</link>
		<comments>http://daraff.ch/2012/03/lessons-learned-nzz-teil2-zusammenarbeit-von-distributed-scrum-teams/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 17:31:30 +0000</pubDate>
		<dc:creator>DaRaFF</dc:creator>
				<category><![CDATA[Softwareengineering]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[distributed teams]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://daraff.ch/?p=1739</guid>
		<description><![CDATA[Wie ich schon im letzten Artikel erwähnt habe, sind wir aktuell 3 SCRUM Teams und haben diese auch in sehr kurzer Zeit von 4 auf 18 Entwickler hochgefahren (ca. 6 Monate). Am Anfang gab es eine kurze Kennenlernphase zwischen den &#8230; <a href="http://daraff.ch/2012/03/lessons-learned-nzz-teil2-zusammenarbeit-von-distributed-scrum-teams/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Wie ich schon im letzten Artikel erwähnt habe, sind wir aktuell 3 SCRUM Teams und haben diese auch in sehr kurzer Zeit von 4 auf 18 Entwickler hochgefahren (ca. 6 Monate).</p>
<p>Am Anfang gab es eine kurze Kennenlernphase zwischen den einzelnen Personen. Wir waren am gleichen Ort und arbeiteten zusammen. Danach wurden die Teams aufgeteilt und auf die Projekte losgelassen. Relativ schnell war die Kommunikation zwischen den Teams eher rar. Jedes Team hatte seine eigene Philosophie von Design, Standards usw. und über kurz oder lang, gab es kleinere Probleme. Man beschwerte sich, warum jemand das so gelöst hat und nicht so, wie es im eigenen Team geregelt war.</p>
<p>Wir versuchten also einen neuen Ansatz. Die zwei Teams aus Zürich und der Ukraine wurde gemischt, um die Kommunikation zwischen den beiden Standorten zu verbessern. Das Team von Liip, haben wir so belassen, weil es ein externer Partner ist.</p>
<p>Neu besuchen wir uns regelmässig. Leute von Kiev arbeiten 1-3 Wochen bei uns und umgekehrt. Auch die Leute vom Liip Team, arbeiten regelmässig in der NZZ.</p>
<p>Dieser Ansatz hat die Kommunikation zwischen den Teams extrem verbessert. Man versteht sich besser, man fühlt sich verbundener. Natürlich gibt es nach wie vor Problemchen, aber diese sind lange nicht mehr so gross wie vorher.</p>
<p>Was denkt ihr von dieser Lösung? Gibt es noch bessere Ansätze? Sollte man verteilte Teams generell versuchen zu vermeiden?</p>
<p>Ich bin gespannt auf eure Meinung.</p>
<div id="socialshareprivacy_9fa87f1fbbe17e5400116a2a27221b7f"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google in die USA &uuml;bertragen und unter Umst&auml;nden auch dort gespeichert. N&auml;heres erfahren Sie durch einen Klick auf das <em>i<\/em>.","settings_perma":"Dauerhaft aktivieren und Daten&uuml;ber&shy;tragung zustimmen:","cookie_path":"\/","cookie_expire":365,"cookie_domain":"","css_path":"http:\/\/daraff.chsocialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_facebook.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE"},"twitter":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_twitter.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":""},"gplus":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_gplus.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://daraff.ch/2012/03/lessons-learned-nzz-teil2-zusammenarbeit-von-distributed-scrum-teams/'
				$(document).ready(function(){
					$('#socialshareprivacy_9fa87f1fbbe17e5400116a2a27221b7f').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --> <p><a href="http://daraff.ch/?flattrss_redirect&amp;id=1739&amp;md5=b4364bb503771cddd528972d927eb13d" title="Flattr" target="_blank"><img src="http://daraff.ch/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://daraff.ch/2012/03/lessons-learned-nzz-teil2-zusammenarbeit-von-distributed-scrum-teams/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30420&amp;url=http%3A%2F%2Fdaraff.ch%2F2012%2F03%2Flessons-learned-nzz-teil2-zusammenarbeit-von-distributed-scrum-teams%2F&amp;language=de_DE&amp;category=text&amp;title=Lessons+Learned+%40+NZZ+%26%238211%3B+Teil2+%26%238211%3B+Distributed+SCRUM+Teams&amp;description=Wie+ich+schon+im+letzten+Artikel+erw%C3%A4hnt+habe%2C+sind+wir+aktuell+3+SCRUM+Teams+und+haben+diese+auch+in+sehr+kurzer+Zeit+von+4+auf+18+Entwickler+hochgefahren+%28ca.+6...&amp;tags=agile%2Cdistributed+teams%2Cscrum%2Cblog" type="text/html" />

		<series:name><![CDATA[Lessons Learned @ NZZ]]></series:name>
	</item>
		<item>
		<title>Lessons Learned @ NZZ &#8211; Teil 1 &#8211; Intro</title>
		<link>http://daraff.ch/2012/02/lessons-learned-nzz-teil-1-intro/</link>
		<comments>http://daraff.ch/2012/02/lessons-learned-nzz-teil-1-intro/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 18:00:50 +0000</pubDate>
		<dc:creator>DaRaFF</dc:creator>
				<category><![CDATA[Allgemein]]></category>

		<guid isPermaLink="false">http://daraff.ch/?p=1712</guid>
		<description><![CDATA[Heute möchte ich eine neue Artikelserie ankündigen und erklären worum es geht. Wie ihr vielleicht wisst, arbeite ich bei der NZZ (Neue Zürcher Zeitung). Bei der NZZ arbeiten wir momentan mit Hochdruck an einem neuen und modernen Webauftritt. Dieser beinhaltet &#8230; <a href="http://daraff.ch/2012/02/lessons-learned-nzz-teil-1-intro/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Heute möchte ich eine neue Artikelserie ankündigen und erklären worum es geht.</p>
<p>Wie ihr vielleicht wisst, arbeite ich bei der <a href="http://nzz.ch">NZZ (Neue Zürcher Zeitung)</a>.</p>
<p>Bei der NZZ arbeiten wir momentan mit Hochdruck an einem neuen und modernen Webauftritt. Dieser beinhaltet einige Frontend Applikationen und ein gemeinsames Backend. Ausserdem werden wir im Verlaufe des Jahres auch noch mit der Implementierung eines CMS für die Redaktion beginnen.</p>
<p>Wir verwenden hier einige Technologien und Frameworks wie PHP, Javascript, HTML5, CSS3, Symfony2, Jackrabbit, MySQL, Redis, Varnish usw.</p>
<p>Wir arbeiten nach SCRUM und haben 3 Teams. 2 Teams bestehend aus einem Mix aus Schweizern und Ukrainern. Das 3. Team besteht aus <a href="http://liip.ch">Liip</a> Mitarbeitern.</p>
<p>Aktuell lerne ich sehr viel, weil wir moderne Technologien und Frameworks verwenden und super Leute in den Teams haben.</p>
<p>Ich möchte daher immer wieder mal über die Arbeit berichten und so vielleicht dem einen oder anderen etwas mitgeben. Das können ganz kleine Dinge, wie ein interessanter PHP Befehl sein oder auch ganze Konzepte. Auch der schnelle Wachstum des/der Teams stellt uns vor eine grosse Herausforderung. Vor 1 Jahr waren es 4 und aktuell sind es ca. 18 Entwickler.</p>
<p>Ich habe Thematisch noch nichts spezielles geplant, aber jeden Tag erlebe ich AHA Effekte bei der Arbeit. Daher werde ich darüber berichten und eventuell kann der ein oder andere auch davon profitieren.</p>
<p>&nbsp;</p>
<div id="socialshareprivacy_fc763ab61b0e6bc2c836806bd664de59"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google in die USA &uuml;bertragen und unter Umst&auml;nden auch dort gespeichert. N&auml;heres erfahren Sie durch einen Klick auf das <em>i<\/em>.","settings_perma":"Dauerhaft aktivieren und Daten&uuml;ber&shy;tragung zustimmen:","cookie_path":"\/","cookie_expire":365,"cookie_domain":"","css_path":"http:\/\/daraff.chsocialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_facebook.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE"},"twitter":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_twitter.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":""},"gplus":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_gplus.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://daraff.ch/2012/02/lessons-learned-nzz-teil-1-intro/'
				$(document).ready(function(){
					$('#socialshareprivacy_fc763ab61b0e6bc2c836806bd664de59').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --> <p><a href="http://daraff.ch/?flattrss_redirect&amp;id=1712&amp;md5=5f0c154ff36f51ced2c6386918a6055f" title="Flattr" target="_blank"><img src="http://daraff.ch/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://daraff.ch/2012/02/lessons-learned-nzz-teil-1-intro/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30420&amp;url=http%3A%2F%2Fdaraff.ch%2F2012%2F02%2Flessons-learned-nzz-teil-1-intro%2F&amp;language=de_DE&amp;category=text&amp;title=Lessons+Learned+%40+NZZ+%26%238211%3B+Teil+1+%26%238211%3B+Intro&amp;description=Heute+m%C3%B6chte+ich+eine+neue+Artikelserie+ank%C3%BCndigen+und+erkl%C3%A4ren+worum+es+geht.+Wie+ihr+vielleicht+wisst%2C+arbeite+ich+bei+der+NZZ+%28Neue+Z%C3%BCrcher+Zeitung%29.+Bei+der+NZZ+arbeiten+wir+momentan...&amp;tags=blog" type="text/html" />

		<series:name><![CDATA[Lessons Learned @ NZZ]]></series:name>
	</item>
		<item>
		<title>Buchrezension &#8211; Produktiv Programmieren</title>
		<link>http://daraff.ch/2012/02/buchrezension-produktiv-programmieren/</link>
		<comments>http://daraff.ch/2012/02/buchrezension-produktiv-programmieren/#comments</comments>
		<pubDate>Thu, 09 Feb 2012 19:23:27 +0000</pubDate>
		<dc:creator>DaRaFF</dc:creator>
				<category><![CDATA[Buchrezension]]></category>
		<category><![CDATA[produktiv]]></category>
		<category><![CDATA[programmieren]]></category>

		<guid isPermaLink="false">http://daraff.ch/?p=1695</guid>
		<description><![CDATA[Vor kurzem habe ich einen Buchtipp von einem Kollegen erhalten. Der Titel lautet Produktiv programmieren von Neal Ford. Da ich natürlich stets darum bemüht bin, als Programmierer effizienter zu werden, musste ich mir dieses Buch gönnen. Teil 1 &#8211; Mechanismen &#8230; <a href="http://daraff.ch/2012/02/buchrezension-produktiv-programmieren/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Vor kurzem habe ich einen Buchtipp von einem Kollegen erhalten. Der Titel lautet Produktiv programmieren von Neal Ford. Da ich natürlich stets darum bemüht bin, als Programmierer effizienter zu werden, musste ich mir dieses Buch gönnen.<br />
<iframe style="width: 120px; height: 240px;" src="http://rcm-de.amazon.de/e/cm?t=daraff-21&amp;o=3&amp;p=8&amp;l=as1&amp;asins=3897218860&amp;ref=tf_til&amp;fc1=000000&amp;IS2=1&amp;lt1=_blank&amp;m=amazon&amp;lc1=0000FF&amp;bc1=FFFFFF&amp;bg1=FFFFFF&amp;f=ifr" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="320" height="240"></iframe></p>
<h1>Teil 1 &#8211; Mechanismen</h1>
<p>Das Buch ist in 2 Teile aufgeteilt. Der erste Teil beschäftigt sich mit Mechanismen für produktives Programmieren. Es wird gezeigt, wie man schneller wird und den Fokus auf die wichtigen Dinge lenkt. Dieser erste Teil ist im Prinzip eine Ansammlung an Tips/Ideen, wie man schneller werden kann. Ich möchte hierzu ein paar Beispiele nennen.</p>
<ul>
<li>Tip: Mehrfache Zwischenablagen nutzen (schon vi/emacs kannten diese Prinzipien)</li>
<li>Tip: Üben beim Programmieren immer die Tastatur gegenüber der Maus bevorzugen -&gt; Lustiges Plugin von IntelliJ (Key Promoter) &#8211; Jedesmal, wenn man ein Menu mit der Maus anwählt, erscheint ein Popup mit dem entsprechenden Shortcut</li>
<li>Tip: Die Konsole muss man beherrschen &#8211; unglaublicher Boost in der Produktivität</li>
<li>Tip: Mehrere Monitore für erhöhte Produktivität</li>
<li>Tip: Virtuelle Monitore nutzen, um Arbeitsgebiete zu unterteilen (z.B. Programmieren / Kommunikation / Planung)</li>
<li>Tip: Alles automatisieren, was irgendwie möglich ist</li>
<li>Tip: Reguläre Ausdrücke kennen/lernen</li>
</ul>
<div>Viele dieser Tips mögen jetzt banal klingen, aber durch diesen ersten Teil, denkt man wieder mal über seine eigene Arbeitsweise nach. Ausserdem hat es viele kleine Tips und Tricks, wie man die Konsole effizient nutzen kann.</div>
<h1>Teil 2 &#8211; Praxis</h1>
<p>Der zweite Teil beschäftigt sich mit Themen wie TDD / Automatisierung / Statische Analyse / Softwaredesign (SOLID, YAGNI, Patterns) und Refactoring. Es werden viele unterschiedliche Themen der Praxis behandelt und in wenigen Abschnitten erklärt.</p>
<p><span style="color: #000000;"><strong><br />
</strong></span></p>
<h1>Fazit</h1>
<p>Vor allem der erste Teil hat mir sehr gut gefallen. Der Author gibt sehr viele Tips, wie man effektiver arbeiten kann. Auch gibt er einige Tooltips für die verschiedenen Umgebungen (Linux, Mac, Windows). Ich habe mir einige Dinge zu Herzen genommen (Regex besser lernen, vi(m) lernen, mehrfache Zwischenablagen nutzen, &#8230;). Und ich muss jetzt schon sagen, dass ich einiges effizienter geworden bin.</p>
<p>Der zweite Teil ist ok, mehr aber nicht. Wer sich mit Softwarequalität und Softwaredesign beschäftigt hat, erfährt nicht viel Neues. Ich finde es aber immer gut, Dinge zu wiederholen und in anderer Form präsentiert zu bekommen. Die Themen im zweiten Teil sind kurz und knackig formuliert.</p>
<p>Ich kann das Buch also empfehlen.</p>
<p>&nbsp;</p>
<div id="socialshareprivacy_718a299c6508056c38f848b6dcd75a10"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google in die USA &uuml;bertragen und unter Umst&auml;nden auch dort gespeichert. N&auml;heres erfahren Sie durch einen Klick auf das <em>i<\/em>.","settings_perma":"Dauerhaft aktivieren und Daten&uuml;ber&shy;tragung zustimmen:","cookie_path":"\/","cookie_expire":365,"cookie_domain":"","css_path":"http:\/\/daraff.chsocialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_facebook.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE"},"twitter":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_twitter.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":""},"gplus":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_gplus.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://daraff.ch/2012/02/buchrezension-produktiv-programmieren/'
				$(document).ready(function(){
					$('#socialshareprivacy_718a299c6508056c38f848b6dcd75a10').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --> <p><a href="http://daraff.ch/?flattrss_redirect&amp;id=1695&amp;md5=ffdb8d0a8c52d9fc9507fa508cc4ae89" title="Flattr" target="_blank"><img src="http://daraff.ch/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://daraff.ch/2012/02/buchrezension-produktiv-programmieren/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30420&amp;url=http%3A%2F%2Fdaraff.ch%2F2012%2F02%2Fbuchrezension-produktiv-programmieren%2F&amp;language=de_DE&amp;category=text&amp;title=Buchrezension+%26%238211%3B+Produktiv+Programmieren&amp;description=Vor+kurzem+habe+ich+einen+Buchtipp+von+einem+Kollegen+erhalten.+Der+Titel+lautet+Produktiv+programmieren+von+Neal+Ford.+Da+ich+nat%C3%BCrlich+stets+darum+bem%C3%BCht+bin%2C+als+Programmierer+effizienter+zu+werden%2C...&amp;tags=produktiv%2Cprogrammieren%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Warum sollte man einen Codsniffer verwenden?</title>
		<link>http://daraff.ch/2012/02/warum-sollte-man-einen-codsniffer-verwenden/</link>
		<comments>http://daraff.ch/2012/02/warum-sollte-man-einen-codsniffer-verwenden/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 15:30:22 +0000</pubDate>
		<dc:creator>DaRaFF</dc:creator>
				<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Tools / Frameworks]]></category>

		<guid isPermaLink="false">http://daraff.ch/?p=1689</guid>
		<description><![CDATA[Ich habe zwar nächsten Dienstag meine Abschlussprüfungen, aber das Thema Codesniffer brennt mir momentan auf den Nägeln In letzter Zeit habe ich mich viel mit Testing und Softwarequalität beschäftigt. Da ich von diesen Themen und Tools überzeugt bin, habe ich &#8230; <a href="http://daraff.ch/2012/02/warum-sollte-man-einen-codsniffer-verwenden/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ich habe zwar nächsten Dienstag meine Abschlussprüfungen, aber das Thema Codesniffer brennt mir momentan auf den Nägeln <img src='http://daraff.ch/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>In letzter Zeit habe ich mich viel mit Testing und Softwarequalität beschäftigt. Da ich von diesen Themen und Tools überzeugt bin, habe ich sie bedenkenlos eingesetzt. Im Geschäft habe ich auch Jenkins aufgesetzt und betrieben.</p>
<h1>Überzeugungsarbeit für den Codesniffer</h1>
<p>Ich versuchte stets die Leute in den Projekten davon zu überzeugen, dass sie phpcs (PHP Codesniffer) auf der Konsole vor dem einchecken durchlaufen lassen sollten und dann entsprechend den Fehlern die Korrekturen durchführen sollten. Als sie meine Anweisung mit einem &#8220;WARUM?&#8221; erwiderten, antwortete ich jeweils, dass der Code so halt einheitlicher und aufgeräumter wirkt.</p>
<h1>Warum überhaupt einen Codesniffer verwenden?</h1>
<p>Auf einmal fragte ich mich selber, warum man einen Codesniffer einsetzen sollte. Bringt es dem Kunden einen Nutzen, wenn der Code dahinter &#8220;schön&#8221; und einheitlich aussieht? Ich versuchte also herauszufinden, warum es Sinn ergibt, wenn man sich Standards bei der Formatierung hält.</p>
<p>Ich forschte also ein bisschen nach und bin auf zwei gute Erklärungen gestossen.</p>
<h1>Keine Unterbrechung des Flows</h1>
<p>Es ist allseits bekannt, dass etwas neues, unerwartetes viel mehr Energie kostet. Genauso ist es bei einem Codestyle, der die ganze Zeit wechselt. Man benötigt neben dem Lösen des Problems noch viel Energie, die verschiedenen Codestyles mental aufzuarbeiten.</p>
<p>Wenn man einen bestimmen Codestyle kennt, kann man sich auf die wahren Probleme konzentrieren. Die Klammern, Einrückungen usw. verschwinden und man konzentriert sich auf die Aufgabe.</p>
<p>Je weniger der Entwickler oder Reviewer gestört wird, desto schneller ist er mit seiner Arbeit fertig. Dies hat also einen positiven Nutzen für den Kunden.</p>
<h1>Keine Diskussionen mehr über den Codestyle</h1>
<p>Wenn man sich auf einen Standard einigt (z.B. Symfony2, PEAR, Zend, &#8230;), so müssen sich die Entwickler nicht mehr darüber streiten, wie Code formatiert werden soll. Dies bringt dem Kunden einen unmittelbaren nutzen, nämlich keine verschwendete Zeit mit Diskussionen über den Codestyle.</p>
<p>&nbsp;</p>
<h1>Feedback</h1>
<p>Was haltet ihr vom Einsatz eines Codesniffers?</p>
<p>Warum sollte man ihn einsetzen oder warum gerade nicht?</p>
<p>Ich würde mich über Feedback freuen!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div id="socialshareprivacy_dd1835e4f2a50e7876f89a975e5ea074"></div>
			<script type="text/javascript">
			(function($){
				var options = {"info_link":"http:\/\/www.heise.de\/ct\/artikel\/2-Klicks-fuer-mehr-Datenschutz-1333879.html","txt_help":"Wenn Sie diese Felder durch einen Klick aktivieren, werden Informationen an Facebook, Twitter oder Google in die USA &uuml;bertragen und unter Umst&auml;nden auch dort gespeichert. N&auml;heres erfahren Sie durch einen Klick auf das <em>i<\/em>.","settings_perma":"Dauerhaft aktivieren und Daten&uuml;ber&shy;tragung zustimmen:","cookie_path":"\/","cookie_expire":365,"cookie_domain":"","css_path":"http:\/\/daraff.chsocialshareprivacy.css","services":{"facebook":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_facebook.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Facebook senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_fb_off":"nicht mit Facebook verbunden","txt_fb_on":"mit Facebook verbunden","display_name":"Facebook","referrer_track":"","language":"de_DE"},"twitter":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_twitter.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Twitter senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_twitter_off":"nicht mit Twitter verbunden","txt_twitter_on":"mit Twitter verbunden","display_name":"Twitter","referrer_track":"","tweet_text":""},"gplus":{"status":"on","dummy_img":"http:\/\/daraff.chimages\/dummy_gplus.png","txt_info":"2 Klicks f&uuml;r mehr Datenschutz: Erst wenn Sie hier klicken, wird der Button aktiv und Sie k&ouml;nnen Ihre Empfehlung an Google+ senden. Schon beim Aktivieren werden Daten an Dritte &uuml;bertragen &ndash; siehe <em>i<\/em>.","txt_gplus_off":"nicht mit Google+ verbunden","txt_gplus_on":"mit Google+ verbunden","display_name":"Google+","referrer_track":"","language":"de"}}};
				options.cookie_domain = document.location.host;
				options.uri = 'http://daraff.ch/2012/02/warum-sollte-man-einen-codsniffer-verwenden/'
				$(document).ready(function(){
					$('#socialshareprivacy_dd1835e4f2a50e7876f89a975e5ea074').socialSharePrivacy(options);
				});
			})(jQuery);
			</script>
		<!-- end wp-socialshareprivacy --> <p><a href="http://daraff.ch/?flattrss_redirect&amp;id=1689&amp;md5=97b04e47ca0bc86bcdd34d335b42c684" title="Flattr" target="_blank"><img src="http://daraff.ch/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://daraff.ch/2012/02/warum-sollte-man-einen-codsniffer-verwenden/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="https://flattr.com/submit/auto?user_id=30420&amp;url=http%3A%2F%2Fdaraff.ch%2F2012%2F02%2Fwarum-sollte-man-einen-codsniffer-verwenden%2F&amp;language=de_DE&amp;category=text&amp;title=Warum+sollte+man+einen+Codsniffer+verwenden%3F&amp;description=Ich+habe+zwar+n%C3%A4chsten+Dienstag+meine+Abschlusspr%C3%BCfungen%2C+aber+das+Thema+Codesniffer+brennt+mir+momentan+auf+den+N%C3%A4geln+In+letzter+Zeit+habe+ich+mich+viel+mit+Testing+und+Softwarequalit%C3%A4t+besch%C3%A4ftigt.+Da...&amp;tags=blog" type="text/html" />
	</item>
	</channel>
</rss>

