<?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>Learning by Experience &#187; management</title> <atom:link href="http://www.inze.be/andries/category/management/feed/" rel="self" type="application/rss+xml" /><link>http://www.inze.be/andries</link> <description>Java, Project Management, Life and anything else.</description> <lastBuildDate>Mon, 09 Jan 2012 21:38:00 +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>Feedback impact</title><link>http://www.inze.be/andries/2010/07/15/feedback-impact/</link> <comments>http://www.inze.be/andries/2010/07/15/feedback-impact/#comments</comments> <pubDate>Wed, 14 Jul 2010 22:56:48 +0000</pubDate> <dc:creator>Andries Inzé</dc:creator> <category><![CDATA[management]]></category> <guid
isPermaLink="false">http://www.inze.be/andries/?p=227</guid> <description><![CDATA[Feedback is an important tool for working together. As tech lead, I organize on a fairly regular basis feedback rounds with the people I work under and with people that work under me. With this experience, I distilled some tips on how to to set up the feedback rounds with impact. About feedback Feedback is [...]]]></description> <content:encoded><![CDATA[<p>Feedback is an important tool for working together. As tech lead, I organize on a fairly regular basis feedback rounds with the people I work under and with people that work under me. With this experience, I distilled some tips on how to to set up the feedback rounds with impact.</p><h2>About feedback</h2><p>Feedback is an important tool as it gives invaluable information about you, the other person and the team. The goal is to improve his/her work as your own work as team lead.</p><h2>Preparation</h2><ul><li>Plan feedback rounds well in advance. Not only is it important to let the other party prepare, but also communicating the upcoming feedback rounds weeks in advance makes the team aware of the upcoming feedback rounds. It&#8217;s easier to create an impact with feedback where an example can be given of the behavior.</li><li>Take enough time. I always plan 1h for each, although it&#8217;s not the plan to fill the entire hour. Typical feedback rounds take about 20min, but giving yourself the freedom to go into detail if necessary, makes the conversation open and not overhasty.</li><li>Plan personal conversations. Sincere feedback is feedback done in small groups. For developers, I bring the project lead with me, since the project lead can give another perspective.</li><li>Prepare yourself</li><li>Ask the other to explicitly prepare themselves. Point the other party that a good preparation is necessary.</li><li>It&#8217;s important to give both positive as negative feedback.</li></ul><h2>How to give efficient feedback</h2><ol><li>Describe behavior that can change</li><li>Use concrete examples that you have seen for yourself (preferred) or heard from.</li><li>Use the I-form. <em>I noticed that&#8230;</em></li><li>Describe the effect the behavior had on yourself</li><li>Let the other respond</li><li>If relevant: ask for the desired behavior</li><li>Explore the background and/or solutions</li></ol><h2>Follow up</h2><p>An important aspect of feedback is the follow up. Plan something a couple of weeks after the feedback and see how the feedback changed you or the one you gave feedback to.</p><p>Regards,<br
/> Andries</p> ]]></content:encoded> <wfw:commentRss>http://www.inze.be/andries/2010/07/15/feedback-impact/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>How to run statistics on SVN</title><link>http://www.inze.be/andries/2009/11/10/how-to-run-statistics-on-svn/</link> <comments>http://www.inze.be/andries/2009/11/10/how-to-run-statistics-on-svn/#comments</comments> <pubDate>Mon, 09 Nov 2009 22:03:32 +0000</pubDate> <dc:creator>Andries Inzé</dc:creator> <category><![CDATA[general]]></category> <category><![CDATA[jbpm]]></category> <category><![CDATA[management]]></category> <guid
isPermaLink="false">http://www.inze.be/andries/?p=199</guid> <description><![CDATA[Ever wondered who is &#8220;Developer of the month?&#8221;. I&#8217;ve found this great app that does just the thing&#8230; http://www.statsvn.org/ . I&#8217;ve taken the liberty to run it on the jBPM4 trunk, check it out here! From the quick start: Quick Start * Download the latest release from http://sourceforge.net/projects/statsvn/ * Expand the zip file into some [...]]]></description> <content:encoded><![CDATA[<p>Ever wondered who is &#8220;Developer of the month?&#8221;. I&#8217;ve found this great app that does just the thing&#8230; http://www.statsvn.org/ .<br
/> I&#8217;ve taken the liberty to run it on the jBPM4 trunk, check it out <a
href="http://www.inze.be/jbpm/statsvn/index.html">here!</a></p><p>From the quick start:</p><blockquote><pre>Quick Start
 * Download the latest release from http://sourceforge.net/projects/statsvn/
 * Expand the zip file into some directory, e.g c:\statsvn
 * Check out a working copy of the desired SVN module into
 some directory, e.g. c:\myproject.
 * Change into that directory and type
 'svn log --xml -v &gt; svn.log'
 * Change back to the c:\statsvn directory
 * type 'java -jar statsvn.jar c:\myproject\svn.log c:\myproject'
 * Open c:\statsvn\index.html in your web browser</pre></blockquote><p>Regards,<br
/> Andries</p> ]]></content:encoded> <wfw:commentRss>http://www.inze.be/andries/2009/11/10/how-to-run-statistics-on-svn/feed/</wfw:commentRss> <slash:comments>1</slash:comments> </item> <item><title>Time management</title><link>http://www.inze.be/andries/2008/11/19/time-management/</link> <comments>http://www.inze.be/andries/2008/11/19/time-management/#comments</comments> <pubDate>Tue, 18 Nov 2008 22:35:58 +0000</pubDate> <dc:creator>Andries Inzé</dc:creator> <category><![CDATA[general]]></category> <category><![CDATA[management]]></category> <guid
isPermaLink="false">http://www.inze.be/andries/?p=80</guid> <description><![CDATA[Seven golden rules of time management I&#8217;m finishing The Last Lecture, a book I advice to any and all. Truly a life changing experience. Following paragraph is a synthesis from a chapter. Time must be explicitly managed, like money. You can always change your plan, but only if you have one. Learn to delegate. Ask [...]]]></description> <content:encoded><![CDATA[<h2>Seven golden rules of time management</h2><p>I&#8217;m finishing <a
href="http://www.amazon.com/Last-Lecture-Randy-Pausch/dp/1401323251/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1227047656&amp;sr=8-1">The Last Lecture</a>, a book I advice to any and all. Truly a life changing experience. Following paragraph is a synthesis from a chapter.</p><ol><li>Time must be explicitly managed, like money.</li><li>You can always change your plan, but only if you have one.</li><li>Learn to delegate.</li><li>Ask yourself: Are you spending your time on the right things. Prioritize and filter.</li><li>Develop a good file system. Order is efficient.</li><li>Rethink the telephone: do it either standing up or with a time pressure. Don&#8217;t spend your time with calling all the time.</li><li>Take time outs. Real timeouts without interruption.</li></ol><h2>Keep your inbox clean!</h2><p>I&#8217;m a big fan of GTD. Especially when applied to organizing your inbox. I spend quite a lot of time <strong>reading</strong> and <strong>writing </strong>mails, taking <strong>action </strong>on them, etc. My Outlook client is open all the time.</p><p>Before I worked with GTD, my inbox was <strong>staggering</strong>, mails could not always be responded within appropriate times or actions got <strong>lost</strong>. It&#8217;s not very pro if you have to receive reminder-mails.</p><p>Now my best advice is to follow these simple rules (copy/paste from the Wikipedia article <img
src='http://www.inze.be/andries/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ):</p><ul><li>Start at the <strong>top </strong>(In case of mails, this would be the oldest mail)</li><li>Deal with <strong>one item</strong> at a time.</li><li><strong>Never </strong>put anything back into <strong>&#8216;in&#8217;.</strong></li><li>If an item requires action:</li></ul><dl><dd><ul><li><strong>Do </strong>it (if it takes less than two minutes), OR</li><li><strong>Delegate </strong>it, OR</li><li><strong>Defer </strong>it.</li></ul></dd></dl><ul><li>If an item does not require action:</li></ul><dl><dd><ul><li>File it for <strong>reference</strong>, OR</li><li><strong>Throw </strong>it away, OR</li><li><strong>Incubate </strong>it for possible action later.</li></ul></dd></dl><p>If it takes under <strong>two minutes</strong> to do something, it should be done <strong>immediately</strong>. The two-minute rule is a guideline, encompassing roughly the time it would take to formally defer the action.</p><p>My inbox is in the end of the day almost <strong>always empty</strong>. More importantly, the easy-respond mails get done very fast, which gives a much <strong>faster average time</strong> on processing the mail. It really does!</p><p>If you like to see more on GTD, start with the <a
href="http://en.wikipedia.org/wiki/Getting_Things_Done">wikipedia page</a>. Also the <a
href="http://www.amazon.com/Getting-Things-Done-Stress-Free-Productivity/dp/0142000280/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1225235070&amp;sr=8-1">book</a> by David Allen is very good, so I&#8217;ve been told.</p><p>Until the next,</p><p>Andries</p> ]]></content:encoded> <wfw:commentRss>http://www.inze.be/andries/2008/11/19/time-management/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Optimize your life</title><link>http://www.inze.be/andries/2008/02/19/optimize-your-life/</link> <comments>http://www.inze.be/andries/2008/02/19/optimize-your-life/#comments</comments> <pubDate>Tue, 19 Feb 2008 20:40:22 +0000</pubDate> <dc:creator>Andries Inzé</dc:creator> <category><![CDATA[breadth]]></category> <category><![CDATA[general]]></category> <category><![CDATA[management]]></category> <guid
isPermaLink="false">http://www.inze.be/andries/?p=20</guid> <description><![CDATA[After graduation, quite a bit changed in my life. I started my professional career, became more intrested in hard work, started to invest in myself as a person. Very fast I started to find out -quoting a colleague now- that there are (only) 24h in a day. What will we do with it? That just [...]]]></description> <content:encoded><![CDATA[<p>After graduation, quite a bit changed in my life. I started my professional career, became more intrested in hard work, started to invest in myself as a person. Very fast I started to find out -quoting a colleague now- that there are (only) 24h in a day. What will we do with it? That just up to us. The more interesting (and important) question is: how do we use it? Do we squander time or do we use it as efficient as possible? If you are anything like me more then a year ago, you don&#8217;t hold still at the latter. We just do what we want, <u>if there is time</u>.</p><p>In this post I&#8217;ll share some of the lessons I&#8217;ve learned to efficiently use the time that was given to us. I&#8217;ll try to prioritize and put the more important ones on top.</p><h2>Set  goals</h2><p>It&#8217;s a biggie, one should stop and really answer the question: <em>What do I want to accomplish</em>? I use a great tool for this: <a
href="http://freemind.sourceforge.net/wiki/index.php/Main_Page">FreeMind</a>. It&#8217;s a mind mapper that really works for me (Helping by reporting bugs btw).</p><p>If you set goals, one can work efficiently in the <strong>right direction</strong>. If you just follow <em>your gut feeling, </em>you&#8217;ll change more directions then socks. Keeping clear goals allows you to set <strong>milestones </strong>into your life. Reaching milestones are from my experience, the ultimate thrill. Goals can be very long term, but try and pinpoint milestones, no more then a handful, that are within reach.</p><p>Of course milestones and goals will change. But since you made a rational decision about setting a goal, it&#8217;s harder to toss it away later. There is an <strong>investment </strong>in a goal already, that you just don&#8217;t want to lose.</p><p>Let&#8217;s look at an example: imaging you want to learn how to learn to cook (is one of my goals btw). Since you don&#8217;t know how to cook, the first milestone is easy. Get an easy cookbook. Get good cooking gear (What&#8217;s that? Finding out is also a milestone) . Decide what kind of cooking interests you, etc etc.</p><h2>Plan out your days</h2><p>Eisenhower once said: <em>Plans are worthless, but planning is everything</em>.</p><p>Don&#8217;t waste time doing nothing, instead plan out what you will do. Don&#8217;t over plan, but at least firmly lay down what should be done in the day. Once plans are made, it&#8217;s easier to finish everything. Less distractions (what to do next?) means more <strong>effective time</strong> used.</p><h2>Prioritize</h2><p>Learning how to prioritize, prevents <strong>important tasks</strong> not being done. Doing the most important right away (when appropriate) is a very efficient way to get things done. Don&#8217;t waste time doing very lower priority items, while important stuff needs to be addressed.</p><p>Another related item: <strong>make time available.</strong> This is not easy, sometimes to get something done, something has to be discarded. Wanting to do everything, or worse wanting to do a little bit of everything, is the perfect formula of actually doing nothing at all. I made time to finish this also, it was &#8216;done&#8217; for weeks now but hadn&#8217;t reviewed it.</p><h2>Organize tasks</h2><p>Tasks should be organized. Keep a to-do list, keep track of items in progress. Keep a good schedule. Tasks should have <strong>a finish</strong>. Clean room isn&#8217;t a real task. When is a room clean? Better would be: pick up clothes, clear dust and make the bed. For IT related tasks, keep following in mind: <a
href="http://en.wikipedia.org/wiki/SMART_%28project_management%29">SMART</a>.</p><h2>Learn to sleep less.</h2><p>I used to sleep 8h straight, every day. After a couple of months of <em>training</em>, this can be reduced easily (at least of me) into a 5h nap. A couple of hours extra daytime is the difference between doing nothing but work all day, and having some time to <strong>do something you like</strong>.</p><p>A couple of tips to start sleeping less:</p><ul><li>Go to bed and get up on a tight schedule during the week. It really helps to train your body to start sleep right after you go to bed. Getting up also gets easier when it&#8217;s on the same time every day. Don&#8217;t snooze half an hour, cause it&#8217;s just<strong> teasing and it&#8217;s very inefficient</strong>.</li><li>Don&#8217;t start skimping an hour of sleep. Start small, like 10min. Get into a rythme getting to bed at a regular hour. After you are used to the shorter sleep time, stay up another 10-15min. Again wait until you are adjusted before reducing the sleep any further.</li><li>Don&#8217;t work during those extra hours of daytime! Instead spent time on yourself. Do something you didn&#8217;t have time before. Read a book, watch a movie or have sex. Do something you feel is a bonus on your day. Trust me, it&#8217;s really import to keep the sleep from setting in. Once you are doing this for a some time, you can work from time to time, since you don&#8217;t feel tired before you normal sleep time.</li><li>Don&#8217;t under sleep. I tried going below 5h15min/day  but I felt bad during the day. I wouldn&#8217;t die at that rate, but I didn&#8217;t enjoy myself. Don&#8217;t under sleep!</li><li>Caffeine is your best friend!</li></ul><p>As always, feedback is appreciated!</p><p>Regards,<br
/> Andries</p> ]]></content:encoded> <wfw:commentRss>http://www.inze.be/andries/2008/02/19/optimize-your-life/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Optimize your development</title><link>http://www.inze.be/andries/2008/01/07/optimize-your-development/</link> <comments>http://www.inze.be/andries/2008/01/07/optimize-your-development/#comments</comments> <pubDate>Sun, 06 Jan 2008 22:35:30 +0000</pubDate> <dc:creator>Andries Inzé</dc:creator> <category><![CDATA[eclipse]]></category> <category><![CDATA[Java]]></category> <category><![CDATA[management]]></category> <guid
isPermaLink="false">http://www.inze.be/andries/?p=7</guid> <description><![CDATA[When you are not careful about how you develop your software, it&#8217;s easy to do this in an inefficient way. The last couple of weeks I&#8217;ve been streamlining the developers their workstation, to become as efficient as possible. I&#8217;ll talk about some of the measures I took, how it was done and what the final [...]]]></description> <content:encoded><![CDATA[<p>When you are not careful about how you develop your software, it&#8217;s easy to do this in an inefficient way. The last couple of weeks I&#8217;ve been streamlining the developers their workstation, to become as efficient as possible. I&#8217;ll talk about some of the measures I took, how it was done and what the final benefits were. Also, I&#8217;d like to talk about some of the possible drawbacks.</p><h1>Shorten the build cycle for developers</h1><p>The length of the build-cycle is critical for developers.</p><h2>Exploded development</h2><p>With the release of JBoss Tools for eclipse, I finally managed to get a very good exploded development going on. I tested the beta 3 as well as the beta 4. In both cases, exploded wars didn&#8217;t function as I wanted. Didn&#8217;t remember quite what didn&#8217;t work, but with the the GA release, everything worked out fine.</p><p>The main benefit of exploded development is the powerful option to edit JSP files live! This is a serious advantage. Our team started out without this, but as the project <em>exploded</em> in size, the start-up time was increasing drastically. Would not ever want to do another project without this ability!</p><p>Another great benefit is the possibility for incremental publishing (standard behavior with the plug-in). Packing a war is something that can take half a minute or longer using eclipse, with incremental publishing only the changed files are submitted, resulting in mere seconds.</p><p>The last benefit is a faster start-up, since the server doesn&#8217;t have to unpack the war. Our war is about 45Mb large, which took 10-15 seconds to unpack.</p><p>There is one setback! When using this, there is a bug when you have breakpoints in eclipse. The breakpoints sometimes (and this is rather frequent, say 1 in 5) cause the server to start up really slow. And slow is like 1h to start&#8230; The workaround here is to restart the server and disable the breakpoints on start-up, enabling them once the server is started. It&#8217;s a common bug when you Google for it, so I&#8217;m confident this will get resolved soon.</p><h2>Hot-code replacement</h2><p>Learning how to use hot-code replacement can save some restarts of the server. With hot code replacement, you can alter any Java code, as long as you stay within the method where your breakpoint currently <em>hangs</em>. This is perfect for adjusting 1 line of code, since most bugs are exactly one small thing that was wrong.</p><p>There is a little more to it. Sometimes eclipse complains about the failure of the hot code replace. What we do is following: we let the thread run until it&#8217;s finished. Then we start the code again (refresh the page, submit a form&#8230;) and let it stop on the same breakpoint. Then we add 1 space and save it. This never fails!</p><h2>No Hibernate Cache</h2><p>Another great way to speedup the start time during development, is to disable the Hibernate cache (second level cache, query cache) during development. With a maven profile, this is done very easy.</p><p>We have about 25 classes that are non-strict read/write cached. This takes about 12 seconds to start-up, every class that is cached has it&#8217;s own thread started by Hibernate (I think this is for timeout of the cache).</p><h2>No premature loading of cached items</h2><p>Many applications start by eager fetching some data this is cached then. I believe this is completely useless in a development environment. Again with Maven this ain&#8217;t hard to set up.</p><h2>A word about Spring configuration</h2><p>One could argue that the Spring configuration could also be completely lazy. Indeed, this would be a tremendous start-up gain, in our 100 beans large project, it takes 20 seconds to set up the beans. It&#8217;s the single most time consuming event in our application start-up.</p><p>We don&#8217;t do this, since it posses a real danger. With lazily initiated beans you lose the dependency checks at start-up</p><h1>Shorten the setup time</h1><p>Setting up eclipse is something we needed to do quite a lot of times. When switching branches, when added dependencies etc.</p><p>We used to use the maven eclipse plug-in. Lately I found out that this plug-in is absolutely unnecessary. With the proper maven setup, the simple command <em>mvn eclipse:eclipse</em> does the trick. Actually you need two things:</p><pre>            &lt;plugin&gt;
                &lt;groupId&gt;org.apache.maven.plugins&lt;/groupId&gt;
                &lt;artifactId&gt;maven-eclipse-plugin&lt;/artifactId&gt;
                &lt;configuration&gt;
                    &lt;wtpversion&gt;1.5&lt;/wtpversion&gt;
                &lt;/configuration&gt;
            &lt;/plugin&gt;</pre><p>Above is a plugin in the web module (pom.xml).</p><pre>&lt;jboss-web&gt;
    &lt;context-root&gt;mistral&lt;/context-root&gt;
&lt;/jboss-web&gt;</pre><p>Above is the content of the file webapp/WEB-INF/jboss-web.xml , which sets the context-root with jboss. If you don&#8217;t do this, it&#8217;ll default to the war filename.</p><h1>Other optimizations</h1><p>In order to have the best possible environment, other optimizations are in order. But I&#8217;ll keep those for my follow-up. Things that can be improved:</p><ul><li>Use of the continuous integration.</li><li>A (good) project wiki</li><li>How to manage multiple databases <span
style="text-decoration: underline;">efficiently</span>(database independence per developer)</li><li>Office instant messaging</li></ul><h1>Conclusion</h1><p>Pretty long post. There is a lot to say about development optimizations. My experience in it is that there is a lot to gain. There are some key concerns however:</p><ul><li>KISS, Keep It Simple Stupid.  An optimization should never be something that has to be explained. Optimizations are only good optimizations when they feel natural, they should also make things simpler almost never more complex.</li><li>A very important one: a team should work all in the same manner. It&#8217;s too hard when multiple ways of developing have to be supported.</li><li>Don&#8217;t be afraid to change your development manners. Sometimes a change can be a little investment, but large gains on longer terms.</li></ul><p>As always, I&#8217;m open for debate and questions.</p><p>Regards,<br
/> Andries</p> ]]></content:encoded> <wfw:commentRss>http://www.inze.be/andries/2008/01/07/optimize-your-development/feed/</wfw:commentRss> <slash:comments>5</slash:comments> </item> <item><title>Learning from Code Reviews</title><link>http://www.inze.be/andries/2007/09/04/learning-from-code-reviews/</link> <comments>http://www.inze.be/andries/2007/09/04/learning-from-code-reviews/#comments</comments> <pubDate>Tue, 04 Sep 2007 20:37:56 +0000</pubDate> <dc:creator>Andries Inzé</dc:creator> <category><![CDATA[management]]></category> <guid
isPermaLink="false">http://www.inze.be/andries/?p=15</guid> <description><![CDATA[The last couple of weeks I have been actively involved in writing a code review for the project I&#8217;m currently working on. As this was my first real code review, I spend time finding resources on the subject. First off, there isn&#8217;t a lot of great articles about this subject. Secondly, most of them focus [...]]]></description> <content:encoded><![CDATA[<p>The last couple of weeks I have been actively involved in writing a code review for the project I&#8217;m currently working on. As this was my first real code review, I spend time finding resources on the subject. First off, there isn&#8217;t a lot of great articles about this subject. Secondly, most of them focus on the code review itself, what to notice, write down etc.</p><p>In this blog I want to address the other side of the medal, namely a code review viewed as a developer. Code reviews are for the developers. So it&#8217;s important that you, as a developer,  understand what is in the review and learn from it.</p><h3>Why code review matter</h3><p>Code review are a way to keep the quality of the code at a high. Finding bugs are the second most important thing a code review can accomplish. The most important benefit is when done right, a code review will deal with bugs before they are even written. By enforcing best practices (e.g. design patterns) and principles (<a
href="http://en.wikipedia.org/wiki/Single_responsibility_principle" target="_blank">Single Responsibility Principle</a>, <a
href="http://en.wikipedia.org/wiki/Liskov_substitution_principle" target="_blank">Liskov Substitution Principle</a>, &#8230;) and also coding guidelines such as commenting every method, using describing method names, bugs will actually be avoided because the quality of the code is augmented!</p><p>It&#8217;s important for you, a developer, to realise that code reviews aren&#8217;t for discussing your bad code. See it more are an effort to increase the level of quality in the entire code.</p><h3> The Cheat Sheet</h3><p>One nice tip I came across is the use of a cheat sheet. At the start of the code review, all developers should bring a piece of paper. When discussing the review, each developer should write down an issue he/she would be able to write. As a developer, don&#8217;t focus on only the code you wrote, but ask yourself the following questions:</p><ul><li>Could I have made the same mistake?</li><li>Did I know about the item, why is was wrong?</li><li>Would I have noticed the code myself?</li></ul><p>If you answered yes to any of these question, you should write down the issue on your cheat sheet.</p><p>The cheat sheet should be used every time you want to commit code. Take the cheat sheet (really read it) and check the code if something could be coded better. Having the cheat sheet will help you to  not introduce items already covered by a code review. Reviewing the same bad code twice is a sign a developer hasn&#8217;t learned from the previous review.</p><h3>Create a positive environment</h3><p>When reviewing code it&#8217;s important to create a surrounding where it&#8217;s encouraged to discuss code, where it is a positive thing when code can be improved rather then pick on the one who wrote less then perfect code. As a developer you should keep this in mind as well. Nobody wants to write bad code, so don&#8217;t focus on the coder, focus on the code!</p><p>Don&#8217;t be afraid to discuss code. Sometimes it&#8217;s only after a couple of questions that code is really well understood. Sometimes reasons for particular code goes deeper then eyes at first see. A successful code review is a review where developers asked question about code.</p><p>Beware of <em>the developer against the world syndrome</em>. It&#8217;s normal to take pride on your code. Don&#8217;t let the pride come between your code and better code. It&#8217;s a learning experience, embrace it and swallow the pride when necessary. That one of the reasons code review are a group thing.</p><p>Refrain from negative comments or inappropriate comments. A good example is saying: <em>I would never write that; Who wrote THIS?</em> etc.</p><h3>Semper paratus</h3><p>Always be prepared. A great developer will have read the copy before entering the discussion, making the review go faster and the questions more intelligent. It&#8217;s just common sense to at least spend a few minutes preparing for any meeting, even internal code reviews.</p><p>Anyway, this blog is shorter then I would like. Although code reviews are really important, no matter what kind of project, learning from them is even more important. Take the review serious and you will be rewarded with some extra experience!</p><p>Feel free to post any comments about this blog.</p><p>Andries</p> ]]></content:encoded> <wfw:commentRss>http://www.inze.be/andries/2007/09/04/learning-from-code-reviews/feed/</wfw:commentRss> <slash:comments>11</slash:comments> </item> </channel> </rss>
