<?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>Hexapixel &#187; Management</title>
	<atom:link href="http://hexapixel.com/category/management/feed" rel="self" type="application/rss+xml" />
	<link>http://hexapixel.com</link>
	<description>Programming, Eclipse, SWT and everything inbetween</description>
	<lastBuildDate>Tue, 06 Sep 2011 13:21:35 +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>Managing Experienced Developers</title>
		<link>http://hexapixel.com/2008/12/29/managing-experienced-developers</link>
		<comments>http://hexapixel.com/2008/12/29/managing-experienced-developers#comments</comments>
		<pubDate>Mon, 29 Dec 2008 18:46:10 +0000</pubDate>
		<dc:creator>Emil</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://hexapixel.com/?p=322</guid>
		<description><![CDATA[First, the mandatory Dilbert cartoon&#8230; Having worked in many companies over the years there are a few things I know better than my managers, and the longer I&#8217;m in this business the more frustrated I get when things are simply not working the way they should due to bad management. If I as a senior [...]]]></description>
			<content:encoded><![CDATA[<p class="aligncenter">First, the mandatory Dilbert cartoon&#8230;</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-345" title="dilbert_managers" src="http://hexapixel.com/wp-content/uploads/2008/12/dilbert_managers.gif" alt="dilbert_managers" width="592" height="213" /></p>
<p>Having worked in many companies over the years there are a few things I know better than my managers, and the longer I&#8217;m in this business the more frustrated I get when things are simply not working the way they should due to bad management. If I as a senior programmer have to step in to do actual project management because my technical project manager fails to do it, something is wrong. Unfortunately this is more common than it should be. A big issue is that managers that are put in charge of development teams are often under-educated when it comes to development and the development process. In fact, they may know nothing about programming at all, and they&#8217;re thrown into a world of developers who can build them anything they request &#8211; assuming upper management has a good plan on what needs to be built.</p>
<p>Why and how these managers end up in a technical management positions is always the question, but any programmer who&#8217;s been around for a while can usually sniff out the bad ones in mere seconds. A good manager is a mediator, someone who knows they may not always know better, but listens to their team, suggests solutions based on what the team has told them and mediates between the dev team and the rest of the company (and upper management). A good manager could be compared to a good army commander. The troops know they can trust them, and will follow them into battle knowing that all decisions are calculated and weighed and probably the best ones. A bad manager however is one who undoubtedly will cause massive team issues and communication breakdown. In the troop scenario the team would undoubtedly get into serious trouble, and if it were a pirate ship, mutiny would soon ensue.</p>
<p>Down the road bad management leads to anger and frustration, and ultimately to the dark side. I&#8217;ve been in many meetings where the programming team starts talking tech issues and the manager sits silently like a question mark watching a tennis match because they have no idea what people are talking about. This is very bad, and a sign of probable project failure down the road (or lots of code re-writes due to miscommunicated features). It&#8217;s OK to not understand <em>everything</em>, but if you manage programmers (especially experienced programmers) you need to be someone who understands the field, and understands it well. A developer who knows that their manager does not understand what they tell them will start communicating less and less, and in the end will probably stop altogether as it does not help them in any way. This leads to a team that is disconnected from management, and undoubtedly a manager who has no clue about the status of the project.</p>
<p>Another issue, seemingly common, is that the product manager (who is literally in charge of the product and the outcome thereof) does not even know what the product is. This usually leads to constant feature changes, and a very angry team. A lot of this can be solved with a good specification early on, but with deadlines looming and budgets shrinking, tech specs are a dying breed.</p>
<p>There was a great thread on Slashdot a few weeks back called &#8220;<a href="http://ask.slashdot.org/article.pl?sid=08%2F12%2F12%2F1947251&amp;from=rss" target="_new">Managing Seasoned Developers</a>&#8221; which is the basis for this post, and despite the random seasoning jokes, there is some really great information in there. As I don&#8217;t expect you to go through that thread to dig out the good stuff, I decided to take the best parts and make a list of &#8220;What a good development team manager should and should not do&#8221;. I also added a few other worthy entries from other places and adjusted some to reflect my own experiences.</p>
<p><span id="more-322"></span><br />
<strong>How to deal with experienced developers as a manager (in random order)</strong>:</p>
<div id="bulletlist">
<ol>
<li>Focus on getting them what they need, staying out of their way, and keeping management related items out of their way. If you want them to manage, make them managers. They can&#8217;t do both at the same time, and if they are forced to do so, they will most likely get quite frustrated and possibly angry.</li>
<li>Professionals typically don&#8217;t enjoy working for someone that doesn&#8217;t give them the respect that they&#8217;ve earned. When this happens your good employees will no longer feel good about the job they are doing and go find a new one. Requiring silly things of your good people is a sure way to see them leave for something better.</li>
<li>Unless your project is 100% exciting to everyone on the team, the answer is, you won&#8217;t be able to manage it without adding some junior programmers. An engineer with 10 years of experience and multiple death marches under his belt will simply find it hard to get excited about the mundane. That&#8217;s not what he&#8217;s there for. He&#8217;s there to take on the big challenges, design stuff that works and implement it in a way that he&#8217;s not embarrassed by it five years from now. If you can&#8217;t accept that, he will surely walk out the door soon.</li>
<li>A company that lacks or literally blocks communication between employees on the same team is not a company worth working for. Communication is the cornerstone of a successful team. A quiet project is as bad as a quiet patch in the forest, you just know something is wrong and &#8220;dead&#8221; around the corner.</li>
<li>Good software engineers enjoy solving tough problems. So present them with the problems you are trying to solve and let them come up with their own solutions. If you don&#8217;t understand the technology, don&#8217;t be afraid or ashamed to ask. Read up on what they&#8217;re proposing. Chances are they are suggesting technology that won&#8217;t come back and bite you in the ass 5 years down the road.</li>
<li>The manager is a domain expert, and can evaluate the product as it is being created. If she can&#8217;t do this, or relies on self-assessment of her reports, the product is going to suck or fail.</li>
<li>Don&#8217;t say that something is undoable if you do not know if it&#8217;s actually doable or not. Ask the developers! They will certainly know if it&#8217;s a possible or impossible task. Not asking them and instead making up things makes you look very dumb.</li>
<li>Chit-chatting and making jokes when you can&#8217;t even manage a project makes you look horrible in the eyes of a good developer. If you can&#8217;t manage them or the team, do you really think they will appreciate that you&#8217;re trying to get on their good side?</li>
<li>The end user of the product is the client, not the project manager. Don&#8217;t expect to know what the client wants without asking them, about everything. There&#8217;s nothing more irritating when a client comes back and says they want it a completely different way, and the engineer has to re-write half the code because you didn&#8217;t ask them beforehand what they wanted.</li>
<li>Never criticize them for something you also fail at. Instead, announce that you&#8217;re looking to improve that aspect in yourself and they&#8217;ll get the message.</li>
<li>When your best engineers have to lead the project because the manager doesn&#8217;t know what they&#8217;re talking about, it&#8217;s time to find someone who can actually manage the project, or send the manager to training so that they can keep up.</li>
<li>If there are issues in the product that are only brought up at the next team meeting, don&#8217;t bring them up unless you have the guts to tell the developer(s) with enough time beforehand so they have time to look at those issues and possibly fix them instead of hearing them as &#8220;issues&#8221;. If they&#8217;re big issues, bring them up right away. If they&#8217;re small issues, make a list and go over it with the developers.</li>
<li>Be open to criticism and be willing to change course in response to it.</li>
<li>The best developers need a set of requirements, a deadline, a good working environment and caffeinated drinks. Not much more. They will deliver.</li>
<li>There&#8217;s nothing better than a good developer who can design, code, document and communicate, and does not need constant supervision. On the other hand, there&#8217;s nothing worse than one that pretends to do those things and turns out to be a disaster for the project. If there are employees who fall into the latter category on more than one occasion, it&#8217;s probably time to reconsider their placement or job.</li>
<li>Managers are not programmers just like programmers are not managers. It doesn&#8217;t matter if you programmed in the past, you&#8217;re a manager, get used to it. So please do not embarrass your team by trying to make code changes or additions. Leave it to them. They will do it in 1/10th of the time and with 1/10th of the bugs.</li>
<li>Use technologies (bugtracking etc) that are easy to use and easy to update. Overly complicated and complex software to do &#8220;simple tasks&#8221; will do nothing but slow down the entire development process. This is especially true for complex version-control software.</li>
<li>Feedback feedback feedback. Don&#8217;t overdo it on the pats on the back, but for the love of god, don&#8217;t forget them. If an engineer goes above and beyond, they expect to be treated like it and respected.</li>
<li>Think &#8220;How would I like to be treated?&#8221;. The answer is most likely &#8220;With respect, open communication, acknowledgment of work done, incentive for above and beyond&#8230;&#8221;. Get to learn who they are.</li>
<li>If you&#8217;re part of a bigger team (10+) and rarely or never show up at team meetings, don&#8217;t expect that any of your words will mean much to the team. They know you&#8217;re not there, and you&#8217;re letting the team down. Coming along later and saying &#8220;great job!&#8221; is a slap in the face and viewed as you getting all the credit for their hard work. Never do this.</li>
<li>To a seasoned programmer, you as a manager are redundant unless you can prove otherwise. If you fail at your task, they will work around you and go above your head with all matters until they get heard. This will come back to bite you sooner or later.</li>
<li>When experienced programmers learn that other lesser-individuals earn more than them (they will), either deal with it swiftly or watch them walk out the door. Salaries, just like interesting projects, are extremely important. A &#8220;very good&#8221; programmer expects to be paid &#8220;very well&#8221;, as he or she is most likely pulling more than their own weight on all the projects they are involved with.</li>
<li>Claiming your best programmers have to be at work on certain dates and plan their vacations long times in advance because of risk of &#8220;failure&#8221; means you need more good people on your team. Everyone needs vacation, it&#8217;s what makes us come back to work harder. Work them to death or set limitations and you will only increase their stress level.</li>
<li>Every time you interrupt someone in the middle of their task, you probably wasted 10 minutes more for them to get back &#8220;into it&#8221;.</li>
<li>Good developers can multitask like a quad-core processor. If you think they&#8217;re not working because they&#8217;re browsing a website not work-related, be careful before you judge. They&#8217;re most likely taking a 1 minute brain pause, compiling in the background, or upgrading the kernel with their left hand. Let them continue, because those small pauses may be all they get while their brains work overtime.</li>
<li>Follow and adjust to <a href="http://www.codinghorror.com/blog/archives/000666.html" target="_new">The Programmer&#8217;s Bill of Rights</a>. Nothing else needs to be said about this, it speaks for itself.</li>
</ol>
</div>
<p>It&#8217;s also worth mentioning that managers need to be told some of these things (their weak spots), so don&#8217;t be afraid to put your foot down, it just might make them better!</p>
]]></content:encoded>
			<wfw:commentRss>http://hexapixel.com/2008/12/29/managing-experienced-developers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

