<?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>Elegant Code &#187; Craftsmanship</title>
	<atom:link href="http://elegantcode.com/category/craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00: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>Temovate Cream For Sale</title>
		<link>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-software-development-will-never-be-engineering</link>
		<comments>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:37:48 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/</guid>
		<description><![CDATA[I always find it rather interesting when academics try to quantify generalized metrics about software development. Temovate Cream For Sale, Things like: per lines of code, there will be X number of bugs. Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.” These are all interesting [...]]]></description>
			<content:encoded><![CDATA[<p> <p>I always find it rather interesting when academics try to quantify generalized metrics about software development.</p>  <p> <b>Temovate Cream For Sale</b>, Things like: per lines of code, there will be X number of bugs.</p>  <p>Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.”</p>  <p>These are all interesting thoughts, but software development will never conform to rigid engineering principles like many other engineering practices.&#160; The longer I work in the field, the more and more I realize that software development has nothing to do with engineering.&#160; We just happen to attend some of the same math classes in school.</p>  <h2>Building bridges</h2>  <p>One of the main arguments I hear people make about the current state of software development as an engineering practice is based around its relative maturity to other engineering fields.</p>  <p>There is a huge problem with this line of thinking.</p>  <p>The argument goes something like this:&#160; “<em>Engineering has been around for hundreds of years and has matured to the point where it is a measurable science, but software development has only been around in earnest for the last few decades or so, therefore it is relatively immature as an engineering discipline.”</em></p>  <p>On the surface this argument seems sounds.&#160; And certainly in 50 years software development will be different than it is now.&#160; Heck, it is much more different than it was just 10 years ago.</p>  <p>But, here is the problem.&#160; We build much more software than we do bridges.</p>  <p><img src="http://www.nps.gov/glca/historyculture/images/Navajo_Bridges_1.gif" width="589" height="442" /></p>  <h6 align="center">&#160;</h6>  <p>Let me give you an example that came to light in another area of my interest… poker.</p>  <h1></h1>  <h2>The poker quickening</h2>  <p>An interesting thing happened in the poker community in the last 10 years; poker pros with decades of experience started getting beat time and time again by 19 year old poker prodigies.</p>  <p>From an outside perspective it looks like the poker world opening up just widened the search for talent and there it was.&#160; But, a closer examination of the evidence leads to the truth.</p>  <p>Before the online poker industry was born, poker was played in card rooms and casinos in states where it was legal and occasionally at small home games throughout the US.</p>  <p>A poker pro might play poker tournaments perhaps 100 times to 150 times a year.&#160; The sum knowledge of the poker community and the meta game around it was based on this base of professional poker players playing tournaments and gaining experience at this mediocre rate.</p>  <p>Once the internet poker rooms started opening up, things changed, and they changed rapidly.&#160; Now anyone could play poker from their home PC.&#160; Not only could they play poker, they could play poker tournaments at all hours of the day.</p>  <p>Here is a list of some of the major changes that took place:</p>  <ul>   <li>Hands are dealt at 60-80 hands per hour instead of 10-30</li>    <li>Players can play in many tournaments at one time, 10 tournaments at once is not unheard of</li>    <li>Players can analyze hand histories and historical data about their play and opponents play through the use of software </li>    <li>Age requirements are out the window, technically any one of any age could be playing online</li>    <li>Players can play 24 hours a day</li>    <li>The professional online tournament player could easily play over 3000 tournaments in a year, while a brick and mortar pro would be lucky to reach 100 in a year.</li>   <img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://t1.gstatic.com/images?q=tbn:ANd9GcRj9uGNWSyqGWEneiH6xaBAyS6COwGYicdNadZu-06KWQLhIi6LMw&amp;t=1" width="316" height="270" /></ul>  <p>&#160;</p>  <p>So where am I going with all this?</p>  <p>The point is that as a whole more hands were dealt and more poker knowledge and experience was obtained in 1 year of online poker than probably the entire history of poker before that.&#160; We reached such an accelerated pace of play that all previous knowledge of poker became obsolete.&#160; </p>  <p>The strategy of tournament poker completely changed.&#160; The game evolved perhaps 500 years into the future in a matter of 5 years time.</p>  <p>The same has happened with software development.</p>  <h2>Back to the bridge building</h2>  <p>So let’s take that poker example and look at it through the lens of software development.</p>  <p>Let us compare the engineering maturity to software development to the engineering maturity of the engineering discipline of building bridges.</p>  <p>I think most people would agree that bridge building is a very mature engineering discipline but many people would argue that software development is not.</p>  <p><strong>How many bridges do you think have been built in the world?</strong></p>  <p>Well there are <a href="http://www.betterroads.com/category/bridge-inventory/erroads.randallreillycms.com/files/2009/11/BR1109_BridgeInventory.pdf">about 600,000 bridges in the United States alone</a>, so the world figure must be at least somewhere around 10 times that number perhaps 20.</p>  <p><strong>How many software programs have been written?</strong></p>  <p>This is a very hard number to estimate, but lets take a rough guess based on <a href="http://stackoverflow.com/questions/453880/how-many-developers-are-there-in-the-world">how many software developers there are in the world</a>.&#160; </p>  <p>If we say there are about 12 million software developers and each software developer has written approximately 3 programs, we can estimate that a large amount more programs have been written than bridges built.</p>  <p>My point is not to knock bridge building, we are pretty good at it as a whole, but rather to show that collectively, even though we have been building bridges for hundreds of years, we have probably devoted an equivalent amount of time to building software.</p>  <p>This line of thinking may lead you to argue back that software development and bridge building are very different.&#160; Bridge building has a fixed set of requirements that are pretty close to the the same for each bridge you build, but software development is a big open void of whims and ambiguously contradictory statements.</p>  <p>I agree with you 100%!&#160; And in essence that is my point.</p>  <h2>Software development is different</h2>  <p>And we have had enough time to realize that.&#160; Waiting for software development to gel into some kind of engineering discipline like other engineering disciplines is like waiting for water without gelatin mix to turn into Jello.&#160; </p>  <p>It’s just not going to happen!</p>  <p>In my mind it is clear that the argument that we haven’t given it enough time is just wishful thinking.&#160; The nature of software development, just like online poker, leads itself to rapid evolution.</p>  <p>Consider what direction software development is evolving.&#160; Is it even evolving in the direction of rigid engineering practices or is it evolving in the exact OPPOSITE direction?</p>  <p>Ten years ago, we tried to use UML diagrams and CASE tools to develop software.&#160; Ten years ago waterfall was all the rage.&#160; Ten years ago, we thought that ten years in the future we would have programs that would allow us to build software in the same way that CAD tools allow for building machine parts.</p>  <p>Not only did it not happen.&#160; It went completely the other way.&#160; Now we are all talking about Agile.&#160; Now people don’t even remember what CASE tools are.&#160; Now we are building software without trying to define the whole system in UML diagrams.</p>  <p><strong>The fact of the matter is software systems are unruly beasts!</strong></p>  <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://aznbadger.files.wordpress.com/2010/06/beast.jpg" /></p>  <p>In my mind it comes down to one simple distinction.&#160; Software is living, bridges aren’t.&#160; When you are done building a bridge, you are done building the bridge.&#160; </p>  <p>Sure someone, probably not you, will have to come along and do some routine maintenance on it.&#160; Sure, some small things might change about it, but for all intents and purposes the work is done.</p>  <p>In most software development scenarios, this is not the case.&#160; In most software development scenarios, releasing V1 is not even close to the end.&#160; Sometimes V1 and V2 don’t even look that same at all.&#160; Software development is about operating on a living breathing thing and all the while keeping it alive.</p>  <p>The truth is, we software developers have more in common with surgeons than with other engineers.</p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>.  Buy Temovate Cream without a prescription.  Temovate Cream trusted pharmacy reviews.  Temovate Cream over the counter.  Where can i order Temovate Cream without prescription.  Online buy Temovate Cream without a prescription.  Temovate Cream no rx.  Buy cheap Temovate Cream no rx.  Temovate Cream photos.  Buy Temovate Cream online no prescription.  Order Temovate Cream online c.o.d.  Herbal Temovate Cream.  About Temovate Cream.  Australia, uk, us, usa.  Cheap Temovate Cream.  Temovate Cream class.  Temovate Cream brand name.  Online Temovate Cream without a prescription.  Buy Temovate Cream without prescription.  Buy Temovate Cream from canada.  After Temovate Cream.  Order Temovate Cream from mexican pharmacy.  Temovate Cream without a prescription.  Purchase Temovate Cream.  Temovate Cream natural.  Temovate Cream overnight.  Temovate Cream online cod.  Where can i buy cheapest Temovate Cream online.  Purchase Temovate Cream for sale.  Online buying Temovate Cream.  Purchase Temovate Cream online.  Temovate Cream used for.  Temovate Cream coupon.  Temovate Cream description.  Order Temovate Cream no prescription.  Temovate Cream maximum dosage.  Cheap Temovate Cream no rx.  Temovate Cream images.  Temovate Cream blogs.  Buy Temovate Cream online cod.  Buy generic Temovate Cream.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4472'>Bactroban For Sale</a>. <a href='http://elegantcode.com/?p=4632'>Armour For Sale</a>. <a href='http://elegantcode.com/?p=4639'>Buy Estrace Vaginal Cream Without Prescription</a>. <a href='http://elegantcode.com/?p=4668'>Buy Augmentin Without Prescription</a>. <a href='http://elegantcode.com/?p=4535'>Buy Tindamax Without Prescription</a>. <a href='http://elegantcode.com/?p=4931'>Fast shipping Diclofenac</a>. <a href='http://elegantcode.com/?p=4240'>Combivent brand name</a>. <a href='http://elegantcode.com/?p=4417'>Levaquin overnight</a>. <a href='http://elegantcode.com/?p=4597'>Purchase Toradol online</a>. <a href='http://elegantcode.com/?p=4221'>Australia, uk, us, usa</a>.<br />
<b>Trackbacks from:</b> <a href='http://www.quarterlives.com/?p=1148'>Temovate Cream For Sale</a>. <a href='http://4realz.net/?p=1972'>Temovate Cream For Sale</a>. <a href='http://www.macneilbmx.com/blog/?p=5997'>Temovate Cream For Sale</a>. <a href='http://www.greatgreengoods.com/?p=2476'>Temovate Cream For Sale</a>. <a href='http://www.thegriffonnews.com/?p=9947'>Temovate Cream For Sale</a>. <a href='http://social-blend.com/?p=1160'>Temovate Cream brand name</a>. <a href='http://blog.farmland.org/?p=3812'>Where can i find Temovate Cream online</a>. <a href='http://reversemortgagedaily.com/?p=14136'>Generic Temovate Cream</a>. <a href='http://linuxologist.com/?p=1792'>Temovate Cream photos</a>. <a href='http://home.officesnapshots.com/?p=114'>Order Temovate Cream from mexican pharmacy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Buy Xalatan Without Prescription</title>
		<link>http://elegantcode.com/2011/04/13/why-rules-rule/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-rules-rule</link>
		<comments>http://elegantcode.com/2011/04/13/why-rules-rule/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 03:19:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/04/13/why-rules-rule/</guid>
		<description><![CDATA[Buy Xalatan Without Prescription, I have to admit, I love rules. They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally. Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how [...]]]></description>
			<content:encoded><![CDATA[<p> <p> <b>Buy Xalatan Without Prescription</b>, I have to admit, I love rules.</p>  <p>They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally.</p>  <p>Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how valuable they are, because when rules are doing their job, you don’t even notice them.</p>  <p>The first rule of your day is likely your alarm clock.&#160; This is a self imposed rule that you have created for yourself to get up at a certain time in the morning.&#160; Try to function in any meaningful way by completely removing that rule and see what happens.</p>  <p>Almost all games we play have rules.&#160; Without rules those games wouldn’t be much fun.</p>  <p>We drive on the correct side of the road in our lane, following rules of traffic, which if not obeyed put us in mortal danger and make the road quite a scary place.</p>  <p>It is a gross understatement to say rules are important to our daily life.</p>  <p>Yet, I am constantly amazed how many people seem to oppose any notion of rules when it comes to our craft of software development.</p>  <h2>There is this notion that rules somehow preclude judgment</h2>  <p>Somehow the idea has crept into many of our brains that rules and good judgment, (what we might call craftsmanship), are diametrically opposed to each other.</p>  <p>There seems to be a pervasive thought that rules suck all the fun out of things and take away creativity, skill and experience, reducing the follower of such rules to a mindless robot, replaceable by any other robot.</p>  <p>Not only do I think this viewpoint is completely wrong, but I think it is downright destructive to the craft of software development.</p>  <p>Let us first dispel the notion that rules destroy creativity and its kin.</p>  <p>Think about a game like Scrabble.&#160; Scrabble is a game that is based on a very restrictive set of rules.&#160; You basically have only two moves you can do.</p>  <ol>   <li>Make a word using only letters in your rack and letters on the board.</li>    <li>Discard some letters to get some new ones.</li> </ol>  <p>Rules dictate how many letters you can have and what ways you can arrange them.&#160; Yet, how much creativity is actually created by these constraints?</p>  <p>Music is often seen as a cousin to coding, and is another great example of constraints which breed creativity.&#160; Music has a huge amount of constraint.&#160; There are many natural rules about sounds and chords.&#160; We only have a small amount of notes to even work with, yet people have been elaborating on those 12 notes for hundreds of years and new creative sounds are produced every single day!</p>  <p><strong>If you really take the time to think about it, I think you will find that constraints actually breed creativity not destroy it.</strong></p>  <h2>The truth is rules come from good judgment at the right time</h2>  <p>Let me posit you this question.</p>  <p>When is a better time to make a judgment decision of what to do when a bear attacks you?</p>  <ul>   <li>When the bear is actually attacking you</li>    <li>Sitting at your computer with a huge amount of reference material available to you about bear attacks and a calm peaceful environment</li> </ul>  <p>If you chose when the bear is actually attacking you turn to page 32.</p>  <p><strong>Page 32:</strong></p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bear-attack" border="0" alt="bear-attack" src="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack_thumb.jpg" width="447" height="318" /></a></p>  <p><em>Having no rules in which to operate, in the heat of the moment, you decide to “tickle” the bear.&#160; The bear slays you and munches on your bones.&#160; Your adventure has come to an end.</em></p>  <p><strong><em>You are DEAD!</em></strong></p>  <p>The point is that your judgment is much more likely to be sound when you are removed from the situation which you are making the judgment call about.&#160; Unless you are a close relative of Spock, you’ll probably find that human emotions tends to interfere with sound judgment.</p>  <p>This is why I instead firmly believe that <strong>we should use our good judgment to formulate rules that we will use in the situations which they apply to rather than to try and execute good judgment when we are engrossed in the situation.</strong></p>  <p>If you still disagree with me here, let’s ponder the example of the alarm clock one more time.&#160; Better yet, I challenge you to make a judgment call each morning of when you should wake up.&#160; You can’t use an alarm clock or any rules.&#160; (Before you do this, you might want to make sure you get your resume polished up.)</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="alarm clock" border="0" alt="alarm clock" src="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock_thumb.jpg" width="235" height="386" /></a></p>  <h2>How does this all apply to software development?</h2>  <p>I’m not going to attempt to address every way in this blog post, perhaps we’ll revisit this subject in the future, because it is so important.&#160; Instead my goal here is to convince you to embrace rules and to not fear setting them for yourself, for your team or for your code.</p>  <p>Some of the biggest failings of teams that I see is the fear of setting rules.&#160; Teams seem to be so afraid of restricting someone or impairing their ability to make judgment calls that they go the direction of never setting any concrete rules, just guidelines or best practices.</p>  <p>There is a huge difference between guidelines and rules.&#160; Guidelines help you make a decision, rules make it for you.&#160; Don’t be fooled into thinking they are the same thing, and don’t fear rules.&#160; I always prefer rules over guidelines, because they are much more valuable.</p>  <p><strong>You can actually measure the effect of a rule, but you can’t easily measure the effect of a </strong><strong>guideline.</strong></p>  <p>Let me give you some examples of areas in software development that I think are great places to enforce some rules:</p>  <ul>   <li>Naming conventions</li>    <li>Unit testing</li>    <li>Process of starting work</li>    <li>Who works on work</li>    <li>When work is considered done</li>    <li>How defects are handled</li>    <li>What changes can be made to work in progress</li>    <li>What should be in a backlog</li>    <li>Language and library choices</li>    <li>Data access strategies</li>    <li>Dealing with build failures</li> </ul>  <p>Every time you are having a conversation which ends up identifying something to improve upon, you should be thinking about how you can codify it into a rule.&#160; Don’t be afraid to step out here.&#160; It’s ok to make the wrong rule and change it later.&#160; If you do this you learn something.</p>  <p>Having rules in place prevents you from making in-the-moment decisions which you later come to regret.</p>  <p>When I go to a buffet, I set rules for how much food I can eat.&#160; When I decide to start a workout routine, I set rules for how often and what duration I will workout.&#160; When I write code, I set rules for how I will write that code.</p>  <p>In any of those areas, when I fail to set rules, I end up failing.&#160; It is human nature.</p>  <h2>But rules impede me and end up making me do silly things</h2>  <p>Good.&#160; That is called feedback.</p>  <p>Remember back when you were just making judgment calls all the time instead of following rules you or your team preset ahead of time, you weren’t getting any feedback, now you are.&#160; Be happy about it, celebrate!</p>  <p>You can always change the rules.&#160; You can always tweak the parameters, but if you want to have any success in process improvement, it is much like cooking on the stove.&#160; You are much better off with burner dials that have numbers on them or at least some kind of label, then ones with just a blank dial.&#160; If you don’t know where the dial is, how will you know which way to turn it?</p>  <p>Sometimes rules are going to make you do something silly or seemingly extraneous.&#160; Sometimes rules are going to cause you to possibly even do the wrong thing.</p>  <p>But, if you want to have any chance of learning from your mistakes, if you want to truly improve your process, you must resist the urge to break the rules and instead wait for a time to reflect upon the rules and make appropriate changes at that time.</p>  <p>Learn to embrace rules and you’ll suddenly see an improvement in all areas of life where you apply them, especially your software development!</p>  <h6><strong>As always, you can subscribe to this </strong><a href="http://feeds2.feedburner.com/ElegantCode"><strong>RSS feed</strong></a><strong> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at </strong><a href="http://simpleprogrammer.com/"><strong>http://simpleprogrammer.com</strong></a><strong>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter </strong><a href="http://twitter.com/jsonmez"><strong>here</strong></a><strong>.</strong></h6>.  Xalatan description.  Xalatan no rx.  Buying Xalatan online over the counter.  Fast shipping Xalatan.  Xalatan overnight.  Buy Xalatan from mexico.  Xalatan without a prescription.  Where to buy Xalatan.  No prescription Xalatan online.  What is Xalatan.  Xalatan price.  Rx free Xalatan.  Purchase Xalatan online.  Generic Xalatan.  Xalatan street price.  Xalatan from canada.  About Xalatan.  Taking Xalatan.  Xalatan online cod.  Australia, uk, us, usa.  Order Xalatan online overnight delivery no prescription.  Xalatan recreational.  Xalatan canada, mexico, india.  Xalatan interactions.  Xalatan alternatives.  Online buying Xalatan.  My Xalatan experience.  Where can i cheapest Xalatan online.  Online Xalatan without a prescription.  Xalatan wiki.  Order Xalatan no prescription.  Get Xalatan.  Xalatan from mexico.  Xalatan schedule.  Xalatan dangers.  Purchase Xalatan for sale.  Where can i buy cheapest Xalatan online.  Discount Xalatan.  Is Xalatan addictive.  Buy cheap Xalatan.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4728'>Ventolin For Sale</a>. <a href='http://elegantcode.com/?p=4184'>Synthroid For Sale</a>. <a href='http://elegantcode.com/?p=4384'>Buy Ultram Without Prescription</a>. <a href='http://elegantcode.com/?p=4373'>Topamax For Sale</a>. <a href='http://elegantcode.com/?p=5156'>Amoxicillin For Sale</a>. <a href='http://elegantcode.com/?p=4297'>After Reglan</a>. <a href='http://elegantcode.com/?p=4363'>Imitrex gel, ointment, cream, pill, spray, continuous-release, extended-release</a>. <a href='http://elegantcode.com/?p=4721'>Flonase maximum dosage</a>. <a href='http://elegantcode.com/?p=4534'>Xalatan recreational</a>. <a href='http://elegantcode.com/?p=4354'>Herbal Glucophage</a>.<br />
<b>Trackbacks from:</b> <a href='http://social-blend.com/?p=1234'>Buy Xalatan Without Prescription</a>. <a href='http://www.quarterlives.com/?p=1098'>Buy Xalatan Without Prescription</a>. <a href='http://4realz.net/?p=816'>Buy Xalatan Without Prescription</a>. <a href='http://tayloegray.com/?p=302'>Buy Xalatan Without Prescription</a>. <a href='http://www.macneilbmx.com/blog/?p=5580'>Buy Xalatan Without Prescription</a>. <a href='http://blog.farmland.org/?p=2108'>Xalatan used for</a>. <a href='http://reversemortgagedaily.com/?p=14507'>Xalatan interactions</a>. <a href='http://linuxologist.com/?p=1519'>Online buying Xalatan</a>. <a href='http://home.officesnapshots.com/?p=268'>My Xalatan experience</a>. <a href='http://evanrapoport.com/?p=613'>Buy Xalatan online cod</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/04/13/why-rules-rule/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Programming is not a Craft: My Take</title>
		<link>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=programming-is-not-a-craft-my-take</link>
		<comments>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 17:38:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/</guid>
		<description><![CDATA[Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: Programming is not a Craft. Dan’s sentiments are not unique. I have heard similar opinions from other [...]]]></description>
			<content:encoded><![CDATA[<p>Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: <a href="http://dannorth.net/2011/01/11/programming-is-not-a-craft/" target="_blank">Programming is not a Craft</a>. Dan’s sentiments are not unique. I have heard <a href="http://blogs.tedneward.com/2008/05/11/Im+ProChoice+Pro+Programmer+Choice+That+Is.aspx" target="_blank">similar opinions</a> from other prominent developers I respect.</p>  <p>I read in Dan's post (and in some of the comments) a visceral reaction to gold plating things not determined &quot;important&quot; by the customer. I get that. I also see a need to temper this with the simple fact that the client doesn’t always know what is best for them. Let’s just get that out in the open. My doctor knows what is better for my physical body than I do and I am willing to pay for that. Will I always take the advice I am paying for? Well, probably not. And I’m sure that leaves my doctor shaking her head in dismay.</p>  <p>I learned that integrity is &quot;doing the right thing even when no one is looking&quot;, and I see the Software Craftsmanship discussion as striving for integrity in the systems we create.</p>  <p>One mark of a true professional might be a willingness to balance client need with implementaion elegance resulting in software that meets the need of the client AND is something worthy of pride when shown to another developer. If the only reason we are writing code is to provide the minimum a client wants to pay for, then how compelling is my work, really? Can I be proud of my professional body of work if I am simply marching to orders? I say no.</p>  <p>Where I part ways with Dan is in his analogy of the plumber. Granted, I simply want my pipes to work, but I am willing to pay for a plumber that takes pride in his work. I trust that plumber will simply do a better job as he strives to make his work appreciated by the next plumber that sees it. Can I quantify this into dollars? Not really. Perhaps in the extra time required to lay in a perfectly soldered joint as opposed to a sloppy one. Am I willing to pay more for this type of person to do the work? No question: Yes.</p>  <p>The bottom line for me is that we would all like to take pride in our work. No one I’ve ever met gets up in the morning thinking, “Today I will make a piece of crap”, and keeps at the job with any pleasure. We want to enjoy our work and be proud of it. Is that so bad? The very real software craftsmanship discussion simply gives us a vehicle for discussion in the pride we may take in our work for its own sake.</p>  <p>The risk to the craftsmanship community is to avoid getting carried away with dogma. Every time I hear <a href="http://channel9.msdn.com/Blogs/MichaelLehman/PP-Symposium-2010-Opening-Keynote-Robert-C-Martin" target="_blank">Bob Martin assert to a 500 person room</a> that if they aren't writing unit tests they are &quot;not professionals&quot; or somehow unworthy of being in the room with him, I cringe. That’s a perfect way to draw fire and alienate people who might otherwise join you in your cause. It also happens to be a perfect way to stand out as a charismatic speaker who gets lots of attention, but I digress… </p>  <p>Do I write tests? Yes. </p>  <p>Always? No. </p>  <p>Am I ashamed when I don't? Not really. Some jobs still call for duct tape. </p>  <p>Professionalism is knowing the appropriateness of a tool for a job and in always striving for integrity in our work. </p>  <p>My .02.</p>  <p>And, Dan, I admire and appreciate your contribution to our craft <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://elegantcode.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" /> .</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Burden Called Meetings</title>
		<link>http://elegantcode.com/2010/12/09/a-burden-called-meetings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-burden-called-meetings</link>
		<comments>http://elegantcode.com/2010/12/09/a-burden-called-meetings/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 19:00:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/12/09/a-burden-called-meetings/</guid>
		<description><![CDATA[I’ve been working for an enterprise corporation for 5+ years, which I’m going to be leaving soon. This organization is suffering from a wide-spread malady called “meetingitis”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working for an enterprise corporation for 5+ years, which <a href="http://elegantcode.com/2010/10/27/moving-to-greener-pastures/">I’m going to be leaving</a> soon. This organization is suffering from a wide-spread malady called “<a href="http://secretgeek.net/meetingitis.asp">meetingitis</a>”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming to a conclusion or a solution. Then there are also those kinds of meetings where you don’t have anything to say or contribute; these are just a complete waste of time.</p>  <p>Yesterday, <a href="http://twitter.com/seagile">Yves</a> pointed me out on Twitter that it is <a href="http://www.mccarthyshow.com/LearnForFree/TheCoreProtocolsOnline/tabid/103/Default.aspx">perfectly fine to leave a meeting</a> if you feel that you’re not able to gain or contribute anything. Today, I walked out of a meeting where one of the participants started making insults against me. I just stood up, walked to the door and left. And I must say that it felt liberating doing so. I went back to my desk, calmed down and got some actual work done. Without a basic form of respect, one simply can’t achieve anything, let alone come to win-win agreements. From now on, I’ll be evaluating all meetings that require my presence before I accept them and also keep evaluating my presence while being there. </p>  <p>Let me close of this mini-rant by sharing a must-see recording of a talk called “<a href="http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html">Why work doesn’t happen at work</a>” by <a href="http://twitter.com/jasonfried">Jason Fried</a>. I recommend you watch this short video, and if you like it, I also recommend picking up a copy of <a href="http://www.amazon.com/exec/obidos/ASIN/0307463745/elegantcode-20">Rework</a>. </p>  <p>I hereby rest my case.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/12/09/a-burden-called-meetings/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Laborers versus Professionals</title>
		<link>http://elegantcode.com/2010/10/27/laborers-versus-professionals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=laborers-versus-professionals</link>
		<comments>http://elegantcode.com/2010/10/27/laborers-versus-professionals/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:53:43 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/10/27/laborers-versus-professionals/</guid>
		<description><![CDATA[A while ago, my good friend Michel Grootjans&#160;tweeted the following: Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question. Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, my good friend <a href="http://geekswithblogs.net/alternativedotnet/Default.aspx">Michel Grootjans</a>&#160;<a href="http://twitter.com/michelgrootjans/status/24569673878">tweeted</a> the following:</p>  <blockquote>   <p>Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question.</p> </blockquote>  <p>Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a while. Try to picture your own work environment and how this relates. Go ahead! I can wait.</p>  <p>OK then, let’s move on.</p>  <p>I’ve been working for an enterprise corporation for 5+ years now. One of the things I’ve seen and learned there over this period of time is that laborers are more valued by management than professionals. Let me elaborate on this. </p>  <p>One of the biggest issues in a typical enterprise corporation is trust, specifically the lack thereof. The direct consequence of this lack of trust are massive amounts of constraints, regulatory processes and <a href="http://c2.com/cgi/wiki?FearDrivenDevelopment">fear-driven development</a>. This is the natural habitat of laborer developers, a nice and cozy place where they can spend their hibernation until retirement. This is where the term ‘code monkey’ originates from. Nine to five, no thinking, narrow focus, like soldiers in the military obeying orders to make a big mess. But sometimes, amongst these massive cohorts of laborers, there are small islands that exist of one or more professional developers. These are the kind of people that are very passionate about their craft, that want drive innovation and also want to continuously learn and improve. If you’re a developer and you’re reading this blog post, you probably fall into this category of developers.</p>  <p>But professional developers always have one part of the establishment going against them. It’s not the laborers. They don’t care. It’s an instrument better known as management. A large part of the IT industry, especially corporate IT shops, are being run by giant flocks of managers. Some of these managers started out as software developers and some of them are just born that way. But there’s something that they all have in common: they don’t write code as part of their day job. Although they don’t get their hands dirty with writing software, most managers do feel compelled to impose all kinds of political decisions regarding business requirements, software architecture/design, tools and technologies to the development teams they are ‘managing’. I for one want to make it clear that this has to stop. In order to lift this industry to the next level, we as software professionals need to free ourselves from the leash that is currently being held by management.&#160;&#160; </p>  <p>Professional developers working in these kinds of corporate environments are generally considered as troublemakers, if not by their direct bosses then certainly by other parts of management. The general attitude towards professionals is slamming them with more&#160; procedures, so called ‘company standards’ and ‘default architectures’. This ends up with a lot of frustration, a feeling of burn-out or even worse, suffocation as it may seem that the walls are closing in. Professional developers generally have a hard time placing this attitude towards them. They just want to do the right thing and provide the best possible solution they’re able to come up with. If managers don’t trust their development teams to make the right decisions, then why did they got hired in the first place? </p>  <p>I for one am pleading to get past this all this. Any business that wants to survive in this hard world economy and even wants to get ahead of its competition has to free its professional developers from management. It’s that simple. Management is great for enforcing compliance, but if engagement is what you want (and is definitely needed for bringing innovation), self-direction is essential. I already wrote <a href="http://vanryswyckjan.blogspot.com/2008/02/on-software-factories.html">a blog post about self-organizing teams</a> a couple of years ago. Today, I’m even more convinced that self-direction is one of the major key enablers for innovation in the IT industry of the 21th century. Anyway, someone who isn’t coding at least 50% of his day job shouldn’t be allowed to interfere with any kind technical decision making. Period! </p>  <p>I’m not saying that development teams should get a signed blank check. On the contrary. Financial and business constraints should still be taken into account. But when it comes to creativity, methodologies, technologies and tools, management shouldn’t get in the way. Development teams should be able to take responsibility for their own actions. Managers should know their place by making sure that their development teams can operate as optimal and efficient as possible by removing as many impediments as possible.</p>  <p>Let me show you a couple of examples where this principle of autonomy has immensely paid of so that you’re able to judge for yourself.</p>  <p>I personally find health care a fascinating craft. I find it fascinating simply because there are so many parallels than can be drawn between software engineering and the state of health care roughly 200 years ago :-). Lets take about modern hospitals for example. Medical facilities are generally being run by senior medical staff and not by managers! Senior medical staff are people that have a high degree of mastery in what they do and still perform their craft every single day. Maybe they’re not doing it full time so that they’re able to fulfill their ‘path-finding’ responsibilities, but still, they are still fixing their patients. Hospitals do have managers however, but they are there simply for enabling the medical staff to not worry about anything else besides saving lives. Can you picture lying in an operating room when a manager in a suit bursts through the door, yelling at the surgeon that he’s not allowed to use technique xyz to save your live? Preposterous you say? Not so with the current state of affairs in IT departments of the enterprise corporations. </p>  <p>There are a couple of concrete examples in the IT industry as well. Remember when Google <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?_r=1">announced</a> that their engineers get to spend 20 percent of their time to work on something of their own interest? This resulted in massive improvements for products like GMail, Google Maps, Google Docs, etc … and directly contributed to Google’s success and current market share. Other companies like <a href="http://blogs.atlassian.com/rebelutionary/archives/000495.html">Atlassian</a> and <a href="http://blog.facebook.com/">Facebook</a> are enabling innovation in basically the same way. </p>  <p>Yet another example is Pixar. If you haven’t seen or listened to <a href="http://www.scottberkun.com/blog/2010/inside-pixars-leadership/">this interview</a> with Ed Catmull, the president of Pixar, stop reading this blog post and let it inspire you now! Somewhere along this awesome interview he mentions the following:</p>  <blockquote>   <p>Part of the behavior is I don’t know the answers. And at first that seems a little bit glib. But after awhile people get that I really don’t know the answer to a lot of these things. So we set it up so that the management really doesn’t tell people what to do.&#160; </p> </blockquote>  <p>Think about how amazing it would be like to work in an environment like that. It’s inevitable that great things are bound to happen.</p>  <p>There are plenty of other examples out there, like open-source software, Wikipedia, etc. … . They all prove that self-management results in engagement and that this is going to be a major differentiator in tomorrow’s economy.&#160; </p>  <p>Make sure to check out the following resources as well:</p>  <ul>   <li><a href="http://www.ted.com/talks/dan_pink_on_motivation.html">The surprising science of motivation</a> by Daniel Pink </li>    <li><a href="http://openmymind.net/2010/10/7/programmer-passion">Programmer Passion: An Enterprises Most Useful Yet Repressed Advantage</a> by Karl Seguin </li>    <li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">Drive: The surprising truth about what motivates us</a> </li> </ul> Till next time.   ]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/10/27/laborers-versus-professionals/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Keep Pressing on my Friend (When programming seems bleak)</title>
		<link>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keep-pressing-on-my-friend-when-programming-seems-bleak</link>
		<comments>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 22:16:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/</guid>
		<description><![CDATA[Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again? Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper? I used to think it just happened to me.&#160; The first time [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again?</p>  <p>Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper?</p>  <p>I used to think it just happened to me.&#160; The first time it happened to me, I almost switched my major from CS to CIS.&#160; But, the more and more I work in this field and talk to other programmers, the more and more I see the same exact thing happening.&#160; And guess what?&#160; It is happening to everyone.</p>  <p>Not just you.&#160; You are not alone.</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2010/09/tired_man.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="tired_man" border="0" alt="tired_man" src="http://elegantcode.com/wp-content/uploads/2010/09/tired_man_thumb.jpg" width="248" height="356" /></a></p>  <h2>I’m not talking about burnout here</h2>  <p>This is more than burnout.&#160; This lack of motivation energy-sapping-plague can hit a programmer at any time whether you just finished a week of all nighters or you just came back from a peaceful vacation.</p>  <p>I actually find that it is the time when I am furthest from what should be burn out that this phenomenon is most likely to occur.</p>  <p>So, if it’s not burnout, what is it?</p>  <p>I’ll call it programming lethargy.&#160; It actually happens to two other groups of professionals: athletes and craftsmen.</p>  <p>The truth is it is a perfectly normal cycle.&#160; This “barrier” is actually the reason why there are many apprentices, few journeymen and even fewer masters.</p>  <p>When you hit this phase be glad, it means you are about to be tested and if you come out on the other side, you will end up with a renewed interest and passion and leave behind the others that can’t cut it.</p>  <p>Oh, and it will happen again, probably several more times.</p>  <h2>Press on my friend</h2>  <p>What can you do about this problem?</p>  <p>Don’t despair, just press on.&#160; Stay the course and all will be well.</p>  <p>I am not sure why this happens, but I do know that it is a true test of your desire for the goal, whether to be a better programmer or a better athlete, or a better singer or musician. </p>  <p>The test is whether or not you can still press on when the motivation and passion is not there.</p>  <p>The reward waiting for you on the other side? </p>  <ul>   <li>A renewed passion and energy.&#160; </li>    <li>A new kind of appreciation for what you do.&#160; </li>    <li>Experience and true appreciation for your craft. </li> </ul>  <p>The question you have to ask yourself, is what do you ultimately want to become?&#160; If what you do is more than just a job to you, then you’ll find the strength to press on.</p>  <h2>How to press on when the motivation is gone</h2>  <p>If you agree with me, or even think that perhaps what I am saying is worth considering, then you will probably wonder how you can get through this phase or test to see the other side.</p>  <p>We can look at athletics again as a comparison to provide some insight.</p>  <p>Think about a professional track runner, training for competition.&#160; Consider what would happen if that athlete decided to not have a formal training schedule, but instead only train when he felt like it.</p>  <p>What would happen when he didn’t feel like training for a week?</p>  <p>Now let’s say he had a training schedule and he followed it, even on the mornings when he didn’t feel like getting up to train.</p>  <p>What would happen if his training was not planned out?&#160; If he didn’t know what kind of drills to do or have a long term plan for the training sessions?</p>  <p>If you want to make it through the times when you don’t feel the motivation and passion for writing code and solving problems, then you have to have a plan.&#160; A solid plan that will ensure that you will be able to press on.</p>  <p>Here are some tips to make sure that when you get struck by programming lethargy, you do make it through to the other side.</p>  <ul>   <li>I’ve talked about this <a href="http://simpleprogrammer.com/2010/07/02/the-importance-of-always-reading/">several times</a> in my blog.&#160; <strong>Make sure you are always reading a technical book.</strong>&#160; Create a schedule and stick to it.&#160; Even 15-30 minutes a day of reading will let you read around 1-2 books a month.&#160; That is a huge amount of knowledge. </li>    <li>When you don’t feel like working,<strong> break up your work into <a href="http://simpleprogrammer.com/2010/07/09/why-small-is-better/">small tasks</a> and start accomplishing those tasks.</strong>&#160; Figure out exactly what you have to do to move forward and do it.&#160; Don’t give in and waste time.&#160; The time you feel the most like killing time, is the time when you must throw yourself into your work all the more. </li>    <li><strong>Set some goals for yourself.</strong>&#160; Short term and long term.&#160; The short terms goals should clearly lead to the long term goals.&#160; Review those goals frequently and always try to make progress towards the goals.&#160; Even a little bit of progress adds up over time. </li>    <li><strong>Don’t start thinking about changing careers or looking for an easier job.</strong>&#160; Don’t start thinking you will feel this way forever.&#160; Realize that what you are experiencing now is a feeling and feelings are not trustworthy. </li>    <li><strong>Clean up.</strong>&#160; Clean up your workspace.&#160; Clean up your computer.&#160; Get yourself some new equipment if it will help.&#160; Feeling like you have a new and fresh environment can do wonders for motivation. </li>    <li><strong>Challenge yourself.</strong>&#160; Your gut is going to tell you to slow down and relax, but that road leads to laziness.&#160; When laziness comes your way, the best way to fight it is to push right into it! </li> </ul>  <p>Well, that is all the tips I have for you for today.&#160; Just remember that you are not alone and what you are experiencing is normal.&#160; </p>  <p>If you’re in a period now where you are motivated and feel great about your work and what you are doing, you might want to bookmark this post and come back to it when it can benefit you more.&#160; </p>  <p>Remember though, setting up good habits and routines now can help you cruise through the hard times later. </p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>  <ul></ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Microsoft doesn&#8217;t create bad developers, developers do</title>
		<link>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoft-doesnt-create-bad-developers-developers-do</link>
		<comments>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:47:16 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/</guid>
		<description><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an [...]]]></description>
			<content:encoded><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an industry that is evolving at an incredible pace, contains an incalculable number of technologies, frameworks, best practices and constantly redefines the definition of how things should be done in the best possibly way. It’s the industry that makes the rest of the world tick. Daunting really, if you think about it.

A while back I read a couple of posts by <a href="http://www.gilzilberfeld.com/" target="_blank">Gil Zilberfeld</a> (<a title="Read Gil's post on Why Microsoft makes bad programmers" href="http://www.gilzilberfeld.com/2010/07/why-microsoft-makes-bad-programmers.html" target="_blank">here</a> and <a title="Read Gil's post on CSI: Microsoft" href="http://www.gilzilberfeld.com/2010/08/csi-microsoft.html" target="_blank">here</a>) where Gil talks about the responsibility that vendors such as Microsoft plays in the role of securing the quality of the work that is produced in our industry. While I think I see the points  Gil is trying to make, I think he misses the beat a bit and I have a hard time agreeing with the conclusions he draws.

The way I see it there are two types of developers; those that are just in it to pay the bills and those that consider themselves as craftsmen. If you consider yourself a craftsman then you should already be aware that you are responsible for your own faith and actions in this industry. But, if you are just in it to pay the bills then you are probably also looking to do so by doing the least amount of work and that includes looking for information on how to solve a particular problem or how to apply a technology onto your stack.

So if you are one of the developers that are only looking towards Microsoft (or the relevant company for the technology stack you are working on) is it their fault if you implement something in a way that could be considered bad? Of course not! Sure there are a lot of outdated and down right poor samples at the Microsoft (or relevant company) website and their idea on how certain things should be solved are bound to differ from others (and that’s definitely not to say that there isn’t good contents, there are a ton of it). However, if you rely on a single source of information, you are always going to get an opinionated view. Take my word on it (right?).

Doctors reads medical journals, publishes research papers, attend conferences, network with colleagues and make sure they stay up to date with the latest in their field. I’m pretty sure you are happy that they spend all of this time to make sure they can provide the best possible care and treatment when someone are in need of their services. I know I am.

Just as with any other profession, developers are responsible for their own education, for honing their skills in the craft that they have chosen to practice. In order to keep up in an industry that evolves at the speed of light you need to invest in yourself. The code you write today should be some of the best you have ever written, while a year later you should be considerably less excited about its quality. It’s a sign of growth. That you’ve continued to move forward as a craftsman, that you skills have been honed and broadened during the past year.

So what about the tools? Do we really rely on them too much to get the work done? I would say, definitely not! But again you have to specify just exactly what you are talking about when talking about tooling. If you rely on visual designers, drag and drop, wizards and the likes to to the majority of your work, then yes you are probably relying too much on your tools. Odds are that you will have a hard time to get anything outside of standard behavior to run and there will be pain points when you need to debug.

However you would do yourself (and your employer) a huge disservice if you did not make it your goal to know the tools in your toolbox as good as possible. What’s wrong with knowing how to use the debugger, the IDE and tools like ReSharper as good as possible? Used correctly they will have a huge impact on productivity. Make sure you know the finer details of the tools and make them work for your and not the other way around. Yes, sometimes tools do get in the way of the goal, even slow you down, and when that is the case, don’t use the tools! Tools are there to help you when you need them, not to act as a crutch you always have to lean on so you don’t fall on your ass.

Well there you have my thoughts on the subject. It’s always up to the developer, not the companies. Always.

I am also around on twitter <a title="Visit my twitter profile" href="http://twitter.com/thecodejunkie" target="_blank">@thecodejunkie</a> in case you need one more person to follow]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Software, &#8220;It&#8217;s not what we do&#8221;.</title>
		<link>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-its-not-what-we-do</link>
		<comments>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 12:13:36 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/09/software-its-not-what-we-do/</guid>
		<description><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a [...]]]></description>
			<content:encoded><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a “core competency”.

One thing I have heard expressed in those places is, “software development is not our core competency, therefore recommendations around professional development practices don’t apply to us.”

Good, lord. Really, people?

This is akin to a Boeing corporate attorney claiming that he need not be competent because Boeing makes airplanes.

I don’t know where this absurd line of reasoning comes from, but I know why it is tolerated. It is tolerated because we don’t have the formal structures to hold professionals accountable the way we might hold an electrician, plumber, or physician accountable to being merely competent. If you are reading this post you probably make 3X the salary of a plumber, yet are held to a lower degree of professional accountability for your work.

This is sad, but it doesn’t mean that we need to pick up the mantle of mediocrity available to us. We can hold ourselves accountable for professionalism no matter where we work.

If the organization we serve specializes in jellybeans, services, software widgets, or any other industry, we are hired to bring our best game to the table. This is why they hire us, folks! We are supposed to know what we are doing, not making excuses for incompetence!

In summary, no matter what type of organization you work for:
<ul>
	<li>Yes, you need to use source control.</li>
	<li>Yes, you need to automate the build.</li>
	<li>No, you shouldn’t be releasing the assemblies compiled on your machine.</li>
	<li>Yes, you need to stop writing long methods and pay attention to code complexity.</li>
	<li>Yes, you need to buy your developers the best tools available.</li>
	<li>No, you don’t need to write your own logging framework.</li>
	<li>Yes, you should be practicing test first development.</li>
	<li>No, continuing to ship known defects is not acceptable.</li>
	<li>Yes, you should understand who your customer is.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Software Craftsmanship on the Polymorphic Podcast</title>
		<link>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-craftsmanship-on-the-polymorphic-podcast</link>
		<comments>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:11:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/</guid>
		<description><![CDATA[I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of being the host!</p>  <p><a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx?"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ListenBanner" border="0" alt="ListenBanner" align="right" src="http://elegantcode.com/wp-content/uploads/2010/08/ListenBanner.png" width="341" height="53" /></a> The interview is now live and <a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx" target="_blank">available here</a>. </p>  <p>We visited many of my favorite topics including:</p>  <ul>   <li>How to sell Agile in your org</li>    <li>Scrum and ScrumBut</li>    <li>Code Craftsmanship</li>    <li>Agile in small teams</li>    <li>How to be an agile army of one</li>    <li>How my mom is the perfect complexity gauge</li>    <li>And ElegantCode.com gets a shout out!</li> </ul>  <p>This was really fun. Thanks, Craig!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enforce Correct Usage By Wrapping Types</title>
	<atom:link href="http://elegantcode.com/category/craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00: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>Elegant Code &#187; Craftsmanship</title>
	<atom:link href="http://elegantcode.com/category/craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00: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>Temovate Cream For Sale</title>
		<link>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-software-development-will-never-be-engineering</link>
		<comments>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:37:48 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/</guid>
		<description><![CDATA[I always find it rather interesting when academics try to quantify generalized metrics about software development. Temovate Cream For Sale, Things like: per lines of code, there will be X number of bugs. Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.” These are all interesting [...]]]></description>
			<content:encoded><![CDATA[<p> <p>I always find it rather interesting when academics try to quantify generalized metrics about software development.</p>  <p> <b>Temovate Cream For Sale</b>, Things like: per lines of code, there will be X number of bugs.</p>  <p>Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.”</p>  <p>These are all interesting thoughts, but software development will never conform to rigid engineering principles like many other engineering practices.&#160; The longer I work in the field, the more and more I realize that software development has nothing to do with engineering.&#160; We just happen to attend some of the same math classes in school.</p>  <h2>Building bridges</h2>  <p>One of the main arguments I hear people make about the current state of software development as an engineering practice is based around its relative maturity to other engineering fields.</p>  <p>There is a huge problem with this line of thinking.</p>  <p>The argument goes something like this:&#160; “<em>Engineering has been around for hundreds of years and has matured to the point where it is a measurable science, but software development has only been around in earnest for the last few decades or so, therefore it is relatively immature as an engineering discipline.”</em></p>  <p>On the surface this argument seems sounds.&#160; And certainly in 50 years software development will be different than it is now.&#160; Heck, it is much more different than it was just 10 years ago.</p>  <p>But, here is the problem.&#160; We build much more software than we do bridges.</p>  <p><img src="http://www.nps.gov/glca/historyculture/images/Navajo_Bridges_1.gif" width="589" height="442" /></p>  <h6 align="center">&#160;</h6>  <p>Let me give you an example that came to light in another area of my interest… poker.</p>  <h1></h1>  <h2>The poker quickening</h2>  <p>An interesting thing happened in the poker community in the last 10 years; poker pros with decades of experience started getting beat time and time again by 19 year old poker prodigies.</p>  <p>From an outside perspective it looks like the poker world opening up just widened the search for talent and there it was.&#160; But, a closer examination of the evidence leads to the truth.</p>  <p>Before the online poker industry was born, poker was played in card rooms and casinos in states where it was legal and occasionally at small home games throughout the US.</p>  <p>A poker pro might play poker tournaments perhaps 100 times to 150 times a year.&#160; The sum knowledge of the poker community and the meta game around it was based on this base of professional poker players playing tournaments and gaining experience at this mediocre rate.</p>  <p>Once the internet poker rooms started opening up, things changed, and they changed rapidly.&#160; Now anyone could play poker from their home PC.&#160; Not only could they play poker, they could play poker tournaments at all hours of the day.</p>  <p>Here is a list of some of the major changes that took place:</p>  <ul>   <li>Hands are dealt at 60-80 hands per hour instead of 10-30</li>    <li>Players can play in many tournaments at one time, 10 tournaments at once is not unheard of</li>    <li>Players can analyze hand histories and historical data about their play and opponents play through the use of software </li>    <li>Age requirements are out the window, technically any one of any age could be playing online</li>    <li>Players can play 24 hours a day</li>    <li>The professional online tournament player could easily play over 3000 tournaments in a year, while a brick and mortar pro would be lucky to reach 100 in a year.</li>   <img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://t1.gstatic.com/images?q=tbn:ANd9GcRj9uGNWSyqGWEneiH6xaBAyS6COwGYicdNadZu-06KWQLhIi6LMw&amp;t=1" width="316" height="270" /></ul>  <p>&#160;</p>  <p>So where am I going with all this?</p>  <p>The point is that as a whole more hands were dealt and more poker knowledge and experience was obtained in 1 year of online poker than probably the entire history of poker before that.&#160; We reached such an accelerated pace of play that all previous knowledge of poker became obsolete.&#160; </p>  <p>The strategy of tournament poker completely changed.&#160; The game evolved perhaps 500 years into the future in a matter of 5 years time.</p>  <p>The same has happened with software development.</p>  <h2>Back to the bridge building</h2>  <p>So let’s take that poker example and look at it through the lens of software development.</p>  <p>Let us compare the engineering maturity to software development to the engineering maturity of the engineering discipline of building bridges.</p>  <p>I think most people would agree that bridge building is a very mature engineering discipline but many people would argue that software development is not.</p>  <p><strong>How many bridges do you think have been built in the world?</strong></p>  <p>Well there are <a href="http://www.betterroads.com/category/bridge-inventory/erroads.randallreillycms.com/files/2009/11/BR1109_BridgeInventory.pdf">about 600,000 bridges in the United States alone</a>, so the world figure must be at least somewhere around 10 times that number perhaps 20.</p>  <p><strong>How many software programs have been written?</strong></p>  <p>This is a very hard number to estimate, but lets take a rough guess based on <a href="http://stackoverflow.com/questions/453880/how-many-developers-are-there-in-the-world">how many software developers there are in the world</a>.&#160; </p>  <p>If we say there are about 12 million software developers and each software developer has written approximately 3 programs, we can estimate that a large amount more programs have been written than bridges built.</p>  <p>My point is not to knock bridge building, we are pretty good at it as a whole, but rather to show that collectively, even though we have been building bridges for hundreds of years, we have probably devoted an equivalent amount of time to building software.</p>  <p>This line of thinking may lead you to argue back that software development and bridge building are very different.&#160; Bridge building has a fixed set of requirements that are pretty close to the the same for each bridge you build, but software development is a big open void of whims and ambiguously contradictory statements.</p>  <p>I agree with you 100%!&#160; And in essence that is my point.</p>  <h2>Software development is different</h2>  <p>And we have had enough time to realize that.&#160; Waiting for software development to gel into some kind of engineering discipline like other engineering disciplines is like waiting for water without gelatin mix to turn into Jello.&#160; </p>  <p>It’s just not going to happen!</p>  <p>In my mind it is clear that the argument that we haven’t given it enough time is just wishful thinking.&#160; The nature of software development, just like online poker, leads itself to rapid evolution.</p>  <p>Consider what direction software development is evolving.&#160; Is it even evolving in the direction of rigid engineering practices or is it evolving in the exact OPPOSITE direction?</p>  <p>Ten years ago, we tried to use UML diagrams and CASE tools to develop software.&#160; Ten years ago waterfall was all the rage.&#160; Ten years ago, we thought that ten years in the future we would have programs that would allow us to build software in the same way that CAD tools allow for building machine parts.</p>  <p>Not only did it not happen.&#160; It went completely the other way.&#160; Now we are all talking about Agile.&#160; Now people don’t even remember what CASE tools are.&#160; Now we are building software without trying to define the whole system in UML diagrams.</p>  <p><strong>The fact of the matter is software systems are unruly beasts!</strong></p>  <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://aznbadger.files.wordpress.com/2010/06/beast.jpg" /></p>  <p>In my mind it comes down to one simple distinction.&#160; Software is living, bridges aren’t.&#160; When you are done building a bridge, you are done building the bridge.&#160; </p>  <p>Sure someone, probably not you, will have to come along and do some routine maintenance on it.&#160; Sure, some small things might change about it, but for all intents and purposes the work is done.</p>  <p>In most software development scenarios, this is not the case.&#160; In most software development scenarios, releasing V1 is not even close to the end.&#160; Sometimes V1 and V2 don’t even look that same at all.&#160; Software development is about operating on a living breathing thing and all the while keeping it alive.</p>  <p>The truth is, we software developers have more in common with surgeons than with other engineers.</p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>.  Buy Temovate Cream without a prescription.  Temovate Cream trusted pharmacy reviews.  Temovate Cream over the counter.  Where can i order Temovate Cream without prescription.  Online buy Temovate Cream without a prescription.  Temovate Cream no rx.  Buy cheap Temovate Cream no rx.  Temovate Cream photos.  Buy Temovate Cream online no prescription.  Order Temovate Cream online c.o.d.  Herbal Temovate Cream.  About Temovate Cream.  Australia, uk, us, usa.  Cheap Temovate Cream.  Temovate Cream class.  Temovate Cream brand name.  Online Temovate Cream without a prescription.  Buy Temovate Cream without prescription.  Buy Temovate Cream from canada.  After Temovate Cream.  Order Temovate Cream from mexican pharmacy.  Temovate Cream without a prescription.  Purchase Temovate Cream.  Temovate Cream natural.  Temovate Cream overnight.  Temovate Cream online cod.  Where can i buy cheapest Temovate Cream online.  Purchase Temovate Cream for sale.  Online buying Temovate Cream.  Purchase Temovate Cream online.  Temovate Cream used for.  Temovate Cream coupon.  Temovate Cream description.  Order Temovate Cream no prescription.  Temovate Cream maximum dosage.  Cheap Temovate Cream no rx.  Temovate Cream images.  Temovate Cream blogs.  Buy Temovate Cream online cod.  Buy generic Temovate Cream.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4472'>Bactroban For Sale</a>. <a href='http://elegantcode.com/?p=4632'>Armour For Sale</a>. <a href='http://elegantcode.com/?p=4639'>Buy Estrace Vaginal Cream Without Prescription</a>. <a href='http://elegantcode.com/?p=4668'>Buy Augmentin Without Prescription</a>. <a href='http://elegantcode.com/?p=4535'>Buy Tindamax Without Prescription</a>. <a href='http://elegantcode.com/?p=4931'>Fast shipping Diclofenac</a>. <a href='http://elegantcode.com/?p=4240'>Combivent brand name</a>. <a href='http://elegantcode.com/?p=4417'>Levaquin overnight</a>. <a href='http://elegantcode.com/?p=4597'>Purchase Toradol online</a>. <a href='http://elegantcode.com/?p=4221'>Australia, uk, us, usa</a>.<br />
<b>Trackbacks from:</b> <a href='http://www.quarterlives.com/?p=1148'>Temovate Cream For Sale</a>. <a href='http://4realz.net/?p=1972'>Temovate Cream For Sale</a>. <a href='http://www.macneilbmx.com/blog/?p=5997'>Temovate Cream For Sale</a>. <a href='http://www.greatgreengoods.com/?p=2476'>Temovate Cream For Sale</a>. <a href='http://www.thegriffonnews.com/?p=9947'>Temovate Cream For Sale</a>. <a href='http://social-blend.com/?p=1160'>Temovate Cream brand name</a>. <a href='http://blog.farmland.org/?p=3812'>Where can i find Temovate Cream online</a>. <a href='http://reversemortgagedaily.com/?p=14136'>Generic Temovate Cream</a>. <a href='http://linuxologist.com/?p=1792'>Temovate Cream photos</a>. <a href='http://home.officesnapshots.com/?p=114'>Order Temovate Cream from mexican pharmacy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Buy Xalatan Without Prescription</title>
		<link>http://elegantcode.com/2011/04/13/why-rules-rule/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-rules-rule</link>
		<comments>http://elegantcode.com/2011/04/13/why-rules-rule/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 03:19:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/04/13/why-rules-rule/</guid>
		<description><![CDATA[Buy Xalatan Without Prescription, I have to admit, I love rules. They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally. Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how [...]]]></description>
			<content:encoded><![CDATA[<p> <p> <b>Buy Xalatan Without Prescription</b>, I have to admit, I love rules.</p>  <p>They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally.</p>  <p>Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how valuable they are, because when rules are doing their job, you don’t even notice them.</p>  <p>The first rule of your day is likely your alarm clock.&#160; This is a self imposed rule that you have created for yourself to get up at a certain time in the morning.&#160; Try to function in any meaningful way by completely removing that rule and see what happens.</p>  <p>Almost all games we play have rules.&#160; Without rules those games wouldn’t be much fun.</p>  <p>We drive on the correct side of the road in our lane, following rules of traffic, which if not obeyed put us in mortal danger and make the road quite a scary place.</p>  <p>It is a gross understatement to say rules are important to our daily life.</p>  <p>Yet, I am constantly amazed how many people seem to oppose any notion of rules when it comes to our craft of software development.</p>  <h2>There is this notion that rules somehow preclude judgment</h2>  <p>Somehow the idea has crept into many of our brains that rules and good judgment, (what we might call craftsmanship), are diametrically opposed to each other.</p>  <p>There seems to be a pervasive thought that rules suck all the fun out of things and take away creativity, skill and experience, reducing the follower of such rules to a mindless robot, replaceable by any other robot.</p>  <p>Not only do I think this viewpoint is completely wrong, but I think it is downright destructive to the craft of software development.</p>  <p>Let us first dispel the notion that rules destroy creativity and its kin.</p>  <p>Think about a game like Scrabble.&#160; Scrabble is a game that is based on a very restrictive set of rules.&#160; You basically have only two moves you can do.</p>  <ol>   <li>Make a word using only letters in your rack and letters on the board.</li>    <li>Discard some letters to get some new ones.</li> </ol>  <p>Rules dictate how many letters you can have and what ways you can arrange them.&#160; Yet, how much creativity is actually created by these constraints?</p>  <p>Music is often seen as a cousin to coding, and is another great example of constraints which breed creativity.&#160; Music has a huge amount of constraint.&#160; There are many natural rules about sounds and chords.&#160; We only have a small amount of notes to even work with, yet people have been elaborating on those 12 notes for hundreds of years and new creative sounds are produced every single day!</p>  <p><strong>If you really take the time to think about it, I think you will find that constraints actually breed creativity not destroy it.</strong></p>  <h2>The truth is rules come from good judgment at the right time</h2>  <p>Let me posit you this question.</p>  <p>When is a better time to make a judgment decision of what to do when a bear attacks you?</p>  <ul>   <li>When the bear is actually attacking you</li>    <li>Sitting at your computer with a huge amount of reference material available to you about bear attacks and a calm peaceful environment</li> </ul>  <p>If you chose when the bear is actually attacking you turn to page 32.</p>  <p><strong>Page 32:</strong></p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bear-attack" border="0" alt="bear-attack" src="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack_thumb.jpg" width="447" height="318" /></a></p>  <p><em>Having no rules in which to operate, in the heat of the moment, you decide to “tickle” the bear.&#160; The bear slays you and munches on your bones.&#160; Your adventure has come to an end.</em></p>  <p><strong><em>You are DEAD!</em></strong></p>  <p>The point is that your judgment is much more likely to be sound when you are removed from the situation which you are making the judgment call about.&#160; Unless you are a close relative of Spock, you’ll probably find that human emotions tends to interfere with sound judgment.</p>  <p>This is why I instead firmly believe that <strong>we should use our good judgment to formulate rules that we will use in the situations which they apply to rather than to try and execute good judgment when we are engrossed in the situation.</strong></p>  <p>If you still disagree with me here, let’s ponder the example of the alarm clock one more time.&#160; Better yet, I challenge you to make a judgment call each morning of when you should wake up.&#160; You can’t use an alarm clock or any rules.&#160; (Before you do this, you might want to make sure you get your resume polished up.)</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="alarm clock" border="0" alt="alarm clock" src="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock_thumb.jpg" width="235" height="386" /></a></p>  <h2>How does this all apply to software development?</h2>  <p>I’m not going to attempt to address every way in this blog post, perhaps we’ll revisit this subject in the future, because it is so important.&#160; Instead my goal here is to convince you to embrace rules and to not fear setting them for yourself, for your team or for your code.</p>  <p>Some of the biggest failings of teams that I see is the fear of setting rules.&#160; Teams seem to be so afraid of restricting someone or impairing their ability to make judgment calls that they go the direction of never setting any concrete rules, just guidelines or best practices.</p>  <p>There is a huge difference between guidelines and rules.&#160; Guidelines help you make a decision, rules make it for you.&#160; Don’t be fooled into thinking they are the same thing, and don’t fear rules.&#160; I always prefer rules over guidelines, because they are much more valuable.</p>  <p><strong>You can actually measure the effect of a rule, but you can’t easily measure the effect of a </strong><strong>guideline.</strong></p>  <p>Let me give you some examples of areas in software development that I think are great places to enforce some rules:</p>  <ul>   <li>Naming conventions</li>    <li>Unit testing</li>    <li>Process of starting work</li>    <li>Who works on work</li>    <li>When work is considered done</li>    <li>How defects are handled</li>    <li>What changes can be made to work in progress</li>    <li>What should be in a backlog</li>    <li>Language and library choices</li>    <li>Data access strategies</li>    <li>Dealing with build failures</li> </ul>  <p>Every time you are having a conversation which ends up identifying something to improve upon, you should be thinking about how you can codify it into a rule.&#160; Don’t be afraid to step out here.&#160; It’s ok to make the wrong rule and change it later.&#160; If you do this you learn something.</p>  <p>Having rules in place prevents you from making in-the-moment decisions which you later come to regret.</p>  <p>When I go to a buffet, I set rules for how much food I can eat.&#160; When I decide to start a workout routine, I set rules for how often and what duration I will workout.&#160; When I write code, I set rules for how I will write that code.</p>  <p>In any of those areas, when I fail to set rules, I end up failing.&#160; It is human nature.</p>  <h2>But rules impede me and end up making me do silly things</h2>  <p>Good.&#160; That is called feedback.</p>  <p>Remember back when you were just making judgment calls all the time instead of following rules you or your team preset ahead of time, you weren’t getting any feedback, now you are.&#160; Be happy about it, celebrate!</p>  <p>You can always change the rules.&#160; You can always tweak the parameters, but if you want to have any success in process improvement, it is much like cooking on the stove.&#160; You are much better off with burner dials that have numbers on them or at least some kind of label, then ones with just a blank dial.&#160; If you don’t know where the dial is, how will you know which way to turn it?</p>  <p>Sometimes rules are going to make you do something silly or seemingly extraneous.&#160; Sometimes rules are going to cause you to possibly even do the wrong thing.</p>  <p>But, if you want to have any chance of learning from your mistakes, if you want to truly improve your process, you must resist the urge to break the rules and instead wait for a time to reflect upon the rules and make appropriate changes at that time.</p>  <p>Learn to embrace rules and you’ll suddenly see an improvement in all areas of life where you apply them, especially your software development!</p>  <h6><strong>As always, you can subscribe to this </strong><a href="http://feeds2.feedburner.com/ElegantCode"><strong>RSS feed</strong></a><strong> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at </strong><a href="http://simpleprogrammer.com/"><strong>http://simpleprogrammer.com</strong></a><strong>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter </strong><a href="http://twitter.com/jsonmez"><strong>here</strong></a><strong>.</strong></h6>.  Xalatan description.  Xalatan no rx.  Buying Xalatan online over the counter.  Fast shipping Xalatan.  Xalatan overnight.  Buy Xalatan from mexico.  Xalatan without a prescription.  Where to buy Xalatan.  No prescription Xalatan online.  What is Xalatan.  Xalatan price.  Rx free Xalatan.  Purchase Xalatan online.  Generic Xalatan.  Xalatan street price.  Xalatan from canada.  About Xalatan.  Taking Xalatan.  Xalatan online cod.  Australia, uk, us, usa.  Order Xalatan online overnight delivery no prescription.  Xalatan recreational.  Xalatan canada, mexico, india.  Xalatan interactions.  Xalatan alternatives.  Online buying Xalatan.  My Xalatan experience.  Where can i cheapest Xalatan online.  Online Xalatan without a prescription.  Xalatan wiki.  Order Xalatan no prescription.  Get Xalatan.  Xalatan from mexico.  Xalatan schedule.  Xalatan dangers.  Purchase Xalatan for sale.  Where can i buy cheapest Xalatan online.  Discount Xalatan.  Is Xalatan addictive.  Buy cheap Xalatan.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4728'>Ventolin For Sale</a>. <a href='http://elegantcode.com/?p=4184'>Synthroid For Sale</a>. <a href='http://elegantcode.com/?p=4384'>Buy Ultram Without Prescription</a>. <a href='http://elegantcode.com/?p=4373'>Topamax For Sale</a>. <a href='http://elegantcode.com/?p=5156'>Amoxicillin For Sale</a>. <a href='http://elegantcode.com/?p=4297'>After Reglan</a>. <a href='http://elegantcode.com/?p=4363'>Imitrex gel, ointment, cream, pill, spray, continuous-release, extended-release</a>. <a href='http://elegantcode.com/?p=4721'>Flonase maximum dosage</a>. <a href='http://elegantcode.com/?p=4534'>Xalatan recreational</a>. <a href='http://elegantcode.com/?p=4354'>Herbal Glucophage</a>.<br />
<b>Trackbacks from:</b> <a href='http://social-blend.com/?p=1234'>Buy Xalatan Without Prescription</a>. <a href='http://www.quarterlives.com/?p=1098'>Buy Xalatan Without Prescription</a>. <a href='http://4realz.net/?p=816'>Buy Xalatan Without Prescription</a>. <a href='http://tayloegray.com/?p=302'>Buy Xalatan Without Prescription</a>. <a href='http://www.macneilbmx.com/blog/?p=5580'>Buy Xalatan Without Prescription</a>. <a href='http://blog.farmland.org/?p=2108'>Xalatan used for</a>. <a href='http://reversemortgagedaily.com/?p=14507'>Xalatan interactions</a>. <a href='http://linuxologist.com/?p=1519'>Online buying Xalatan</a>. <a href='http://home.officesnapshots.com/?p=268'>My Xalatan experience</a>. <a href='http://evanrapoport.com/?p=613'>Buy Xalatan online cod</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/04/13/why-rules-rule/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Programming is not a Craft: My Take</title>
		<link>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=programming-is-not-a-craft-my-take</link>
		<comments>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 17:38:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/</guid>
		<description><![CDATA[Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: Programming is not a Craft. Dan’s sentiments are not unique. I have heard similar opinions from other [...]]]></description>
			<content:encoded><![CDATA[<p>Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: <a href="http://dannorth.net/2011/01/11/programming-is-not-a-craft/" target="_blank">Programming is not a Craft</a>. Dan’s sentiments are not unique. I have heard <a href="http://blogs.tedneward.com/2008/05/11/Im+ProChoice+Pro+Programmer+Choice+That+Is.aspx" target="_blank">similar opinions</a> from other prominent developers I respect.</p>  <p>I read in Dan's post (and in some of the comments) a visceral reaction to gold plating things not determined &quot;important&quot; by the customer. I get that. I also see a need to temper this with the simple fact that the client doesn’t always know what is best for them. Let’s just get that out in the open. My doctor knows what is better for my physical body than I do and I am willing to pay for that. Will I always take the advice I am paying for? Well, probably not. And I’m sure that leaves my doctor shaking her head in dismay.</p>  <p>I learned that integrity is &quot;doing the right thing even when no one is looking&quot;, and I see the Software Craftsmanship discussion as striving for integrity in the systems we create.</p>  <p>One mark of a true professional might be a willingness to balance client need with implementaion elegance resulting in software that meets the need of the client AND is something worthy of pride when shown to another developer. If the only reason we are writing code is to provide the minimum a client wants to pay for, then how compelling is my work, really? Can I be proud of my professional body of work if I am simply marching to orders? I say no.</p>  <p>Where I part ways with Dan is in his analogy of the plumber. Granted, I simply want my pipes to work, but I am willing to pay for a plumber that takes pride in his work. I trust that plumber will simply do a better job as he strives to make his work appreciated by the next plumber that sees it. Can I quantify this into dollars? Not really. Perhaps in the extra time required to lay in a perfectly soldered joint as opposed to a sloppy one. Am I willing to pay more for this type of person to do the work? No question: Yes.</p>  <p>The bottom line for me is that we would all like to take pride in our work. No one I’ve ever met gets up in the morning thinking, “Today I will make a piece of crap”, and keeps at the job with any pleasure. We want to enjoy our work and be proud of it. Is that so bad? The very real software craftsmanship discussion simply gives us a vehicle for discussion in the pride we may take in our work for its own sake.</p>  <p>The risk to the craftsmanship community is to avoid getting carried away with dogma. Every time I hear <a href="http://channel9.msdn.com/Blogs/MichaelLehman/PP-Symposium-2010-Opening-Keynote-Robert-C-Martin" target="_blank">Bob Martin assert to a 500 person room</a> that if they aren't writing unit tests they are &quot;not professionals&quot; or somehow unworthy of being in the room with him, I cringe. That’s a perfect way to draw fire and alienate people who might otherwise join you in your cause. It also happens to be a perfect way to stand out as a charismatic speaker who gets lots of attention, but I digress… </p>  <p>Do I write tests? Yes. </p>  <p>Always? No. </p>  <p>Am I ashamed when I don't? Not really. Some jobs still call for duct tape. </p>  <p>Professionalism is knowing the appropriateness of a tool for a job and in always striving for integrity in our work. </p>  <p>My .02.</p>  <p>And, Dan, I admire and appreciate your contribution to our craft <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://elegantcode.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" /> .</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Burden Called Meetings</title>
		<link>http://elegantcode.com/2010/12/09/a-burden-called-meetings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-burden-called-meetings</link>
		<comments>http://elegantcode.com/2010/12/09/a-burden-called-meetings/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 19:00:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/12/09/a-burden-called-meetings/</guid>
		<description><![CDATA[I’ve been working for an enterprise corporation for 5+ years, which I’m going to be leaving soon. This organization is suffering from a wide-spread malady called “meetingitis”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working for an enterprise corporation for 5+ years, which <a href="http://elegantcode.com/2010/10/27/moving-to-greener-pastures/">I’m going to be leaving</a> soon. This organization is suffering from a wide-spread malady called “<a href="http://secretgeek.net/meetingitis.asp">meetingitis</a>”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming to a conclusion or a solution. Then there are also those kinds of meetings where you don’t have anything to say or contribute; these are just a complete waste of time.</p>  <p>Yesterday, <a href="http://twitter.com/seagile">Yves</a> pointed me out on Twitter that it is <a href="http://www.mccarthyshow.com/LearnForFree/TheCoreProtocolsOnline/tabid/103/Default.aspx">perfectly fine to leave a meeting</a> if you feel that you’re not able to gain or contribute anything. Today, I walked out of a meeting where one of the participants started making insults against me. I just stood up, walked to the door and left. And I must say that it felt liberating doing so. I went back to my desk, calmed down and got some actual work done. Without a basic form of respect, one simply can’t achieve anything, let alone come to win-win agreements. From now on, I’ll be evaluating all meetings that require my presence before I accept them and also keep evaluating my presence while being there. </p>  <p>Let me close of this mini-rant by sharing a must-see recording of a talk called “<a href="http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html">Why work doesn’t happen at work</a>” by <a href="http://twitter.com/jasonfried">Jason Fried</a>. I recommend you watch this short video, and if you like it, I also recommend picking up a copy of <a href="http://www.amazon.com/exec/obidos/ASIN/0307463745/elegantcode-20">Rework</a>. </p>  <p>I hereby rest my case.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/12/09/a-burden-called-meetings/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Laborers versus Professionals</title>
		<link>http://elegantcode.com/2010/10/27/laborers-versus-professionals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=laborers-versus-professionals</link>
		<comments>http://elegantcode.com/2010/10/27/laborers-versus-professionals/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:53:43 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/10/27/laborers-versus-professionals/</guid>
		<description><![CDATA[A while ago, my good friend Michel Grootjans&#160;tweeted the following: Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question. Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, my good friend <a href="http://geekswithblogs.net/alternativedotnet/Default.aspx">Michel Grootjans</a>&#160;<a href="http://twitter.com/michelgrootjans/status/24569673878">tweeted</a> the following:</p>  <blockquote>   <p>Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question.</p> </blockquote>  <p>Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a while. Try to picture your own work environment and how this relates. Go ahead! I can wait.</p>  <p>OK then, let’s move on.</p>  <p>I’ve been working for an enterprise corporation for 5+ years now. One of the things I’ve seen and learned there over this period of time is that laborers are more valued by management than professionals. Let me elaborate on this. </p>  <p>One of the biggest issues in a typical enterprise corporation is trust, specifically the lack thereof. The direct consequence of this lack of trust are massive amounts of constraints, regulatory processes and <a href="http://c2.com/cgi/wiki?FearDrivenDevelopment">fear-driven development</a>. This is the natural habitat of laborer developers, a nice and cozy place where they can spend their hibernation until retirement. This is where the term ‘code monkey’ originates from. Nine to five, no thinking, narrow focus, like soldiers in the military obeying orders to make a big mess. But sometimes, amongst these massive cohorts of laborers, there are small islands that exist of one or more professional developers. These are the kind of people that are very passionate about their craft, that want drive innovation and also want to continuously learn and improve. If you’re a developer and you’re reading this blog post, you probably fall into this category of developers.</p>  <p>But professional developers always have one part of the establishment going against them. It’s not the laborers. They don’t care. It’s an instrument better known as management. A large part of the IT industry, especially corporate IT shops, are being run by giant flocks of managers. Some of these managers started out as software developers and some of them are just born that way. But there’s something that they all have in common: they don’t write code as part of their day job. Although they don’t get their hands dirty with writing software, most managers do feel compelled to impose all kinds of political decisions regarding business requirements, software architecture/design, tools and technologies to the development teams they are ‘managing’. I for one want to make it clear that this has to stop. In order to lift this industry to the next level, we as software professionals need to free ourselves from the leash that is currently being held by management.&#160;&#160; </p>  <p>Professional developers working in these kinds of corporate environments are generally considered as troublemakers, if not by their direct bosses then certainly by other parts of management. The general attitude towards professionals is slamming them with more&#160; procedures, so called ‘company standards’ and ‘default architectures’. This ends up with a lot of frustration, a feeling of burn-out or even worse, suffocation as it may seem that the walls are closing in. Professional developers generally have a hard time placing this attitude towards them. They just want to do the right thing and provide the best possible solution they’re able to come up with. If managers don’t trust their development teams to make the right decisions, then why did they got hired in the first place? </p>  <p>I for one am pleading to get past this all this. Any business that wants to survive in this hard world economy and even wants to get ahead of its competition has to free its professional developers from management. It’s that simple. Management is great for enforcing compliance, but if engagement is what you want (and is definitely needed for bringing innovation), self-direction is essential. I already wrote <a href="http://vanryswyckjan.blogspot.com/2008/02/on-software-factories.html">a blog post about self-organizing teams</a> a couple of years ago. Today, I’m even more convinced that self-direction is one of the major key enablers for innovation in the IT industry of the 21th century. Anyway, someone who isn’t coding at least 50% of his day job shouldn’t be allowed to interfere with any kind technical decision making. Period! </p>  <p>I’m not saying that development teams should get a signed blank check. On the contrary. Financial and business constraints should still be taken into account. But when it comes to creativity, methodologies, technologies and tools, management shouldn’t get in the way. Development teams should be able to take responsibility for their own actions. Managers should know their place by making sure that their development teams can operate as optimal and efficient as possible by removing as many impediments as possible.</p>  <p>Let me show you a couple of examples where this principle of autonomy has immensely paid of so that you’re able to judge for yourself.</p>  <p>I personally find health care a fascinating craft. I find it fascinating simply because there are so many parallels than can be drawn between software engineering and the state of health care roughly 200 years ago :-). Lets take about modern hospitals for example. Medical facilities are generally being run by senior medical staff and not by managers! Senior medical staff are people that have a high degree of mastery in what they do and still perform their craft every single day. Maybe they’re not doing it full time so that they’re able to fulfill their ‘path-finding’ responsibilities, but still, they are still fixing their patients. Hospitals do have managers however, but they are there simply for enabling the medical staff to not worry about anything else besides saving lives. Can you picture lying in an operating room when a manager in a suit bursts through the door, yelling at the surgeon that he’s not allowed to use technique xyz to save your live? Preposterous you say? Not so with the current state of affairs in IT departments of the enterprise corporations. </p>  <p>There are a couple of concrete examples in the IT industry as well. Remember when Google <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?_r=1">announced</a> that their engineers get to spend 20 percent of their time to work on something of their own interest? This resulted in massive improvements for products like GMail, Google Maps, Google Docs, etc … and directly contributed to Google’s success and current market share. Other companies like <a href="http://blogs.atlassian.com/rebelutionary/archives/000495.html">Atlassian</a> and <a href="http://blog.facebook.com/">Facebook</a> are enabling innovation in basically the same way. </p>  <p>Yet another example is Pixar. If you haven’t seen or listened to <a href="http://www.scottberkun.com/blog/2010/inside-pixars-leadership/">this interview</a> with Ed Catmull, the president of Pixar, stop reading this blog post and let it inspire you now! Somewhere along this awesome interview he mentions the following:</p>  <blockquote>   <p>Part of the behavior is I don’t know the answers. And at first that seems a little bit glib. But after awhile people get that I really don’t know the answer to a lot of these things. So we set it up so that the management really doesn’t tell people what to do.&#160; </p> </blockquote>  <p>Think about how amazing it would be like to work in an environment like that. It’s inevitable that great things are bound to happen.</p>  <p>There are plenty of other examples out there, like open-source software, Wikipedia, etc. … . They all prove that self-management results in engagement and that this is going to be a major differentiator in tomorrow’s economy.&#160; </p>  <p>Make sure to check out the following resources as well:</p>  <ul>   <li><a href="http://www.ted.com/talks/dan_pink_on_motivation.html">The surprising science of motivation</a> by Daniel Pink </li>    <li><a href="http://openmymind.net/2010/10/7/programmer-passion">Programmer Passion: An Enterprises Most Useful Yet Repressed Advantage</a> by Karl Seguin </li>    <li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">Drive: The surprising truth about what motivates us</a> </li> </ul> Till next time.   ]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/10/27/laborers-versus-professionals/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Keep Pressing on my Friend (When programming seems bleak)</title>
		<link>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keep-pressing-on-my-friend-when-programming-seems-bleak</link>
		<comments>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 22:16:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/</guid>
		<description><![CDATA[Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again? Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper? I used to think it just happened to me.&#160; The first time [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again?</p>  <p>Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper?</p>  <p>I used to think it just happened to me.&#160; The first time it happened to me, I almost switched my major from CS to CIS.&#160; But, the more and more I work in this field and talk to other programmers, the more and more I see the same exact thing happening.&#160; And guess what?&#160; It is happening to everyone.</p>  <p>Not just you.&#160; You are not alone.</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2010/09/tired_man.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="tired_man" border="0" alt="tired_man" src="http://elegantcode.com/wp-content/uploads/2010/09/tired_man_thumb.jpg" width="248" height="356" /></a></p>  <h2>I’m not talking about burnout here</h2>  <p>This is more than burnout.&#160; This lack of motivation energy-sapping-plague can hit a programmer at any time whether you just finished a week of all nighters or you just came back from a peaceful vacation.</p>  <p>I actually find that it is the time when I am furthest from what should be burn out that this phenomenon is most likely to occur.</p>  <p>So, if it’s not burnout, what is it?</p>  <p>I’ll call it programming lethargy.&#160; It actually happens to two other groups of professionals: athletes and craftsmen.</p>  <p>The truth is it is a perfectly normal cycle.&#160; This “barrier” is actually the reason why there are many apprentices, few journeymen and even fewer masters.</p>  <p>When you hit this phase be glad, it means you are about to be tested and if you come out on the other side, you will end up with a renewed interest and passion and leave behind the others that can’t cut it.</p>  <p>Oh, and it will happen again, probably several more times.</p>  <h2>Press on my friend</h2>  <p>What can you do about this problem?</p>  <p>Don’t despair, just press on.&#160; Stay the course and all will be well.</p>  <p>I am not sure why this happens, but I do know that it is a true test of your desire for the goal, whether to be a better programmer or a better athlete, or a better singer or musician. </p>  <p>The test is whether or not you can still press on when the motivation and passion is not there.</p>  <p>The reward waiting for you on the other side? </p>  <ul>   <li>A renewed passion and energy.&#160; </li>    <li>A new kind of appreciation for what you do.&#160; </li>    <li>Experience and true appreciation for your craft. </li> </ul>  <p>The question you have to ask yourself, is what do you ultimately want to become?&#160; If what you do is more than just a job to you, then you’ll find the strength to press on.</p>  <h2>How to press on when the motivation is gone</h2>  <p>If you agree with me, or even think that perhaps what I am saying is worth considering, then you will probably wonder how you can get through this phase or test to see the other side.</p>  <p>We can look at athletics again as a comparison to provide some insight.</p>  <p>Think about a professional track runner, training for competition.&#160; Consider what would happen if that athlete decided to not have a formal training schedule, but instead only train when he felt like it.</p>  <p>What would happen when he didn’t feel like training for a week?</p>  <p>Now let’s say he had a training schedule and he followed it, even on the mornings when he didn’t feel like getting up to train.</p>  <p>What would happen if his training was not planned out?&#160; If he didn’t know what kind of drills to do or have a long term plan for the training sessions?</p>  <p>If you want to make it through the times when you don’t feel the motivation and passion for writing code and solving problems, then you have to have a plan.&#160; A solid plan that will ensure that you will be able to press on.</p>  <p>Here are some tips to make sure that when you get struck by programming lethargy, you do make it through to the other side.</p>  <ul>   <li>I’ve talked about this <a href="http://simpleprogrammer.com/2010/07/02/the-importance-of-always-reading/">several times</a> in my blog.&#160; <strong>Make sure you are always reading a technical book.</strong>&#160; Create a schedule and stick to it.&#160; Even 15-30 minutes a day of reading will let you read around 1-2 books a month.&#160; That is a huge amount of knowledge. </li>    <li>When you don’t feel like working,<strong> break up your work into <a href="http://simpleprogrammer.com/2010/07/09/why-small-is-better/">small tasks</a> and start accomplishing those tasks.</strong>&#160; Figure out exactly what you have to do to move forward and do it.&#160; Don’t give in and waste time.&#160; The time you feel the most like killing time, is the time when you must throw yourself into your work all the more. </li>    <li><strong>Set some goals for yourself.</strong>&#160; Short term and long term.&#160; The short terms goals should clearly lead to the long term goals.&#160; Review those goals frequently and always try to make progress towards the goals.&#160; Even a little bit of progress adds up over time. </li>    <li><strong>Don’t start thinking about changing careers or looking for an easier job.</strong>&#160; Don’t start thinking you will feel this way forever.&#160; Realize that what you are experiencing now is a feeling and feelings are not trustworthy. </li>    <li><strong>Clean up.</strong>&#160; Clean up your workspace.&#160; Clean up your computer.&#160; Get yourself some new equipment if it will help.&#160; Feeling like you have a new and fresh environment can do wonders for motivation. </li>    <li><strong>Challenge yourself.</strong>&#160; Your gut is going to tell you to slow down and relax, but that road leads to laziness.&#160; When laziness comes your way, the best way to fight it is to push right into it! </li> </ul>  <p>Well, that is all the tips I have for you for today.&#160; Just remember that you are not alone and what you are experiencing is normal.&#160; </p>  <p>If you’re in a period now where you are motivated and feel great about your work and what you are doing, you might want to bookmark this post and come back to it when it can benefit you more.&#160; </p>  <p>Remember though, setting up good habits and routines now can help you cruise through the hard times later. </p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>  <ul></ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Microsoft doesn&#8217;t create bad developers, developers do</title>
		<link>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoft-doesnt-create-bad-developers-developers-do</link>
		<comments>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:47:16 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/</guid>
		<description><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an [...]]]></description>
			<content:encoded><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an industry that is evolving at an incredible pace, contains an incalculable number of technologies, frameworks, best practices and constantly redefines the definition of how things should be done in the best possibly way. It’s the industry that makes the rest of the world tick. Daunting really, if you think about it.

A while back I read a couple of posts by <a href="http://www.gilzilberfeld.com/" target="_blank">Gil Zilberfeld</a> (<a title="Read Gil's post on Why Microsoft makes bad programmers" href="http://www.gilzilberfeld.com/2010/07/why-microsoft-makes-bad-programmers.html" target="_blank">here</a> and <a title="Read Gil's post on CSI: Microsoft" href="http://www.gilzilberfeld.com/2010/08/csi-microsoft.html" target="_blank">here</a>) where Gil talks about the responsibility that vendors such as Microsoft plays in the role of securing the quality of the work that is produced in our industry. While I think I see the points  Gil is trying to make, I think he misses the beat a bit and I have a hard time agreeing with the conclusions he draws.

The way I see it there are two types of developers; those that are just in it to pay the bills and those that consider themselves as craftsmen. If you consider yourself a craftsman then you should already be aware that you are responsible for your own faith and actions in this industry. But, if you are just in it to pay the bills then you are probably also looking to do so by doing the least amount of work and that includes looking for information on how to solve a particular problem or how to apply a technology onto your stack.

So if you are one of the developers that are only looking towards Microsoft (or the relevant company for the technology stack you are working on) is it their fault if you implement something in a way that could be considered bad? Of course not! Sure there are a lot of outdated and down right poor samples at the Microsoft (or relevant company) website and their idea on how certain things should be solved are bound to differ from others (and that’s definitely not to say that there isn’t good contents, there are a ton of it). However, if you rely on a single source of information, you are always going to get an opinionated view. Take my word on it (right?).

Doctors reads medical journals, publishes research papers, attend conferences, network with colleagues and make sure they stay up to date with the latest in their field. I’m pretty sure you are happy that they spend all of this time to make sure they can provide the best possible care and treatment when someone are in need of their services. I know I am.

Just as with any other profession, developers are responsible for their own education, for honing their skills in the craft that they have chosen to practice. In order to keep up in an industry that evolves at the speed of light you need to invest in yourself. The code you write today should be some of the best you have ever written, while a year later you should be considerably less excited about its quality. It’s a sign of growth. That you’ve continued to move forward as a craftsman, that you skills have been honed and broadened during the past year.

So what about the tools? Do we really rely on them too much to get the work done? I would say, definitely not! But again you have to specify just exactly what you are talking about when talking about tooling. If you rely on visual designers, drag and drop, wizards and the likes to to the majority of your work, then yes you are probably relying too much on your tools. Odds are that you will have a hard time to get anything outside of standard behavior to run and there will be pain points when you need to debug.

However you would do yourself (and your employer) a huge disservice if you did not make it your goal to know the tools in your toolbox as good as possible. What’s wrong with knowing how to use the debugger, the IDE and tools like ReSharper as good as possible? Used correctly they will have a huge impact on productivity. Make sure you know the finer details of the tools and make them work for your and not the other way around. Yes, sometimes tools do get in the way of the goal, even slow you down, and when that is the case, don’t use the tools! Tools are there to help you when you need them, not to act as a crutch you always have to lean on so you don’t fall on your ass.

Well there you have my thoughts on the subject. It’s always up to the developer, not the companies. Always.

I am also around on twitter <a title="Visit my twitter profile" href="http://twitter.com/thecodejunkie" target="_blank">@thecodejunkie</a> in case you need one more person to follow]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Software, &#8220;It&#8217;s not what we do&#8221;.</title>
		<link>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-its-not-what-we-do</link>
		<comments>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 12:13:36 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/09/software-its-not-what-we-do/</guid>
		<description><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a [...]]]></description>
			<content:encoded><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a “core competency”.

One thing I have heard expressed in those places is, “software development is not our core competency, therefore recommendations around professional development practices don’t apply to us.”

Good, lord. Really, people?

This is akin to a Boeing corporate attorney claiming that he need not be competent because Boeing makes airplanes.

I don’t know where this absurd line of reasoning comes from, but I know why it is tolerated. It is tolerated because we don’t have the formal structures to hold professionals accountable the way we might hold an electrician, plumber, or physician accountable to being merely competent. If you are reading this post you probably make 3X the salary of a plumber, yet are held to a lower degree of professional accountability for your work.

This is sad, but it doesn’t mean that we need to pick up the mantle of mediocrity available to us. We can hold ourselves accountable for professionalism no matter where we work.

If the organization we serve specializes in jellybeans, services, software widgets, or any other industry, we are hired to bring our best game to the table. This is why they hire us, folks! We are supposed to know what we are doing, not making excuses for incompetence!

In summary, no matter what type of organization you work for:
<ul>
	<li>Yes, you need to use source control.</li>
	<li>Yes, you need to automate the build.</li>
	<li>No, you shouldn’t be releasing the assemblies compiled on your machine.</li>
	<li>Yes, you need to stop writing long methods and pay attention to code complexity.</li>
	<li>Yes, you need to buy your developers the best tools available.</li>
	<li>No, you don’t need to write your own logging framework.</li>
	<li>Yes, you should be practicing test first development.</li>
	<li>No, continuing to ship known defects is not acceptable.</li>
	<li>Yes, you should understand who your customer is.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Software Craftsmanship on the Polymorphic Podcast</title>
		<link>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-craftsmanship-on-the-polymorphic-podcast</link>
		<comments>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:11:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/</guid>
		<description><![CDATA[I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of being the host!</p>  <p><a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx?"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ListenBanner" border="0" alt="ListenBanner" align="right" src="http://elegantcode.com/wp-content/uploads/2010/08/ListenBanner.png" width="341" height="53" /></a> The interview is now live and <a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx" target="_blank">available here</a>. </p>  <p>We visited many of my favorite topics including:</p>  <ul>   <li>How to sell Agile in your org</li>    <li>Scrum and ScrumBut</li>    <li>Code Craftsmanship</li>    <li>Agile in small teams</li>    <li>How to be an agile army of one</li>    <li>How my mom is the perfect complexity gauge</li>    <li>And ElegantCode.com gets a shout out!</li> </ul>  <p>This was really fun. Thanks, Craig!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enforce Correct Usage By Wrapping Types</title>
		<link>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-software-development-will-never-be-engineering</link>
		<comments>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:37:48 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/</guid>
		<description><![CDATA[I always find it rather interesting when academics try to quantify generalized metrics about software development. Temovate Cream For Sale, Things like: per lines of code, there will be X number of bugs. Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.” These are all interesting [...]]]></description>
			<content:encoded><![CDATA[<p> <p>I always find it rather interesting when academics try to quantify generalized metrics about software development.</p>  <p> <b>Temovate Cream For Sale</b>, Things like: per lines of code, there will be X number of bugs.</p>  <p>Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.”</p>  <p>These are all interesting thoughts, but software development will never conform to rigid engineering principles like many other engineering practices.&#160; The longer I work in the field, the more and more I realize that software development has nothing to do with engineering.&#160; We just happen to attend some of the same math classes in school.</p>  <h2>Building bridges</h2>  <p>One of the main arguments I hear people make about the current state of software development as an engineering practice is based around its relative maturity to other engineering fields.</p>  <p>There is a huge problem with this line of thinking.</p>  <p>The argument goes something like this:&#160; “<em>Engineering has been around for hundreds of years and has matured to the point where it is a measurable science, but software development has only been around in earnest for the last few decades or so, therefore it is relatively immature as an engineering discipline.”</em></p>  <p>On the surface this argument seems sounds.&#160; And certainly in 50 years software development will be different than it is now.&#160; Heck, it is much more different than it was just 10 years ago.</p>  <p>But, here is the problem.&#160; We build much more software than we do bridges.</p>  <p><img src="http://www.nps.gov/glca/historyculture/images/Navajo_Bridges_1.gif" width="589" height="442" /></p>  <h6 align="center">&#160;</h6>  <p>Let me give you an example that came to light in another area of my interest… poker.</p>  <h1></h1>  <h2>The poker quickening</h2>  <p>An interesting thing happened in the poker community in the last 10 years; poker pros with decades of experience started getting beat time and time again by 19 year old poker prodigies.</p>  <p>From an outside perspective it looks like the poker world opening up just widened the search for talent and there it was.&#160; But, a closer examination of the evidence leads to the truth.</p>  <p>Before the online poker industry was born, poker was played in card rooms and casinos in states where it was legal and occasionally at small home games throughout the US.</p>  <p>A poker pro might play poker tournaments perhaps 100 times to 150 times a year.&#160; The sum knowledge of the poker community and the meta game around it was based on this base of professional poker players playing tournaments and gaining experience at this mediocre rate.</p>  <p>Once the internet poker rooms started opening up, things changed, and they changed rapidly.&#160; Now anyone could play poker from their home PC.&#160; Not only could they play poker, they could play poker tournaments at all hours of the day.</p>  <p>Here is a list of some of the major changes that took place:</p>  <ul>   <li>Hands are dealt at 60-80 hands per hour instead of 10-30</li>    <li>Players can play in many tournaments at one time, 10 tournaments at once is not unheard of</li>    <li>Players can analyze hand histories and historical data about their play and opponents play through the use of software </li>    <li>Age requirements are out the window, technically any one of any age could be playing online</li>    <li>Players can play 24 hours a day</li>    <li>The professional online tournament player could easily play over 3000 tournaments in a year, while a brick and mortar pro would be lucky to reach 100 in a year.</li>   <img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://t1.gstatic.com/images?q=tbn:ANd9GcRj9uGNWSyqGWEneiH6xaBAyS6COwGYicdNadZu-06KWQLhIi6LMw&amp;t=1" width="316" height="270" /></ul>  <p>&#160;</p>  <p>So where am I going with all this?</p>  <p>The point is that as a whole more hands were dealt and more poker knowledge and experience was obtained in 1 year of online poker than probably the entire history of poker before that.&#160; We reached such an accelerated pace of play that all previous knowledge of poker became obsolete.&#160; </p>  <p>The strategy of tournament poker completely changed.&#160; The game evolved perhaps 500 years into the future in a matter of 5 years time.</p>  <p>The same has happened with software development.</p>  <h2>Back to the bridge building</h2>  <p>So let’s take that poker example and look at it through the lens of software development.</p>  <p>Let us compare the engineering maturity to software development to the engineering maturity of the engineering discipline of building bridges.</p>  <p>I think most people would agree that bridge building is a very mature engineering discipline but many people would argue that software development is not.</p>  <p><strong>How many bridges do you think have been built in the world?</strong></p>  <p>Well there are <a href="http://www.betterroads.com/category/bridge-inventory/erroads.randallreillycms.com/files/2009/11/BR1109_BridgeInventory.pdf">about 600,000 bridges in the United States alone</a>, so the world figure must be at least somewhere around 10 times that number perhaps 20.</p>  <p><strong>How many software programs have been written?</strong></p>  <p>This is a very hard number to estimate, but lets take a rough guess based on <a href="http://stackoverflow.com/questions/453880/how-many-developers-are-there-in-the-world">how many software developers there are in the world</a>.&#160; </p>  <p>If we say there are about 12 million software developers and each software developer has written approximately 3 programs, we can estimate that a large amount more programs have been written than bridges built.</p>  <p>My point is not to knock bridge building, we are pretty good at it as a whole, but rather to show that collectively, even though we have been building bridges for hundreds of years, we have probably devoted an equivalent amount of time to building software.</p>  <p>This line of thinking may lead you to argue back that software development and bridge building are very different.&#160; Bridge building has a fixed set of requirements that are pretty close to the the same for each bridge you build, but software development is a big open void of whims and ambiguously contradictory statements.</p>  <p>I agree with you 100%!&#160; And in essence that is my point.</p>  <h2>Software development is different</h2>  <p>And we have had enough time to realize that.&#160; Waiting for software development to gel into some kind of engineering discipline like other engineering disciplines is like waiting for water without gelatin mix to turn into Jello.&#160; </p>  <p>It’s just not going to happen!</p>  <p>In my mind it is clear that the argument that we haven’t given it enough time is just wishful thinking.&#160; The nature of software development, just like online poker, leads itself to rapid evolution.</p>  <p>Consider what direction software development is evolving.&#160; Is it even evolving in the direction of rigid engineering practices or is it evolving in the exact OPPOSITE direction?</p>  <p>Ten years ago, we tried to use UML diagrams and CASE tools to develop software.&#160; Ten years ago waterfall was all the rage.&#160; Ten years ago, we thought that ten years in the future we would have programs that would allow us to build software in the same way that CAD tools allow for building machine parts.</p>  <p>Not only did it not happen.&#160; It went completely the other way.&#160; Now we are all talking about Agile.&#160; Now people don’t even remember what CASE tools are.&#160; Now we are building software without trying to define the whole system in UML diagrams.</p>  <p><strong>The fact of the matter is software systems are unruly beasts!</strong></p>  <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://aznbadger.files.wordpress.com/2010/06/beast.jpg" /></p>  <p>In my mind it comes down to one simple distinction.&#160; Software is living, bridges aren’t.&#160; When you are done building a bridge, you are done building the bridge.&#160; </p>  <p>Sure someone, probably not you, will have to come along and do some routine maintenance on it.&#160; Sure, some small things might change about it, but for all intents and purposes the work is done.</p>  <p>In most software development scenarios, this is not the case.&#160; In most software development scenarios, releasing V1 is not even close to the end.&#160; Sometimes V1 and V2 don’t even look that same at all.&#160; Software development is about operating on a living breathing thing and all the while keeping it alive.</p>  <p>The truth is, we software developers have more in common with surgeons than with other engineers.</p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>.  Buy Temovate Cream without a prescription.  Temovate Cream trusted pharmacy reviews.  Temovate Cream over the counter.  Where can i order Temovate Cream without prescription.  Online buy Temovate Cream without a prescription.  Temovate Cream no rx.  Buy cheap Temovate Cream no rx.  Temovate Cream photos.  Buy Temovate Cream online no prescription.  Order Temovate Cream online c.o.d.  Herbal Temovate Cream.  About Temovate Cream.  Australia, uk, us, usa.  Cheap Temovate Cream.  Temovate Cream class.  Temovate Cream brand name.  Online Temovate Cream without a prescription.  Buy Temovate Cream without prescription.  Buy Temovate Cream from canada.  After Temovate Cream.  Order Temovate Cream from mexican pharmacy.  Temovate Cream without a prescription.  Purchase Temovate Cream.  Temovate Cream natural.  Temovate Cream overnight.  Temovate Cream online cod.  Where can i buy cheapest Temovate Cream online.  Purchase Temovate Cream for sale.  Online buying Temovate Cream.  Purchase Temovate Cream online.  Temovate Cream used for.  Temovate Cream coupon.  Temovate Cream description.  Order Temovate Cream no prescription.  Temovate Cream maximum dosage.  Cheap Temovate Cream no rx.  Temovate Cream images.  Temovate Cream blogs.  Buy Temovate Cream online cod.  Buy generic Temovate Cream.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4472'>Bactroban For Sale</a>. <a href='http://elegantcode.com/?p=4632'>Armour For Sale</a>. <a href='http://elegantcode.com/?p=4639'>Buy Estrace Vaginal Cream Without Prescription</a>. <a href='http://elegantcode.com/?p=4668'>Buy Augmentin Without Prescription</a>. <a href='http://elegantcode.com/?p=4535'>Buy Tindamax Without Prescription</a>. <a href='http://elegantcode.com/?p=4931'>Fast shipping Diclofenac</a>. <a href='http://elegantcode.com/?p=4240'>Combivent brand name</a>. <a href='http://elegantcode.com/?p=4417'>Levaquin overnight</a>. <a href='http://elegantcode.com/?p=4597'>Purchase Toradol online</a>. <a href='http://elegantcode.com/?p=4221'>Australia, uk, us, usa</a>.<br />
<b>Trackbacks from:</b> <a href='http://www.quarterlives.com/?p=1148'>Temovate Cream For Sale</a>. <a href='http://4realz.net/?p=1972'>Temovate Cream For Sale</a>. <a href='http://www.macneilbmx.com/blog/?p=5997'>Temovate Cream For Sale</a>. <a href='http://www.greatgreengoods.com/?p=2476'>Temovate Cream For Sale</a>. <a href='http://www.thegriffonnews.com/?p=9947'>Temovate Cream For Sale</a>. <a href='http://social-blend.com/?p=1160'>Temovate Cream brand name</a>. <a href='http://blog.farmland.org/?p=3812'>Where can i find Temovate Cream online</a>. <a href='http://reversemortgagedaily.com/?p=14136'>Generic Temovate Cream</a>. <a href='http://linuxologist.com/?p=1792'>Temovate Cream photos</a>. <a href='http://home.officesnapshots.com/?p=114'>Order Temovate Cream from mexican pharmacy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Craftsmanship</title>
	<atom:link href="http://elegantcode.com/category/craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00: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>Temovate Cream For Sale</title>
		<link>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-software-development-will-never-be-engineering</link>
		<comments>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:37:48 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/</guid>
		<description><![CDATA[I always find it rather interesting when academics try to quantify generalized metrics about software development. Temovate Cream For Sale, Things like: per lines of code, there will be X number of bugs. Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.” These are all interesting [...]]]></description>
			<content:encoded><![CDATA[<p> <p>I always find it rather interesting when academics try to quantify generalized metrics about software development.</p>  <p> <b>Temovate Cream For Sale</b>, Things like: per lines of code, there will be X number of bugs.</p>  <p>Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.”</p>  <p>These are all interesting thoughts, but software development will never conform to rigid engineering principles like many other engineering practices.&#160; The longer I work in the field, the more and more I realize that software development has nothing to do with engineering.&#160; We just happen to attend some of the same math classes in school.</p>  <h2>Building bridges</h2>  <p>One of the main arguments I hear people make about the current state of software development as an engineering practice is based around its relative maturity to other engineering fields.</p>  <p>There is a huge problem with this line of thinking.</p>  <p>The argument goes something like this:&#160; “<em>Engineering has been around for hundreds of years and has matured to the point where it is a measurable science, but software development has only been around in earnest for the last few decades or so, therefore it is relatively immature as an engineering discipline.”</em></p>  <p>On the surface this argument seems sounds.&#160; And certainly in 50 years software development will be different than it is now.&#160; Heck, it is much more different than it was just 10 years ago.</p>  <p>But, here is the problem.&#160; We build much more software than we do bridges.</p>  <p><img src="http://www.nps.gov/glca/historyculture/images/Navajo_Bridges_1.gif" width="589" height="442" /></p>  <h6 align="center">&#160;</h6>  <p>Let me give you an example that came to light in another area of my interest… poker.</p>  <h1></h1>  <h2>The poker quickening</h2>  <p>An interesting thing happened in the poker community in the last 10 years; poker pros with decades of experience started getting beat time and time again by 19 year old poker prodigies.</p>  <p>From an outside perspective it looks like the poker world opening up just widened the search for talent and there it was.&#160; But, a closer examination of the evidence leads to the truth.</p>  <p>Before the online poker industry was born, poker was played in card rooms and casinos in states where it was legal and occasionally at small home games throughout the US.</p>  <p>A poker pro might play poker tournaments perhaps 100 times to 150 times a year.&#160; The sum knowledge of the poker community and the meta game around it was based on this base of professional poker players playing tournaments and gaining experience at this mediocre rate.</p>  <p>Once the internet poker rooms started opening up, things changed, and they changed rapidly.&#160; Now anyone could play poker from their home PC.&#160; Not only could they play poker, they could play poker tournaments at all hours of the day.</p>  <p>Here is a list of some of the major changes that took place:</p>  <ul>   <li>Hands are dealt at 60-80 hands per hour instead of 10-30</li>    <li>Players can play in many tournaments at one time, 10 tournaments at once is not unheard of</li>    <li>Players can analyze hand histories and historical data about their play and opponents play through the use of software </li>    <li>Age requirements are out the window, technically any one of any age could be playing online</li>    <li>Players can play 24 hours a day</li>    <li>The professional online tournament player could easily play over 3000 tournaments in a year, while a brick and mortar pro would be lucky to reach 100 in a year.</li>   <img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://t1.gstatic.com/images?q=tbn:ANd9GcRj9uGNWSyqGWEneiH6xaBAyS6COwGYicdNadZu-06KWQLhIi6LMw&amp;t=1" width="316" height="270" /></ul>  <p>&#160;</p>  <p>So where am I going with all this?</p>  <p>The point is that as a whole more hands were dealt and more poker knowledge and experience was obtained in 1 year of online poker than probably the entire history of poker before that.&#160; We reached such an accelerated pace of play that all previous knowledge of poker became obsolete.&#160; </p>  <p>The strategy of tournament poker completely changed.&#160; The game evolved perhaps 500 years into the future in a matter of 5 years time.</p>  <p>The same has happened with software development.</p>  <h2>Back to the bridge building</h2>  <p>So let’s take that poker example and look at it through the lens of software development.</p>  <p>Let us compare the engineering maturity to software development to the engineering maturity of the engineering discipline of building bridges.</p>  <p>I think most people would agree that bridge building is a very mature engineering discipline but many people would argue that software development is not.</p>  <p><strong>How many bridges do you think have been built in the world?</strong></p>  <p>Well there are <a href="http://www.betterroads.com/category/bridge-inventory/erroads.randallreillycms.com/files/2009/11/BR1109_BridgeInventory.pdf">about 600,000 bridges in the United States alone</a>, so the world figure must be at least somewhere around 10 times that number perhaps 20.</p>  <p><strong>How many software programs have been written?</strong></p>  <p>This is a very hard number to estimate, but lets take a rough guess based on <a href="http://stackoverflow.com/questions/453880/how-many-developers-are-there-in-the-world">how many software developers there are in the world</a>.&#160; </p>  <p>If we say there are about 12 million software developers and each software developer has written approximately 3 programs, we can estimate that a large amount more programs have been written than bridges built.</p>  <p>My point is not to knock bridge building, we are pretty good at it as a whole, but rather to show that collectively, even though we have been building bridges for hundreds of years, we have probably devoted an equivalent amount of time to building software.</p>  <p>This line of thinking may lead you to argue back that software development and bridge building are very different.&#160; Bridge building has a fixed set of requirements that are pretty close to the the same for each bridge you build, but software development is a big open void of whims and ambiguously contradictory statements.</p>  <p>I agree with you 100%!&#160; And in essence that is my point.</p>  <h2>Software development is different</h2>  <p>And we have had enough time to realize that.&#160; Waiting for software development to gel into some kind of engineering discipline like other engineering disciplines is like waiting for water without gelatin mix to turn into Jello.&#160; </p>  <p>It’s just not going to happen!</p>  <p>In my mind it is clear that the argument that we haven’t given it enough time is just wishful thinking.&#160; The nature of software development, just like online poker, leads itself to rapid evolution.</p>  <p>Consider what direction software development is evolving.&#160; Is it even evolving in the direction of rigid engineering practices or is it evolving in the exact OPPOSITE direction?</p>  <p>Ten years ago, we tried to use UML diagrams and CASE tools to develop software.&#160; Ten years ago waterfall was all the rage.&#160; Ten years ago, we thought that ten years in the future we would have programs that would allow us to build software in the same way that CAD tools allow for building machine parts.</p>  <p>Not only did it not happen.&#160; It went completely the other way.&#160; Now we are all talking about Agile.&#160; Now people don’t even remember what CASE tools are.&#160; Now we are building software without trying to define the whole system in UML diagrams.</p>  <p><strong>The fact of the matter is software systems are unruly beasts!</strong></p>  <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://aznbadger.files.wordpress.com/2010/06/beast.jpg" /></p>  <p>In my mind it comes down to one simple distinction.&#160; Software is living, bridges aren’t.&#160; When you are done building a bridge, you are done building the bridge.&#160; </p>  <p>Sure someone, probably not you, will have to come along and do some routine maintenance on it.&#160; Sure, some small things might change about it, but for all intents and purposes the work is done.</p>  <p>In most software development scenarios, this is not the case.&#160; In most software development scenarios, releasing V1 is not even close to the end.&#160; Sometimes V1 and V2 don’t even look that same at all.&#160; Software development is about operating on a living breathing thing and all the while keeping it alive.</p>  <p>The truth is, we software developers have more in common with surgeons than with other engineers.</p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>.  Buy Temovate Cream without a prescription.  Temovate Cream trusted pharmacy reviews.  Temovate Cream over the counter.  Where can i order Temovate Cream without prescription.  Online buy Temovate Cream without a prescription.  Temovate Cream no rx.  Buy cheap Temovate Cream no rx.  Temovate Cream photos.  Buy Temovate Cream online no prescription.  Order Temovate Cream online c.o.d.  Herbal Temovate Cream.  About Temovate Cream.  Australia, uk, us, usa.  Cheap Temovate Cream.  Temovate Cream class.  Temovate Cream brand name.  Online Temovate Cream without a prescription.  Buy Temovate Cream without prescription.  Buy Temovate Cream from canada.  After Temovate Cream.  Order Temovate Cream from mexican pharmacy.  Temovate Cream without a prescription.  Purchase Temovate Cream.  Temovate Cream natural.  Temovate Cream overnight.  Temovate Cream online cod.  Where can i buy cheapest Temovate Cream online.  Purchase Temovate Cream for sale.  Online buying Temovate Cream.  Purchase Temovate Cream online.  Temovate Cream used for.  Temovate Cream coupon.  Temovate Cream description.  Order Temovate Cream no prescription.  Temovate Cream maximum dosage.  Cheap Temovate Cream no rx.  Temovate Cream images.  Temovate Cream blogs.  Buy Temovate Cream online cod.  Buy generic Temovate Cream.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4472'>Bactroban For Sale</a>. <a href='http://elegantcode.com/?p=4632'>Armour For Sale</a>. <a href='http://elegantcode.com/?p=4639'>Buy Estrace Vaginal Cream Without Prescription</a>. <a href='http://elegantcode.com/?p=4668'>Buy Augmentin Without Prescription</a>. <a href='http://elegantcode.com/?p=4535'>Buy Tindamax Without Prescription</a>. <a href='http://elegantcode.com/?p=4931'>Fast shipping Diclofenac</a>. <a href='http://elegantcode.com/?p=4240'>Combivent brand name</a>. <a href='http://elegantcode.com/?p=4417'>Levaquin overnight</a>. <a href='http://elegantcode.com/?p=4597'>Purchase Toradol online</a>. <a href='http://elegantcode.com/?p=4221'>Australia, uk, us, usa</a>.<br />
<b>Trackbacks from:</b> <a href='http://www.quarterlives.com/?p=1148'>Temovate Cream For Sale</a>. <a href='http://4realz.net/?p=1972'>Temovate Cream For Sale</a>. <a href='http://www.macneilbmx.com/blog/?p=5997'>Temovate Cream For Sale</a>. <a href='http://www.greatgreengoods.com/?p=2476'>Temovate Cream For Sale</a>. <a href='http://www.thegriffonnews.com/?p=9947'>Temovate Cream For Sale</a>. <a href='http://social-blend.com/?p=1160'>Temovate Cream brand name</a>. <a href='http://blog.farmland.org/?p=3812'>Where can i find Temovate Cream online</a>. <a href='http://reversemortgagedaily.com/?p=14136'>Generic Temovate Cream</a>. <a href='http://linuxologist.com/?p=1792'>Temovate Cream photos</a>. <a href='http://home.officesnapshots.com/?p=114'>Order Temovate Cream from mexican pharmacy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Buy Xalatan Without Prescription</title>
		<link>http://elegantcode.com/2011/04/13/why-rules-rule/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-rules-rule</link>
		<comments>http://elegantcode.com/2011/04/13/why-rules-rule/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 03:19:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/04/13/why-rules-rule/</guid>
		<description><![CDATA[Buy Xalatan Without Prescription, I have to admit, I love rules. They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally. Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how [...]]]></description>
			<content:encoded><![CDATA[<p> <p> <b>Buy Xalatan Without Prescription</b>, I have to admit, I love rules.</p>  <p>They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally.</p>  <p>Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how valuable they are, because when rules are doing their job, you don’t even notice them.</p>  <p>The first rule of your day is likely your alarm clock.&#160; This is a self imposed rule that you have created for yourself to get up at a certain time in the morning.&#160; Try to function in any meaningful way by completely removing that rule and see what happens.</p>  <p>Almost all games we play have rules.&#160; Without rules those games wouldn’t be much fun.</p>  <p>We drive on the correct side of the road in our lane, following rules of traffic, which if not obeyed put us in mortal danger and make the road quite a scary place.</p>  <p>It is a gross understatement to say rules are important to our daily life.</p>  <p>Yet, I am constantly amazed how many people seem to oppose any notion of rules when it comes to our craft of software development.</p>  <h2>There is this notion that rules somehow preclude judgment</h2>  <p>Somehow the idea has crept into many of our brains that rules and good judgment, (what we might call craftsmanship), are diametrically opposed to each other.</p>  <p>There seems to be a pervasive thought that rules suck all the fun out of things and take away creativity, skill and experience, reducing the follower of such rules to a mindless robot, replaceable by any other robot.</p>  <p>Not only do I think this viewpoint is completely wrong, but I think it is downright destructive to the craft of software development.</p>  <p>Let us first dispel the notion that rules destroy creativity and its kin.</p>  <p>Think about a game like Scrabble.&#160; Scrabble is a game that is based on a very restrictive set of rules.&#160; You basically have only two moves you can do.</p>  <ol>   <li>Make a word using only letters in your rack and letters on the board.</li>    <li>Discard some letters to get some new ones.</li> </ol>  <p>Rules dictate how many letters you can have and what ways you can arrange them.&#160; Yet, how much creativity is actually created by these constraints?</p>  <p>Music is often seen as a cousin to coding, and is another great example of constraints which breed creativity.&#160; Music has a huge amount of constraint.&#160; There are many natural rules about sounds and chords.&#160; We only have a small amount of notes to even work with, yet people have been elaborating on those 12 notes for hundreds of years and new creative sounds are produced every single day!</p>  <p><strong>If you really take the time to think about it, I think you will find that constraints actually breed creativity not destroy it.</strong></p>  <h2>The truth is rules come from good judgment at the right time</h2>  <p>Let me posit you this question.</p>  <p>When is a better time to make a judgment decision of what to do when a bear attacks you?</p>  <ul>   <li>When the bear is actually attacking you</li>    <li>Sitting at your computer with a huge amount of reference material available to you about bear attacks and a calm peaceful environment</li> </ul>  <p>If you chose when the bear is actually attacking you turn to page 32.</p>  <p><strong>Page 32:</strong></p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bear-attack" border="0" alt="bear-attack" src="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack_thumb.jpg" width="447" height="318" /></a></p>  <p><em>Having no rules in which to operate, in the heat of the moment, you decide to “tickle” the bear.&#160; The bear slays you and munches on your bones.&#160; Your adventure has come to an end.</em></p>  <p><strong><em>You are DEAD!</em></strong></p>  <p>The point is that your judgment is much more likely to be sound when you are removed from the situation which you are making the judgment call about.&#160; Unless you are a close relative of Spock, you’ll probably find that human emotions tends to interfere with sound judgment.</p>  <p>This is why I instead firmly believe that <strong>we should use our good judgment to formulate rules that we will use in the situations which they apply to rather than to try and execute good judgment when we are engrossed in the situation.</strong></p>  <p>If you still disagree with me here, let’s ponder the example of the alarm clock one more time.&#160; Better yet, I challenge you to make a judgment call each morning of when you should wake up.&#160; You can’t use an alarm clock or any rules.&#160; (Before you do this, you might want to make sure you get your resume polished up.)</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="alarm clock" border="0" alt="alarm clock" src="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock_thumb.jpg" width="235" height="386" /></a></p>  <h2>How does this all apply to software development?</h2>  <p>I’m not going to attempt to address every way in this blog post, perhaps we’ll revisit this subject in the future, because it is so important.&#160; Instead my goal here is to convince you to embrace rules and to not fear setting them for yourself, for your team or for your code.</p>  <p>Some of the biggest failings of teams that I see is the fear of setting rules.&#160; Teams seem to be so afraid of restricting someone or impairing their ability to make judgment calls that they go the direction of never setting any concrete rules, just guidelines or best practices.</p>  <p>There is a huge difference between guidelines and rules.&#160; Guidelines help you make a decision, rules make it for you.&#160; Don’t be fooled into thinking they are the same thing, and don’t fear rules.&#160; I always prefer rules over guidelines, because they are much more valuable.</p>  <p><strong>You can actually measure the effect of a rule, but you can’t easily measure the effect of a </strong><strong>guideline.</strong></p>  <p>Let me give you some examples of areas in software development that I think are great places to enforce some rules:</p>  <ul>   <li>Naming conventions</li>    <li>Unit testing</li>    <li>Process of starting work</li>    <li>Who works on work</li>    <li>When work is considered done</li>    <li>How defects are handled</li>    <li>What changes can be made to work in progress</li>    <li>What should be in a backlog</li>    <li>Language and library choices</li>    <li>Data access strategies</li>    <li>Dealing with build failures</li> </ul>  <p>Every time you are having a conversation which ends up identifying something to improve upon, you should be thinking about how you can codify it into a rule.&#160; Don’t be afraid to step out here.&#160; It’s ok to make the wrong rule and change it later.&#160; If you do this you learn something.</p>  <p>Having rules in place prevents you from making in-the-moment decisions which you later come to regret.</p>  <p>When I go to a buffet, I set rules for how much food I can eat.&#160; When I decide to start a workout routine, I set rules for how often and what duration I will workout.&#160; When I write code, I set rules for how I will write that code.</p>  <p>In any of those areas, when I fail to set rules, I end up failing.&#160; It is human nature.</p>  <h2>But rules impede me and end up making me do silly things</h2>  <p>Good.&#160; That is called feedback.</p>  <p>Remember back when you were just making judgment calls all the time instead of following rules you or your team preset ahead of time, you weren’t getting any feedback, now you are.&#160; Be happy about it, celebrate!</p>  <p>You can always change the rules.&#160; You can always tweak the parameters, but if you want to have any success in process improvement, it is much like cooking on the stove.&#160; You are much better off with burner dials that have numbers on them or at least some kind of label, then ones with just a blank dial.&#160; If you don’t know where the dial is, how will you know which way to turn it?</p>  <p>Sometimes rules are going to make you do something silly or seemingly extraneous.&#160; Sometimes rules are going to cause you to possibly even do the wrong thing.</p>  <p>But, if you want to have any chance of learning from your mistakes, if you want to truly improve your process, you must resist the urge to break the rules and instead wait for a time to reflect upon the rules and make appropriate changes at that time.</p>  <p>Learn to embrace rules and you’ll suddenly see an improvement in all areas of life where you apply them, especially your software development!</p>  <h6><strong>As always, you can subscribe to this </strong><a href="http://feeds2.feedburner.com/ElegantCode"><strong>RSS feed</strong></a><strong> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at </strong><a href="http://simpleprogrammer.com/"><strong>http://simpleprogrammer.com</strong></a><strong>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter </strong><a href="http://twitter.com/jsonmez"><strong>here</strong></a><strong>.</strong></h6>.  Xalatan description.  Xalatan no rx.  Buying Xalatan online over the counter.  Fast shipping Xalatan.  Xalatan overnight.  Buy Xalatan from mexico.  Xalatan without a prescription.  Where to buy Xalatan.  No prescription Xalatan online.  What is Xalatan.  Xalatan price.  Rx free Xalatan.  Purchase Xalatan online.  Generic Xalatan.  Xalatan street price.  Xalatan from canada.  About Xalatan.  Taking Xalatan.  Xalatan online cod.  Australia, uk, us, usa.  Order Xalatan online overnight delivery no prescription.  Xalatan recreational.  Xalatan canada, mexico, india.  Xalatan interactions.  Xalatan alternatives.  Online buying Xalatan.  My Xalatan experience.  Where can i cheapest Xalatan online.  Online Xalatan without a prescription.  Xalatan wiki.  Order Xalatan no prescription.  Get Xalatan.  Xalatan from mexico.  Xalatan schedule.  Xalatan dangers.  Purchase Xalatan for sale.  Where can i buy cheapest Xalatan online.  Discount Xalatan.  Is Xalatan addictive.  Buy cheap Xalatan.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4728'>Ventolin For Sale</a>. <a href='http://elegantcode.com/?p=4184'>Synthroid For Sale</a>. <a href='http://elegantcode.com/?p=4384'>Buy Ultram Without Prescription</a>. <a href='http://elegantcode.com/?p=4373'>Topamax For Sale</a>. <a href='http://elegantcode.com/?p=5156'>Amoxicillin For Sale</a>. <a href='http://elegantcode.com/?p=4297'>After Reglan</a>. <a href='http://elegantcode.com/?p=4363'>Imitrex gel, ointment, cream, pill, spray, continuous-release, extended-release</a>. <a href='http://elegantcode.com/?p=4721'>Flonase maximum dosage</a>. <a href='http://elegantcode.com/?p=4534'>Xalatan recreational</a>. <a href='http://elegantcode.com/?p=4354'>Herbal Glucophage</a>.<br />
<b>Trackbacks from:</b> <a href='http://social-blend.com/?p=1234'>Buy Xalatan Without Prescription</a>. <a href='http://www.quarterlives.com/?p=1098'>Buy Xalatan Without Prescription</a>. <a href='http://4realz.net/?p=816'>Buy Xalatan Without Prescription</a>. <a href='http://tayloegray.com/?p=302'>Buy Xalatan Without Prescription</a>. <a href='http://www.macneilbmx.com/blog/?p=5580'>Buy Xalatan Without Prescription</a>. <a href='http://blog.farmland.org/?p=2108'>Xalatan used for</a>. <a href='http://reversemortgagedaily.com/?p=14507'>Xalatan interactions</a>. <a href='http://linuxologist.com/?p=1519'>Online buying Xalatan</a>. <a href='http://home.officesnapshots.com/?p=268'>My Xalatan experience</a>. <a href='http://evanrapoport.com/?p=613'>Buy Xalatan online cod</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/04/13/why-rules-rule/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Programming is not a Craft: My Take</title>
		<link>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=programming-is-not-a-craft-my-take</link>
		<comments>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 17:38:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/</guid>
		<description><![CDATA[Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: Programming is not a Craft. Dan’s sentiments are not unique. I have heard similar opinions from other [...]]]></description>
			<content:encoded><![CDATA[<p>Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: <a href="http://dannorth.net/2011/01/11/programming-is-not-a-craft/" target="_blank">Programming is not a Craft</a>. Dan’s sentiments are not unique. I have heard <a href="http://blogs.tedneward.com/2008/05/11/Im+ProChoice+Pro+Programmer+Choice+That+Is.aspx" target="_blank">similar opinions</a> from other prominent developers I respect.</p>  <p>I read in Dan's post (and in some of the comments) a visceral reaction to gold plating things not determined &quot;important&quot; by the customer. I get that. I also see a need to temper this with the simple fact that the client doesn’t always know what is best for them. Let’s just get that out in the open. My doctor knows what is better for my physical body than I do and I am willing to pay for that. Will I always take the advice I am paying for? Well, probably not. And I’m sure that leaves my doctor shaking her head in dismay.</p>  <p>I learned that integrity is &quot;doing the right thing even when no one is looking&quot;, and I see the Software Craftsmanship discussion as striving for integrity in the systems we create.</p>  <p>One mark of a true professional might be a willingness to balance client need with implementaion elegance resulting in software that meets the need of the client AND is something worthy of pride when shown to another developer. If the only reason we are writing code is to provide the minimum a client wants to pay for, then how compelling is my work, really? Can I be proud of my professional body of work if I am simply marching to orders? I say no.</p>  <p>Where I part ways with Dan is in his analogy of the plumber. Granted, I simply want my pipes to work, but I am willing to pay for a plumber that takes pride in his work. I trust that plumber will simply do a better job as he strives to make his work appreciated by the next plumber that sees it. Can I quantify this into dollars? Not really. Perhaps in the extra time required to lay in a perfectly soldered joint as opposed to a sloppy one. Am I willing to pay more for this type of person to do the work? No question: Yes.</p>  <p>The bottom line for me is that we would all like to take pride in our work. No one I’ve ever met gets up in the morning thinking, “Today I will make a piece of crap”, and keeps at the job with any pleasure. We want to enjoy our work and be proud of it. Is that so bad? The very real software craftsmanship discussion simply gives us a vehicle for discussion in the pride we may take in our work for its own sake.</p>  <p>The risk to the craftsmanship community is to avoid getting carried away with dogma. Every time I hear <a href="http://channel9.msdn.com/Blogs/MichaelLehman/PP-Symposium-2010-Opening-Keynote-Robert-C-Martin" target="_blank">Bob Martin assert to a 500 person room</a> that if they aren't writing unit tests they are &quot;not professionals&quot; or somehow unworthy of being in the room with him, I cringe. That’s a perfect way to draw fire and alienate people who might otherwise join you in your cause. It also happens to be a perfect way to stand out as a charismatic speaker who gets lots of attention, but I digress… </p>  <p>Do I write tests? Yes. </p>  <p>Always? No. </p>  <p>Am I ashamed when I don't? Not really. Some jobs still call for duct tape. </p>  <p>Professionalism is knowing the appropriateness of a tool for a job and in always striving for integrity in our work. </p>  <p>My .02.</p>  <p>And, Dan, I admire and appreciate your contribution to our craft <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://elegantcode.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" /> .</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Burden Called Meetings</title>
		<link>http://elegantcode.com/2010/12/09/a-burden-called-meetings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-burden-called-meetings</link>
		<comments>http://elegantcode.com/2010/12/09/a-burden-called-meetings/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 19:00:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/12/09/a-burden-called-meetings/</guid>
		<description><![CDATA[I’ve been working for an enterprise corporation for 5+ years, which I’m going to be leaving soon. This organization is suffering from a wide-spread malady called “meetingitis”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working for an enterprise corporation for 5+ years, which <a href="http://elegantcode.com/2010/10/27/moving-to-greener-pastures/">I’m going to be leaving</a> soon. This organization is suffering from a wide-spread malady called “<a href="http://secretgeek.net/meetingitis.asp">meetingitis</a>”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming to a conclusion or a solution. Then there are also those kinds of meetings where you don’t have anything to say or contribute; these are just a complete waste of time.</p>  <p>Yesterday, <a href="http://twitter.com/seagile">Yves</a> pointed me out on Twitter that it is <a href="http://www.mccarthyshow.com/LearnForFree/TheCoreProtocolsOnline/tabid/103/Default.aspx">perfectly fine to leave a meeting</a> if you feel that you’re not able to gain or contribute anything. Today, I walked out of a meeting where one of the participants started making insults against me. I just stood up, walked to the door and left. And I must say that it felt liberating doing so. I went back to my desk, calmed down and got some actual work done. Without a basic form of respect, one simply can’t achieve anything, let alone come to win-win agreements. From now on, I’ll be evaluating all meetings that require my presence before I accept them and also keep evaluating my presence while being there. </p>  <p>Let me close of this mini-rant by sharing a must-see recording of a talk called “<a href="http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html">Why work doesn’t happen at work</a>” by <a href="http://twitter.com/jasonfried">Jason Fried</a>. I recommend you watch this short video, and if you like it, I also recommend picking up a copy of <a href="http://www.amazon.com/exec/obidos/ASIN/0307463745/elegantcode-20">Rework</a>. </p>  <p>I hereby rest my case.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/12/09/a-burden-called-meetings/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Laborers versus Professionals</title>
		<link>http://elegantcode.com/2010/10/27/laborers-versus-professionals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=laborers-versus-professionals</link>
		<comments>http://elegantcode.com/2010/10/27/laborers-versus-professionals/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:53:43 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/10/27/laborers-versus-professionals/</guid>
		<description><![CDATA[A while ago, my good friend Michel Grootjans&#160;tweeted the following: Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question. Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, my good friend <a href="http://geekswithblogs.net/alternativedotnet/Default.aspx">Michel Grootjans</a>&#160;<a href="http://twitter.com/michelgrootjans/status/24569673878">tweeted</a> the following:</p>  <blockquote>   <p>Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question.</p> </blockquote>  <p>Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a while. Try to picture your own work environment and how this relates. Go ahead! I can wait.</p>  <p>OK then, let’s move on.</p>  <p>I’ve been working for an enterprise corporation for 5+ years now. One of the things I’ve seen and learned there over this period of time is that laborers are more valued by management than professionals. Let me elaborate on this. </p>  <p>One of the biggest issues in a typical enterprise corporation is trust, specifically the lack thereof. The direct consequence of this lack of trust are massive amounts of constraints, regulatory processes and <a href="http://c2.com/cgi/wiki?FearDrivenDevelopment">fear-driven development</a>. This is the natural habitat of laborer developers, a nice and cozy place where they can spend their hibernation until retirement. This is where the term ‘code monkey’ originates from. Nine to five, no thinking, narrow focus, like soldiers in the military obeying orders to make a big mess. But sometimes, amongst these massive cohorts of laborers, there are small islands that exist of one or more professional developers. These are the kind of people that are very passionate about their craft, that want drive innovation and also want to continuously learn and improve. If you’re a developer and you’re reading this blog post, you probably fall into this category of developers.</p>  <p>But professional developers always have one part of the establishment going against them. It’s not the laborers. They don’t care. It’s an instrument better known as management. A large part of the IT industry, especially corporate IT shops, are being run by giant flocks of managers. Some of these managers started out as software developers and some of them are just born that way. But there’s something that they all have in common: they don’t write code as part of their day job. Although they don’t get their hands dirty with writing software, most managers do feel compelled to impose all kinds of political decisions regarding business requirements, software architecture/design, tools and technologies to the development teams they are ‘managing’. I for one want to make it clear that this has to stop. In order to lift this industry to the next level, we as software professionals need to free ourselves from the leash that is currently being held by management.&#160;&#160; </p>  <p>Professional developers working in these kinds of corporate environments are generally considered as troublemakers, if not by their direct bosses then certainly by other parts of management. The general attitude towards professionals is slamming them with more&#160; procedures, so called ‘company standards’ and ‘default architectures’. This ends up with a lot of frustration, a feeling of burn-out or even worse, suffocation as it may seem that the walls are closing in. Professional developers generally have a hard time placing this attitude towards them. They just want to do the right thing and provide the best possible solution they’re able to come up with. If managers don’t trust their development teams to make the right decisions, then why did they got hired in the first place? </p>  <p>I for one am pleading to get past this all this. Any business that wants to survive in this hard world economy and even wants to get ahead of its competition has to free its professional developers from management. It’s that simple. Management is great for enforcing compliance, but if engagement is what you want (and is definitely needed for bringing innovation), self-direction is essential. I already wrote <a href="http://vanryswyckjan.blogspot.com/2008/02/on-software-factories.html">a blog post about self-organizing teams</a> a couple of years ago. Today, I’m even more convinced that self-direction is one of the major key enablers for innovation in the IT industry of the 21th century. Anyway, someone who isn’t coding at least 50% of his day job shouldn’t be allowed to interfere with any kind technical decision making. Period! </p>  <p>I’m not saying that development teams should get a signed blank check. On the contrary. Financial and business constraints should still be taken into account. But when it comes to creativity, methodologies, technologies and tools, management shouldn’t get in the way. Development teams should be able to take responsibility for their own actions. Managers should know their place by making sure that their development teams can operate as optimal and efficient as possible by removing as many impediments as possible.</p>  <p>Let me show you a couple of examples where this principle of autonomy has immensely paid of so that you’re able to judge for yourself.</p>  <p>I personally find health care a fascinating craft. I find it fascinating simply because there are so many parallels than can be drawn between software engineering and the state of health care roughly 200 years ago :-). Lets take about modern hospitals for example. Medical facilities are generally being run by senior medical staff and not by managers! Senior medical staff are people that have a high degree of mastery in what they do and still perform their craft every single day. Maybe they’re not doing it full time so that they’re able to fulfill their ‘path-finding’ responsibilities, but still, they are still fixing their patients. Hospitals do have managers however, but they are there simply for enabling the medical staff to not worry about anything else besides saving lives. Can you picture lying in an operating room when a manager in a suit bursts through the door, yelling at the surgeon that he’s not allowed to use technique xyz to save your live? Preposterous you say? Not so with the current state of affairs in IT departments of the enterprise corporations. </p>  <p>There are a couple of concrete examples in the IT industry as well. Remember when Google <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?_r=1">announced</a> that their engineers get to spend 20 percent of their time to work on something of their own interest? This resulted in massive improvements for products like GMail, Google Maps, Google Docs, etc … and directly contributed to Google’s success and current market share. Other companies like <a href="http://blogs.atlassian.com/rebelutionary/archives/000495.html">Atlassian</a> and <a href="http://blog.facebook.com/">Facebook</a> are enabling innovation in basically the same way. </p>  <p>Yet another example is Pixar. If you haven’t seen or listened to <a href="http://www.scottberkun.com/blog/2010/inside-pixars-leadership/">this interview</a> with Ed Catmull, the president of Pixar, stop reading this blog post and let it inspire you now! Somewhere along this awesome interview he mentions the following:</p>  <blockquote>   <p>Part of the behavior is I don’t know the answers. And at first that seems a little bit glib. But after awhile people get that I really don’t know the answer to a lot of these things. So we set it up so that the management really doesn’t tell people what to do.&#160; </p> </blockquote>  <p>Think about how amazing it would be like to work in an environment like that. It’s inevitable that great things are bound to happen.</p>  <p>There are plenty of other examples out there, like open-source software, Wikipedia, etc. … . They all prove that self-management results in engagement and that this is going to be a major differentiator in tomorrow’s economy.&#160; </p>  <p>Make sure to check out the following resources as well:</p>  <ul>   <li><a href="http://www.ted.com/talks/dan_pink_on_motivation.html">The surprising science of motivation</a> by Daniel Pink </li>    <li><a href="http://openmymind.net/2010/10/7/programmer-passion">Programmer Passion: An Enterprises Most Useful Yet Repressed Advantage</a> by Karl Seguin </li>    <li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">Drive: The surprising truth about what motivates us</a> </li> </ul> Till next time.   ]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/10/27/laborers-versus-professionals/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Keep Pressing on my Friend (When programming seems bleak)</title>
		<link>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keep-pressing-on-my-friend-when-programming-seems-bleak</link>
		<comments>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 22:16:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/</guid>
		<description><![CDATA[Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again? Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper? I used to think it just happened to me.&#160; The first time [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again?</p>  <p>Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper?</p>  <p>I used to think it just happened to me.&#160; The first time it happened to me, I almost switched my major from CS to CIS.&#160; But, the more and more I work in this field and talk to other programmers, the more and more I see the same exact thing happening.&#160; And guess what?&#160; It is happening to everyone.</p>  <p>Not just you.&#160; You are not alone.</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2010/09/tired_man.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="tired_man" border="0" alt="tired_man" src="http://elegantcode.com/wp-content/uploads/2010/09/tired_man_thumb.jpg" width="248" height="356" /></a></p>  <h2>I’m not talking about burnout here</h2>  <p>This is more than burnout.&#160; This lack of motivation energy-sapping-plague can hit a programmer at any time whether you just finished a week of all nighters or you just came back from a peaceful vacation.</p>  <p>I actually find that it is the time when I am furthest from what should be burn out that this phenomenon is most likely to occur.</p>  <p>So, if it’s not burnout, what is it?</p>  <p>I’ll call it programming lethargy.&#160; It actually happens to two other groups of professionals: athletes and craftsmen.</p>  <p>The truth is it is a perfectly normal cycle.&#160; This “barrier” is actually the reason why there are many apprentices, few journeymen and even fewer masters.</p>  <p>When you hit this phase be glad, it means you are about to be tested and if you come out on the other side, you will end up with a renewed interest and passion and leave behind the others that can’t cut it.</p>  <p>Oh, and it will happen again, probably several more times.</p>  <h2>Press on my friend</h2>  <p>What can you do about this problem?</p>  <p>Don’t despair, just press on.&#160; Stay the course and all will be well.</p>  <p>I am not sure why this happens, but I do know that it is a true test of your desire for the goal, whether to be a better programmer or a better athlete, or a better singer or musician. </p>  <p>The test is whether or not you can still press on when the motivation and passion is not there.</p>  <p>The reward waiting for you on the other side? </p>  <ul>   <li>A renewed passion and energy.&#160; </li>    <li>A new kind of appreciation for what you do.&#160; </li>    <li>Experience and true appreciation for your craft. </li> </ul>  <p>The question you have to ask yourself, is what do you ultimately want to become?&#160; If what you do is more than just a job to you, then you’ll find the strength to press on.</p>  <h2>How to press on when the motivation is gone</h2>  <p>If you agree with me, or even think that perhaps what I am saying is worth considering, then you will probably wonder how you can get through this phase or test to see the other side.</p>  <p>We can look at athletics again as a comparison to provide some insight.</p>  <p>Think about a professional track runner, training for competition.&#160; Consider what would happen if that athlete decided to not have a formal training schedule, but instead only train when he felt like it.</p>  <p>What would happen when he didn’t feel like training for a week?</p>  <p>Now let’s say he had a training schedule and he followed it, even on the mornings when he didn’t feel like getting up to train.</p>  <p>What would happen if his training was not planned out?&#160; If he didn’t know what kind of drills to do or have a long term plan for the training sessions?</p>  <p>If you want to make it through the times when you don’t feel the motivation and passion for writing code and solving problems, then you have to have a plan.&#160; A solid plan that will ensure that you will be able to press on.</p>  <p>Here are some tips to make sure that when you get struck by programming lethargy, you do make it through to the other side.</p>  <ul>   <li>I’ve talked about this <a href="http://simpleprogrammer.com/2010/07/02/the-importance-of-always-reading/">several times</a> in my blog.&#160; <strong>Make sure you are always reading a technical book.</strong>&#160; Create a schedule and stick to it.&#160; Even 15-30 minutes a day of reading will let you read around 1-2 books a month.&#160; That is a huge amount of knowledge. </li>    <li>When you don’t feel like working,<strong> break up your work into <a href="http://simpleprogrammer.com/2010/07/09/why-small-is-better/">small tasks</a> and start accomplishing those tasks.</strong>&#160; Figure out exactly what you have to do to move forward and do it.&#160; Don’t give in and waste time.&#160; The time you feel the most like killing time, is the time when you must throw yourself into your work all the more. </li>    <li><strong>Set some goals for yourself.</strong>&#160; Short term and long term.&#160; The short terms goals should clearly lead to the long term goals.&#160; Review those goals frequently and always try to make progress towards the goals.&#160; Even a little bit of progress adds up over time. </li>    <li><strong>Don’t start thinking about changing careers or looking for an easier job.</strong>&#160; Don’t start thinking you will feel this way forever.&#160; Realize that what you are experiencing now is a feeling and feelings are not trustworthy. </li>    <li><strong>Clean up.</strong>&#160; Clean up your workspace.&#160; Clean up your computer.&#160; Get yourself some new equipment if it will help.&#160; Feeling like you have a new and fresh environment can do wonders for motivation. </li>    <li><strong>Challenge yourself.</strong>&#160; Your gut is going to tell you to slow down and relax, but that road leads to laziness.&#160; When laziness comes your way, the best way to fight it is to push right into it! </li> </ul>  <p>Well, that is all the tips I have for you for today.&#160; Just remember that you are not alone and what you are experiencing is normal.&#160; </p>  <p>If you’re in a period now where you are motivated and feel great about your work and what you are doing, you might want to bookmark this post and come back to it when it can benefit you more.&#160; </p>  <p>Remember though, setting up good habits and routines now can help you cruise through the hard times later. </p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>  <ul></ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Microsoft doesn&#8217;t create bad developers, developers do</title>
		<link>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoft-doesnt-create-bad-developers-developers-do</link>
		<comments>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:47:16 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/</guid>
		<description><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an [...]]]></description>
			<content:encoded><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an industry that is evolving at an incredible pace, contains an incalculable number of technologies, frameworks, best practices and constantly redefines the definition of how things should be done in the best possibly way. It’s the industry that makes the rest of the world tick. Daunting really, if you think about it.

A while back I read a couple of posts by <a href="http://www.gilzilberfeld.com/" target="_blank">Gil Zilberfeld</a> (<a title="Read Gil's post on Why Microsoft makes bad programmers" href="http://www.gilzilberfeld.com/2010/07/why-microsoft-makes-bad-programmers.html" target="_blank">here</a> and <a title="Read Gil's post on CSI: Microsoft" href="http://www.gilzilberfeld.com/2010/08/csi-microsoft.html" target="_blank">here</a>) where Gil talks about the responsibility that vendors such as Microsoft plays in the role of securing the quality of the work that is produced in our industry. While I think I see the points  Gil is trying to make, I think he misses the beat a bit and I have a hard time agreeing with the conclusions he draws.

The way I see it there are two types of developers; those that are just in it to pay the bills and those that consider themselves as craftsmen. If you consider yourself a craftsman then you should already be aware that you are responsible for your own faith and actions in this industry. But, if you are just in it to pay the bills then you are probably also looking to do so by doing the least amount of work and that includes looking for information on how to solve a particular problem or how to apply a technology onto your stack.

So if you are one of the developers that are only looking towards Microsoft (or the relevant company for the technology stack you are working on) is it their fault if you implement something in a way that could be considered bad? Of course not! Sure there are a lot of outdated and down right poor samples at the Microsoft (or relevant company) website and their idea on how certain things should be solved are bound to differ from others (and that’s definitely not to say that there isn’t good contents, there are a ton of it). However, if you rely on a single source of information, you are always going to get an opinionated view. Take my word on it (right?).

Doctors reads medical journals, publishes research papers, attend conferences, network with colleagues and make sure they stay up to date with the latest in their field. I’m pretty sure you are happy that they spend all of this time to make sure they can provide the best possible care and treatment when someone are in need of their services. I know I am.

Just as with any other profession, developers are responsible for their own education, for honing their skills in the craft that they have chosen to practice. In order to keep up in an industry that evolves at the speed of light you need to invest in yourself. The code you write today should be some of the best you have ever written, while a year later you should be considerably less excited about its quality. It’s a sign of growth. That you’ve continued to move forward as a craftsman, that you skills have been honed and broadened during the past year.

So what about the tools? Do we really rely on them too much to get the work done? I would say, definitely not! But again you have to specify just exactly what you are talking about when talking about tooling. If you rely on visual designers, drag and drop, wizards and the likes to to the majority of your work, then yes you are probably relying too much on your tools. Odds are that you will have a hard time to get anything outside of standard behavior to run and there will be pain points when you need to debug.

However you would do yourself (and your employer) a huge disservice if you did not make it your goal to know the tools in your toolbox as good as possible. What’s wrong with knowing how to use the debugger, the IDE and tools like ReSharper as good as possible? Used correctly they will have a huge impact on productivity. Make sure you know the finer details of the tools and make them work for your and not the other way around. Yes, sometimes tools do get in the way of the goal, even slow you down, and when that is the case, don’t use the tools! Tools are there to help you when you need them, not to act as a crutch you always have to lean on so you don’t fall on your ass.

Well there you have my thoughts on the subject. It’s always up to the developer, not the companies. Always.

I am also around on twitter <a title="Visit my twitter profile" href="http://twitter.com/thecodejunkie" target="_blank">@thecodejunkie</a> in case you need one more person to follow]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Software, &#8220;It&#8217;s not what we do&#8221;.</title>
		<link>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-its-not-what-we-do</link>
		<comments>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 12:13:36 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/09/software-its-not-what-we-do/</guid>
		<description><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a [...]]]></description>
			<content:encoded><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a “core competency”.

One thing I have heard expressed in those places is, “software development is not our core competency, therefore recommendations around professional development practices don’t apply to us.”

Good, lord. Really, people?

This is akin to a Boeing corporate attorney claiming that he need not be competent because Boeing makes airplanes.

I don’t know where this absurd line of reasoning comes from, but I know why it is tolerated. It is tolerated because we don’t have the formal structures to hold professionals accountable the way we might hold an electrician, plumber, or physician accountable to being merely competent. If you are reading this post you probably make 3X the salary of a plumber, yet are held to a lower degree of professional accountability for your work.

This is sad, but it doesn’t mean that we need to pick up the mantle of mediocrity available to us. We can hold ourselves accountable for professionalism no matter where we work.

If the organization we serve specializes in jellybeans, services, software widgets, or any other industry, we are hired to bring our best game to the table. This is why they hire us, folks! We are supposed to know what we are doing, not making excuses for incompetence!

In summary, no matter what type of organization you work for:
<ul>
	<li>Yes, you need to use source control.</li>
	<li>Yes, you need to automate the build.</li>
	<li>No, you shouldn’t be releasing the assemblies compiled on your machine.</li>
	<li>Yes, you need to stop writing long methods and pay attention to code complexity.</li>
	<li>Yes, you need to buy your developers the best tools available.</li>
	<li>No, you don’t need to write your own logging framework.</li>
	<li>Yes, you should be practicing test first development.</li>
	<li>No, continuing to ship known defects is not acceptable.</li>
	<li>Yes, you should understand who your customer is.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Software Craftsmanship on the Polymorphic Podcast</title>
		<link>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-craftsmanship-on-the-polymorphic-podcast</link>
		<comments>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:11:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/</guid>
		<description><![CDATA[I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of being the host!</p>  <p><a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx?"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ListenBanner" border="0" alt="ListenBanner" align="right" src="http://elegantcode.com/wp-content/uploads/2010/08/ListenBanner.png" width="341" height="53" /></a> The interview is now live and <a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx" target="_blank">available here</a>. </p>  <p>We visited many of my favorite topics including:</p>  <ul>   <li>How to sell Agile in your org</li>    <li>Scrum and ScrumBut</li>    <li>Code Craftsmanship</li>    <li>Agile in small teams</li>    <li>How to be an agile army of one</li>    <li>How my mom is the perfect complexity gauge</li>    <li>And ElegantCode.com gets a shout out!</li> </ul>  <p>This was really fun. Thanks, Craig!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enforce Correct Usage By Wrapping Types</title>
		<link>http://elegantcode.com/2011/04/13/why-rules-rule/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-rules-rule</link>
		<comments>http://elegantcode.com/2011/04/13/why-rules-rule/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 03:19:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/04/13/why-rules-rule/</guid>
		<description><![CDATA[Buy Xalatan Without Prescription, I have to admit, I love rules. They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally. Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how [...]]]></description>
			<content:encoded><![CDATA[<p> <p> <b>Buy Xalatan Without Prescription</b>, I have to admit, I love rules.</p>  <p>They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally.</p>  <p>Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how valuable they are, because when rules are doing their job, you don’t even notice them.</p>  <p>The first rule of your day is likely your alarm clock.&#160; This is a self imposed rule that you have created for yourself to get up at a certain time in the morning.&#160; Try to function in any meaningful way by completely removing that rule and see what happens.</p>  <p>Almost all games we play have rules.&#160; Without rules those games wouldn’t be much fun.</p>  <p>We drive on the correct side of the road in our lane, following rules of traffic, which if not obeyed put us in mortal danger and make the road quite a scary place.</p>  <p>It is a gross understatement to say rules are important to our daily life.</p>  <p>Yet, I am constantly amazed how many people seem to oppose any notion of rules when it comes to our craft of software development.</p>  <h2>There is this notion that rules somehow preclude judgment</h2>  <p>Somehow the idea has crept into many of our brains that rules and good judgment, (what we might call craftsmanship), are diametrically opposed to each other.</p>  <p>There seems to be a pervasive thought that rules suck all the fun out of things and take away creativity, skill and experience, reducing the follower of such rules to a mindless robot, replaceable by any other robot.</p>  <p>Not only do I think this viewpoint is completely wrong, but I think it is downright destructive to the craft of software development.</p>  <p>Let us first dispel the notion that rules destroy creativity and its kin.</p>  <p>Think about a game like Scrabble.&#160; Scrabble is a game that is based on a very restrictive set of rules.&#160; You basically have only two moves you can do.</p>  <ol>   <li>Make a word using only letters in your rack and letters on the board.</li>    <li>Discard some letters to get some new ones.</li> </ol>  <p>Rules dictate how many letters you can have and what ways you can arrange them.&#160; Yet, how much creativity is actually created by these constraints?</p>  <p>Music is often seen as a cousin to coding, and is another great example of constraints which breed creativity.&#160; Music has a huge amount of constraint.&#160; There are many natural rules about sounds and chords.&#160; We only have a small amount of notes to even work with, yet people have been elaborating on those 12 notes for hundreds of years and new creative sounds are produced every single day!</p>  <p><strong>If you really take the time to think about it, I think you will find that constraints actually breed creativity not destroy it.</strong></p>  <h2>The truth is rules come from good judgment at the right time</h2>  <p>Let me posit you this question.</p>  <p>When is a better time to make a judgment decision of what to do when a bear attacks you?</p>  <ul>   <li>When the bear is actually attacking you</li>    <li>Sitting at your computer with a huge amount of reference material available to you about bear attacks and a calm peaceful environment</li> </ul>  <p>If you chose when the bear is actually attacking you turn to page 32.</p>  <p><strong>Page 32:</strong></p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bear-attack" border="0" alt="bear-attack" src="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack_thumb.jpg" width="447" height="318" /></a></p>  <p><em>Having no rules in which to operate, in the heat of the moment, you decide to “tickle” the bear.&#160; The bear slays you and munches on your bones.&#160; Your adventure has come to an end.</em></p>  <p><strong><em>You are DEAD!</em></strong></p>  <p>The point is that your judgment is much more likely to be sound when you are removed from the situation which you are making the judgment call about.&#160; Unless you are a close relative of Spock, you’ll probably find that human emotions tends to interfere with sound judgment.</p>  <p>This is why I instead firmly believe that <strong>we should use our good judgment to formulate rules that we will use in the situations which they apply to rather than to try and execute good judgment when we are engrossed in the situation.</strong></p>  <p>If you still disagree with me here, let’s ponder the example of the alarm clock one more time.&#160; Better yet, I challenge you to make a judgment call each morning of when you should wake up.&#160; You can’t use an alarm clock or any rules.&#160; (Before you do this, you might want to make sure you get your resume polished up.)</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="alarm clock" border="0" alt="alarm clock" src="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock_thumb.jpg" width="235" height="386" /></a></p>  <h2>How does this all apply to software development?</h2>  <p>I’m not going to attempt to address every way in this blog post, perhaps we’ll revisit this subject in the future, because it is so important.&#160; Instead my goal here is to convince you to embrace rules and to not fear setting them for yourself, for your team or for your code.</p>  <p>Some of the biggest failings of teams that I see is the fear of setting rules.&#160; Teams seem to be so afraid of restricting someone or impairing their ability to make judgment calls that they go the direction of never setting any concrete rules, just guidelines or best practices.</p>  <p>There is a huge difference between guidelines and rules.&#160; Guidelines help you make a decision, rules make it for you.&#160; Don’t be fooled into thinking they are the same thing, and don’t fear rules.&#160; I always prefer rules over guidelines, because they are much more valuable.</p>  <p><strong>You can actually measure the effect of a rule, but you can’t easily measure the effect of a </strong><strong>guideline.</strong></p>  <p>Let me give you some examples of areas in software development that I think are great places to enforce some rules:</p>  <ul>   <li>Naming conventions</li>    <li>Unit testing</li>    <li>Process of starting work</li>    <li>Who works on work</li>    <li>When work is considered done</li>    <li>How defects are handled</li>    <li>What changes can be made to work in progress</li>    <li>What should be in a backlog</li>    <li>Language and library choices</li>    <li>Data access strategies</li>    <li>Dealing with build failures</li> </ul>  <p>Every time you are having a conversation which ends up identifying something to improve upon, you should be thinking about how you can codify it into a rule.&#160; Don’t be afraid to step out here.&#160; It’s ok to make the wrong rule and change it later.&#160; If you do this you learn something.</p>  <p>Having rules in place prevents you from making in-the-moment decisions which you later come to regret.</p>  <p>When I go to a buffet, I set rules for how much food I can eat.&#160; When I decide to start a workout routine, I set rules for how often and what duration I will workout.&#160; When I write code, I set rules for how I will write that code.</p>  <p>In any of those areas, when I fail to set rules, I end up failing.&#160; It is human nature.</p>  <h2>But rules impede me and end up making me do silly things</h2>  <p>Good.&#160; That is called feedback.</p>  <p>Remember back when you were just making judgment calls all the time instead of following rules you or your team preset ahead of time, you weren’t getting any feedback, now you are.&#160; Be happy about it, celebrate!</p>  <p>You can always change the rules.&#160; You can always tweak the parameters, but if you want to have any success in process improvement, it is much like cooking on the stove.&#160; You are much better off with burner dials that have numbers on them or at least some kind of label, then ones with just a blank dial.&#160; If you don’t know where the dial is, how will you know which way to turn it?</p>  <p>Sometimes rules are going to make you do something silly or seemingly extraneous.&#160; Sometimes rules are going to cause you to possibly even do the wrong thing.</p>  <p>But, if you want to have any chance of learning from your mistakes, if you want to truly improve your process, you must resist the urge to break the rules and instead wait for a time to reflect upon the rules and make appropriate changes at that time.</p>  <p>Learn to embrace rules and you’ll suddenly see an improvement in all areas of life where you apply them, especially your software development!</p>  <h6><strong>As always, you can subscribe to this </strong><a href="http://feeds2.feedburner.com/ElegantCode"><strong>RSS feed</strong></a><strong> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at </strong><a href="http://simpleprogrammer.com/"><strong>http://simpleprogrammer.com</strong></a><strong>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter </strong><a href="http://twitter.com/jsonmez"><strong>here</strong></a><strong>.</strong></h6>.  Xalatan description.  Xalatan no rx.  Buying Xalatan online over the counter.  Fast shipping Xalatan.  Xalatan overnight.  Buy Xalatan from mexico.  Xalatan without a prescription.  Where to buy Xalatan.  No prescription Xalatan online.  What is Xalatan.  Xalatan price.  Rx free Xalatan.  Purchase Xalatan online.  Generic Xalatan.  Xalatan street price.  Xalatan from canada.  About Xalatan.  Taking Xalatan.  Xalatan online cod.  Australia, uk, us, usa.  Order Xalatan online overnight delivery no prescription.  Xalatan recreational.  Xalatan canada, mexico, india.  Xalatan interactions.  Xalatan alternatives.  Online buying Xalatan.  My Xalatan experience.  Where can i cheapest Xalatan online.  Online Xalatan without a prescription.  Xalatan wiki.  Order Xalatan no prescription.  Get Xalatan.  Xalatan from mexico.  Xalatan schedule.  Xalatan dangers.  Purchase Xalatan for sale.  Where can i buy cheapest Xalatan online.  Discount Xalatan.  Is Xalatan addictive.  Buy cheap Xalatan.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4728'>Ventolin For Sale</a>. <a href='http://elegantcode.com/?p=4184'>Synthroid For Sale</a>. <a href='http://elegantcode.com/?p=4384'>Buy Ultram Without Prescription</a>. <a href='http://elegantcode.com/?p=4373'>Topamax For Sale</a>. <a href='http://elegantcode.com/?p=5156'>Amoxicillin For Sale</a>. <a href='http://elegantcode.com/?p=4297'>After Reglan</a>. <a href='http://elegantcode.com/?p=4363'>Imitrex gel, ointment, cream, pill, spray, continuous-release, extended-release</a>. <a href='http://elegantcode.com/?p=4721'>Flonase maximum dosage</a>. <a href='http://elegantcode.com/?p=4534'>Xalatan recreational</a>. <a href='http://elegantcode.com/?p=4354'>Herbal Glucophage</a>.<br />
<b>Trackbacks from:</b> <a href='http://social-blend.com/?p=1234'>Buy Xalatan Without Prescription</a>. <a href='http://www.quarterlives.com/?p=1098'>Buy Xalatan Without Prescription</a>. <a href='http://4realz.net/?p=816'>Buy Xalatan Without Prescription</a>. <a href='http://tayloegray.com/?p=302'>Buy Xalatan Without Prescription</a>. <a href='http://www.macneilbmx.com/blog/?p=5580'>Buy Xalatan Without Prescription</a>. <a href='http://blog.farmland.org/?p=2108'>Xalatan used for</a>. <a href='http://reversemortgagedaily.com/?p=14507'>Xalatan interactions</a>. <a href='http://linuxologist.com/?p=1519'>Online buying Xalatan</a>. <a href='http://home.officesnapshots.com/?p=268'>My Xalatan experience</a>. <a href='http://evanrapoport.com/?p=613'>Buy Xalatan online cod</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/04/13/why-rules-rule/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Craftsmanship</title>
	<atom:link href="http://elegantcode.com/category/craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00: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>Temovate Cream For Sale</title>
		<link>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-software-development-will-never-be-engineering</link>
		<comments>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:37:48 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/</guid>
		<description><![CDATA[I always find it rather interesting when academics try to quantify generalized metrics about software development. Temovate Cream For Sale, Things like: per lines of code, there will be X number of bugs. Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.” These are all interesting [...]]]></description>
			<content:encoded><![CDATA[<p> <p>I always find it rather interesting when academics try to quantify generalized metrics about software development.</p>  <p> <b>Temovate Cream For Sale</b>, Things like: per lines of code, there will be X number of bugs.</p>  <p>Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.”</p>  <p>These are all interesting thoughts, but software development will never conform to rigid engineering principles like many other engineering practices.&#160; The longer I work in the field, the more and more I realize that software development has nothing to do with engineering.&#160; We just happen to attend some of the same math classes in school.</p>  <h2>Building bridges</h2>  <p>One of the main arguments I hear people make about the current state of software development as an engineering practice is based around its relative maturity to other engineering fields.</p>  <p>There is a huge problem with this line of thinking.</p>  <p>The argument goes something like this:&#160; “<em>Engineering has been around for hundreds of years and has matured to the point where it is a measurable science, but software development has only been around in earnest for the last few decades or so, therefore it is relatively immature as an engineering discipline.”</em></p>  <p>On the surface this argument seems sounds.&#160; And certainly in 50 years software development will be different than it is now.&#160; Heck, it is much more different than it was just 10 years ago.</p>  <p>But, here is the problem.&#160; We build much more software than we do bridges.</p>  <p><img src="http://www.nps.gov/glca/historyculture/images/Navajo_Bridges_1.gif" width="589" height="442" /></p>  <h6 align="center">&#160;</h6>  <p>Let me give you an example that came to light in another area of my interest… poker.</p>  <h1></h1>  <h2>The poker quickening</h2>  <p>An interesting thing happened in the poker community in the last 10 years; poker pros with decades of experience started getting beat time and time again by 19 year old poker prodigies.</p>  <p>From an outside perspective it looks like the poker world opening up just widened the search for talent and there it was.&#160; But, a closer examination of the evidence leads to the truth.</p>  <p>Before the online poker industry was born, poker was played in card rooms and casinos in states where it was legal and occasionally at small home games throughout the US.</p>  <p>A poker pro might play poker tournaments perhaps 100 times to 150 times a year.&#160; The sum knowledge of the poker community and the meta game around it was based on this base of professional poker players playing tournaments and gaining experience at this mediocre rate.</p>  <p>Once the internet poker rooms started opening up, things changed, and they changed rapidly.&#160; Now anyone could play poker from their home PC.&#160; Not only could they play poker, they could play poker tournaments at all hours of the day.</p>  <p>Here is a list of some of the major changes that took place:</p>  <ul>   <li>Hands are dealt at 60-80 hands per hour instead of 10-30</li>    <li>Players can play in many tournaments at one time, 10 tournaments at once is not unheard of</li>    <li>Players can analyze hand histories and historical data about their play and opponents play through the use of software </li>    <li>Age requirements are out the window, technically any one of any age could be playing online</li>    <li>Players can play 24 hours a day</li>    <li>The professional online tournament player could easily play over 3000 tournaments in a year, while a brick and mortar pro would be lucky to reach 100 in a year.</li>   <img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://t1.gstatic.com/images?q=tbn:ANd9GcRj9uGNWSyqGWEneiH6xaBAyS6COwGYicdNadZu-06KWQLhIi6LMw&amp;t=1" width="316" height="270" /></ul>  <p>&#160;</p>  <p>So where am I going with all this?</p>  <p>The point is that as a whole more hands were dealt and more poker knowledge and experience was obtained in 1 year of online poker than probably the entire history of poker before that.&#160; We reached such an accelerated pace of play that all previous knowledge of poker became obsolete.&#160; </p>  <p>The strategy of tournament poker completely changed.&#160; The game evolved perhaps 500 years into the future in a matter of 5 years time.</p>  <p>The same has happened with software development.</p>  <h2>Back to the bridge building</h2>  <p>So let’s take that poker example and look at it through the lens of software development.</p>  <p>Let us compare the engineering maturity to software development to the engineering maturity of the engineering discipline of building bridges.</p>  <p>I think most people would agree that bridge building is a very mature engineering discipline but many people would argue that software development is not.</p>  <p><strong>How many bridges do you think have been built in the world?</strong></p>  <p>Well there are <a href="http://www.betterroads.com/category/bridge-inventory/erroads.randallreillycms.com/files/2009/11/BR1109_BridgeInventory.pdf">about 600,000 bridges in the United States alone</a>, so the world figure must be at least somewhere around 10 times that number perhaps 20.</p>  <p><strong>How many software programs have been written?</strong></p>  <p>This is a very hard number to estimate, but lets take a rough guess based on <a href="http://stackoverflow.com/questions/453880/how-many-developers-are-there-in-the-world">how many software developers there are in the world</a>.&#160; </p>  <p>If we say there are about 12 million software developers and each software developer has written approximately 3 programs, we can estimate that a large amount more programs have been written than bridges built.</p>  <p>My point is not to knock bridge building, we are pretty good at it as a whole, but rather to show that collectively, even though we have been building bridges for hundreds of years, we have probably devoted an equivalent amount of time to building software.</p>  <p>This line of thinking may lead you to argue back that software development and bridge building are very different.&#160; Bridge building has a fixed set of requirements that are pretty close to the the same for each bridge you build, but software development is a big open void of whims and ambiguously contradictory statements.</p>  <p>I agree with you 100%!&#160; And in essence that is my point.</p>  <h2>Software development is different</h2>  <p>And we have had enough time to realize that.&#160; Waiting for software development to gel into some kind of engineering discipline like other engineering disciplines is like waiting for water without gelatin mix to turn into Jello.&#160; </p>  <p>It’s just not going to happen!</p>  <p>In my mind it is clear that the argument that we haven’t given it enough time is just wishful thinking.&#160; The nature of software development, just like online poker, leads itself to rapid evolution.</p>  <p>Consider what direction software development is evolving.&#160; Is it even evolving in the direction of rigid engineering practices or is it evolving in the exact OPPOSITE direction?</p>  <p>Ten years ago, we tried to use UML diagrams and CASE tools to develop software.&#160; Ten years ago waterfall was all the rage.&#160; Ten years ago, we thought that ten years in the future we would have programs that would allow us to build software in the same way that CAD tools allow for building machine parts.</p>  <p>Not only did it not happen.&#160; It went completely the other way.&#160; Now we are all talking about Agile.&#160; Now people don’t even remember what CASE tools are.&#160; Now we are building software without trying to define the whole system in UML diagrams.</p>  <p><strong>The fact of the matter is software systems are unruly beasts!</strong></p>  <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://aznbadger.files.wordpress.com/2010/06/beast.jpg" /></p>  <p>In my mind it comes down to one simple distinction.&#160; Software is living, bridges aren’t.&#160; When you are done building a bridge, you are done building the bridge.&#160; </p>  <p>Sure someone, probably not you, will have to come along and do some routine maintenance on it.&#160; Sure, some small things might change about it, but for all intents and purposes the work is done.</p>  <p>In most software development scenarios, this is not the case.&#160; In most software development scenarios, releasing V1 is not even close to the end.&#160; Sometimes V1 and V2 don’t even look that same at all.&#160; Software development is about operating on a living breathing thing and all the while keeping it alive.</p>  <p>The truth is, we software developers have more in common with surgeons than with other engineers.</p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>.  Buy Temovate Cream without a prescription.  Temovate Cream trusted pharmacy reviews.  Temovate Cream over the counter.  Where can i order Temovate Cream without prescription.  Online buy Temovate Cream without a prescription.  Temovate Cream no rx.  Buy cheap Temovate Cream no rx.  Temovate Cream photos.  Buy Temovate Cream online no prescription.  Order Temovate Cream online c.o.d.  Herbal Temovate Cream.  About Temovate Cream.  Australia, uk, us, usa.  Cheap Temovate Cream.  Temovate Cream class.  Temovate Cream brand name.  Online Temovate Cream without a prescription.  Buy Temovate Cream without prescription.  Buy Temovate Cream from canada.  After Temovate Cream.  Order Temovate Cream from mexican pharmacy.  Temovate Cream without a prescription.  Purchase Temovate Cream.  Temovate Cream natural.  Temovate Cream overnight.  Temovate Cream online cod.  Where can i buy cheapest Temovate Cream online.  Purchase Temovate Cream for sale.  Online buying Temovate Cream.  Purchase Temovate Cream online.  Temovate Cream used for.  Temovate Cream coupon.  Temovate Cream description.  Order Temovate Cream no prescription.  Temovate Cream maximum dosage.  Cheap Temovate Cream no rx.  Temovate Cream images.  Temovate Cream blogs.  Buy Temovate Cream online cod.  Buy generic Temovate Cream.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4472'>Bactroban For Sale</a>. <a href='http://elegantcode.com/?p=4632'>Armour For Sale</a>. <a href='http://elegantcode.com/?p=4639'>Buy Estrace Vaginal Cream Without Prescription</a>. <a href='http://elegantcode.com/?p=4668'>Buy Augmentin Without Prescription</a>. <a href='http://elegantcode.com/?p=4535'>Buy Tindamax Without Prescription</a>. <a href='http://elegantcode.com/?p=4931'>Fast shipping Diclofenac</a>. <a href='http://elegantcode.com/?p=4240'>Combivent brand name</a>. <a href='http://elegantcode.com/?p=4417'>Levaquin overnight</a>. <a href='http://elegantcode.com/?p=4597'>Purchase Toradol online</a>. <a href='http://elegantcode.com/?p=4221'>Australia, uk, us, usa</a>.<br />
<b>Trackbacks from:</b> <a href='http://www.quarterlives.com/?p=1148'>Temovate Cream For Sale</a>. <a href='http://4realz.net/?p=1972'>Temovate Cream For Sale</a>. <a href='http://www.macneilbmx.com/blog/?p=5997'>Temovate Cream For Sale</a>. <a href='http://www.greatgreengoods.com/?p=2476'>Temovate Cream For Sale</a>. <a href='http://www.thegriffonnews.com/?p=9947'>Temovate Cream For Sale</a>. <a href='http://social-blend.com/?p=1160'>Temovate Cream brand name</a>. <a href='http://blog.farmland.org/?p=3812'>Where can i find Temovate Cream online</a>. <a href='http://reversemortgagedaily.com/?p=14136'>Generic Temovate Cream</a>. <a href='http://linuxologist.com/?p=1792'>Temovate Cream photos</a>. <a href='http://home.officesnapshots.com/?p=114'>Order Temovate Cream from mexican pharmacy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Buy Xalatan Without Prescription</title>
		<link>http://elegantcode.com/2011/04/13/why-rules-rule/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-rules-rule</link>
		<comments>http://elegantcode.com/2011/04/13/why-rules-rule/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 03:19:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/04/13/why-rules-rule/</guid>
		<description><![CDATA[Buy Xalatan Without Prescription, I have to admit, I love rules. They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally. Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how [...]]]></description>
			<content:encoded><![CDATA[<p> <p> <b>Buy Xalatan Without Prescription</b>, I have to admit, I love rules.</p>  <p>They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally.</p>  <p>Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how valuable they are, because when rules are doing their job, you don’t even notice them.</p>  <p>The first rule of your day is likely your alarm clock.&#160; This is a self imposed rule that you have created for yourself to get up at a certain time in the morning.&#160; Try to function in any meaningful way by completely removing that rule and see what happens.</p>  <p>Almost all games we play have rules.&#160; Without rules those games wouldn’t be much fun.</p>  <p>We drive on the correct side of the road in our lane, following rules of traffic, which if not obeyed put us in mortal danger and make the road quite a scary place.</p>  <p>It is a gross understatement to say rules are important to our daily life.</p>  <p>Yet, I am constantly amazed how many people seem to oppose any notion of rules when it comes to our craft of software development.</p>  <h2>There is this notion that rules somehow preclude judgment</h2>  <p>Somehow the idea has crept into many of our brains that rules and good judgment, (what we might call craftsmanship), are diametrically opposed to each other.</p>  <p>There seems to be a pervasive thought that rules suck all the fun out of things and take away creativity, skill and experience, reducing the follower of such rules to a mindless robot, replaceable by any other robot.</p>  <p>Not only do I think this viewpoint is completely wrong, but I think it is downright destructive to the craft of software development.</p>  <p>Let us first dispel the notion that rules destroy creativity and its kin.</p>  <p>Think about a game like Scrabble.&#160; Scrabble is a game that is based on a very restrictive set of rules.&#160; You basically have only two moves you can do.</p>  <ol>   <li>Make a word using only letters in your rack and letters on the board.</li>    <li>Discard some letters to get some new ones.</li> </ol>  <p>Rules dictate how many letters you can have and what ways you can arrange them.&#160; Yet, how much creativity is actually created by these constraints?</p>  <p>Music is often seen as a cousin to coding, and is another great example of constraints which breed creativity.&#160; Music has a huge amount of constraint.&#160; There are many natural rules about sounds and chords.&#160; We only have a small amount of notes to even work with, yet people have been elaborating on those 12 notes for hundreds of years and new creative sounds are produced every single day!</p>  <p><strong>If you really take the time to think about it, I think you will find that constraints actually breed creativity not destroy it.</strong></p>  <h2>The truth is rules come from good judgment at the right time</h2>  <p>Let me posit you this question.</p>  <p>When is a better time to make a judgment decision of what to do when a bear attacks you?</p>  <ul>   <li>When the bear is actually attacking you</li>    <li>Sitting at your computer with a huge amount of reference material available to you about bear attacks and a calm peaceful environment</li> </ul>  <p>If you chose when the bear is actually attacking you turn to page 32.</p>  <p><strong>Page 32:</strong></p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bear-attack" border="0" alt="bear-attack" src="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack_thumb.jpg" width="447" height="318" /></a></p>  <p><em>Having no rules in which to operate, in the heat of the moment, you decide to “tickle” the bear.&#160; The bear slays you and munches on your bones.&#160; Your adventure has come to an end.</em></p>  <p><strong><em>You are DEAD!</em></strong></p>  <p>The point is that your judgment is much more likely to be sound when you are removed from the situation which you are making the judgment call about.&#160; Unless you are a close relative of Spock, you’ll probably find that human emotions tends to interfere with sound judgment.</p>  <p>This is why I instead firmly believe that <strong>we should use our good judgment to formulate rules that we will use in the situations which they apply to rather than to try and execute good judgment when we are engrossed in the situation.</strong></p>  <p>If you still disagree with me here, let’s ponder the example of the alarm clock one more time.&#160; Better yet, I challenge you to make a judgment call each morning of when you should wake up.&#160; You can’t use an alarm clock or any rules.&#160; (Before you do this, you might want to make sure you get your resume polished up.)</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="alarm clock" border="0" alt="alarm clock" src="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock_thumb.jpg" width="235" height="386" /></a></p>  <h2>How does this all apply to software development?</h2>  <p>I’m not going to attempt to address every way in this blog post, perhaps we’ll revisit this subject in the future, because it is so important.&#160; Instead my goal here is to convince you to embrace rules and to not fear setting them for yourself, for your team or for your code.</p>  <p>Some of the biggest failings of teams that I see is the fear of setting rules.&#160; Teams seem to be so afraid of restricting someone or impairing their ability to make judgment calls that they go the direction of never setting any concrete rules, just guidelines or best practices.</p>  <p>There is a huge difference between guidelines and rules.&#160; Guidelines help you make a decision, rules make it for you.&#160; Don’t be fooled into thinking they are the same thing, and don’t fear rules.&#160; I always prefer rules over guidelines, because they are much more valuable.</p>  <p><strong>You can actually measure the effect of a rule, but you can’t easily measure the effect of a </strong><strong>guideline.</strong></p>  <p>Let me give you some examples of areas in software development that I think are great places to enforce some rules:</p>  <ul>   <li>Naming conventions</li>    <li>Unit testing</li>    <li>Process of starting work</li>    <li>Who works on work</li>    <li>When work is considered done</li>    <li>How defects are handled</li>    <li>What changes can be made to work in progress</li>    <li>What should be in a backlog</li>    <li>Language and library choices</li>    <li>Data access strategies</li>    <li>Dealing with build failures</li> </ul>  <p>Every time you are having a conversation which ends up identifying something to improve upon, you should be thinking about how you can codify it into a rule.&#160; Don’t be afraid to step out here.&#160; It’s ok to make the wrong rule and change it later.&#160; If you do this you learn something.</p>  <p>Having rules in place prevents you from making in-the-moment decisions which you later come to regret.</p>  <p>When I go to a buffet, I set rules for how much food I can eat.&#160; When I decide to start a workout routine, I set rules for how often and what duration I will workout.&#160; When I write code, I set rules for how I will write that code.</p>  <p>In any of those areas, when I fail to set rules, I end up failing.&#160; It is human nature.</p>  <h2>But rules impede me and end up making me do silly things</h2>  <p>Good.&#160; That is called feedback.</p>  <p>Remember back when you were just making judgment calls all the time instead of following rules you or your team preset ahead of time, you weren’t getting any feedback, now you are.&#160; Be happy about it, celebrate!</p>  <p>You can always change the rules.&#160; You can always tweak the parameters, but if you want to have any success in process improvement, it is much like cooking on the stove.&#160; You are much better off with burner dials that have numbers on them or at least some kind of label, then ones with just a blank dial.&#160; If you don’t know where the dial is, how will you know which way to turn it?</p>  <p>Sometimes rules are going to make you do something silly or seemingly extraneous.&#160; Sometimes rules are going to cause you to possibly even do the wrong thing.</p>  <p>But, if you want to have any chance of learning from your mistakes, if you want to truly improve your process, you must resist the urge to break the rules and instead wait for a time to reflect upon the rules and make appropriate changes at that time.</p>  <p>Learn to embrace rules and you’ll suddenly see an improvement in all areas of life where you apply them, especially your software development!</p>  <h6><strong>As always, you can subscribe to this </strong><a href="http://feeds2.feedburner.com/ElegantCode"><strong>RSS feed</strong></a><strong> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at </strong><a href="http://simpleprogrammer.com/"><strong>http://simpleprogrammer.com</strong></a><strong>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter </strong><a href="http://twitter.com/jsonmez"><strong>here</strong></a><strong>.</strong></h6>.  Xalatan description.  Xalatan no rx.  Buying Xalatan online over the counter.  Fast shipping Xalatan.  Xalatan overnight.  Buy Xalatan from mexico.  Xalatan without a prescription.  Where to buy Xalatan.  No prescription Xalatan online.  What is Xalatan.  Xalatan price.  Rx free Xalatan.  Purchase Xalatan online.  Generic Xalatan.  Xalatan street price.  Xalatan from canada.  About Xalatan.  Taking Xalatan.  Xalatan online cod.  Australia, uk, us, usa.  Order Xalatan online overnight delivery no prescription.  Xalatan recreational.  Xalatan canada, mexico, india.  Xalatan interactions.  Xalatan alternatives.  Online buying Xalatan.  My Xalatan experience.  Where can i cheapest Xalatan online.  Online Xalatan without a prescription.  Xalatan wiki.  Order Xalatan no prescription.  Get Xalatan.  Xalatan from mexico.  Xalatan schedule.  Xalatan dangers.  Purchase Xalatan for sale.  Where can i buy cheapest Xalatan online.  Discount Xalatan.  Is Xalatan addictive.  Buy cheap Xalatan.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4728'>Ventolin For Sale</a>. <a href='http://elegantcode.com/?p=4184'>Synthroid For Sale</a>. <a href='http://elegantcode.com/?p=4384'>Buy Ultram Without Prescription</a>. <a href='http://elegantcode.com/?p=4373'>Topamax For Sale</a>. <a href='http://elegantcode.com/?p=5156'>Amoxicillin For Sale</a>. <a href='http://elegantcode.com/?p=4297'>After Reglan</a>. <a href='http://elegantcode.com/?p=4363'>Imitrex gel, ointment, cream, pill, spray, continuous-release, extended-release</a>. <a href='http://elegantcode.com/?p=4721'>Flonase maximum dosage</a>. <a href='http://elegantcode.com/?p=4534'>Xalatan recreational</a>. <a href='http://elegantcode.com/?p=4354'>Herbal Glucophage</a>.<br />
<b>Trackbacks from:</b> <a href='http://social-blend.com/?p=1234'>Buy Xalatan Without Prescription</a>. <a href='http://www.quarterlives.com/?p=1098'>Buy Xalatan Without Prescription</a>. <a href='http://4realz.net/?p=816'>Buy Xalatan Without Prescription</a>. <a href='http://tayloegray.com/?p=302'>Buy Xalatan Without Prescription</a>. <a href='http://www.macneilbmx.com/blog/?p=5580'>Buy Xalatan Without Prescription</a>. <a href='http://blog.farmland.org/?p=2108'>Xalatan used for</a>. <a href='http://reversemortgagedaily.com/?p=14507'>Xalatan interactions</a>. <a href='http://linuxologist.com/?p=1519'>Online buying Xalatan</a>. <a href='http://home.officesnapshots.com/?p=268'>My Xalatan experience</a>. <a href='http://evanrapoport.com/?p=613'>Buy Xalatan online cod</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/04/13/why-rules-rule/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Programming is not a Craft: My Take</title>
		<link>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=programming-is-not-a-craft-my-take</link>
		<comments>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 17:38:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/</guid>
		<description><![CDATA[Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: Programming is not a Craft. Dan’s sentiments are not unique. I have heard similar opinions from other [...]]]></description>
			<content:encoded><![CDATA[<p>Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: <a href="http://dannorth.net/2011/01/11/programming-is-not-a-craft/" target="_blank">Programming is not a Craft</a>. Dan’s sentiments are not unique. I have heard <a href="http://blogs.tedneward.com/2008/05/11/Im+ProChoice+Pro+Programmer+Choice+That+Is.aspx" target="_blank">similar opinions</a> from other prominent developers I respect.</p>  <p>I read in Dan's post (and in some of the comments) a visceral reaction to gold plating things not determined &quot;important&quot; by the customer. I get that. I also see a need to temper this with the simple fact that the client doesn’t always know what is best for them. Let’s just get that out in the open. My doctor knows what is better for my physical body than I do and I am willing to pay for that. Will I always take the advice I am paying for? Well, probably not. And I’m sure that leaves my doctor shaking her head in dismay.</p>  <p>I learned that integrity is &quot;doing the right thing even when no one is looking&quot;, and I see the Software Craftsmanship discussion as striving for integrity in the systems we create.</p>  <p>One mark of a true professional might be a willingness to balance client need with implementaion elegance resulting in software that meets the need of the client AND is something worthy of pride when shown to another developer. If the only reason we are writing code is to provide the minimum a client wants to pay for, then how compelling is my work, really? Can I be proud of my professional body of work if I am simply marching to orders? I say no.</p>  <p>Where I part ways with Dan is in his analogy of the plumber. Granted, I simply want my pipes to work, but I am willing to pay for a plumber that takes pride in his work. I trust that plumber will simply do a better job as he strives to make his work appreciated by the next plumber that sees it. Can I quantify this into dollars? Not really. Perhaps in the extra time required to lay in a perfectly soldered joint as opposed to a sloppy one. Am I willing to pay more for this type of person to do the work? No question: Yes.</p>  <p>The bottom line for me is that we would all like to take pride in our work. No one I’ve ever met gets up in the morning thinking, “Today I will make a piece of crap”, and keeps at the job with any pleasure. We want to enjoy our work and be proud of it. Is that so bad? The very real software craftsmanship discussion simply gives us a vehicle for discussion in the pride we may take in our work for its own sake.</p>  <p>The risk to the craftsmanship community is to avoid getting carried away with dogma. Every time I hear <a href="http://channel9.msdn.com/Blogs/MichaelLehman/PP-Symposium-2010-Opening-Keynote-Robert-C-Martin" target="_blank">Bob Martin assert to a 500 person room</a> that if they aren't writing unit tests they are &quot;not professionals&quot; or somehow unworthy of being in the room with him, I cringe. That’s a perfect way to draw fire and alienate people who might otherwise join you in your cause. It also happens to be a perfect way to stand out as a charismatic speaker who gets lots of attention, but I digress… </p>  <p>Do I write tests? Yes. </p>  <p>Always? No. </p>  <p>Am I ashamed when I don't? Not really. Some jobs still call for duct tape. </p>  <p>Professionalism is knowing the appropriateness of a tool for a job and in always striving for integrity in our work. </p>  <p>My .02.</p>  <p>And, Dan, I admire and appreciate your contribution to our craft <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://elegantcode.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" /> .</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Burden Called Meetings</title>
		<link>http://elegantcode.com/2010/12/09/a-burden-called-meetings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-burden-called-meetings</link>
		<comments>http://elegantcode.com/2010/12/09/a-burden-called-meetings/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 19:00:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/12/09/a-burden-called-meetings/</guid>
		<description><![CDATA[I’ve been working for an enterprise corporation for 5+ years, which I’m going to be leaving soon. This organization is suffering from a wide-spread malady called “meetingitis”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working for an enterprise corporation for 5+ years, which <a href="http://elegantcode.com/2010/10/27/moving-to-greener-pastures/">I’m going to be leaving</a> soon. This organization is suffering from a wide-spread malady called “<a href="http://secretgeek.net/meetingitis.asp">meetingitis</a>”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming to a conclusion or a solution. Then there are also those kinds of meetings where you don’t have anything to say or contribute; these are just a complete waste of time.</p>  <p>Yesterday, <a href="http://twitter.com/seagile">Yves</a> pointed me out on Twitter that it is <a href="http://www.mccarthyshow.com/LearnForFree/TheCoreProtocolsOnline/tabid/103/Default.aspx">perfectly fine to leave a meeting</a> if you feel that you’re not able to gain or contribute anything. Today, I walked out of a meeting where one of the participants started making insults against me. I just stood up, walked to the door and left. And I must say that it felt liberating doing so. I went back to my desk, calmed down and got some actual work done. Without a basic form of respect, one simply can’t achieve anything, let alone come to win-win agreements. From now on, I’ll be evaluating all meetings that require my presence before I accept them and also keep evaluating my presence while being there. </p>  <p>Let me close of this mini-rant by sharing a must-see recording of a talk called “<a href="http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html">Why work doesn’t happen at work</a>” by <a href="http://twitter.com/jasonfried">Jason Fried</a>. I recommend you watch this short video, and if you like it, I also recommend picking up a copy of <a href="http://www.amazon.com/exec/obidos/ASIN/0307463745/elegantcode-20">Rework</a>. </p>  <p>I hereby rest my case.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/12/09/a-burden-called-meetings/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Laborers versus Professionals</title>
		<link>http://elegantcode.com/2010/10/27/laborers-versus-professionals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=laborers-versus-professionals</link>
		<comments>http://elegantcode.com/2010/10/27/laborers-versus-professionals/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:53:43 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/10/27/laborers-versus-professionals/</guid>
		<description><![CDATA[A while ago, my good friend Michel Grootjans&#160;tweeted the following: Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question. Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, my good friend <a href="http://geekswithblogs.net/alternativedotnet/Default.aspx">Michel Grootjans</a>&#160;<a href="http://twitter.com/michelgrootjans/status/24569673878">tweeted</a> the following:</p>  <blockquote>   <p>Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question.</p> </blockquote>  <p>Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a while. Try to picture your own work environment and how this relates. Go ahead! I can wait.</p>  <p>OK then, let’s move on.</p>  <p>I’ve been working for an enterprise corporation for 5+ years now. One of the things I’ve seen and learned there over this period of time is that laborers are more valued by management than professionals. Let me elaborate on this. </p>  <p>One of the biggest issues in a typical enterprise corporation is trust, specifically the lack thereof. The direct consequence of this lack of trust are massive amounts of constraints, regulatory processes and <a href="http://c2.com/cgi/wiki?FearDrivenDevelopment">fear-driven development</a>. This is the natural habitat of laborer developers, a nice and cozy place where they can spend their hibernation until retirement. This is where the term ‘code monkey’ originates from. Nine to five, no thinking, narrow focus, like soldiers in the military obeying orders to make a big mess. But sometimes, amongst these massive cohorts of laborers, there are small islands that exist of one or more professional developers. These are the kind of people that are very passionate about their craft, that want drive innovation and also want to continuously learn and improve. If you’re a developer and you’re reading this blog post, you probably fall into this category of developers.</p>  <p>But professional developers always have one part of the establishment going against them. It’s not the laborers. They don’t care. It’s an instrument better known as management. A large part of the IT industry, especially corporate IT shops, are being run by giant flocks of managers. Some of these managers started out as software developers and some of them are just born that way. But there’s something that they all have in common: they don’t write code as part of their day job. Although they don’t get their hands dirty with writing software, most managers do feel compelled to impose all kinds of political decisions regarding business requirements, software architecture/design, tools and technologies to the development teams they are ‘managing’. I for one want to make it clear that this has to stop. In order to lift this industry to the next level, we as software professionals need to free ourselves from the leash that is currently being held by management.&#160;&#160; </p>  <p>Professional developers working in these kinds of corporate environments are generally considered as troublemakers, if not by their direct bosses then certainly by other parts of management. The general attitude towards professionals is slamming them with more&#160; procedures, so called ‘company standards’ and ‘default architectures’. This ends up with a lot of frustration, a feeling of burn-out or even worse, suffocation as it may seem that the walls are closing in. Professional developers generally have a hard time placing this attitude towards them. They just want to do the right thing and provide the best possible solution they’re able to come up with. If managers don’t trust their development teams to make the right decisions, then why did they got hired in the first place? </p>  <p>I for one am pleading to get past this all this. Any business that wants to survive in this hard world economy and even wants to get ahead of its competition has to free its professional developers from management. It’s that simple. Management is great for enforcing compliance, but if engagement is what you want (and is definitely needed for bringing innovation), self-direction is essential. I already wrote <a href="http://vanryswyckjan.blogspot.com/2008/02/on-software-factories.html">a blog post about self-organizing teams</a> a couple of years ago. Today, I’m even more convinced that self-direction is one of the major key enablers for innovation in the IT industry of the 21th century. Anyway, someone who isn’t coding at least 50% of his day job shouldn’t be allowed to interfere with any kind technical decision making. Period! </p>  <p>I’m not saying that development teams should get a signed blank check. On the contrary. Financial and business constraints should still be taken into account. But when it comes to creativity, methodologies, technologies and tools, management shouldn’t get in the way. Development teams should be able to take responsibility for their own actions. Managers should know their place by making sure that their development teams can operate as optimal and efficient as possible by removing as many impediments as possible.</p>  <p>Let me show you a couple of examples where this principle of autonomy has immensely paid of so that you’re able to judge for yourself.</p>  <p>I personally find health care a fascinating craft. I find it fascinating simply because there are so many parallels than can be drawn between software engineering and the state of health care roughly 200 years ago :-). Lets take about modern hospitals for example. Medical facilities are generally being run by senior medical staff and not by managers! Senior medical staff are people that have a high degree of mastery in what they do and still perform their craft every single day. Maybe they’re not doing it full time so that they’re able to fulfill their ‘path-finding’ responsibilities, but still, they are still fixing their patients. Hospitals do have managers however, but they are there simply for enabling the medical staff to not worry about anything else besides saving lives. Can you picture lying in an operating room when a manager in a suit bursts through the door, yelling at the surgeon that he’s not allowed to use technique xyz to save your live? Preposterous you say? Not so with the current state of affairs in IT departments of the enterprise corporations. </p>  <p>There are a couple of concrete examples in the IT industry as well. Remember when Google <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?_r=1">announced</a> that their engineers get to spend 20 percent of their time to work on something of their own interest? This resulted in massive improvements for products like GMail, Google Maps, Google Docs, etc … and directly contributed to Google’s success and current market share. Other companies like <a href="http://blogs.atlassian.com/rebelutionary/archives/000495.html">Atlassian</a> and <a href="http://blog.facebook.com/">Facebook</a> are enabling innovation in basically the same way. </p>  <p>Yet another example is Pixar. If you haven’t seen or listened to <a href="http://www.scottberkun.com/blog/2010/inside-pixars-leadership/">this interview</a> with Ed Catmull, the president of Pixar, stop reading this blog post and let it inspire you now! Somewhere along this awesome interview he mentions the following:</p>  <blockquote>   <p>Part of the behavior is I don’t know the answers. And at first that seems a little bit glib. But after awhile people get that I really don’t know the answer to a lot of these things. So we set it up so that the management really doesn’t tell people what to do.&#160; </p> </blockquote>  <p>Think about how amazing it would be like to work in an environment like that. It’s inevitable that great things are bound to happen.</p>  <p>There are plenty of other examples out there, like open-source software, Wikipedia, etc. … . They all prove that self-management results in engagement and that this is going to be a major differentiator in tomorrow’s economy.&#160; </p>  <p>Make sure to check out the following resources as well:</p>  <ul>   <li><a href="http://www.ted.com/talks/dan_pink_on_motivation.html">The surprising science of motivation</a> by Daniel Pink </li>    <li><a href="http://openmymind.net/2010/10/7/programmer-passion">Programmer Passion: An Enterprises Most Useful Yet Repressed Advantage</a> by Karl Seguin </li>    <li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">Drive: The surprising truth about what motivates us</a> </li> </ul> Till next time.   ]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/10/27/laborers-versus-professionals/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Keep Pressing on my Friend (When programming seems bleak)</title>
		<link>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keep-pressing-on-my-friend-when-programming-seems-bleak</link>
		<comments>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 22:16:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/</guid>
		<description><![CDATA[Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again? Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper? I used to think it just happened to me.&#160; The first time [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again?</p>  <p>Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper?</p>  <p>I used to think it just happened to me.&#160; The first time it happened to me, I almost switched my major from CS to CIS.&#160; But, the more and more I work in this field and talk to other programmers, the more and more I see the same exact thing happening.&#160; And guess what?&#160; It is happening to everyone.</p>  <p>Not just you.&#160; You are not alone.</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2010/09/tired_man.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="tired_man" border="0" alt="tired_man" src="http://elegantcode.com/wp-content/uploads/2010/09/tired_man_thumb.jpg" width="248" height="356" /></a></p>  <h2>I’m not talking about burnout here</h2>  <p>This is more than burnout.&#160; This lack of motivation energy-sapping-plague can hit a programmer at any time whether you just finished a week of all nighters or you just came back from a peaceful vacation.</p>  <p>I actually find that it is the time when I am furthest from what should be burn out that this phenomenon is most likely to occur.</p>  <p>So, if it’s not burnout, what is it?</p>  <p>I’ll call it programming lethargy.&#160; It actually happens to two other groups of professionals: athletes and craftsmen.</p>  <p>The truth is it is a perfectly normal cycle.&#160; This “barrier” is actually the reason why there are many apprentices, few journeymen and even fewer masters.</p>  <p>When you hit this phase be glad, it means you are about to be tested and if you come out on the other side, you will end up with a renewed interest and passion and leave behind the others that can’t cut it.</p>  <p>Oh, and it will happen again, probably several more times.</p>  <h2>Press on my friend</h2>  <p>What can you do about this problem?</p>  <p>Don’t despair, just press on.&#160; Stay the course and all will be well.</p>  <p>I am not sure why this happens, but I do know that it is a true test of your desire for the goal, whether to be a better programmer or a better athlete, or a better singer or musician. </p>  <p>The test is whether or not you can still press on when the motivation and passion is not there.</p>  <p>The reward waiting for you on the other side? </p>  <ul>   <li>A renewed passion and energy.&#160; </li>    <li>A new kind of appreciation for what you do.&#160; </li>    <li>Experience and true appreciation for your craft. </li> </ul>  <p>The question you have to ask yourself, is what do you ultimately want to become?&#160; If what you do is more than just a job to you, then you’ll find the strength to press on.</p>  <h2>How to press on when the motivation is gone</h2>  <p>If you agree with me, or even think that perhaps what I am saying is worth considering, then you will probably wonder how you can get through this phase or test to see the other side.</p>  <p>We can look at athletics again as a comparison to provide some insight.</p>  <p>Think about a professional track runner, training for competition.&#160; Consider what would happen if that athlete decided to not have a formal training schedule, but instead only train when he felt like it.</p>  <p>What would happen when he didn’t feel like training for a week?</p>  <p>Now let’s say he had a training schedule and he followed it, even on the mornings when he didn’t feel like getting up to train.</p>  <p>What would happen if his training was not planned out?&#160; If he didn’t know what kind of drills to do or have a long term plan for the training sessions?</p>  <p>If you want to make it through the times when you don’t feel the motivation and passion for writing code and solving problems, then you have to have a plan.&#160; A solid plan that will ensure that you will be able to press on.</p>  <p>Here are some tips to make sure that when you get struck by programming lethargy, you do make it through to the other side.</p>  <ul>   <li>I’ve talked about this <a href="http://simpleprogrammer.com/2010/07/02/the-importance-of-always-reading/">several times</a> in my blog.&#160; <strong>Make sure you are always reading a technical book.</strong>&#160; Create a schedule and stick to it.&#160; Even 15-30 minutes a day of reading will let you read around 1-2 books a month.&#160; That is a huge amount of knowledge. </li>    <li>When you don’t feel like working,<strong> break up your work into <a href="http://simpleprogrammer.com/2010/07/09/why-small-is-better/">small tasks</a> and start accomplishing those tasks.</strong>&#160; Figure out exactly what you have to do to move forward and do it.&#160; Don’t give in and waste time.&#160; The time you feel the most like killing time, is the time when you must throw yourself into your work all the more. </li>    <li><strong>Set some goals for yourself.</strong>&#160; Short term and long term.&#160; The short terms goals should clearly lead to the long term goals.&#160; Review those goals frequently and always try to make progress towards the goals.&#160; Even a little bit of progress adds up over time. </li>    <li><strong>Don’t start thinking about changing careers or looking for an easier job.</strong>&#160; Don’t start thinking you will feel this way forever.&#160; Realize that what you are experiencing now is a feeling and feelings are not trustworthy. </li>    <li><strong>Clean up.</strong>&#160; Clean up your workspace.&#160; Clean up your computer.&#160; Get yourself some new equipment if it will help.&#160; Feeling like you have a new and fresh environment can do wonders for motivation. </li>    <li><strong>Challenge yourself.</strong>&#160; Your gut is going to tell you to slow down and relax, but that road leads to laziness.&#160; When laziness comes your way, the best way to fight it is to push right into it! </li> </ul>  <p>Well, that is all the tips I have for you for today.&#160; Just remember that you are not alone and what you are experiencing is normal.&#160; </p>  <p>If you’re in a period now where you are motivated and feel great about your work and what you are doing, you might want to bookmark this post and come back to it when it can benefit you more.&#160; </p>  <p>Remember though, setting up good habits and routines now can help you cruise through the hard times later. </p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>  <ul></ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Microsoft doesn&#8217;t create bad developers, developers do</title>
		<link>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoft-doesnt-create-bad-developers-developers-do</link>
		<comments>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:47:16 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/</guid>
		<description><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an [...]]]></description>
			<content:encoded><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an industry that is evolving at an incredible pace, contains an incalculable number of technologies, frameworks, best practices and constantly redefines the definition of how things should be done in the best possibly way. It’s the industry that makes the rest of the world tick. Daunting really, if you think about it.

A while back I read a couple of posts by <a href="http://www.gilzilberfeld.com/" target="_blank">Gil Zilberfeld</a> (<a title="Read Gil's post on Why Microsoft makes bad programmers" href="http://www.gilzilberfeld.com/2010/07/why-microsoft-makes-bad-programmers.html" target="_blank">here</a> and <a title="Read Gil's post on CSI: Microsoft" href="http://www.gilzilberfeld.com/2010/08/csi-microsoft.html" target="_blank">here</a>) where Gil talks about the responsibility that vendors such as Microsoft plays in the role of securing the quality of the work that is produced in our industry. While I think I see the points  Gil is trying to make, I think he misses the beat a bit and I have a hard time agreeing with the conclusions he draws.

The way I see it there are two types of developers; those that are just in it to pay the bills and those that consider themselves as craftsmen. If you consider yourself a craftsman then you should already be aware that you are responsible for your own faith and actions in this industry. But, if you are just in it to pay the bills then you are probably also looking to do so by doing the least amount of work and that includes looking for information on how to solve a particular problem or how to apply a technology onto your stack.

So if you are one of the developers that are only looking towards Microsoft (or the relevant company for the technology stack you are working on) is it their fault if you implement something in a way that could be considered bad? Of course not! Sure there are a lot of outdated and down right poor samples at the Microsoft (or relevant company) website and their idea on how certain things should be solved are bound to differ from others (and that’s definitely not to say that there isn’t good contents, there are a ton of it). However, if you rely on a single source of information, you are always going to get an opinionated view. Take my word on it (right?).

Doctors reads medical journals, publishes research papers, attend conferences, network with colleagues and make sure they stay up to date with the latest in their field. I’m pretty sure you are happy that they spend all of this time to make sure they can provide the best possible care and treatment when someone are in need of their services. I know I am.

Just as with any other profession, developers are responsible for their own education, for honing their skills in the craft that they have chosen to practice. In order to keep up in an industry that evolves at the speed of light you need to invest in yourself. The code you write today should be some of the best you have ever written, while a year later you should be considerably less excited about its quality. It’s a sign of growth. That you’ve continued to move forward as a craftsman, that you skills have been honed and broadened during the past year.

So what about the tools? Do we really rely on them too much to get the work done? I would say, definitely not! But again you have to specify just exactly what you are talking about when talking about tooling. If you rely on visual designers, drag and drop, wizards and the likes to to the majority of your work, then yes you are probably relying too much on your tools. Odds are that you will have a hard time to get anything outside of standard behavior to run and there will be pain points when you need to debug.

However you would do yourself (and your employer) a huge disservice if you did not make it your goal to know the tools in your toolbox as good as possible. What’s wrong with knowing how to use the debugger, the IDE and tools like ReSharper as good as possible? Used correctly they will have a huge impact on productivity. Make sure you know the finer details of the tools and make them work for your and not the other way around. Yes, sometimes tools do get in the way of the goal, even slow you down, and when that is the case, don’t use the tools! Tools are there to help you when you need them, not to act as a crutch you always have to lean on so you don’t fall on your ass.

Well there you have my thoughts on the subject. It’s always up to the developer, not the companies. Always.

I am also around on twitter <a title="Visit my twitter profile" href="http://twitter.com/thecodejunkie" target="_blank">@thecodejunkie</a> in case you need one more person to follow]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Software, &#8220;It&#8217;s not what we do&#8221;.</title>
		<link>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-its-not-what-we-do</link>
		<comments>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 12:13:36 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/09/software-its-not-what-we-do/</guid>
		<description><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a [...]]]></description>
			<content:encoded><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a “core competency”.

One thing I have heard expressed in those places is, “software development is not our core competency, therefore recommendations around professional development practices don’t apply to us.”

Good, lord. Really, people?

This is akin to a Boeing corporate attorney claiming that he need not be competent because Boeing makes airplanes.

I don’t know where this absurd line of reasoning comes from, but I know why it is tolerated. It is tolerated because we don’t have the formal structures to hold professionals accountable the way we might hold an electrician, plumber, or physician accountable to being merely competent. If you are reading this post you probably make 3X the salary of a plumber, yet are held to a lower degree of professional accountability for your work.

This is sad, but it doesn’t mean that we need to pick up the mantle of mediocrity available to us. We can hold ourselves accountable for professionalism no matter where we work.

If the organization we serve specializes in jellybeans, services, software widgets, or any other industry, we are hired to bring our best game to the table. This is why they hire us, folks! We are supposed to know what we are doing, not making excuses for incompetence!

In summary, no matter what type of organization you work for:
<ul>
	<li>Yes, you need to use source control.</li>
	<li>Yes, you need to automate the build.</li>
	<li>No, you shouldn’t be releasing the assemblies compiled on your machine.</li>
	<li>Yes, you need to stop writing long methods and pay attention to code complexity.</li>
	<li>Yes, you need to buy your developers the best tools available.</li>
	<li>No, you don’t need to write your own logging framework.</li>
	<li>Yes, you should be practicing test first development.</li>
	<li>No, continuing to ship known defects is not acceptable.</li>
	<li>Yes, you should understand who your customer is.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Software Craftsmanship on the Polymorphic Podcast</title>
		<link>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-craftsmanship-on-the-polymorphic-podcast</link>
		<comments>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:11:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/</guid>
		<description><![CDATA[I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of being the host!</p>  <p><a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx?"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ListenBanner" border="0" alt="ListenBanner" align="right" src="http://elegantcode.com/wp-content/uploads/2010/08/ListenBanner.png" width="341" height="53" /></a> The interview is now live and <a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx" target="_blank">available here</a>. </p>  <p>We visited many of my favorite topics including:</p>  <ul>   <li>How to sell Agile in your org</li>    <li>Scrum and ScrumBut</li>    <li>Code Craftsmanship</li>    <li>Agile in small teams</li>    <li>How to be an agile army of one</li>    <li>How my mom is the perfect complexity gauge</li>    <li>And ElegantCode.com gets a shout out!</li> </ul>  <p>This was really fun. Thanks, Craig!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enforce Correct Usage By Wrapping Types</title>
		<link>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=programming-is-not-a-craft-my-take</link>
		<comments>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 17:38:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/</guid>
		<description><![CDATA[Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: Programming is not a Craft. Dan’s sentiments are not unique. I have heard similar opinions from other [...]]]></description>
			<content:encoded><![CDATA[<p>Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: <a href="http://dannorth.net/2011/01/11/programming-is-not-a-craft/" target="_blank">Programming is not a Craft</a>. Dan’s sentiments are not unique. I have heard <a href="http://blogs.tedneward.com/2008/05/11/Im+ProChoice+Pro+Programmer+Choice+That+Is.aspx" target="_blank">similar opinions</a> from other prominent developers I respect.</p>  <p>I read in Dan's post (and in some of the comments) a visceral reaction to gold plating things not determined &quot;important&quot; by the customer. I get that. I also see a need to temper this with the simple fact that the client doesn’t always know what is best for them. Let’s just get that out in the open. My doctor knows what is better for my physical body than I do and I am willing to pay for that. Will I always take the advice I am paying for? Well, probably not. And I’m sure that leaves my doctor shaking her head in dismay.</p>  <p>I learned that integrity is &quot;doing the right thing even when no one is looking&quot;, and I see the Software Craftsmanship discussion as striving for integrity in the systems we create.</p>  <p>One mark of a true professional might be a willingness to balance client need with implementaion elegance resulting in software that meets the need of the client AND is something worthy of pride when shown to another developer. If the only reason we are writing code is to provide the minimum a client wants to pay for, then how compelling is my work, really? Can I be proud of my professional body of work if I am simply marching to orders? I say no.</p>  <p>Where I part ways with Dan is in his analogy of the plumber. Granted, I simply want my pipes to work, but I am willing to pay for a plumber that takes pride in his work. I trust that plumber will simply do a better job as he strives to make his work appreciated by the next plumber that sees it. Can I quantify this into dollars? Not really. Perhaps in the extra time required to lay in a perfectly soldered joint as opposed to a sloppy one. Am I willing to pay more for this type of person to do the work? No question: Yes.</p>  <p>The bottom line for me is that we would all like to take pride in our work. No one I’ve ever met gets up in the morning thinking, “Today I will make a piece of crap”, and keeps at the job with any pleasure. We want to enjoy our work and be proud of it. Is that so bad? The very real software craftsmanship discussion simply gives us a vehicle for discussion in the pride we may take in our work for its own sake.</p>  <p>The risk to the craftsmanship community is to avoid getting carried away with dogma. Every time I hear <a href="http://channel9.msdn.com/Blogs/MichaelLehman/PP-Symposium-2010-Opening-Keynote-Robert-C-Martin" target="_blank">Bob Martin assert to a 500 person room</a> that if they aren't writing unit tests they are &quot;not professionals&quot; or somehow unworthy of being in the room with him, I cringe. That’s a perfect way to draw fire and alienate people who might otherwise join you in your cause. It also happens to be a perfect way to stand out as a charismatic speaker who gets lots of attention, but I digress… </p>  <p>Do I write tests? Yes. </p>  <p>Always? No. </p>  <p>Am I ashamed when I don't? Not really. Some jobs still call for duct tape. </p>  <p>Professionalism is knowing the appropriateness of a tool for a job and in always striving for integrity in our work. </p>  <p>My .02.</p>  <p>And, Dan, I admire and appreciate your contribution to our craft <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://elegantcode.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" /> .</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Craftsmanship</title>
	<atom:link href="http://elegantcode.com/category/craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00: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>Temovate Cream For Sale</title>
		<link>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-software-development-will-never-be-engineering</link>
		<comments>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:37:48 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/</guid>
		<description><![CDATA[I always find it rather interesting when academics try to quantify generalized metrics about software development. Temovate Cream For Sale, Things like: per lines of code, there will be X number of bugs. Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.” These are all interesting [...]]]></description>
			<content:encoded><![CDATA[<p> <p>I always find it rather interesting when academics try to quantify generalized metrics about software development.</p>  <p> <b>Temovate Cream For Sale</b>, Things like: per lines of code, there will be X number of bugs.</p>  <p>Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.”</p>  <p>These are all interesting thoughts, but software development will never conform to rigid engineering principles like many other engineering practices.&#160; The longer I work in the field, the more and more I realize that software development has nothing to do with engineering.&#160; We just happen to attend some of the same math classes in school.</p>  <h2>Building bridges</h2>  <p>One of the main arguments I hear people make about the current state of software development as an engineering practice is based around its relative maturity to other engineering fields.</p>  <p>There is a huge problem with this line of thinking.</p>  <p>The argument goes something like this:&#160; “<em>Engineering has been around for hundreds of years and has matured to the point where it is a measurable science, but software development has only been around in earnest for the last few decades or so, therefore it is relatively immature as an engineering discipline.”</em></p>  <p>On the surface this argument seems sounds.&#160; And certainly in 50 years software development will be different than it is now.&#160; Heck, it is much more different than it was just 10 years ago.</p>  <p>But, here is the problem.&#160; We build much more software than we do bridges.</p>  <p><img src="http://www.nps.gov/glca/historyculture/images/Navajo_Bridges_1.gif" width="589" height="442" /></p>  <h6 align="center">&#160;</h6>  <p>Let me give you an example that came to light in another area of my interest… poker.</p>  <h1></h1>  <h2>The poker quickening</h2>  <p>An interesting thing happened in the poker community in the last 10 years; poker pros with decades of experience started getting beat time and time again by 19 year old poker prodigies.</p>  <p>From an outside perspective it looks like the poker world opening up just widened the search for talent and there it was.&#160; But, a closer examination of the evidence leads to the truth.</p>  <p>Before the online poker industry was born, poker was played in card rooms and casinos in states where it was legal and occasionally at small home games throughout the US.</p>  <p>A poker pro might play poker tournaments perhaps 100 times to 150 times a year.&#160; The sum knowledge of the poker community and the meta game around it was based on this base of professional poker players playing tournaments and gaining experience at this mediocre rate.</p>  <p>Once the internet poker rooms started opening up, things changed, and they changed rapidly.&#160; Now anyone could play poker from their home PC.&#160; Not only could they play poker, they could play poker tournaments at all hours of the day.</p>  <p>Here is a list of some of the major changes that took place:</p>  <ul>   <li>Hands are dealt at 60-80 hands per hour instead of 10-30</li>    <li>Players can play in many tournaments at one time, 10 tournaments at once is not unheard of</li>    <li>Players can analyze hand histories and historical data about their play and opponents play through the use of software </li>    <li>Age requirements are out the window, technically any one of any age could be playing online</li>    <li>Players can play 24 hours a day</li>    <li>The professional online tournament player could easily play over 3000 tournaments in a year, while a brick and mortar pro would be lucky to reach 100 in a year.</li>   <img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://t1.gstatic.com/images?q=tbn:ANd9GcRj9uGNWSyqGWEneiH6xaBAyS6COwGYicdNadZu-06KWQLhIi6LMw&amp;t=1" width="316" height="270" /></ul>  <p>&#160;</p>  <p>So where am I going with all this?</p>  <p>The point is that as a whole more hands were dealt and more poker knowledge and experience was obtained in 1 year of online poker than probably the entire history of poker before that.&#160; We reached such an accelerated pace of play that all previous knowledge of poker became obsolete.&#160; </p>  <p>The strategy of tournament poker completely changed.&#160; The game evolved perhaps 500 years into the future in a matter of 5 years time.</p>  <p>The same has happened with software development.</p>  <h2>Back to the bridge building</h2>  <p>So let’s take that poker example and look at it through the lens of software development.</p>  <p>Let us compare the engineering maturity to software development to the engineering maturity of the engineering discipline of building bridges.</p>  <p>I think most people would agree that bridge building is a very mature engineering discipline but many people would argue that software development is not.</p>  <p><strong>How many bridges do you think have been built in the world?</strong></p>  <p>Well there are <a href="http://www.betterroads.com/category/bridge-inventory/erroads.randallreillycms.com/files/2009/11/BR1109_BridgeInventory.pdf">about 600,000 bridges in the United States alone</a>, so the world figure must be at least somewhere around 10 times that number perhaps 20.</p>  <p><strong>How many software programs have been written?</strong></p>  <p>This is a very hard number to estimate, but lets take a rough guess based on <a href="http://stackoverflow.com/questions/453880/how-many-developers-are-there-in-the-world">how many software developers there are in the world</a>.&#160; </p>  <p>If we say there are about 12 million software developers and each software developer has written approximately 3 programs, we can estimate that a large amount more programs have been written than bridges built.</p>  <p>My point is not to knock bridge building, we are pretty good at it as a whole, but rather to show that collectively, even though we have been building bridges for hundreds of years, we have probably devoted an equivalent amount of time to building software.</p>  <p>This line of thinking may lead you to argue back that software development and bridge building are very different.&#160; Bridge building has a fixed set of requirements that are pretty close to the the same for each bridge you build, but software development is a big open void of whims and ambiguously contradictory statements.</p>  <p>I agree with you 100%!&#160; And in essence that is my point.</p>  <h2>Software development is different</h2>  <p>And we have had enough time to realize that.&#160; Waiting for software development to gel into some kind of engineering discipline like other engineering disciplines is like waiting for water without gelatin mix to turn into Jello.&#160; </p>  <p>It’s just not going to happen!</p>  <p>In my mind it is clear that the argument that we haven’t given it enough time is just wishful thinking.&#160; The nature of software development, just like online poker, leads itself to rapid evolution.</p>  <p>Consider what direction software development is evolving.&#160; Is it even evolving in the direction of rigid engineering practices or is it evolving in the exact OPPOSITE direction?</p>  <p>Ten years ago, we tried to use UML diagrams and CASE tools to develop software.&#160; Ten years ago waterfall was all the rage.&#160; Ten years ago, we thought that ten years in the future we would have programs that would allow us to build software in the same way that CAD tools allow for building machine parts.</p>  <p>Not only did it not happen.&#160; It went completely the other way.&#160; Now we are all talking about Agile.&#160; Now people don’t even remember what CASE tools are.&#160; Now we are building software without trying to define the whole system in UML diagrams.</p>  <p><strong>The fact of the matter is software systems are unruly beasts!</strong></p>  <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://aznbadger.files.wordpress.com/2010/06/beast.jpg" /></p>  <p>In my mind it comes down to one simple distinction.&#160; Software is living, bridges aren’t.&#160; When you are done building a bridge, you are done building the bridge.&#160; </p>  <p>Sure someone, probably not you, will have to come along and do some routine maintenance on it.&#160; Sure, some small things might change about it, but for all intents and purposes the work is done.</p>  <p>In most software development scenarios, this is not the case.&#160; In most software development scenarios, releasing V1 is not even close to the end.&#160; Sometimes V1 and V2 don’t even look that same at all.&#160; Software development is about operating on a living breathing thing and all the while keeping it alive.</p>  <p>The truth is, we software developers have more in common with surgeons than with other engineers.</p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>.  Buy Temovate Cream without a prescription.  Temovate Cream trusted pharmacy reviews.  Temovate Cream over the counter.  Where can i order Temovate Cream without prescription.  Online buy Temovate Cream without a prescription.  Temovate Cream no rx.  Buy cheap Temovate Cream no rx.  Temovate Cream photos.  Buy Temovate Cream online no prescription.  Order Temovate Cream online c.o.d.  Herbal Temovate Cream.  About Temovate Cream.  Australia, uk, us, usa.  Cheap Temovate Cream.  Temovate Cream class.  Temovate Cream brand name.  Online Temovate Cream without a prescription.  Buy Temovate Cream without prescription.  Buy Temovate Cream from canada.  After Temovate Cream.  Order Temovate Cream from mexican pharmacy.  Temovate Cream without a prescription.  Purchase Temovate Cream.  Temovate Cream natural.  Temovate Cream overnight.  Temovate Cream online cod.  Where can i buy cheapest Temovate Cream online.  Purchase Temovate Cream for sale.  Online buying Temovate Cream.  Purchase Temovate Cream online.  Temovate Cream used for.  Temovate Cream coupon.  Temovate Cream description.  Order Temovate Cream no prescription.  Temovate Cream maximum dosage.  Cheap Temovate Cream no rx.  Temovate Cream images.  Temovate Cream blogs.  Buy Temovate Cream online cod.  Buy generic Temovate Cream.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4472'>Bactroban For Sale</a>. <a href='http://elegantcode.com/?p=4632'>Armour For Sale</a>. <a href='http://elegantcode.com/?p=4639'>Buy Estrace Vaginal Cream Without Prescription</a>. <a href='http://elegantcode.com/?p=4668'>Buy Augmentin Without Prescription</a>. <a href='http://elegantcode.com/?p=4535'>Buy Tindamax Without Prescription</a>. <a href='http://elegantcode.com/?p=4931'>Fast shipping Diclofenac</a>. <a href='http://elegantcode.com/?p=4240'>Combivent brand name</a>. <a href='http://elegantcode.com/?p=4417'>Levaquin overnight</a>. <a href='http://elegantcode.com/?p=4597'>Purchase Toradol online</a>. <a href='http://elegantcode.com/?p=4221'>Australia, uk, us, usa</a>.<br />
<b>Trackbacks from:</b> <a href='http://www.quarterlives.com/?p=1148'>Temovate Cream For Sale</a>. <a href='http://4realz.net/?p=1972'>Temovate Cream For Sale</a>. <a href='http://www.macneilbmx.com/blog/?p=5997'>Temovate Cream For Sale</a>. <a href='http://www.greatgreengoods.com/?p=2476'>Temovate Cream For Sale</a>. <a href='http://www.thegriffonnews.com/?p=9947'>Temovate Cream For Sale</a>. <a href='http://social-blend.com/?p=1160'>Temovate Cream brand name</a>. <a href='http://blog.farmland.org/?p=3812'>Where can i find Temovate Cream online</a>. <a href='http://reversemortgagedaily.com/?p=14136'>Generic Temovate Cream</a>. <a href='http://linuxologist.com/?p=1792'>Temovate Cream photos</a>. <a href='http://home.officesnapshots.com/?p=114'>Order Temovate Cream from mexican pharmacy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Buy Xalatan Without Prescription</title>
		<link>http://elegantcode.com/2011/04/13/why-rules-rule/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-rules-rule</link>
		<comments>http://elegantcode.com/2011/04/13/why-rules-rule/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 03:19:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/04/13/why-rules-rule/</guid>
		<description><![CDATA[Buy Xalatan Without Prescription, I have to admit, I love rules. They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally. Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how [...]]]></description>
			<content:encoded><![CDATA[<p> <p> <b>Buy Xalatan Without Prescription</b>, I have to admit, I love rules.</p>  <p>They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally.</p>  <p>Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how valuable they are, because when rules are doing their job, you don’t even notice them.</p>  <p>The first rule of your day is likely your alarm clock.&#160; This is a self imposed rule that you have created for yourself to get up at a certain time in the morning.&#160; Try to function in any meaningful way by completely removing that rule and see what happens.</p>  <p>Almost all games we play have rules.&#160; Without rules those games wouldn’t be much fun.</p>  <p>We drive on the correct side of the road in our lane, following rules of traffic, which if not obeyed put us in mortal danger and make the road quite a scary place.</p>  <p>It is a gross understatement to say rules are important to our daily life.</p>  <p>Yet, I am constantly amazed how many people seem to oppose any notion of rules when it comes to our craft of software development.</p>  <h2>There is this notion that rules somehow preclude judgment</h2>  <p>Somehow the idea has crept into many of our brains that rules and good judgment, (what we might call craftsmanship), are diametrically opposed to each other.</p>  <p>There seems to be a pervasive thought that rules suck all the fun out of things and take away creativity, skill and experience, reducing the follower of such rules to a mindless robot, replaceable by any other robot.</p>  <p>Not only do I think this viewpoint is completely wrong, but I think it is downright destructive to the craft of software development.</p>  <p>Let us first dispel the notion that rules destroy creativity and its kin.</p>  <p>Think about a game like Scrabble.&#160; Scrabble is a game that is based on a very restrictive set of rules.&#160; You basically have only two moves you can do.</p>  <ol>   <li>Make a word using only letters in your rack and letters on the board.</li>    <li>Discard some letters to get some new ones.</li> </ol>  <p>Rules dictate how many letters you can have and what ways you can arrange them.&#160; Yet, how much creativity is actually created by these constraints?</p>  <p>Music is often seen as a cousin to coding, and is another great example of constraints which breed creativity.&#160; Music has a huge amount of constraint.&#160; There are many natural rules about sounds and chords.&#160; We only have a small amount of notes to even work with, yet people have been elaborating on those 12 notes for hundreds of years and new creative sounds are produced every single day!</p>  <p><strong>If you really take the time to think about it, I think you will find that constraints actually breed creativity not destroy it.</strong></p>  <h2>The truth is rules come from good judgment at the right time</h2>  <p>Let me posit you this question.</p>  <p>When is a better time to make a judgment decision of what to do when a bear attacks you?</p>  <ul>   <li>When the bear is actually attacking you</li>    <li>Sitting at your computer with a huge amount of reference material available to you about bear attacks and a calm peaceful environment</li> </ul>  <p>If you chose when the bear is actually attacking you turn to page 32.</p>  <p><strong>Page 32:</strong></p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bear-attack" border="0" alt="bear-attack" src="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack_thumb.jpg" width="447" height="318" /></a></p>  <p><em>Having no rules in which to operate, in the heat of the moment, you decide to “tickle” the bear.&#160; The bear slays you and munches on your bones.&#160; Your adventure has come to an end.</em></p>  <p><strong><em>You are DEAD!</em></strong></p>  <p>The point is that your judgment is much more likely to be sound when you are removed from the situation which you are making the judgment call about.&#160; Unless you are a close relative of Spock, you’ll probably find that human emotions tends to interfere with sound judgment.</p>  <p>This is why I instead firmly believe that <strong>we should use our good judgment to formulate rules that we will use in the situations which they apply to rather than to try and execute good judgment when we are engrossed in the situation.</strong></p>  <p>If you still disagree with me here, let’s ponder the example of the alarm clock one more time.&#160; Better yet, I challenge you to make a judgment call each morning of when you should wake up.&#160; You can’t use an alarm clock or any rules.&#160; (Before you do this, you might want to make sure you get your resume polished up.)</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="alarm clock" border="0" alt="alarm clock" src="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock_thumb.jpg" width="235" height="386" /></a></p>  <h2>How does this all apply to software development?</h2>  <p>I’m not going to attempt to address every way in this blog post, perhaps we’ll revisit this subject in the future, because it is so important.&#160; Instead my goal here is to convince you to embrace rules and to not fear setting them for yourself, for your team or for your code.</p>  <p>Some of the biggest failings of teams that I see is the fear of setting rules.&#160; Teams seem to be so afraid of restricting someone or impairing their ability to make judgment calls that they go the direction of never setting any concrete rules, just guidelines or best practices.</p>  <p>There is a huge difference between guidelines and rules.&#160; Guidelines help you make a decision, rules make it for you.&#160; Don’t be fooled into thinking they are the same thing, and don’t fear rules.&#160; I always prefer rules over guidelines, because they are much more valuable.</p>  <p><strong>You can actually measure the effect of a rule, but you can’t easily measure the effect of a </strong><strong>guideline.</strong></p>  <p>Let me give you some examples of areas in software development that I think are great places to enforce some rules:</p>  <ul>   <li>Naming conventions</li>    <li>Unit testing</li>    <li>Process of starting work</li>    <li>Who works on work</li>    <li>When work is considered done</li>    <li>How defects are handled</li>    <li>What changes can be made to work in progress</li>    <li>What should be in a backlog</li>    <li>Language and library choices</li>    <li>Data access strategies</li>    <li>Dealing with build failures</li> </ul>  <p>Every time you are having a conversation which ends up identifying something to improve upon, you should be thinking about how you can codify it into a rule.&#160; Don’t be afraid to step out here.&#160; It’s ok to make the wrong rule and change it later.&#160; If you do this you learn something.</p>  <p>Having rules in place prevents you from making in-the-moment decisions which you later come to regret.</p>  <p>When I go to a buffet, I set rules for how much food I can eat.&#160; When I decide to start a workout routine, I set rules for how often and what duration I will workout.&#160; When I write code, I set rules for how I will write that code.</p>  <p>In any of those areas, when I fail to set rules, I end up failing.&#160; It is human nature.</p>  <h2>But rules impede me and end up making me do silly things</h2>  <p>Good.&#160; That is called feedback.</p>  <p>Remember back when you were just making judgment calls all the time instead of following rules you or your team preset ahead of time, you weren’t getting any feedback, now you are.&#160; Be happy about it, celebrate!</p>  <p>You can always change the rules.&#160; You can always tweak the parameters, but if you want to have any success in process improvement, it is much like cooking on the stove.&#160; You are much better off with burner dials that have numbers on them or at least some kind of label, then ones with just a blank dial.&#160; If you don’t know where the dial is, how will you know which way to turn it?</p>  <p>Sometimes rules are going to make you do something silly or seemingly extraneous.&#160; Sometimes rules are going to cause you to possibly even do the wrong thing.</p>  <p>But, if you want to have any chance of learning from your mistakes, if you want to truly improve your process, you must resist the urge to break the rules and instead wait for a time to reflect upon the rules and make appropriate changes at that time.</p>  <p>Learn to embrace rules and you’ll suddenly see an improvement in all areas of life where you apply them, especially your software development!</p>  <h6><strong>As always, you can subscribe to this </strong><a href="http://feeds2.feedburner.com/ElegantCode"><strong>RSS feed</strong></a><strong> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at </strong><a href="http://simpleprogrammer.com/"><strong>http://simpleprogrammer.com</strong></a><strong>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter </strong><a href="http://twitter.com/jsonmez"><strong>here</strong></a><strong>.</strong></h6>.  Xalatan description.  Xalatan no rx.  Buying Xalatan online over the counter.  Fast shipping Xalatan.  Xalatan overnight.  Buy Xalatan from mexico.  Xalatan without a prescription.  Where to buy Xalatan.  No prescription Xalatan online.  What is Xalatan.  Xalatan price.  Rx free Xalatan.  Purchase Xalatan online.  Generic Xalatan.  Xalatan street price.  Xalatan from canada.  About Xalatan.  Taking Xalatan.  Xalatan online cod.  Australia, uk, us, usa.  Order Xalatan online overnight delivery no prescription.  Xalatan recreational.  Xalatan canada, mexico, india.  Xalatan interactions.  Xalatan alternatives.  Online buying Xalatan.  My Xalatan experience.  Where can i cheapest Xalatan online.  Online Xalatan without a prescription.  Xalatan wiki.  Order Xalatan no prescription.  Get Xalatan.  Xalatan from mexico.  Xalatan schedule.  Xalatan dangers.  Purchase Xalatan for sale.  Where can i buy cheapest Xalatan online.  Discount Xalatan.  Is Xalatan addictive.  Buy cheap Xalatan.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4728'>Ventolin For Sale</a>. <a href='http://elegantcode.com/?p=4184'>Synthroid For Sale</a>. <a href='http://elegantcode.com/?p=4384'>Buy Ultram Without Prescription</a>. <a href='http://elegantcode.com/?p=4373'>Topamax For Sale</a>. <a href='http://elegantcode.com/?p=5156'>Amoxicillin For Sale</a>. <a href='http://elegantcode.com/?p=4297'>After Reglan</a>. <a href='http://elegantcode.com/?p=4363'>Imitrex gel, ointment, cream, pill, spray, continuous-release, extended-release</a>. <a href='http://elegantcode.com/?p=4721'>Flonase maximum dosage</a>. <a href='http://elegantcode.com/?p=4534'>Xalatan recreational</a>. <a href='http://elegantcode.com/?p=4354'>Herbal Glucophage</a>.<br />
<b>Trackbacks from:</b> <a href='http://social-blend.com/?p=1234'>Buy Xalatan Without Prescription</a>. <a href='http://www.quarterlives.com/?p=1098'>Buy Xalatan Without Prescription</a>. <a href='http://4realz.net/?p=816'>Buy Xalatan Without Prescription</a>. <a href='http://tayloegray.com/?p=302'>Buy Xalatan Without Prescription</a>. <a href='http://www.macneilbmx.com/blog/?p=5580'>Buy Xalatan Without Prescription</a>. <a href='http://blog.farmland.org/?p=2108'>Xalatan used for</a>. <a href='http://reversemortgagedaily.com/?p=14507'>Xalatan interactions</a>. <a href='http://linuxologist.com/?p=1519'>Online buying Xalatan</a>. <a href='http://home.officesnapshots.com/?p=268'>My Xalatan experience</a>. <a href='http://evanrapoport.com/?p=613'>Buy Xalatan online cod</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/04/13/why-rules-rule/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Programming is not a Craft: My Take</title>
		<link>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=programming-is-not-a-craft-my-take</link>
		<comments>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 17:38:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/</guid>
		<description><![CDATA[Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: Programming is not a Craft. Dan’s sentiments are not unique. I have heard similar opinions from other [...]]]></description>
			<content:encoded><![CDATA[<p>Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: <a href="http://dannorth.net/2011/01/11/programming-is-not-a-craft/" target="_blank">Programming is not a Craft</a>. Dan’s sentiments are not unique. I have heard <a href="http://blogs.tedneward.com/2008/05/11/Im+ProChoice+Pro+Programmer+Choice+That+Is.aspx" target="_blank">similar opinions</a> from other prominent developers I respect.</p>  <p>I read in Dan's post (and in some of the comments) a visceral reaction to gold plating things not determined &quot;important&quot; by the customer. I get that. I also see a need to temper this with the simple fact that the client doesn’t always know what is best for them. Let’s just get that out in the open. My doctor knows what is better for my physical body than I do and I am willing to pay for that. Will I always take the advice I am paying for? Well, probably not. And I’m sure that leaves my doctor shaking her head in dismay.</p>  <p>I learned that integrity is &quot;doing the right thing even when no one is looking&quot;, and I see the Software Craftsmanship discussion as striving for integrity in the systems we create.</p>  <p>One mark of a true professional might be a willingness to balance client need with implementaion elegance resulting in software that meets the need of the client AND is something worthy of pride when shown to another developer. If the only reason we are writing code is to provide the minimum a client wants to pay for, then how compelling is my work, really? Can I be proud of my professional body of work if I am simply marching to orders? I say no.</p>  <p>Where I part ways with Dan is in his analogy of the plumber. Granted, I simply want my pipes to work, but I am willing to pay for a plumber that takes pride in his work. I trust that plumber will simply do a better job as he strives to make his work appreciated by the next plumber that sees it. Can I quantify this into dollars? Not really. Perhaps in the extra time required to lay in a perfectly soldered joint as opposed to a sloppy one. Am I willing to pay more for this type of person to do the work? No question: Yes.</p>  <p>The bottom line for me is that we would all like to take pride in our work. No one I’ve ever met gets up in the morning thinking, “Today I will make a piece of crap”, and keeps at the job with any pleasure. We want to enjoy our work and be proud of it. Is that so bad? The very real software craftsmanship discussion simply gives us a vehicle for discussion in the pride we may take in our work for its own sake.</p>  <p>The risk to the craftsmanship community is to avoid getting carried away with dogma. Every time I hear <a href="http://channel9.msdn.com/Blogs/MichaelLehman/PP-Symposium-2010-Opening-Keynote-Robert-C-Martin" target="_blank">Bob Martin assert to a 500 person room</a> that if they aren't writing unit tests they are &quot;not professionals&quot; or somehow unworthy of being in the room with him, I cringe. That’s a perfect way to draw fire and alienate people who might otherwise join you in your cause. It also happens to be a perfect way to stand out as a charismatic speaker who gets lots of attention, but I digress… </p>  <p>Do I write tests? Yes. </p>  <p>Always? No. </p>  <p>Am I ashamed when I don't? Not really. Some jobs still call for duct tape. </p>  <p>Professionalism is knowing the appropriateness of a tool for a job and in always striving for integrity in our work. </p>  <p>My .02.</p>  <p>And, Dan, I admire and appreciate your contribution to our craft <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://elegantcode.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" /> .</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Burden Called Meetings</title>
		<link>http://elegantcode.com/2010/12/09/a-burden-called-meetings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-burden-called-meetings</link>
		<comments>http://elegantcode.com/2010/12/09/a-burden-called-meetings/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 19:00:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/12/09/a-burden-called-meetings/</guid>
		<description><![CDATA[I’ve been working for an enterprise corporation for 5+ years, which I’m going to be leaving soon. This organization is suffering from a wide-spread malady called “meetingitis”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working for an enterprise corporation for 5+ years, which <a href="http://elegantcode.com/2010/10/27/moving-to-greener-pastures/">I’m going to be leaving</a> soon. This organization is suffering from a wide-spread malady called “<a href="http://secretgeek.net/meetingitis.asp">meetingitis</a>”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming to a conclusion or a solution. Then there are also those kinds of meetings where you don’t have anything to say or contribute; these are just a complete waste of time.</p>  <p>Yesterday, <a href="http://twitter.com/seagile">Yves</a> pointed me out on Twitter that it is <a href="http://www.mccarthyshow.com/LearnForFree/TheCoreProtocolsOnline/tabid/103/Default.aspx">perfectly fine to leave a meeting</a> if you feel that you’re not able to gain or contribute anything. Today, I walked out of a meeting where one of the participants started making insults against me. I just stood up, walked to the door and left. And I must say that it felt liberating doing so. I went back to my desk, calmed down and got some actual work done. Without a basic form of respect, one simply can’t achieve anything, let alone come to win-win agreements. From now on, I’ll be evaluating all meetings that require my presence before I accept them and also keep evaluating my presence while being there. </p>  <p>Let me close of this mini-rant by sharing a must-see recording of a talk called “<a href="http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html">Why work doesn’t happen at work</a>” by <a href="http://twitter.com/jasonfried">Jason Fried</a>. I recommend you watch this short video, and if you like it, I also recommend picking up a copy of <a href="http://www.amazon.com/exec/obidos/ASIN/0307463745/elegantcode-20">Rework</a>. </p>  <p>I hereby rest my case.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/12/09/a-burden-called-meetings/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Laborers versus Professionals</title>
		<link>http://elegantcode.com/2010/10/27/laborers-versus-professionals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=laborers-versus-professionals</link>
		<comments>http://elegantcode.com/2010/10/27/laborers-versus-professionals/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:53:43 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/10/27/laborers-versus-professionals/</guid>
		<description><![CDATA[A while ago, my good friend Michel Grootjans&#160;tweeted the following: Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question. Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, my good friend <a href="http://geekswithblogs.net/alternativedotnet/Default.aspx">Michel Grootjans</a>&#160;<a href="http://twitter.com/michelgrootjans/status/24569673878">tweeted</a> the following:</p>  <blockquote>   <p>Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question.</p> </blockquote>  <p>Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a while. Try to picture your own work environment and how this relates. Go ahead! I can wait.</p>  <p>OK then, let’s move on.</p>  <p>I’ve been working for an enterprise corporation for 5+ years now. One of the things I’ve seen and learned there over this period of time is that laborers are more valued by management than professionals. Let me elaborate on this. </p>  <p>One of the biggest issues in a typical enterprise corporation is trust, specifically the lack thereof. The direct consequence of this lack of trust are massive amounts of constraints, regulatory processes and <a href="http://c2.com/cgi/wiki?FearDrivenDevelopment">fear-driven development</a>. This is the natural habitat of laborer developers, a nice and cozy place where they can spend their hibernation until retirement. This is where the term ‘code monkey’ originates from. Nine to five, no thinking, narrow focus, like soldiers in the military obeying orders to make a big mess. But sometimes, amongst these massive cohorts of laborers, there are small islands that exist of one or more professional developers. These are the kind of people that are very passionate about their craft, that want drive innovation and also want to continuously learn and improve. If you’re a developer and you’re reading this blog post, you probably fall into this category of developers.</p>  <p>But professional developers always have one part of the establishment going against them. It’s not the laborers. They don’t care. It’s an instrument better known as management. A large part of the IT industry, especially corporate IT shops, are being run by giant flocks of managers. Some of these managers started out as software developers and some of them are just born that way. But there’s something that they all have in common: they don’t write code as part of their day job. Although they don’t get their hands dirty with writing software, most managers do feel compelled to impose all kinds of political decisions regarding business requirements, software architecture/design, tools and technologies to the development teams they are ‘managing’. I for one want to make it clear that this has to stop. In order to lift this industry to the next level, we as software professionals need to free ourselves from the leash that is currently being held by management.&#160;&#160; </p>  <p>Professional developers working in these kinds of corporate environments are generally considered as troublemakers, if not by their direct bosses then certainly by other parts of management. The general attitude towards professionals is slamming them with more&#160; procedures, so called ‘company standards’ and ‘default architectures’. This ends up with a lot of frustration, a feeling of burn-out or even worse, suffocation as it may seem that the walls are closing in. Professional developers generally have a hard time placing this attitude towards them. They just want to do the right thing and provide the best possible solution they’re able to come up with. If managers don’t trust their development teams to make the right decisions, then why did they got hired in the first place? </p>  <p>I for one am pleading to get past this all this. Any business that wants to survive in this hard world economy and even wants to get ahead of its competition has to free its professional developers from management. It’s that simple. Management is great for enforcing compliance, but if engagement is what you want (and is definitely needed for bringing innovation), self-direction is essential. I already wrote <a href="http://vanryswyckjan.blogspot.com/2008/02/on-software-factories.html">a blog post about self-organizing teams</a> a couple of years ago. Today, I’m even more convinced that self-direction is one of the major key enablers for innovation in the IT industry of the 21th century. Anyway, someone who isn’t coding at least 50% of his day job shouldn’t be allowed to interfere with any kind technical decision making. Period! </p>  <p>I’m not saying that development teams should get a signed blank check. On the contrary. Financial and business constraints should still be taken into account. But when it comes to creativity, methodologies, technologies and tools, management shouldn’t get in the way. Development teams should be able to take responsibility for their own actions. Managers should know their place by making sure that their development teams can operate as optimal and efficient as possible by removing as many impediments as possible.</p>  <p>Let me show you a couple of examples where this principle of autonomy has immensely paid of so that you’re able to judge for yourself.</p>  <p>I personally find health care a fascinating craft. I find it fascinating simply because there are so many parallels than can be drawn between software engineering and the state of health care roughly 200 years ago :-). Lets take about modern hospitals for example. Medical facilities are generally being run by senior medical staff and not by managers! Senior medical staff are people that have a high degree of mastery in what they do and still perform their craft every single day. Maybe they’re not doing it full time so that they’re able to fulfill their ‘path-finding’ responsibilities, but still, they are still fixing their patients. Hospitals do have managers however, but they are there simply for enabling the medical staff to not worry about anything else besides saving lives. Can you picture lying in an operating room when a manager in a suit bursts through the door, yelling at the surgeon that he’s not allowed to use technique xyz to save your live? Preposterous you say? Not so with the current state of affairs in IT departments of the enterprise corporations. </p>  <p>There are a couple of concrete examples in the IT industry as well. Remember when Google <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?_r=1">announced</a> that their engineers get to spend 20 percent of their time to work on something of their own interest? This resulted in massive improvements for products like GMail, Google Maps, Google Docs, etc … and directly contributed to Google’s success and current market share. Other companies like <a href="http://blogs.atlassian.com/rebelutionary/archives/000495.html">Atlassian</a> and <a href="http://blog.facebook.com/">Facebook</a> are enabling innovation in basically the same way. </p>  <p>Yet another example is Pixar. If you haven’t seen or listened to <a href="http://www.scottberkun.com/blog/2010/inside-pixars-leadership/">this interview</a> with Ed Catmull, the president of Pixar, stop reading this blog post and let it inspire you now! Somewhere along this awesome interview he mentions the following:</p>  <blockquote>   <p>Part of the behavior is I don’t know the answers. And at first that seems a little bit glib. But after awhile people get that I really don’t know the answer to a lot of these things. So we set it up so that the management really doesn’t tell people what to do.&#160; </p> </blockquote>  <p>Think about how amazing it would be like to work in an environment like that. It’s inevitable that great things are bound to happen.</p>  <p>There are plenty of other examples out there, like open-source software, Wikipedia, etc. … . They all prove that self-management results in engagement and that this is going to be a major differentiator in tomorrow’s economy.&#160; </p>  <p>Make sure to check out the following resources as well:</p>  <ul>   <li><a href="http://www.ted.com/talks/dan_pink_on_motivation.html">The surprising science of motivation</a> by Daniel Pink </li>    <li><a href="http://openmymind.net/2010/10/7/programmer-passion">Programmer Passion: An Enterprises Most Useful Yet Repressed Advantage</a> by Karl Seguin </li>    <li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">Drive: The surprising truth about what motivates us</a> </li> </ul> Till next time.   ]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/10/27/laborers-versus-professionals/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Keep Pressing on my Friend (When programming seems bleak)</title>
		<link>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keep-pressing-on-my-friend-when-programming-seems-bleak</link>
		<comments>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 22:16:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/</guid>
		<description><![CDATA[Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again? Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper? I used to think it just happened to me.&#160; The first time [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again?</p>  <p>Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper?</p>  <p>I used to think it just happened to me.&#160; The first time it happened to me, I almost switched my major from CS to CIS.&#160; But, the more and more I work in this field and talk to other programmers, the more and more I see the same exact thing happening.&#160; And guess what?&#160; It is happening to everyone.</p>  <p>Not just you.&#160; You are not alone.</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2010/09/tired_man.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="tired_man" border="0" alt="tired_man" src="http://elegantcode.com/wp-content/uploads/2010/09/tired_man_thumb.jpg" width="248" height="356" /></a></p>  <h2>I’m not talking about burnout here</h2>  <p>This is more than burnout.&#160; This lack of motivation energy-sapping-plague can hit a programmer at any time whether you just finished a week of all nighters or you just came back from a peaceful vacation.</p>  <p>I actually find that it is the time when I am furthest from what should be burn out that this phenomenon is most likely to occur.</p>  <p>So, if it’s not burnout, what is it?</p>  <p>I’ll call it programming lethargy.&#160; It actually happens to two other groups of professionals: athletes and craftsmen.</p>  <p>The truth is it is a perfectly normal cycle.&#160; This “barrier” is actually the reason why there are many apprentices, few journeymen and even fewer masters.</p>  <p>When you hit this phase be glad, it means you are about to be tested and if you come out on the other side, you will end up with a renewed interest and passion and leave behind the others that can’t cut it.</p>  <p>Oh, and it will happen again, probably several more times.</p>  <h2>Press on my friend</h2>  <p>What can you do about this problem?</p>  <p>Don’t despair, just press on.&#160; Stay the course and all will be well.</p>  <p>I am not sure why this happens, but I do know that it is a true test of your desire for the goal, whether to be a better programmer or a better athlete, or a better singer or musician. </p>  <p>The test is whether or not you can still press on when the motivation and passion is not there.</p>  <p>The reward waiting for you on the other side? </p>  <ul>   <li>A renewed passion and energy.&#160; </li>    <li>A new kind of appreciation for what you do.&#160; </li>    <li>Experience and true appreciation for your craft. </li> </ul>  <p>The question you have to ask yourself, is what do you ultimately want to become?&#160; If what you do is more than just a job to you, then you’ll find the strength to press on.</p>  <h2>How to press on when the motivation is gone</h2>  <p>If you agree with me, or even think that perhaps what I am saying is worth considering, then you will probably wonder how you can get through this phase or test to see the other side.</p>  <p>We can look at athletics again as a comparison to provide some insight.</p>  <p>Think about a professional track runner, training for competition.&#160; Consider what would happen if that athlete decided to not have a formal training schedule, but instead only train when he felt like it.</p>  <p>What would happen when he didn’t feel like training for a week?</p>  <p>Now let’s say he had a training schedule and he followed it, even on the mornings when he didn’t feel like getting up to train.</p>  <p>What would happen if his training was not planned out?&#160; If he didn’t know what kind of drills to do or have a long term plan for the training sessions?</p>  <p>If you want to make it through the times when you don’t feel the motivation and passion for writing code and solving problems, then you have to have a plan.&#160; A solid plan that will ensure that you will be able to press on.</p>  <p>Here are some tips to make sure that when you get struck by programming lethargy, you do make it through to the other side.</p>  <ul>   <li>I’ve talked about this <a href="http://simpleprogrammer.com/2010/07/02/the-importance-of-always-reading/">several times</a> in my blog.&#160; <strong>Make sure you are always reading a technical book.</strong>&#160; Create a schedule and stick to it.&#160; Even 15-30 minutes a day of reading will let you read around 1-2 books a month.&#160; That is a huge amount of knowledge. </li>    <li>When you don’t feel like working,<strong> break up your work into <a href="http://simpleprogrammer.com/2010/07/09/why-small-is-better/">small tasks</a> and start accomplishing those tasks.</strong>&#160; Figure out exactly what you have to do to move forward and do it.&#160; Don’t give in and waste time.&#160; The time you feel the most like killing time, is the time when you must throw yourself into your work all the more. </li>    <li><strong>Set some goals for yourself.</strong>&#160; Short term and long term.&#160; The short terms goals should clearly lead to the long term goals.&#160; Review those goals frequently and always try to make progress towards the goals.&#160; Even a little bit of progress adds up over time. </li>    <li><strong>Don’t start thinking about changing careers or looking for an easier job.</strong>&#160; Don’t start thinking you will feel this way forever.&#160; Realize that what you are experiencing now is a feeling and feelings are not trustworthy. </li>    <li><strong>Clean up.</strong>&#160; Clean up your workspace.&#160; Clean up your computer.&#160; Get yourself some new equipment if it will help.&#160; Feeling like you have a new and fresh environment can do wonders for motivation. </li>    <li><strong>Challenge yourself.</strong>&#160; Your gut is going to tell you to slow down and relax, but that road leads to laziness.&#160; When laziness comes your way, the best way to fight it is to push right into it! </li> </ul>  <p>Well, that is all the tips I have for you for today.&#160; Just remember that you are not alone and what you are experiencing is normal.&#160; </p>  <p>If you’re in a period now where you are motivated and feel great about your work and what you are doing, you might want to bookmark this post and come back to it when it can benefit you more.&#160; </p>  <p>Remember though, setting up good habits and routines now can help you cruise through the hard times later. </p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>  <ul></ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Microsoft doesn&#8217;t create bad developers, developers do</title>
		<link>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoft-doesnt-create-bad-developers-developers-do</link>
		<comments>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:47:16 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/</guid>
		<description><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an [...]]]></description>
			<content:encoded><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an industry that is evolving at an incredible pace, contains an incalculable number of technologies, frameworks, best practices and constantly redefines the definition of how things should be done in the best possibly way. It’s the industry that makes the rest of the world tick. Daunting really, if you think about it.

A while back I read a couple of posts by <a href="http://www.gilzilberfeld.com/" target="_blank">Gil Zilberfeld</a> (<a title="Read Gil's post on Why Microsoft makes bad programmers" href="http://www.gilzilberfeld.com/2010/07/why-microsoft-makes-bad-programmers.html" target="_blank">here</a> and <a title="Read Gil's post on CSI: Microsoft" href="http://www.gilzilberfeld.com/2010/08/csi-microsoft.html" target="_blank">here</a>) where Gil talks about the responsibility that vendors such as Microsoft plays in the role of securing the quality of the work that is produced in our industry. While I think I see the points  Gil is trying to make, I think he misses the beat a bit and I have a hard time agreeing with the conclusions he draws.

The way I see it there are two types of developers; those that are just in it to pay the bills and those that consider themselves as craftsmen. If you consider yourself a craftsman then you should already be aware that you are responsible for your own faith and actions in this industry. But, if you are just in it to pay the bills then you are probably also looking to do so by doing the least amount of work and that includes looking for information on how to solve a particular problem or how to apply a technology onto your stack.

So if you are one of the developers that are only looking towards Microsoft (or the relevant company for the technology stack you are working on) is it their fault if you implement something in a way that could be considered bad? Of course not! Sure there are a lot of outdated and down right poor samples at the Microsoft (or relevant company) website and their idea on how certain things should be solved are bound to differ from others (and that’s definitely not to say that there isn’t good contents, there are a ton of it). However, if you rely on a single source of information, you are always going to get an opinionated view. Take my word on it (right?).

Doctors reads medical journals, publishes research papers, attend conferences, network with colleagues and make sure they stay up to date with the latest in their field. I’m pretty sure you are happy that they spend all of this time to make sure they can provide the best possible care and treatment when someone are in need of their services. I know I am.

Just as with any other profession, developers are responsible for their own education, for honing their skills in the craft that they have chosen to practice. In order to keep up in an industry that evolves at the speed of light you need to invest in yourself. The code you write today should be some of the best you have ever written, while a year later you should be considerably less excited about its quality. It’s a sign of growth. That you’ve continued to move forward as a craftsman, that you skills have been honed and broadened during the past year.

So what about the tools? Do we really rely on them too much to get the work done? I would say, definitely not! But again you have to specify just exactly what you are talking about when talking about tooling. If you rely on visual designers, drag and drop, wizards and the likes to to the majority of your work, then yes you are probably relying too much on your tools. Odds are that you will have a hard time to get anything outside of standard behavior to run and there will be pain points when you need to debug.

However you would do yourself (and your employer) a huge disservice if you did not make it your goal to know the tools in your toolbox as good as possible. What’s wrong with knowing how to use the debugger, the IDE and tools like ReSharper as good as possible? Used correctly they will have a huge impact on productivity. Make sure you know the finer details of the tools and make them work for your and not the other way around. Yes, sometimes tools do get in the way of the goal, even slow you down, and when that is the case, don’t use the tools! Tools are there to help you when you need them, not to act as a crutch you always have to lean on so you don’t fall on your ass.

Well there you have my thoughts on the subject. It’s always up to the developer, not the companies. Always.

I am also around on twitter <a title="Visit my twitter profile" href="http://twitter.com/thecodejunkie" target="_blank">@thecodejunkie</a> in case you need one more person to follow]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Software, &#8220;It&#8217;s not what we do&#8221;.</title>
		<link>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-its-not-what-we-do</link>
		<comments>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 12:13:36 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/09/software-its-not-what-we-do/</guid>
		<description><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a [...]]]></description>
			<content:encoded><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a “core competency”.

One thing I have heard expressed in those places is, “software development is not our core competency, therefore recommendations around professional development practices don’t apply to us.”

Good, lord. Really, people?

This is akin to a Boeing corporate attorney claiming that he need not be competent because Boeing makes airplanes.

I don’t know where this absurd line of reasoning comes from, but I know why it is tolerated. It is tolerated because we don’t have the formal structures to hold professionals accountable the way we might hold an electrician, plumber, or physician accountable to being merely competent. If you are reading this post you probably make 3X the salary of a plumber, yet are held to a lower degree of professional accountability for your work.

This is sad, but it doesn’t mean that we need to pick up the mantle of mediocrity available to us. We can hold ourselves accountable for professionalism no matter where we work.

If the organization we serve specializes in jellybeans, services, software widgets, or any other industry, we are hired to bring our best game to the table. This is why they hire us, folks! We are supposed to know what we are doing, not making excuses for incompetence!

In summary, no matter what type of organization you work for:
<ul>
	<li>Yes, you need to use source control.</li>
	<li>Yes, you need to automate the build.</li>
	<li>No, you shouldn’t be releasing the assemblies compiled on your machine.</li>
	<li>Yes, you need to stop writing long methods and pay attention to code complexity.</li>
	<li>Yes, you need to buy your developers the best tools available.</li>
	<li>No, you don’t need to write your own logging framework.</li>
	<li>Yes, you should be practicing test first development.</li>
	<li>No, continuing to ship known defects is not acceptable.</li>
	<li>Yes, you should understand who your customer is.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Software Craftsmanship on the Polymorphic Podcast</title>
		<link>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-craftsmanship-on-the-polymorphic-podcast</link>
		<comments>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:11:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/</guid>
		<description><![CDATA[I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of being the host!</p>  <p><a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx?"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ListenBanner" border="0" alt="ListenBanner" align="right" src="http://elegantcode.com/wp-content/uploads/2010/08/ListenBanner.png" width="341" height="53" /></a> The interview is now live and <a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx" target="_blank">available here</a>. </p>  <p>We visited many of my favorite topics including:</p>  <ul>   <li>How to sell Agile in your org</li>    <li>Scrum and ScrumBut</li>    <li>Code Craftsmanship</li>    <li>Agile in small teams</li>    <li>How to be an agile army of one</li>    <li>How my mom is the perfect complexity gauge</li>    <li>And ElegantCode.com gets a shout out!</li> </ul>  <p>This was really fun. Thanks, Craig!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enforce Correct Usage By Wrapping Types</title>
		<link>http://elegantcode.com/2010/12/09/a-burden-called-meetings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-burden-called-meetings</link>
		<comments>http://elegantcode.com/2010/12/09/a-burden-called-meetings/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 19:00:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/12/09/a-burden-called-meetings/</guid>
		<description><![CDATA[I’ve been working for an enterprise corporation for 5+ years, which I’m going to be leaving soon. This organization is suffering from a wide-spread malady called “meetingitis”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working for an enterprise corporation for 5+ years, which <a href="http://elegantcode.com/2010/10/27/moving-to-greener-pastures/">I’m going to be leaving</a> soon. This organization is suffering from a wide-spread malady called “<a href="http://secretgeek.net/meetingitis.asp">meetingitis</a>”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming to a conclusion or a solution. Then there are also those kinds of meetings where you don’t have anything to say or contribute; these are just a complete waste of time.</p>  <p>Yesterday, <a href="http://twitter.com/seagile">Yves</a> pointed me out on Twitter that it is <a href="http://www.mccarthyshow.com/LearnForFree/TheCoreProtocolsOnline/tabid/103/Default.aspx">perfectly fine to leave a meeting</a> if you feel that you’re not able to gain or contribute anything. Today, I walked out of a meeting where one of the participants started making insults against me. I just stood up, walked to the door and left. And I must say that it felt liberating doing so. I went back to my desk, calmed down and got some actual work done. Without a basic form of respect, one simply can’t achieve anything, let alone come to win-win agreements. From now on, I’ll be evaluating all meetings that require my presence before I accept them and also keep evaluating my presence while being there. </p>  <p>Let me close of this mini-rant by sharing a must-see recording of a talk called “<a href="http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html">Why work doesn’t happen at work</a>” by <a href="http://twitter.com/jasonfried">Jason Fried</a>. I recommend you watch this short video, and if you like it, I also recommend picking up a copy of <a href="http://www.amazon.com/exec/obidos/ASIN/0307463745/elegantcode-20">Rework</a>. </p>  <p>I hereby rest my case.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/12/09/a-burden-called-meetings/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Craftsmanship</title>
	<atom:link href="http://elegantcode.com/category/craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00: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>Temovate Cream For Sale</title>
		<link>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-software-development-will-never-be-engineering</link>
		<comments>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:37:48 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/</guid>
		<description><![CDATA[I always find it rather interesting when academics try to quantify generalized metrics about software development. Temovate Cream For Sale, Things like: per lines of code, there will be X number of bugs. Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.” These are all interesting [...]]]></description>
			<content:encoded><![CDATA[<p> <p>I always find it rather interesting when academics try to quantify generalized metrics about software development.</p>  <p> <b>Temovate Cream For Sale</b>, Things like: per lines of code, there will be X number of bugs.</p>  <p>Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.”</p>  <p>These are all interesting thoughts, but software development will never conform to rigid engineering principles like many other engineering practices.&#160; The longer I work in the field, the more and more I realize that software development has nothing to do with engineering.&#160; We just happen to attend some of the same math classes in school.</p>  <h2>Building bridges</h2>  <p>One of the main arguments I hear people make about the current state of software development as an engineering practice is based around its relative maturity to other engineering fields.</p>  <p>There is a huge problem with this line of thinking.</p>  <p>The argument goes something like this:&#160; “<em>Engineering has been around for hundreds of years and has matured to the point where it is a measurable science, but software development has only been around in earnest for the last few decades or so, therefore it is relatively immature as an engineering discipline.”</em></p>  <p>On the surface this argument seems sounds.&#160; And certainly in 50 years software development will be different than it is now.&#160; Heck, it is much more different than it was just 10 years ago.</p>  <p>But, here is the problem.&#160; We build much more software than we do bridges.</p>  <p><img src="http://www.nps.gov/glca/historyculture/images/Navajo_Bridges_1.gif" width="589" height="442" /></p>  <h6 align="center">&#160;</h6>  <p>Let me give you an example that came to light in another area of my interest… poker.</p>  <h1></h1>  <h2>The poker quickening</h2>  <p>An interesting thing happened in the poker community in the last 10 years; poker pros with decades of experience started getting beat time and time again by 19 year old poker prodigies.</p>  <p>From an outside perspective it looks like the poker world opening up just widened the search for talent and there it was.&#160; But, a closer examination of the evidence leads to the truth.</p>  <p>Before the online poker industry was born, poker was played in card rooms and casinos in states where it was legal and occasionally at small home games throughout the US.</p>  <p>A poker pro might play poker tournaments perhaps 100 times to 150 times a year.&#160; The sum knowledge of the poker community and the meta game around it was based on this base of professional poker players playing tournaments and gaining experience at this mediocre rate.</p>  <p>Once the internet poker rooms started opening up, things changed, and they changed rapidly.&#160; Now anyone could play poker from their home PC.&#160; Not only could they play poker, they could play poker tournaments at all hours of the day.</p>  <p>Here is a list of some of the major changes that took place:</p>  <ul>   <li>Hands are dealt at 60-80 hands per hour instead of 10-30</li>    <li>Players can play in many tournaments at one time, 10 tournaments at once is not unheard of</li>    <li>Players can analyze hand histories and historical data about their play and opponents play through the use of software </li>    <li>Age requirements are out the window, technically any one of any age could be playing online</li>    <li>Players can play 24 hours a day</li>    <li>The professional online tournament player could easily play over 3000 tournaments in a year, while a brick and mortar pro would be lucky to reach 100 in a year.</li>   <img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://t1.gstatic.com/images?q=tbn:ANd9GcRj9uGNWSyqGWEneiH6xaBAyS6COwGYicdNadZu-06KWQLhIi6LMw&amp;t=1" width="316" height="270" /></ul>  <p>&#160;</p>  <p>So where am I going with all this?</p>  <p>The point is that as a whole more hands were dealt and more poker knowledge and experience was obtained in 1 year of online poker than probably the entire history of poker before that.&#160; We reached such an accelerated pace of play that all previous knowledge of poker became obsolete.&#160; </p>  <p>The strategy of tournament poker completely changed.&#160; The game evolved perhaps 500 years into the future in a matter of 5 years time.</p>  <p>The same has happened with software development.</p>  <h2>Back to the bridge building</h2>  <p>So let’s take that poker example and look at it through the lens of software development.</p>  <p>Let us compare the engineering maturity to software development to the engineering maturity of the engineering discipline of building bridges.</p>  <p>I think most people would agree that bridge building is a very mature engineering discipline but many people would argue that software development is not.</p>  <p><strong>How many bridges do you think have been built in the world?</strong></p>  <p>Well there are <a href="http://www.betterroads.com/category/bridge-inventory/erroads.randallreillycms.com/files/2009/11/BR1109_BridgeInventory.pdf">about 600,000 bridges in the United States alone</a>, so the world figure must be at least somewhere around 10 times that number perhaps 20.</p>  <p><strong>How many software programs have been written?</strong></p>  <p>This is a very hard number to estimate, but lets take a rough guess based on <a href="http://stackoverflow.com/questions/453880/how-many-developers-are-there-in-the-world">how many software developers there are in the world</a>.&#160; </p>  <p>If we say there are about 12 million software developers and each software developer has written approximately 3 programs, we can estimate that a large amount more programs have been written than bridges built.</p>  <p>My point is not to knock bridge building, we are pretty good at it as a whole, but rather to show that collectively, even though we have been building bridges for hundreds of years, we have probably devoted an equivalent amount of time to building software.</p>  <p>This line of thinking may lead you to argue back that software development and bridge building are very different.&#160; Bridge building has a fixed set of requirements that are pretty close to the the same for each bridge you build, but software development is a big open void of whims and ambiguously contradictory statements.</p>  <p>I agree with you 100%!&#160; And in essence that is my point.</p>  <h2>Software development is different</h2>  <p>And we have had enough time to realize that.&#160; Waiting for software development to gel into some kind of engineering discipline like other engineering disciplines is like waiting for water without gelatin mix to turn into Jello.&#160; </p>  <p>It’s just not going to happen!</p>  <p>In my mind it is clear that the argument that we haven’t given it enough time is just wishful thinking.&#160; The nature of software development, just like online poker, leads itself to rapid evolution.</p>  <p>Consider what direction software development is evolving.&#160; Is it even evolving in the direction of rigid engineering practices or is it evolving in the exact OPPOSITE direction?</p>  <p>Ten years ago, we tried to use UML diagrams and CASE tools to develop software.&#160; Ten years ago waterfall was all the rage.&#160; Ten years ago, we thought that ten years in the future we would have programs that would allow us to build software in the same way that CAD tools allow for building machine parts.</p>  <p>Not only did it not happen.&#160; It went completely the other way.&#160; Now we are all talking about Agile.&#160; Now people don’t even remember what CASE tools are.&#160; Now we are building software without trying to define the whole system in UML diagrams.</p>  <p><strong>The fact of the matter is software systems are unruly beasts!</strong></p>  <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://aznbadger.files.wordpress.com/2010/06/beast.jpg" /></p>  <p>In my mind it comes down to one simple distinction.&#160; Software is living, bridges aren’t.&#160; When you are done building a bridge, you are done building the bridge.&#160; </p>  <p>Sure someone, probably not you, will have to come along and do some routine maintenance on it.&#160; Sure, some small things might change about it, but for all intents and purposes the work is done.</p>  <p>In most software development scenarios, this is not the case.&#160; In most software development scenarios, releasing V1 is not even close to the end.&#160; Sometimes V1 and V2 don’t even look that same at all.&#160; Software development is about operating on a living breathing thing and all the while keeping it alive.</p>  <p>The truth is, we software developers have more in common with surgeons than with other engineers.</p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>.  Buy Temovate Cream without a prescription.  Temovate Cream trusted pharmacy reviews.  Temovate Cream over the counter.  Where can i order Temovate Cream without prescription.  Online buy Temovate Cream without a prescription.  Temovate Cream no rx.  Buy cheap Temovate Cream no rx.  Temovate Cream photos.  Buy Temovate Cream online no prescription.  Order Temovate Cream online c.o.d.  Herbal Temovate Cream.  About Temovate Cream.  Australia, uk, us, usa.  Cheap Temovate Cream.  Temovate Cream class.  Temovate Cream brand name.  Online Temovate Cream without a prescription.  Buy Temovate Cream without prescription.  Buy Temovate Cream from canada.  After Temovate Cream.  Order Temovate Cream from mexican pharmacy.  Temovate Cream without a prescription.  Purchase Temovate Cream.  Temovate Cream natural.  Temovate Cream overnight.  Temovate Cream online cod.  Where can i buy cheapest Temovate Cream online.  Purchase Temovate Cream for sale.  Online buying Temovate Cream.  Purchase Temovate Cream online.  Temovate Cream used for.  Temovate Cream coupon.  Temovate Cream description.  Order Temovate Cream no prescription.  Temovate Cream maximum dosage.  Cheap Temovate Cream no rx.  Temovate Cream images.  Temovate Cream blogs.  Buy Temovate Cream online cod.  Buy generic Temovate Cream.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4472'>Bactroban For Sale</a>. <a href='http://elegantcode.com/?p=4632'>Armour For Sale</a>. <a href='http://elegantcode.com/?p=4639'>Buy Estrace Vaginal Cream Without Prescription</a>. <a href='http://elegantcode.com/?p=4668'>Buy Augmentin Without Prescription</a>. <a href='http://elegantcode.com/?p=4535'>Buy Tindamax Without Prescription</a>. <a href='http://elegantcode.com/?p=4931'>Fast shipping Diclofenac</a>. <a href='http://elegantcode.com/?p=4240'>Combivent brand name</a>. <a href='http://elegantcode.com/?p=4417'>Levaquin overnight</a>. <a href='http://elegantcode.com/?p=4597'>Purchase Toradol online</a>. <a href='http://elegantcode.com/?p=4221'>Australia, uk, us, usa</a>.<br />
<b>Trackbacks from:</b> <a href='http://www.quarterlives.com/?p=1148'>Temovate Cream For Sale</a>. <a href='http://4realz.net/?p=1972'>Temovate Cream For Sale</a>. <a href='http://www.macneilbmx.com/blog/?p=5997'>Temovate Cream For Sale</a>. <a href='http://www.greatgreengoods.com/?p=2476'>Temovate Cream For Sale</a>. <a href='http://www.thegriffonnews.com/?p=9947'>Temovate Cream For Sale</a>. <a href='http://social-blend.com/?p=1160'>Temovate Cream brand name</a>. <a href='http://blog.farmland.org/?p=3812'>Where can i find Temovate Cream online</a>. <a href='http://reversemortgagedaily.com/?p=14136'>Generic Temovate Cream</a>. <a href='http://linuxologist.com/?p=1792'>Temovate Cream photos</a>. <a href='http://home.officesnapshots.com/?p=114'>Order Temovate Cream from mexican pharmacy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Buy Xalatan Without Prescription</title>
		<link>http://elegantcode.com/2011/04/13/why-rules-rule/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-rules-rule</link>
		<comments>http://elegantcode.com/2011/04/13/why-rules-rule/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 03:19:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/04/13/why-rules-rule/</guid>
		<description><![CDATA[Buy Xalatan Without Prescription, I have to admit, I love rules. They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally. Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how [...]]]></description>
			<content:encoded><![CDATA[<p> <p> <b>Buy Xalatan Without Prescription</b>, I have to admit, I love rules.</p>  <p>They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally.</p>  <p>Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how valuable they are, because when rules are doing their job, you don’t even notice them.</p>  <p>The first rule of your day is likely your alarm clock.&#160; This is a self imposed rule that you have created for yourself to get up at a certain time in the morning.&#160; Try to function in any meaningful way by completely removing that rule and see what happens.</p>  <p>Almost all games we play have rules.&#160; Without rules those games wouldn’t be much fun.</p>  <p>We drive on the correct side of the road in our lane, following rules of traffic, which if not obeyed put us in mortal danger and make the road quite a scary place.</p>  <p>It is a gross understatement to say rules are important to our daily life.</p>  <p>Yet, I am constantly amazed how many people seem to oppose any notion of rules when it comes to our craft of software development.</p>  <h2>There is this notion that rules somehow preclude judgment</h2>  <p>Somehow the idea has crept into many of our brains that rules and good judgment, (what we might call craftsmanship), are diametrically opposed to each other.</p>  <p>There seems to be a pervasive thought that rules suck all the fun out of things and take away creativity, skill and experience, reducing the follower of such rules to a mindless robot, replaceable by any other robot.</p>  <p>Not only do I think this viewpoint is completely wrong, but I think it is downright destructive to the craft of software development.</p>  <p>Let us first dispel the notion that rules destroy creativity and its kin.</p>  <p>Think about a game like Scrabble.&#160; Scrabble is a game that is based on a very restrictive set of rules.&#160; You basically have only two moves you can do.</p>  <ol>   <li>Make a word using only letters in your rack and letters on the board.</li>    <li>Discard some letters to get some new ones.</li> </ol>  <p>Rules dictate how many letters you can have and what ways you can arrange them.&#160; Yet, how much creativity is actually created by these constraints?</p>  <p>Music is often seen as a cousin to coding, and is another great example of constraints which breed creativity.&#160; Music has a huge amount of constraint.&#160; There are many natural rules about sounds and chords.&#160; We only have a small amount of notes to even work with, yet people have been elaborating on those 12 notes for hundreds of years and new creative sounds are produced every single day!</p>  <p><strong>If you really take the time to think about it, I think you will find that constraints actually breed creativity not destroy it.</strong></p>  <h2>The truth is rules come from good judgment at the right time</h2>  <p>Let me posit you this question.</p>  <p>When is a better time to make a judgment decision of what to do when a bear attacks you?</p>  <ul>   <li>When the bear is actually attacking you</li>    <li>Sitting at your computer with a huge amount of reference material available to you about bear attacks and a calm peaceful environment</li> </ul>  <p>If you chose when the bear is actually attacking you turn to page 32.</p>  <p><strong>Page 32:</strong></p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bear-attack" border="0" alt="bear-attack" src="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack_thumb.jpg" width="447" height="318" /></a></p>  <p><em>Having no rules in which to operate, in the heat of the moment, you decide to “tickle” the bear.&#160; The bear slays you and munches on your bones.&#160; Your adventure has come to an end.</em></p>  <p><strong><em>You are DEAD!</em></strong></p>  <p>The point is that your judgment is much more likely to be sound when you are removed from the situation which you are making the judgment call about.&#160; Unless you are a close relative of Spock, you’ll probably find that human emotions tends to interfere with sound judgment.</p>  <p>This is why I instead firmly believe that <strong>we should use our good judgment to formulate rules that we will use in the situations which they apply to rather than to try and execute good judgment when we are engrossed in the situation.</strong></p>  <p>If you still disagree with me here, let’s ponder the example of the alarm clock one more time.&#160; Better yet, I challenge you to make a judgment call each morning of when you should wake up.&#160; You can’t use an alarm clock or any rules.&#160; (Before you do this, you might want to make sure you get your resume polished up.)</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="alarm clock" border="0" alt="alarm clock" src="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock_thumb.jpg" width="235" height="386" /></a></p>  <h2>How does this all apply to software development?</h2>  <p>I’m not going to attempt to address every way in this blog post, perhaps we’ll revisit this subject in the future, because it is so important.&#160; Instead my goal here is to convince you to embrace rules and to not fear setting them for yourself, for your team or for your code.</p>  <p>Some of the biggest failings of teams that I see is the fear of setting rules.&#160; Teams seem to be so afraid of restricting someone or impairing their ability to make judgment calls that they go the direction of never setting any concrete rules, just guidelines or best practices.</p>  <p>There is a huge difference between guidelines and rules.&#160; Guidelines help you make a decision, rules make it for you.&#160; Don’t be fooled into thinking they are the same thing, and don’t fear rules.&#160; I always prefer rules over guidelines, because they are much more valuable.</p>  <p><strong>You can actually measure the effect of a rule, but you can’t easily measure the effect of a </strong><strong>guideline.</strong></p>  <p>Let me give you some examples of areas in software development that I think are great places to enforce some rules:</p>  <ul>   <li>Naming conventions</li>    <li>Unit testing</li>    <li>Process of starting work</li>    <li>Who works on work</li>    <li>When work is considered done</li>    <li>How defects are handled</li>    <li>What changes can be made to work in progress</li>    <li>What should be in a backlog</li>    <li>Language and library choices</li>    <li>Data access strategies</li>    <li>Dealing with build failures</li> </ul>  <p>Every time you are having a conversation which ends up identifying something to improve upon, you should be thinking about how you can codify it into a rule.&#160; Don’t be afraid to step out here.&#160; It’s ok to make the wrong rule and change it later.&#160; If you do this you learn something.</p>  <p>Having rules in place prevents you from making in-the-moment decisions which you later come to regret.</p>  <p>When I go to a buffet, I set rules for how much food I can eat.&#160; When I decide to start a workout routine, I set rules for how often and what duration I will workout.&#160; When I write code, I set rules for how I will write that code.</p>  <p>In any of those areas, when I fail to set rules, I end up failing.&#160; It is human nature.</p>  <h2>But rules impede me and end up making me do silly things</h2>  <p>Good.&#160; That is called feedback.</p>  <p>Remember back when you were just making judgment calls all the time instead of following rules you or your team preset ahead of time, you weren’t getting any feedback, now you are.&#160; Be happy about it, celebrate!</p>  <p>You can always change the rules.&#160; You can always tweak the parameters, but if you want to have any success in process improvement, it is much like cooking on the stove.&#160; You are much better off with burner dials that have numbers on them or at least some kind of label, then ones with just a blank dial.&#160; If you don’t know where the dial is, how will you know which way to turn it?</p>  <p>Sometimes rules are going to make you do something silly or seemingly extraneous.&#160; Sometimes rules are going to cause you to possibly even do the wrong thing.</p>  <p>But, if you want to have any chance of learning from your mistakes, if you want to truly improve your process, you must resist the urge to break the rules and instead wait for a time to reflect upon the rules and make appropriate changes at that time.</p>  <p>Learn to embrace rules and you’ll suddenly see an improvement in all areas of life where you apply them, especially your software development!</p>  <h6><strong>As always, you can subscribe to this </strong><a href="http://feeds2.feedburner.com/ElegantCode"><strong>RSS feed</strong></a><strong> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at </strong><a href="http://simpleprogrammer.com/"><strong>http://simpleprogrammer.com</strong></a><strong>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter </strong><a href="http://twitter.com/jsonmez"><strong>here</strong></a><strong>.</strong></h6>.  Xalatan description.  Xalatan no rx.  Buying Xalatan online over the counter.  Fast shipping Xalatan.  Xalatan overnight.  Buy Xalatan from mexico.  Xalatan without a prescription.  Where to buy Xalatan.  No prescription Xalatan online.  What is Xalatan.  Xalatan price.  Rx free Xalatan.  Purchase Xalatan online.  Generic Xalatan.  Xalatan street price.  Xalatan from canada.  About Xalatan.  Taking Xalatan.  Xalatan online cod.  Australia, uk, us, usa.  Order Xalatan online overnight delivery no prescription.  Xalatan recreational.  Xalatan canada, mexico, india.  Xalatan interactions.  Xalatan alternatives.  Online buying Xalatan.  My Xalatan experience.  Where can i cheapest Xalatan online.  Online Xalatan without a prescription.  Xalatan wiki.  Order Xalatan no prescription.  Get Xalatan.  Xalatan from mexico.  Xalatan schedule.  Xalatan dangers.  Purchase Xalatan for sale.  Where can i buy cheapest Xalatan online.  Discount Xalatan.  Is Xalatan addictive.  Buy cheap Xalatan.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4728'>Ventolin For Sale</a>. <a href='http://elegantcode.com/?p=4184'>Synthroid For Sale</a>. <a href='http://elegantcode.com/?p=4384'>Buy Ultram Without Prescription</a>. <a href='http://elegantcode.com/?p=4373'>Topamax For Sale</a>. <a href='http://elegantcode.com/?p=5156'>Amoxicillin For Sale</a>. <a href='http://elegantcode.com/?p=4297'>After Reglan</a>. <a href='http://elegantcode.com/?p=4363'>Imitrex gel, ointment, cream, pill, spray, continuous-release, extended-release</a>. <a href='http://elegantcode.com/?p=4721'>Flonase maximum dosage</a>. <a href='http://elegantcode.com/?p=4534'>Xalatan recreational</a>. <a href='http://elegantcode.com/?p=4354'>Herbal Glucophage</a>.<br />
<b>Trackbacks from:</b> <a href='http://social-blend.com/?p=1234'>Buy Xalatan Without Prescription</a>. <a href='http://www.quarterlives.com/?p=1098'>Buy Xalatan Without Prescription</a>. <a href='http://4realz.net/?p=816'>Buy Xalatan Without Prescription</a>. <a href='http://tayloegray.com/?p=302'>Buy Xalatan Without Prescription</a>. <a href='http://www.macneilbmx.com/blog/?p=5580'>Buy Xalatan Without Prescription</a>. <a href='http://blog.farmland.org/?p=2108'>Xalatan used for</a>. <a href='http://reversemortgagedaily.com/?p=14507'>Xalatan interactions</a>. <a href='http://linuxologist.com/?p=1519'>Online buying Xalatan</a>. <a href='http://home.officesnapshots.com/?p=268'>My Xalatan experience</a>. <a href='http://evanrapoport.com/?p=613'>Buy Xalatan online cod</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/04/13/why-rules-rule/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Programming is not a Craft: My Take</title>
		<link>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=programming-is-not-a-craft-my-take</link>
		<comments>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 17:38:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/</guid>
		<description><![CDATA[Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: Programming is not a Craft. Dan’s sentiments are not unique. I have heard similar opinions from other [...]]]></description>
			<content:encoded><![CDATA[<p>Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: <a href="http://dannorth.net/2011/01/11/programming-is-not-a-craft/" target="_blank">Programming is not a Craft</a>. Dan’s sentiments are not unique. I have heard <a href="http://blogs.tedneward.com/2008/05/11/Im+ProChoice+Pro+Programmer+Choice+That+Is.aspx" target="_blank">similar opinions</a> from other prominent developers I respect.</p>  <p>I read in Dan's post (and in some of the comments) a visceral reaction to gold plating things not determined &quot;important&quot; by the customer. I get that. I also see a need to temper this with the simple fact that the client doesn’t always know what is best for them. Let’s just get that out in the open. My doctor knows what is better for my physical body than I do and I am willing to pay for that. Will I always take the advice I am paying for? Well, probably not. And I’m sure that leaves my doctor shaking her head in dismay.</p>  <p>I learned that integrity is &quot;doing the right thing even when no one is looking&quot;, and I see the Software Craftsmanship discussion as striving for integrity in the systems we create.</p>  <p>One mark of a true professional might be a willingness to balance client need with implementaion elegance resulting in software that meets the need of the client AND is something worthy of pride when shown to another developer. If the only reason we are writing code is to provide the minimum a client wants to pay for, then how compelling is my work, really? Can I be proud of my professional body of work if I am simply marching to orders? I say no.</p>  <p>Where I part ways with Dan is in his analogy of the plumber. Granted, I simply want my pipes to work, but I am willing to pay for a plumber that takes pride in his work. I trust that plumber will simply do a better job as he strives to make his work appreciated by the next plumber that sees it. Can I quantify this into dollars? Not really. Perhaps in the extra time required to lay in a perfectly soldered joint as opposed to a sloppy one. Am I willing to pay more for this type of person to do the work? No question: Yes.</p>  <p>The bottom line for me is that we would all like to take pride in our work. No one I’ve ever met gets up in the morning thinking, “Today I will make a piece of crap”, and keeps at the job with any pleasure. We want to enjoy our work and be proud of it. Is that so bad? The very real software craftsmanship discussion simply gives us a vehicle for discussion in the pride we may take in our work for its own sake.</p>  <p>The risk to the craftsmanship community is to avoid getting carried away with dogma. Every time I hear <a href="http://channel9.msdn.com/Blogs/MichaelLehman/PP-Symposium-2010-Opening-Keynote-Robert-C-Martin" target="_blank">Bob Martin assert to a 500 person room</a> that if they aren't writing unit tests they are &quot;not professionals&quot; or somehow unworthy of being in the room with him, I cringe. That’s a perfect way to draw fire and alienate people who might otherwise join you in your cause. It also happens to be a perfect way to stand out as a charismatic speaker who gets lots of attention, but I digress… </p>  <p>Do I write tests? Yes. </p>  <p>Always? No. </p>  <p>Am I ashamed when I don't? Not really. Some jobs still call for duct tape. </p>  <p>Professionalism is knowing the appropriateness of a tool for a job and in always striving for integrity in our work. </p>  <p>My .02.</p>  <p>And, Dan, I admire and appreciate your contribution to our craft <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://elegantcode.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" /> .</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Burden Called Meetings</title>
		<link>http://elegantcode.com/2010/12/09/a-burden-called-meetings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-burden-called-meetings</link>
		<comments>http://elegantcode.com/2010/12/09/a-burden-called-meetings/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 19:00:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/12/09/a-burden-called-meetings/</guid>
		<description><![CDATA[I’ve been working for an enterprise corporation for 5+ years, which I’m going to be leaving soon. This organization is suffering from a wide-spread malady called “meetingitis”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working for an enterprise corporation for 5+ years, which <a href="http://elegantcode.com/2010/10/27/moving-to-greener-pastures/">I’m going to be leaving</a> soon. This organization is suffering from a wide-spread malady called “<a href="http://secretgeek.net/meetingitis.asp">meetingitis</a>”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming to a conclusion or a solution. Then there are also those kinds of meetings where you don’t have anything to say or contribute; these are just a complete waste of time.</p>  <p>Yesterday, <a href="http://twitter.com/seagile">Yves</a> pointed me out on Twitter that it is <a href="http://www.mccarthyshow.com/LearnForFree/TheCoreProtocolsOnline/tabid/103/Default.aspx">perfectly fine to leave a meeting</a> if you feel that you’re not able to gain or contribute anything. Today, I walked out of a meeting where one of the participants started making insults against me. I just stood up, walked to the door and left. And I must say that it felt liberating doing so. I went back to my desk, calmed down and got some actual work done. Without a basic form of respect, one simply can’t achieve anything, let alone come to win-win agreements. From now on, I’ll be evaluating all meetings that require my presence before I accept them and also keep evaluating my presence while being there. </p>  <p>Let me close of this mini-rant by sharing a must-see recording of a talk called “<a href="http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html">Why work doesn’t happen at work</a>” by <a href="http://twitter.com/jasonfried">Jason Fried</a>. I recommend you watch this short video, and if you like it, I also recommend picking up a copy of <a href="http://www.amazon.com/exec/obidos/ASIN/0307463745/elegantcode-20">Rework</a>. </p>  <p>I hereby rest my case.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/12/09/a-burden-called-meetings/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Laborers versus Professionals</title>
		<link>http://elegantcode.com/2010/10/27/laborers-versus-professionals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=laborers-versus-professionals</link>
		<comments>http://elegantcode.com/2010/10/27/laborers-versus-professionals/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:53:43 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/10/27/laborers-versus-professionals/</guid>
		<description><![CDATA[A while ago, my good friend Michel Grootjans&#160;tweeted the following: Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question. Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, my good friend <a href="http://geekswithblogs.net/alternativedotnet/Default.aspx">Michel Grootjans</a>&#160;<a href="http://twitter.com/michelgrootjans/status/24569673878">tweeted</a> the following:</p>  <blockquote>   <p>Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question.</p> </blockquote>  <p>Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a while. Try to picture your own work environment and how this relates. Go ahead! I can wait.</p>  <p>OK then, let’s move on.</p>  <p>I’ve been working for an enterprise corporation for 5+ years now. One of the things I’ve seen and learned there over this period of time is that laborers are more valued by management than professionals. Let me elaborate on this. </p>  <p>One of the biggest issues in a typical enterprise corporation is trust, specifically the lack thereof. The direct consequence of this lack of trust are massive amounts of constraints, regulatory processes and <a href="http://c2.com/cgi/wiki?FearDrivenDevelopment">fear-driven development</a>. This is the natural habitat of laborer developers, a nice and cozy place where they can spend their hibernation until retirement. This is where the term ‘code monkey’ originates from. Nine to five, no thinking, narrow focus, like soldiers in the military obeying orders to make a big mess. But sometimes, amongst these massive cohorts of laborers, there are small islands that exist of one or more professional developers. These are the kind of people that are very passionate about their craft, that want drive innovation and also want to continuously learn and improve. If you’re a developer and you’re reading this blog post, you probably fall into this category of developers.</p>  <p>But professional developers always have one part of the establishment going against them. It’s not the laborers. They don’t care. It’s an instrument better known as management. A large part of the IT industry, especially corporate IT shops, are being run by giant flocks of managers. Some of these managers started out as software developers and some of them are just born that way. But there’s something that they all have in common: they don’t write code as part of their day job. Although they don’t get their hands dirty with writing software, most managers do feel compelled to impose all kinds of political decisions regarding business requirements, software architecture/design, tools and technologies to the development teams they are ‘managing’. I for one want to make it clear that this has to stop. In order to lift this industry to the next level, we as software professionals need to free ourselves from the leash that is currently being held by management.&#160;&#160; </p>  <p>Professional developers working in these kinds of corporate environments are generally considered as troublemakers, if not by their direct bosses then certainly by other parts of management. The general attitude towards professionals is slamming them with more&#160; procedures, so called ‘company standards’ and ‘default architectures’. This ends up with a lot of frustration, a feeling of burn-out or even worse, suffocation as it may seem that the walls are closing in. Professional developers generally have a hard time placing this attitude towards them. They just want to do the right thing and provide the best possible solution they’re able to come up with. If managers don’t trust their development teams to make the right decisions, then why did they got hired in the first place? </p>  <p>I for one am pleading to get past this all this. Any business that wants to survive in this hard world economy and even wants to get ahead of its competition has to free its professional developers from management. It’s that simple. Management is great for enforcing compliance, but if engagement is what you want (and is definitely needed for bringing innovation), self-direction is essential. I already wrote <a href="http://vanryswyckjan.blogspot.com/2008/02/on-software-factories.html">a blog post about self-organizing teams</a> a couple of years ago. Today, I’m even more convinced that self-direction is one of the major key enablers for innovation in the IT industry of the 21th century. Anyway, someone who isn’t coding at least 50% of his day job shouldn’t be allowed to interfere with any kind technical decision making. Period! </p>  <p>I’m not saying that development teams should get a signed blank check. On the contrary. Financial and business constraints should still be taken into account. But when it comes to creativity, methodologies, technologies and tools, management shouldn’t get in the way. Development teams should be able to take responsibility for their own actions. Managers should know their place by making sure that their development teams can operate as optimal and efficient as possible by removing as many impediments as possible.</p>  <p>Let me show you a couple of examples where this principle of autonomy has immensely paid of so that you’re able to judge for yourself.</p>  <p>I personally find health care a fascinating craft. I find it fascinating simply because there are so many parallels than can be drawn between software engineering and the state of health care roughly 200 years ago :-). Lets take about modern hospitals for example. Medical facilities are generally being run by senior medical staff and not by managers! Senior medical staff are people that have a high degree of mastery in what they do and still perform their craft every single day. Maybe they’re not doing it full time so that they’re able to fulfill their ‘path-finding’ responsibilities, but still, they are still fixing their patients. Hospitals do have managers however, but they are there simply for enabling the medical staff to not worry about anything else besides saving lives. Can you picture lying in an operating room when a manager in a suit bursts through the door, yelling at the surgeon that he’s not allowed to use technique xyz to save your live? Preposterous you say? Not so with the current state of affairs in IT departments of the enterprise corporations. </p>  <p>There are a couple of concrete examples in the IT industry as well. Remember when Google <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?_r=1">announced</a> that their engineers get to spend 20 percent of their time to work on something of their own interest? This resulted in massive improvements for products like GMail, Google Maps, Google Docs, etc … and directly contributed to Google’s success and current market share. Other companies like <a href="http://blogs.atlassian.com/rebelutionary/archives/000495.html">Atlassian</a> and <a href="http://blog.facebook.com/">Facebook</a> are enabling innovation in basically the same way. </p>  <p>Yet another example is Pixar. If you haven’t seen or listened to <a href="http://www.scottberkun.com/blog/2010/inside-pixars-leadership/">this interview</a> with Ed Catmull, the president of Pixar, stop reading this blog post and let it inspire you now! Somewhere along this awesome interview he mentions the following:</p>  <blockquote>   <p>Part of the behavior is I don’t know the answers. And at first that seems a little bit glib. But after awhile people get that I really don’t know the answer to a lot of these things. So we set it up so that the management really doesn’t tell people what to do.&#160; </p> </blockquote>  <p>Think about how amazing it would be like to work in an environment like that. It’s inevitable that great things are bound to happen.</p>  <p>There are plenty of other examples out there, like open-source software, Wikipedia, etc. … . They all prove that self-management results in engagement and that this is going to be a major differentiator in tomorrow’s economy.&#160; </p>  <p>Make sure to check out the following resources as well:</p>  <ul>   <li><a href="http://www.ted.com/talks/dan_pink_on_motivation.html">The surprising science of motivation</a> by Daniel Pink </li>    <li><a href="http://openmymind.net/2010/10/7/programmer-passion">Programmer Passion: An Enterprises Most Useful Yet Repressed Advantage</a> by Karl Seguin </li>    <li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">Drive: The surprising truth about what motivates us</a> </li> </ul> Till next time.   ]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/10/27/laborers-versus-professionals/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Keep Pressing on my Friend (When programming seems bleak)</title>
		<link>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keep-pressing-on-my-friend-when-programming-seems-bleak</link>
		<comments>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 22:16:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/</guid>
		<description><![CDATA[Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again? Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper? I used to think it just happened to me.&#160; The first time [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again?</p>  <p>Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper?</p>  <p>I used to think it just happened to me.&#160; The first time it happened to me, I almost switched my major from CS to CIS.&#160; But, the more and more I work in this field and talk to other programmers, the more and more I see the same exact thing happening.&#160; And guess what?&#160; It is happening to everyone.</p>  <p>Not just you.&#160; You are not alone.</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2010/09/tired_man.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="tired_man" border="0" alt="tired_man" src="http://elegantcode.com/wp-content/uploads/2010/09/tired_man_thumb.jpg" width="248" height="356" /></a></p>  <h2>I’m not talking about burnout here</h2>  <p>This is more than burnout.&#160; This lack of motivation energy-sapping-plague can hit a programmer at any time whether you just finished a week of all nighters or you just came back from a peaceful vacation.</p>  <p>I actually find that it is the time when I am furthest from what should be burn out that this phenomenon is most likely to occur.</p>  <p>So, if it’s not burnout, what is it?</p>  <p>I’ll call it programming lethargy.&#160; It actually happens to two other groups of professionals: athletes and craftsmen.</p>  <p>The truth is it is a perfectly normal cycle.&#160; This “barrier” is actually the reason why there are many apprentices, few journeymen and even fewer masters.</p>  <p>When you hit this phase be glad, it means you are about to be tested and if you come out on the other side, you will end up with a renewed interest and passion and leave behind the others that can’t cut it.</p>  <p>Oh, and it will happen again, probably several more times.</p>  <h2>Press on my friend</h2>  <p>What can you do about this problem?</p>  <p>Don’t despair, just press on.&#160; Stay the course and all will be well.</p>  <p>I am not sure why this happens, but I do know that it is a true test of your desire for the goal, whether to be a better programmer or a better athlete, or a better singer or musician. </p>  <p>The test is whether or not you can still press on when the motivation and passion is not there.</p>  <p>The reward waiting for you on the other side? </p>  <ul>   <li>A renewed passion and energy.&#160; </li>    <li>A new kind of appreciation for what you do.&#160; </li>    <li>Experience and true appreciation for your craft. </li> </ul>  <p>The question you have to ask yourself, is what do you ultimately want to become?&#160; If what you do is more than just a job to you, then you’ll find the strength to press on.</p>  <h2>How to press on when the motivation is gone</h2>  <p>If you agree with me, or even think that perhaps what I am saying is worth considering, then you will probably wonder how you can get through this phase or test to see the other side.</p>  <p>We can look at athletics again as a comparison to provide some insight.</p>  <p>Think about a professional track runner, training for competition.&#160; Consider what would happen if that athlete decided to not have a formal training schedule, but instead only train when he felt like it.</p>  <p>What would happen when he didn’t feel like training for a week?</p>  <p>Now let’s say he had a training schedule and he followed it, even on the mornings when he didn’t feel like getting up to train.</p>  <p>What would happen if his training was not planned out?&#160; If he didn’t know what kind of drills to do or have a long term plan for the training sessions?</p>  <p>If you want to make it through the times when you don’t feel the motivation and passion for writing code and solving problems, then you have to have a plan.&#160; A solid plan that will ensure that you will be able to press on.</p>  <p>Here are some tips to make sure that when you get struck by programming lethargy, you do make it through to the other side.</p>  <ul>   <li>I’ve talked about this <a href="http://simpleprogrammer.com/2010/07/02/the-importance-of-always-reading/">several times</a> in my blog.&#160; <strong>Make sure you are always reading a technical book.</strong>&#160; Create a schedule and stick to it.&#160; Even 15-30 minutes a day of reading will let you read around 1-2 books a month.&#160; That is a huge amount of knowledge. </li>    <li>When you don’t feel like working,<strong> break up your work into <a href="http://simpleprogrammer.com/2010/07/09/why-small-is-better/">small tasks</a> and start accomplishing those tasks.</strong>&#160; Figure out exactly what you have to do to move forward and do it.&#160; Don’t give in and waste time.&#160; The time you feel the most like killing time, is the time when you must throw yourself into your work all the more. </li>    <li><strong>Set some goals for yourself.</strong>&#160; Short term and long term.&#160; The short terms goals should clearly lead to the long term goals.&#160; Review those goals frequently and always try to make progress towards the goals.&#160; Even a little bit of progress adds up over time. </li>    <li><strong>Don’t start thinking about changing careers or looking for an easier job.</strong>&#160; Don’t start thinking you will feel this way forever.&#160; Realize that what you are experiencing now is a feeling and feelings are not trustworthy. </li>    <li><strong>Clean up.</strong>&#160; Clean up your workspace.&#160; Clean up your computer.&#160; Get yourself some new equipment if it will help.&#160; Feeling like you have a new and fresh environment can do wonders for motivation. </li>    <li><strong>Challenge yourself.</strong>&#160; Your gut is going to tell you to slow down and relax, but that road leads to laziness.&#160; When laziness comes your way, the best way to fight it is to push right into it! </li> </ul>  <p>Well, that is all the tips I have for you for today.&#160; Just remember that you are not alone and what you are experiencing is normal.&#160; </p>  <p>If you’re in a period now where you are motivated and feel great about your work and what you are doing, you might want to bookmark this post and come back to it when it can benefit you more.&#160; </p>  <p>Remember though, setting up good habits and routines now can help you cruise through the hard times later. </p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>  <ul></ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Microsoft doesn&#8217;t create bad developers, developers do</title>
		<link>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoft-doesnt-create-bad-developers-developers-do</link>
		<comments>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:47:16 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/</guid>
		<description><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an [...]]]></description>
			<content:encoded><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an industry that is evolving at an incredible pace, contains an incalculable number of technologies, frameworks, best practices and constantly redefines the definition of how things should be done in the best possibly way. It’s the industry that makes the rest of the world tick. Daunting really, if you think about it.

A while back I read a couple of posts by <a href="http://www.gilzilberfeld.com/" target="_blank">Gil Zilberfeld</a> (<a title="Read Gil's post on Why Microsoft makes bad programmers" href="http://www.gilzilberfeld.com/2010/07/why-microsoft-makes-bad-programmers.html" target="_blank">here</a> and <a title="Read Gil's post on CSI: Microsoft" href="http://www.gilzilberfeld.com/2010/08/csi-microsoft.html" target="_blank">here</a>) where Gil talks about the responsibility that vendors such as Microsoft plays in the role of securing the quality of the work that is produced in our industry. While I think I see the points  Gil is trying to make, I think he misses the beat a bit and I have a hard time agreeing with the conclusions he draws.

The way I see it there are two types of developers; those that are just in it to pay the bills and those that consider themselves as craftsmen. If you consider yourself a craftsman then you should already be aware that you are responsible for your own faith and actions in this industry. But, if you are just in it to pay the bills then you are probably also looking to do so by doing the least amount of work and that includes looking for information on how to solve a particular problem or how to apply a technology onto your stack.

So if you are one of the developers that are only looking towards Microsoft (or the relevant company for the technology stack you are working on) is it their fault if you implement something in a way that could be considered bad? Of course not! Sure there are a lot of outdated and down right poor samples at the Microsoft (or relevant company) website and their idea on how certain things should be solved are bound to differ from others (and that’s definitely not to say that there isn’t good contents, there are a ton of it). However, if you rely on a single source of information, you are always going to get an opinionated view. Take my word on it (right?).

Doctors reads medical journals, publishes research papers, attend conferences, network with colleagues and make sure they stay up to date with the latest in their field. I’m pretty sure you are happy that they spend all of this time to make sure they can provide the best possible care and treatment when someone are in need of their services. I know I am.

Just as with any other profession, developers are responsible for their own education, for honing their skills in the craft that they have chosen to practice. In order to keep up in an industry that evolves at the speed of light you need to invest in yourself. The code you write today should be some of the best you have ever written, while a year later you should be considerably less excited about its quality. It’s a sign of growth. That you’ve continued to move forward as a craftsman, that you skills have been honed and broadened during the past year.

So what about the tools? Do we really rely on them too much to get the work done? I would say, definitely not! But again you have to specify just exactly what you are talking about when talking about tooling. If you rely on visual designers, drag and drop, wizards and the likes to to the majority of your work, then yes you are probably relying too much on your tools. Odds are that you will have a hard time to get anything outside of standard behavior to run and there will be pain points when you need to debug.

However you would do yourself (and your employer) a huge disservice if you did not make it your goal to know the tools in your toolbox as good as possible. What’s wrong with knowing how to use the debugger, the IDE and tools like ReSharper as good as possible? Used correctly they will have a huge impact on productivity. Make sure you know the finer details of the tools and make them work for your and not the other way around. Yes, sometimes tools do get in the way of the goal, even slow you down, and when that is the case, don’t use the tools! Tools are there to help you when you need them, not to act as a crutch you always have to lean on so you don’t fall on your ass.

Well there you have my thoughts on the subject. It’s always up to the developer, not the companies. Always.

I am also around on twitter <a title="Visit my twitter profile" href="http://twitter.com/thecodejunkie" target="_blank">@thecodejunkie</a> in case you need one more person to follow]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Software, &#8220;It&#8217;s not what we do&#8221;.</title>
		<link>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-its-not-what-we-do</link>
		<comments>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 12:13:36 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/09/software-its-not-what-we-do/</guid>
		<description><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a [...]]]></description>
			<content:encoded><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a “core competency”.

One thing I have heard expressed in those places is, “software development is not our core competency, therefore recommendations around professional development practices don’t apply to us.”

Good, lord. Really, people?

This is akin to a Boeing corporate attorney claiming that he need not be competent because Boeing makes airplanes.

I don’t know where this absurd line of reasoning comes from, but I know why it is tolerated. It is tolerated because we don’t have the formal structures to hold professionals accountable the way we might hold an electrician, plumber, or physician accountable to being merely competent. If you are reading this post you probably make 3X the salary of a plumber, yet are held to a lower degree of professional accountability for your work.

This is sad, but it doesn’t mean that we need to pick up the mantle of mediocrity available to us. We can hold ourselves accountable for professionalism no matter where we work.

If the organization we serve specializes in jellybeans, services, software widgets, or any other industry, we are hired to bring our best game to the table. This is why they hire us, folks! We are supposed to know what we are doing, not making excuses for incompetence!

In summary, no matter what type of organization you work for:
<ul>
	<li>Yes, you need to use source control.</li>
	<li>Yes, you need to automate the build.</li>
	<li>No, you shouldn’t be releasing the assemblies compiled on your machine.</li>
	<li>Yes, you need to stop writing long methods and pay attention to code complexity.</li>
	<li>Yes, you need to buy your developers the best tools available.</li>
	<li>No, you don’t need to write your own logging framework.</li>
	<li>Yes, you should be practicing test first development.</li>
	<li>No, continuing to ship known defects is not acceptable.</li>
	<li>Yes, you should understand who your customer is.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Software Craftsmanship on the Polymorphic Podcast</title>
		<link>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-craftsmanship-on-the-polymorphic-podcast</link>
		<comments>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:11:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/</guid>
		<description><![CDATA[I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of being the host!</p>  <p><a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx?"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ListenBanner" border="0" alt="ListenBanner" align="right" src="http://elegantcode.com/wp-content/uploads/2010/08/ListenBanner.png" width="341" height="53" /></a> The interview is now live and <a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx" target="_blank">available here</a>. </p>  <p>We visited many of my favorite topics including:</p>  <ul>   <li>How to sell Agile in your org</li>    <li>Scrum and ScrumBut</li>    <li>Code Craftsmanship</li>    <li>Agile in small teams</li>    <li>How to be an agile army of one</li>    <li>How my mom is the perfect complexity gauge</li>    <li>And ElegantCode.com gets a shout out!</li> </ul>  <p>This was really fun. Thanks, Craig!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enforce Correct Usage By Wrapping Types</title>
		<link>http://elegantcode.com/2010/10/27/laborers-versus-professionals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=laborers-versus-professionals</link>
		<comments>http://elegantcode.com/2010/10/27/laborers-versus-professionals/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:53:43 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/10/27/laborers-versus-professionals/</guid>
		<description><![CDATA[A while ago, my good friend Michel Grootjans&#160;tweeted the following: Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question. Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, my good friend <a href="http://geekswithblogs.net/alternativedotnet/Default.aspx">Michel Grootjans</a>&#160;<a href="http://twitter.com/michelgrootjans/status/24569673878">tweeted</a> the following:</p>  <blockquote>   <p>Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question.</p> </blockquote>  <p>Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a while. Try to picture your own work environment and how this relates. Go ahead! I can wait.</p>  <p>OK then, let’s move on.</p>  <p>I’ve been working for an enterprise corporation for 5+ years now. One of the things I’ve seen and learned there over this period of time is that laborers are more valued by management than professionals. Let me elaborate on this. </p>  <p>One of the biggest issues in a typical enterprise corporation is trust, specifically the lack thereof. The direct consequence of this lack of trust are massive amounts of constraints, regulatory processes and <a href="http://c2.com/cgi/wiki?FearDrivenDevelopment">fear-driven development</a>. This is the natural habitat of laborer developers, a nice and cozy place where they can spend their hibernation until retirement. This is where the term ‘code monkey’ originates from. Nine to five, no thinking, narrow focus, like soldiers in the military obeying orders to make a big mess. But sometimes, amongst these massive cohorts of laborers, there are small islands that exist of one or more professional developers. These are the kind of people that are very passionate about their craft, that want drive innovation and also want to continuously learn and improve. If you’re a developer and you’re reading this blog post, you probably fall into this category of developers.</p>  <p>But professional developers always have one part of the establishment going against them. It’s not the laborers. They don’t care. It’s an instrument better known as management. A large part of the IT industry, especially corporate IT shops, are being run by giant flocks of managers. Some of these managers started out as software developers and some of them are just born that way. But there’s something that they all have in common: they don’t write code as part of their day job. Although they don’t get their hands dirty with writing software, most managers do feel compelled to impose all kinds of political decisions regarding business requirements, software architecture/design, tools and technologies to the development teams they are ‘managing’. I for one want to make it clear that this has to stop. In order to lift this industry to the next level, we as software professionals need to free ourselves from the leash that is currently being held by management.&#160;&#160; </p>  <p>Professional developers working in these kinds of corporate environments are generally considered as troublemakers, if not by their direct bosses then certainly by other parts of management. The general attitude towards professionals is slamming them with more&#160; procedures, so called ‘company standards’ and ‘default architectures’. This ends up with a lot of frustration, a feeling of burn-out or even worse, suffocation as it may seem that the walls are closing in. Professional developers generally have a hard time placing this attitude towards them. They just want to do the right thing and provide the best possible solution they’re able to come up with. If managers don’t trust their development teams to make the right decisions, then why did they got hired in the first place? </p>  <p>I for one am pleading to get past this all this. Any business that wants to survive in this hard world economy and even wants to get ahead of its competition has to free its professional developers from management. It’s that simple. Management is great for enforcing compliance, but if engagement is what you want (and is definitely needed for bringing innovation), self-direction is essential. I already wrote <a href="http://vanryswyckjan.blogspot.com/2008/02/on-software-factories.html">a blog post about self-organizing teams</a> a couple of years ago. Today, I’m even more convinced that self-direction is one of the major key enablers for innovation in the IT industry of the 21th century. Anyway, someone who isn’t coding at least 50% of his day job shouldn’t be allowed to interfere with any kind technical decision making. Period! </p>  <p>I’m not saying that development teams should get a signed blank check. On the contrary. Financial and business constraints should still be taken into account. But when it comes to creativity, methodologies, technologies and tools, management shouldn’t get in the way. Development teams should be able to take responsibility for their own actions. Managers should know their place by making sure that their development teams can operate as optimal and efficient as possible by removing as many impediments as possible.</p>  <p>Let me show you a couple of examples where this principle of autonomy has immensely paid of so that you’re able to judge for yourself.</p>  <p>I personally find health care a fascinating craft. I find it fascinating simply because there are so many parallels than can be drawn between software engineering and the state of health care roughly 200 years ago :-). Lets take about modern hospitals for example. Medical facilities are generally being run by senior medical staff and not by managers! Senior medical staff are people that have a high degree of mastery in what they do and still perform their craft every single day. Maybe they’re not doing it full time so that they’re able to fulfill their ‘path-finding’ responsibilities, but still, they are still fixing their patients. Hospitals do have managers however, but they are there simply for enabling the medical staff to not worry about anything else besides saving lives. Can you picture lying in an operating room when a manager in a suit bursts through the door, yelling at the surgeon that he’s not allowed to use technique xyz to save your live? Preposterous you say? Not so with the current state of affairs in IT departments of the enterprise corporations. </p>  <p>There are a couple of concrete examples in the IT industry as well. Remember when Google <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?_r=1">announced</a> that their engineers get to spend 20 percent of their time to work on something of their own interest? This resulted in massive improvements for products like GMail, Google Maps, Google Docs, etc … and directly contributed to Google’s success and current market share. Other companies like <a href="http://blogs.atlassian.com/rebelutionary/archives/000495.html">Atlassian</a> and <a href="http://blog.facebook.com/">Facebook</a> are enabling innovation in basically the same way. </p>  <p>Yet another example is Pixar. If you haven’t seen or listened to <a href="http://www.scottberkun.com/blog/2010/inside-pixars-leadership/">this interview</a> with Ed Catmull, the president of Pixar, stop reading this blog post and let it inspire you now! Somewhere along this awesome interview he mentions the following:</p>  <blockquote>   <p>Part of the behavior is I don’t know the answers. And at first that seems a little bit glib. But after awhile people get that I really don’t know the answer to a lot of these things. So we set it up so that the management really doesn’t tell people what to do.&#160; </p> </blockquote>  <p>Think about how amazing it would be like to work in an environment like that. It’s inevitable that great things are bound to happen.</p>  <p>There are plenty of other examples out there, like open-source software, Wikipedia, etc. … . They all prove that self-management results in engagement and that this is going to be a major differentiator in tomorrow’s economy.&#160; </p>  <p>Make sure to check out the following resources as well:</p>  <ul>   <li><a href="http://www.ted.com/talks/dan_pink_on_motivation.html">The surprising science of motivation</a> by Daniel Pink </li>    <li><a href="http://openmymind.net/2010/10/7/programmer-passion">Programmer Passion: An Enterprises Most Useful Yet Repressed Advantage</a> by Karl Seguin </li>    <li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">Drive: The surprising truth about what motivates us</a> </li> </ul> Till next time.   ]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/10/27/laborers-versus-professionals/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Craftsmanship</title>
	<atom:link href="http://elegantcode.com/category/craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00: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>Temovate Cream For Sale</title>
		<link>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-software-development-will-never-be-engineering</link>
		<comments>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:37:48 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/</guid>
		<description><![CDATA[I always find it rather interesting when academics try to quantify generalized metrics about software development. Temovate Cream For Sale, Things like: per lines of code, there will be X number of bugs. Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.” These are all interesting [...]]]></description>
			<content:encoded><![CDATA[<p> <p>I always find it rather interesting when academics try to quantify generalized metrics about software development.</p>  <p> <b>Temovate Cream For Sale</b>, Things like: per lines of code, there will be X number of bugs.</p>  <p>Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.”</p>  <p>These are all interesting thoughts, but software development will never conform to rigid engineering principles like many other engineering practices.&#160; The longer I work in the field, the more and more I realize that software development has nothing to do with engineering.&#160; We just happen to attend some of the same math classes in school.</p>  <h2>Building bridges</h2>  <p>One of the main arguments I hear people make about the current state of software development as an engineering practice is based around its relative maturity to other engineering fields.</p>  <p>There is a huge problem with this line of thinking.</p>  <p>The argument goes something like this:&#160; “<em>Engineering has been around for hundreds of years and has matured to the point where it is a measurable science, but software development has only been around in earnest for the last few decades or so, therefore it is relatively immature as an engineering discipline.”</em></p>  <p>On the surface this argument seems sounds.&#160; And certainly in 50 years software development will be different than it is now.&#160; Heck, it is much more different than it was just 10 years ago.</p>  <p>But, here is the problem.&#160; We build much more software than we do bridges.</p>  <p><img src="http://www.nps.gov/glca/historyculture/images/Navajo_Bridges_1.gif" width="589" height="442" /></p>  <h6 align="center">&#160;</h6>  <p>Let me give you an example that came to light in another area of my interest… poker.</p>  <h1></h1>  <h2>The poker quickening</h2>  <p>An interesting thing happened in the poker community in the last 10 years; poker pros with decades of experience started getting beat time and time again by 19 year old poker prodigies.</p>  <p>From an outside perspective it looks like the poker world opening up just widened the search for talent and there it was.&#160; But, a closer examination of the evidence leads to the truth.</p>  <p>Before the online poker industry was born, poker was played in card rooms and casinos in states where it was legal and occasionally at small home games throughout the US.</p>  <p>A poker pro might play poker tournaments perhaps 100 times to 150 times a year.&#160; The sum knowledge of the poker community and the meta game around it was based on this base of professional poker players playing tournaments and gaining experience at this mediocre rate.</p>  <p>Once the internet poker rooms started opening up, things changed, and they changed rapidly.&#160; Now anyone could play poker from their home PC.&#160; Not only could they play poker, they could play poker tournaments at all hours of the day.</p>  <p>Here is a list of some of the major changes that took place:</p>  <ul>   <li>Hands are dealt at 60-80 hands per hour instead of 10-30</li>    <li>Players can play in many tournaments at one time, 10 tournaments at once is not unheard of</li>    <li>Players can analyze hand histories and historical data about their play and opponents play through the use of software </li>    <li>Age requirements are out the window, technically any one of any age could be playing online</li>    <li>Players can play 24 hours a day</li>    <li>The professional online tournament player could easily play over 3000 tournaments in a year, while a brick and mortar pro would be lucky to reach 100 in a year.</li>   <img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://t1.gstatic.com/images?q=tbn:ANd9GcRj9uGNWSyqGWEneiH6xaBAyS6COwGYicdNadZu-06KWQLhIi6LMw&amp;t=1" width="316" height="270" /></ul>  <p>&#160;</p>  <p>So where am I going with all this?</p>  <p>The point is that as a whole more hands were dealt and more poker knowledge and experience was obtained in 1 year of online poker than probably the entire history of poker before that.&#160; We reached such an accelerated pace of play that all previous knowledge of poker became obsolete.&#160; </p>  <p>The strategy of tournament poker completely changed.&#160; The game evolved perhaps 500 years into the future in a matter of 5 years time.</p>  <p>The same has happened with software development.</p>  <h2>Back to the bridge building</h2>  <p>So let’s take that poker example and look at it through the lens of software development.</p>  <p>Let us compare the engineering maturity to software development to the engineering maturity of the engineering discipline of building bridges.</p>  <p>I think most people would agree that bridge building is a very mature engineering discipline but many people would argue that software development is not.</p>  <p><strong>How many bridges do you think have been built in the world?</strong></p>  <p>Well there are <a href="http://www.betterroads.com/category/bridge-inventory/erroads.randallreillycms.com/files/2009/11/BR1109_BridgeInventory.pdf">about 600,000 bridges in the United States alone</a>, so the world figure must be at least somewhere around 10 times that number perhaps 20.</p>  <p><strong>How many software programs have been written?</strong></p>  <p>This is a very hard number to estimate, but lets take a rough guess based on <a href="http://stackoverflow.com/questions/453880/how-many-developers-are-there-in-the-world">how many software developers there are in the world</a>.&#160; </p>  <p>If we say there are about 12 million software developers and each software developer has written approximately 3 programs, we can estimate that a large amount more programs have been written than bridges built.</p>  <p>My point is not to knock bridge building, we are pretty good at it as a whole, but rather to show that collectively, even though we have been building bridges for hundreds of years, we have probably devoted an equivalent amount of time to building software.</p>  <p>This line of thinking may lead you to argue back that software development and bridge building are very different.&#160; Bridge building has a fixed set of requirements that are pretty close to the the same for each bridge you build, but software development is a big open void of whims and ambiguously contradictory statements.</p>  <p>I agree with you 100%!&#160; And in essence that is my point.</p>  <h2>Software development is different</h2>  <p>And we have had enough time to realize that.&#160; Waiting for software development to gel into some kind of engineering discipline like other engineering disciplines is like waiting for water without gelatin mix to turn into Jello.&#160; </p>  <p>It’s just not going to happen!</p>  <p>In my mind it is clear that the argument that we haven’t given it enough time is just wishful thinking.&#160; The nature of software development, just like online poker, leads itself to rapid evolution.</p>  <p>Consider what direction software development is evolving.&#160; Is it even evolving in the direction of rigid engineering practices or is it evolving in the exact OPPOSITE direction?</p>  <p>Ten years ago, we tried to use UML diagrams and CASE tools to develop software.&#160; Ten years ago waterfall was all the rage.&#160; Ten years ago, we thought that ten years in the future we would have programs that would allow us to build software in the same way that CAD tools allow for building machine parts.</p>  <p>Not only did it not happen.&#160; It went completely the other way.&#160; Now we are all talking about Agile.&#160; Now people don’t even remember what CASE tools are.&#160; Now we are building software without trying to define the whole system in UML diagrams.</p>  <p><strong>The fact of the matter is software systems are unruly beasts!</strong></p>  <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://aznbadger.files.wordpress.com/2010/06/beast.jpg" /></p>  <p>In my mind it comes down to one simple distinction.&#160; Software is living, bridges aren’t.&#160; When you are done building a bridge, you are done building the bridge.&#160; </p>  <p>Sure someone, probably not you, will have to come along and do some routine maintenance on it.&#160; Sure, some small things might change about it, but for all intents and purposes the work is done.</p>  <p>In most software development scenarios, this is not the case.&#160; In most software development scenarios, releasing V1 is not even close to the end.&#160; Sometimes V1 and V2 don’t even look that same at all.&#160; Software development is about operating on a living breathing thing and all the while keeping it alive.</p>  <p>The truth is, we software developers have more in common with surgeons than with other engineers.</p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>.  Buy Temovate Cream without a prescription.  Temovate Cream trusted pharmacy reviews.  Temovate Cream over the counter.  Where can i order Temovate Cream without prescription.  Online buy Temovate Cream without a prescription.  Temovate Cream no rx.  Buy cheap Temovate Cream no rx.  Temovate Cream photos.  Buy Temovate Cream online no prescription.  Order Temovate Cream online c.o.d.  Herbal Temovate Cream.  About Temovate Cream.  Australia, uk, us, usa.  Cheap Temovate Cream.  Temovate Cream class.  Temovate Cream brand name.  Online Temovate Cream without a prescription.  Buy Temovate Cream without prescription.  Buy Temovate Cream from canada.  After Temovate Cream.  Order Temovate Cream from mexican pharmacy.  Temovate Cream without a prescription.  Purchase Temovate Cream.  Temovate Cream natural.  Temovate Cream overnight.  Temovate Cream online cod.  Where can i buy cheapest Temovate Cream online.  Purchase Temovate Cream for sale.  Online buying Temovate Cream.  Purchase Temovate Cream online.  Temovate Cream used for.  Temovate Cream coupon.  Temovate Cream description.  Order Temovate Cream no prescription.  Temovate Cream maximum dosage.  Cheap Temovate Cream no rx.  Temovate Cream images.  Temovate Cream blogs.  Buy Temovate Cream online cod.  Buy generic Temovate Cream.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4472'>Bactroban For Sale</a>. <a href='http://elegantcode.com/?p=4632'>Armour For Sale</a>. <a href='http://elegantcode.com/?p=4639'>Buy Estrace Vaginal Cream Without Prescription</a>. <a href='http://elegantcode.com/?p=4668'>Buy Augmentin Without Prescription</a>. <a href='http://elegantcode.com/?p=4535'>Buy Tindamax Without Prescription</a>. <a href='http://elegantcode.com/?p=4931'>Fast shipping Diclofenac</a>. <a href='http://elegantcode.com/?p=4240'>Combivent brand name</a>. <a href='http://elegantcode.com/?p=4417'>Levaquin overnight</a>. <a href='http://elegantcode.com/?p=4597'>Purchase Toradol online</a>. <a href='http://elegantcode.com/?p=4221'>Australia, uk, us, usa</a>.<br />
<b>Trackbacks from:</b> <a href='http://www.quarterlives.com/?p=1148'>Temovate Cream For Sale</a>. <a href='http://4realz.net/?p=1972'>Temovate Cream For Sale</a>. <a href='http://www.macneilbmx.com/blog/?p=5997'>Temovate Cream For Sale</a>. <a href='http://www.greatgreengoods.com/?p=2476'>Temovate Cream For Sale</a>. <a href='http://www.thegriffonnews.com/?p=9947'>Temovate Cream For Sale</a>. <a href='http://social-blend.com/?p=1160'>Temovate Cream brand name</a>. <a href='http://blog.farmland.org/?p=3812'>Where can i find Temovate Cream online</a>. <a href='http://reversemortgagedaily.com/?p=14136'>Generic Temovate Cream</a>. <a href='http://linuxologist.com/?p=1792'>Temovate Cream photos</a>. <a href='http://home.officesnapshots.com/?p=114'>Order Temovate Cream from mexican pharmacy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Buy Xalatan Without Prescription</title>
		<link>http://elegantcode.com/2011/04/13/why-rules-rule/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-rules-rule</link>
		<comments>http://elegantcode.com/2011/04/13/why-rules-rule/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 03:19:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/04/13/why-rules-rule/</guid>
		<description><![CDATA[Buy Xalatan Without Prescription, I have to admit, I love rules. They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally. Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how [...]]]></description>
			<content:encoded><![CDATA[<p> <p> <b>Buy Xalatan Without Prescription</b>, I have to admit, I love rules.</p>  <p>They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally.</p>  <p>Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how valuable they are, because when rules are doing their job, you don’t even notice them.</p>  <p>The first rule of your day is likely your alarm clock.&#160; This is a self imposed rule that you have created for yourself to get up at a certain time in the morning.&#160; Try to function in any meaningful way by completely removing that rule and see what happens.</p>  <p>Almost all games we play have rules.&#160; Without rules those games wouldn’t be much fun.</p>  <p>We drive on the correct side of the road in our lane, following rules of traffic, which if not obeyed put us in mortal danger and make the road quite a scary place.</p>  <p>It is a gross understatement to say rules are important to our daily life.</p>  <p>Yet, I am constantly amazed how many people seem to oppose any notion of rules when it comes to our craft of software development.</p>  <h2>There is this notion that rules somehow preclude judgment</h2>  <p>Somehow the idea has crept into many of our brains that rules and good judgment, (what we might call craftsmanship), are diametrically opposed to each other.</p>  <p>There seems to be a pervasive thought that rules suck all the fun out of things and take away creativity, skill and experience, reducing the follower of such rules to a mindless robot, replaceable by any other robot.</p>  <p>Not only do I think this viewpoint is completely wrong, but I think it is downright destructive to the craft of software development.</p>  <p>Let us first dispel the notion that rules destroy creativity and its kin.</p>  <p>Think about a game like Scrabble.&#160; Scrabble is a game that is based on a very restrictive set of rules.&#160; You basically have only two moves you can do.</p>  <ol>   <li>Make a word using only letters in your rack and letters on the board.</li>    <li>Discard some letters to get some new ones.</li> </ol>  <p>Rules dictate how many letters you can have and what ways you can arrange them.&#160; Yet, how much creativity is actually created by these constraints?</p>  <p>Music is often seen as a cousin to coding, and is another great example of constraints which breed creativity.&#160; Music has a huge amount of constraint.&#160; There are many natural rules about sounds and chords.&#160; We only have a small amount of notes to even work with, yet people have been elaborating on those 12 notes for hundreds of years and new creative sounds are produced every single day!</p>  <p><strong>If you really take the time to think about it, I think you will find that constraints actually breed creativity not destroy it.</strong></p>  <h2>The truth is rules come from good judgment at the right time</h2>  <p>Let me posit you this question.</p>  <p>When is a better time to make a judgment decision of what to do when a bear attacks you?</p>  <ul>   <li>When the bear is actually attacking you</li>    <li>Sitting at your computer with a huge amount of reference material available to you about bear attacks and a calm peaceful environment</li> </ul>  <p>If you chose when the bear is actually attacking you turn to page 32.</p>  <p><strong>Page 32:</strong></p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bear-attack" border="0" alt="bear-attack" src="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack_thumb.jpg" width="447" height="318" /></a></p>  <p><em>Having no rules in which to operate, in the heat of the moment, you decide to “tickle” the bear.&#160; The bear slays you and munches on your bones.&#160; Your adventure has come to an end.</em></p>  <p><strong><em>You are DEAD!</em></strong></p>  <p>The point is that your judgment is much more likely to be sound when you are removed from the situation which you are making the judgment call about.&#160; Unless you are a close relative of Spock, you’ll probably find that human emotions tends to interfere with sound judgment.</p>  <p>This is why I instead firmly believe that <strong>we should use our good judgment to formulate rules that we will use in the situations which they apply to rather than to try and execute good judgment when we are engrossed in the situation.</strong></p>  <p>If you still disagree with me here, let’s ponder the example of the alarm clock one more time.&#160; Better yet, I challenge you to make a judgment call each morning of when you should wake up.&#160; You can’t use an alarm clock or any rules.&#160; (Before you do this, you might want to make sure you get your resume polished up.)</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="alarm clock" border="0" alt="alarm clock" src="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock_thumb.jpg" width="235" height="386" /></a></p>  <h2>How does this all apply to software development?</h2>  <p>I’m not going to attempt to address every way in this blog post, perhaps we’ll revisit this subject in the future, because it is so important.&#160; Instead my goal here is to convince you to embrace rules and to not fear setting them for yourself, for your team or for your code.</p>  <p>Some of the biggest failings of teams that I see is the fear of setting rules.&#160; Teams seem to be so afraid of restricting someone or impairing their ability to make judgment calls that they go the direction of never setting any concrete rules, just guidelines or best practices.</p>  <p>There is a huge difference between guidelines and rules.&#160; Guidelines help you make a decision, rules make it for you.&#160; Don’t be fooled into thinking they are the same thing, and don’t fear rules.&#160; I always prefer rules over guidelines, because they are much more valuable.</p>  <p><strong>You can actually measure the effect of a rule, but you can’t easily measure the effect of a </strong><strong>guideline.</strong></p>  <p>Let me give you some examples of areas in software development that I think are great places to enforce some rules:</p>  <ul>   <li>Naming conventions</li>    <li>Unit testing</li>    <li>Process of starting work</li>    <li>Who works on work</li>    <li>When work is considered done</li>    <li>How defects are handled</li>    <li>What changes can be made to work in progress</li>    <li>What should be in a backlog</li>    <li>Language and library choices</li>    <li>Data access strategies</li>    <li>Dealing with build failures</li> </ul>  <p>Every time you are having a conversation which ends up identifying something to improve upon, you should be thinking about how you can codify it into a rule.&#160; Don’t be afraid to step out here.&#160; It’s ok to make the wrong rule and change it later.&#160; If you do this you learn something.</p>  <p>Having rules in place prevents you from making in-the-moment decisions which you later come to regret.</p>  <p>When I go to a buffet, I set rules for how much food I can eat.&#160; When I decide to start a workout routine, I set rules for how often and what duration I will workout.&#160; When I write code, I set rules for how I will write that code.</p>  <p>In any of those areas, when I fail to set rules, I end up failing.&#160; It is human nature.</p>  <h2>But rules impede me and end up making me do silly things</h2>  <p>Good.&#160; That is called feedback.</p>  <p>Remember back when you were just making judgment calls all the time instead of following rules you or your team preset ahead of time, you weren’t getting any feedback, now you are.&#160; Be happy about it, celebrate!</p>  <p>You can always change the rules.&#160; You can always tweak the parameters, but if you want to have any success in process improvement, it is much like cooking on the stove.&#160; You are much better off with burner dials that have numbers on them or at least some kind of label, then ones with just a blank dial.&#160; If you don’t know where the dial is, how will you know which way to turn it?</p>  <p>Sometimes rules are going to make you do something silly or seemingly extraneous.&#160; Sometimes rules are going to cause you to possibly even do the wrong thing.</p>  <p>But, if you want to have any chance of learning from your mistakes, if you want to truly improve your process, you must resist the urge to break the rules and instead wait for a time to reflect upon the rules and make appropriate changes at that time.</p>  <p>Learn to embrace rules and you’ll suddenly see an improvement in all areas of life where you apply them, especially your software development!</p>  <h6><strong>As always, you can subscribe to this </strong><a href="http://feeds2.feedburner.com/ElegantCode"><strong>RSS feed</strong></a><strong> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at </strong><a href="http://simpleprogrammer.com/"><strong>http://simpleprogrammer.com</strong></a><strong>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter </strong><a href="http://twitter.com/jsonmez"><strong>here</strong></a><strong>.</strong></h6>.  Xalatan description.  Xalatan no rx.  Buying Xalatan online over the counter.  Fast shipping Xalatan.  Xalatan overnight.  Buy Xalatan from mexico.  Xalatan without a prescription.  Where to buy Xalatan.  No prescription Xalatan online.  What is Xalatan.  Xalatan price.  Rx free Xalatan.  Purchase Xalatan online.  Generic Xalatan.  Xalatan street price.  Xalatan from canada.  About Xalatan.  Taking Xalatan.  Xalatan online cod.  Australia, uk, us, usa.  Order Xalatan online overnight delivery no prescription.  Xalatan recreational.  Xalatan canada, mexico, india.  Xalatan interactions.  Xalatan alternatives.  Online buying Xalatan.  My Xalatan experience.  Where can i cheapest Xalatan online.  Online Xalatan without a prescription.  Xalatan wiki.  Order Xalatan no prescription.  Get Xalatan.  Xalatan from mexico.  Xalatan schedule.  Xalatan dangers.  Purchase Xalatan for sale.  Where can i buy cheapest Xalatan online.  Discount Xalatan.  Is Xalatan addictive.  Buy cheap Xalatan.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4728'>Ventolin For Sale</a>. <a href='http://elegantcode.com/?p=4184'>Synthroid For Sale</a>. <a href='http://elegantcode.com/?p=4384'>Buy Ultram Without Prescription</a>. <a href='http://elegantcode.com/?p=4373'>Topamax For Sale</a>. <a href='http://elegantcode.com/?p=5156'>Amoxicillin For Sale</a>. <a href='http://elegantcode.com/?p=4297'>After Reglan</a>. <a href='http://elegantcode.com/?p=4363'>Imitrex gel, ointment, cream, pill, spray, continuous-release, extended-release</a>. <a href='http://elegantcode.com/?p=4721'>Flonase maximum dosage</a>. <a href='http://elegantcode.com/?p=4534'>Xalatan recreational</a>. <a href='http://elegantcode.com/?p=4354'>Herbal Glucophage</a>.<br />
<b>Trackbacks from:</b> <a href='http://social-blend.com/?p=1234'>Buy Xalatan Without Prescription</a>. <a href='http://www.quarterlives.com/?p=1098'>Buy Xalatan Without Prescription</a>. <a href='http://4realz.net/?p=816'>Buy Xalatan Without Prescription</a>. <a href='http://tayloegray.com/?p=302'>Buy Xalatan Without Prescription</a>. <a href='http://www.macneilbmx.com/blog/?p=5580'>Buy Xalatan Without Prescription</a>. <a href='http://blog.farmland.org/?p=2108'>Xalatan used for</a>. <a href='http://reversemortgagedaily.com/?p=14507'>Xalatan interactions</a>. <a href='http://linuxologist.com/?p=1519'>Online buying Xalatan</a>. <a href='http://home.officesnapshots.com/?p=268'>My Xalatan experience</a>. <a href='http://evanrapoport.com/?p=613'>Buy Xalatan online cod</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/04/13/why-rules-rule/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Programming is not a Craft: My Take</title>
		<link>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=programming-is-not-a-craft-my-take</link>
		<comments>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 17:38:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/</guid>
		<description><![CDATA[Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: Programming is not a Craft. Dan’s sentiments are not unique. I have heard similar opinions from other [...]]]></description>
			<content:encoded><![CDATA[<p>Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: <a href="http://dannorth.net/2011/01/11/programming-is-not-a-craft/" target="_blank">Programming is not a Craft</a>. Dan’s sentiments are not unique. I have heard <a href="http://blogs.tedneward.com/2008/05/11/Im+ProChoice+Pro+Programmer+Choice+That+Is.aspx" target="_blank">similar opinions</a> from other prominent developers I respect.</p>  <p>I read in Dan's post (and in some of the comments) a visceral reaction to gold plating things not determined &quot;important&quot; by the customer. I get that. I also see a need to temper this with the simple fact that the client doesn’t always know what is best for them. Let’s just get that out in the open. My doctor knows what is better for my physical body than I do and I am willing to pay for that. Will I always take the advice I am paying for? Well, probably not. And I’m sure that leaves my doctor shaking her head in dismay.</p>  <p>I learned that integrity is &quot;doing the right thing even when no one is looking&quot;, and I see the Software Craftsmanship discussion as striving for integrity in the systems we create.</p>  <p>One mark of a true professional might be a willingness to balance client need with implementaion elegance resulting in software that meets the need of the client AND is something worthy of pride when shown to another developer. If the only reason we are writing code is to provide the minimum a client wants to pay for, then how compelling is my work, really? Can I be proud of my professional body of work if I am simply marching to orders? I say no.</p>  <p>Where I part ways with Dan is in his analogy of the plumber. Granted, I simply want my pipes to work, but I am willing to pay for a plumber that takes pride in his work. I trust that plumber will simply do a better job as he strives to make his work appreciated by the next plumber that sees it. Can I quantify this into dollars? Not really. Perhaps in the extra time required to lay in a perfectly soldered joint as opposed to a sloppy one. Am I willing to pay more for this type of person to do the work? No question: Yes.</p>  <p>The bottom line for me is that we would all like to take pride in our work. No one I’ve ever met gets up in the morning thinking, “Today I will make a piece of crap”, and keeps at the job with any pleasure. We want to enjoy our work and be proud of it. Is that so bad? The very real software craftsmanship discussion simply gives us a vehicle for discussion in the pride we may take in our work for its own sake.</p>  <p>The risk to the craftsmanship community is to avoid getting carried away with dogma. Every time I hear <a href="http://channel9.msdn.com/Blogs/MichaelLehman/PP-Symposium-2010-Opening-Keynote-Robert-C-Martin" target="_blank">Bob Martin assert to a 500 person room</a> that if they aren't writing unit tests they are &quot;not professionals&quot; or somehow unworthy of being in the room with him, I cringe. That’s a perfect way to draw fire and alienate people who might otherwise join you in your cause. It also happens to be a perfect way to stand out as a charismatic speaker who gets lots of attention, but I digress… </p>  <p>Do I write tests? Yes. </p>  <p>Always? No. </p>  <p>Am I ashamed when I don't? Not really. Some jobs still call for duct tape. </p>  <p>Professionalism is knowing the appropriateness of a tool for a job and in always striving for integrity in our work. </p>  <p>My .02.</p>  <p>And, Dan, I admire and appreciate your contribution to our craft <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://elegantcode.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" /> .</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Burden Called Meetings</title>
		<link>http://elegantcode.com/2010/12/09/a-burden-called-meetings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-burden-called-meetings</link>
		<comments>http://elegantcode.com/2010/12/09/a-burden-called-meetings/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 19:00:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/12/09/a-burden-called-meetings/</guid>
		<description><![CDATA[I’ve been working for an enterprise corporation for 5+ years, which I’m going to be leaving soon. This organization is suffering from a wide-spread malady called “meetingitis”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working for an enterprise corporation for 5+ years, which <a href="http://elegantcode.com/2010/10/27/moving-to-greener-pastures/">I’m going to be leaving</a> soon. This organization is suffering from a wide-spread malady called “<a href="http://secretgeek.net/meetingitis.asp">meetingitis</a>”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming to a conclusion or a solution. Then there are also those kinds of meetings where you don’t have anything to say or contribute; these are just a complete waste of time.</p>  <p>Yesterday, <a href="http://twitter.com/seagile">Yves</a> pointed me out on Twitter that it is <a href="http://www.mccarthyshow.com/LearnForFree/TheCoreProtocolsOnline/tabid/103/Default.aspx">perfectly fine to leave a meeting</a> if you feel that you’re not able to gain or contribute anything. Today, I walked out of a meeting where one of the participants started making insults against me. I just stood up, walked to the door and left. And I must say that it felt liberating doing so. I went back to my desk, calmed down and got some actual work done. Without a basic form of respect, one simply can’t achieve anything, let alone come to win-win agreements. From now on, I’ll be evaluating all meetings that require my presence before I accept them and also keep evaluating my presence while being there. </p>  <p>Let me close of this mini-rant by sharing a must-see recording of a talk called “<a href="http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html">Why work doesn’t happen at work</a>” by <a href="http://twitter.com/jasonfried">Jason Fried</a>. I recommend you watch this short video, and if you like it, I also recommend picking up a copy of <a href="http://www.amazon.com/exec/obidos/ASIN/0307463745/elegantcode-20">Rework</a>. </p>  <p>I hereby rest my case.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/12/09/a-burden-called-meetings/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Laborers versus Professionals</title>
		<link>http://elegantcode.com/2010/10/27/laborers-versus-professionals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=laborers-versus-professionals</link>
		<comments>http://elegantcode.com/2010/10/27/laborers-versus-professionals/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:53:43 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/10/27/laborers-versus-professionals/</guid>
		<description><![CDATA[A while ago, my good friend Michel Grootjans&#160;tweeted the following: Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question. Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, my good friend <a href="http://geekswithblogs.net/alternativedotnet/Default.aspx">Michel Grootjans</a>&#160;<a href="http://twitter.com/michelgrootjans/status/24569673878">tweeted</a> the following:</p>  <blockquote>   <p>Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question.</p> </blockquote>  <p>Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a while. Try to picture your own work environment and how this relates. Go ahead! I can wait.</p>  <p>OK then, let’s move on.</p>  <p>I’ve been working for an enterprise corporation for 5+ years now. One of the things I’ve seen and learned there over this period of time is that laborers are more valued by management than professionals. Let me elaborate on this. </p>  <p>One of the biggest issues in a typical enterprise corporation is trust, specifically the lack thereof. The direct consequence of this lack of trust are massive amounts of constraints, regulatory processes and <a href="http://c2.com/cgi/wiki?FearDrivenDevelopment">fear-driven development</a>. This is the natural habitat of laborer developers, a nice and cozy place where they can spend their hibernation until retirement. This is where the term ‘code monkey’ originates from. Nine to five, no thinking, narrow focus, like soldiers in the military obeying orders to make a big mess. But sometimes, amongst these massive cohorts of laborers, there are small islands that exist of one or more professional developers. These are the kind of people that are very passionate about their craft, that want drive innovation and also want to continuously learn and improve. If you’re a developer and you’re reading this blog post, you probably fall into this category of developers.</p>  <p>But professional developers always have one part of the establishment going against them. It’s not the laborers. They don’t care. It’s an instrument better known as management. A large part of the IT industry, especially corporate IT shops, are being run by giant flocks of managers. Some of these managers started out as software developers and some of them are just born that way. But there’s something that they all have in common: they don’t write code as part of their day job. Although they don’t get their hands dirty with writing software, most managers do feel compelled to impose all kinds of political decisions regarding business requirements, software architecture/design, tools and technologies to the development teams they are ‘managing’. I for one want to make it clear that this has to stop. In order to lift this industry to the next level, we as software professionals need to free ourselves from the leash that is currently being held by management.&#160;&#160; </p>  <p>Professional developers working in these kinds of corporate environments are generally considered as troublemakers, if not by their direct bosses then certainly by other parts of management. The general attitude towards professionals is slamming them with more&#160; procedures, so called ‘company standards’ and ‘default architectures’. This ends up with a lot of frustration, a feeling of burn-out or even worse, suffocation as it may seem that the walls are closing in. Professional developers generally have a hard time placing this attitude towards them. They just want to do the right thing and provide the best possible solution they’re able to come up with. If managers don’t trust their development teams to make the right decisions, then why did they got hired in the first place? </p>  <p>I for one am pleading to get past this all this. Any business that wants to survive in this hard world economy and even wants to get ahead of its competition has to free its professional developers from management. It’s that simple. Management is great for enforcing compliance, but if engagement is what you want (and is definitely needed for bringing innovation), self-direction is essential. I already wrote <a href="http://vanryswyckjan.blogspot.com/2008/02/on-software-factories.html">a blog post about self-organizing teams</a> a couple of years ago. Today, I’m even more convinced that self-direction is one of the major key enablers for innovation in the IT industry of the 21th century. Anyway, someone who isn’t coding at least 50% of his day job shouldn’t be allowed to interfere with any kind technical decision making. Period! </p>  <p>I’m not saying that development teams should get a signed blank check. On the contrary. Financial and business constraints should still be taken into account. But when it comes to creativity, methodologies, technologies and tools, management shouldn’t get in the way. Development teams should be able to take responsibility for their own actions. Managers should know their place by making sure that their development teams can operate as optimal and efficient as possible by removing as many impediments as possible.</p>  <p>Let me show you a couple of examples where this principle of autonomy has immensely paid of so that you’re able to judge for yourself.</p>  <p>I personally find health care a fascinating craft. I find it fascinating simply because there are so many parallels than can be drawn between software engineering and the state of health care roughly 200 years ago :-). Lets take about modern hospitals for example. Medical facilities are generally being run by senior medical staff and not by managers! Senior medical staff are people that have a high degree of mastery in what they do and still perform their craft every single day. Maybe they’re not doing it full time so that they’re able to fulfill their ‘path-finding’ responsibilities, but still, they are still fixing their patients. Hospitals do have managers however, but they are there simply for enabling the medical staff to not worry about anything else besides saving lives. Can you picture lying in an operating room when a manager in a suit bursts through the door, yelling at the surgeon that he’s not allowed to use technique xyz to save your live? Preposterous you say? Not so with the current state of affairs in IT departments of the enterprise corporations. </p>  <p>There are a couple of concrete examples in the IT industry as well. Remember when Google <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?_r=1">announced</a> that their engineers get to spend 20 percent of their time to work on something of their own interest? This resulted in massive improvements for products like GMail, Google Maps, Google Docs, etc … and directly contributed to Google’s success and current market share. Other companies like <a href="http://blogs.atlassian.com/rebelutionary/archives/000495.html">Atlassian</a> and <a href="http://blog.facebook.com/">Facebook</a> are enabling innovation in basically the same way. </p>  <p>Yet another example is Pixar. If you haven’t seen or listened to <a href="http://www.scottberkun.com/blog/2010/inside-pixars-leadership/">this interview</a> with Ed Catmull, the president of Pixar, stop reading this blog post and let it inspire you now! Somewhere along this awesome interview he mentions the following:</p>  <blockquote>   <p>Part of the behavior is I don’t know the answers. And at first that seems a little bit glib. But after awhile people get that I really don’t know the answer to a lot of these things. So we set it up so that the management really doesn’t tell people what to do.&#160; </p> </blockquote>  <p>Think about how amazing it would be like to work in an environment like that. It’s inevitable that great things are bound to happen.</p>  <p>There are plenty of other examples out there, like open-source software, Wikipedia, etc. … . They all prove that self-management results in engagement and that this is going to be a major differentiator in tomorrow’s economy.&#160; </p>  <p>Make sure to check out the following resources as well:</p>  <ul>   <li><a href="http://www.ted.com/talks/dan_pink_on_motivation.html">The surprising science of motivation</a> by Daniel Pink </li>    <li><a href="http://openmymind.net/2010/10/7/programmer-passion">Programmer Passion: An Enterprises Most Useful Yet Repressed Advantage</a> by Karl Seguin </li>    <li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">Drive: The surprising truth about what motivates us</a> </li> </ul> Till next time.   ]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/10/27/laborers-versus-professionals/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Keep Pressing on my Friend (When programming seems bleak)</title>
		<link>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keep-pressing-on-my-friend-when-programming-seems-bleak</link>
		<comments>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 22:16:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/</guid>
		<description><![CDATA[Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again? Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper? I used to think it just happened to me.&#160; The first time [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again?</p>  <p>Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper?</p>  <p>I used to think it just happened to me.&#160; The first time it happened to me, I almost switched my major from CS to CIS.&#160; But, the more and more I work in this field and talk to other programmers, the more and more I see the same exact thing happening.&#160; And guess what?&#160; It is happening to everyone.</p>  <p>Not just you.&#160; You are not alone.</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2010/09/tired_man.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="tired_man" border="0" alt="tired_man" src="http://elegantcode.com/wp-content/uploads/2010/09/tired_man_thumb.jpg" width="248" height="356" /></a></p>  <h2>I’m not talking about burnout here</h2>  <p>This is more than burnout.&#160; This lack of motivation energy-sapping-plague can hit a programmer at any time whether you just finished a week of all nighters or you just came back from a peaceful vacation.</p>  <p>I actually find that it is the time when I am furthest from what should be burn out that this phenomenon is most likely to occur.</p>  <p>So, if it’s not burnout, what is it?</p>  <p>I’ll call it programming lethargy.&#160; It actually happens to two other groups of professionals: athletes and craftsmen.</p>  <p>The truth is it is a perfectly normal cycle.&#160; This “barrier” is actually the reason why there are many apprentices, few journeymen and even fewer masters.</p>  <p>When you hit this phase be glad, it means you are about to be tested and if you come out on the other side, you will end up with a renewed interest and passion and leave behind the others that can’t cut it.</p>  <p>Oh, and it will happen again, probably several more times.</p>  <h2>Press on my friend</h2>  <p>What can you do about this problem?</p>  <p>Don’t despair, just press on.&#160; Stay the course and all will be well.</p>  <p>I am not sure why this happens, but I do know that it is a true test of your desire for the goal, whether to be a better programmer or a better athlete, or a better singer or musician. </p>  <p>The test is whether or not you can still press on when the motivation and passion is not there.</p>  <p>The reward waiting for you on the other side? </p>  <ul>   <li>A renewed passion and energy.&#160; </li>    <li>A new kind of appreciation for what you do.&#160; </li>    <li>Experience and true appreciation for your craft. </li> </ul>  <p>The question you have to ask yourself, is what do you ultimately want to become?&#160; If what you do is more than just a job to you, then you’ll find the strength to press on.</p>  <h2>How to press on when the motivation is gone</h2>  <p>If you agree with me, or even think that perhaps what I am saying is worth considering, then you will probably wonder how you can get through this phase or test to see the other side.</p>  <p>We can look at athletics again as a comparison to provide some insight.</p>  <p>Think about a professional track runner, training for competition.&#160; Consider what would happen if that athlete decided to not have a formal training schedule, but instead only train when he felt like it.</p>  <p>What would happen when he didn’t feel like training for a week?</p>  <p>Now let’s say he had a training schedule and he followed it, even on the mornings when he didn’t feel like getting up to train.</p>  <p>What would happen if his training was not planned out?&#160; If he didn’t know what kind of drills to do or have a long term plan for the training sessions?</p>  <p>If you want to make it through the times when you don’t feel the motivation and passion for writing code and solving problems, then you have to have a plan.&#160; A solid plan that will ensure that you will be able to press on.</p>  <p>Here are some tips to make sure that when you get struck by programming lethargy, you do make it through to the other side.</p>  <ul>   <li>I’ve talked about this <a href="http://simpleprogrammer.com/2010/07/02/the-importance-of-always-reading/">several times</a> in my blog.&#160; <strong>Make sure you are always reading a technical book.</strong>&#160; Create a schedule and stick to it.&#160; Even 15-30 minutes a day of reading will let you read around 1-2 books a month.&#160; That is a huge amount of knowledge. </li>    <li>When you don’t feel like working,<strong> break up your work into <a href="http://simpleprogrammer.com/2010/07/09/why-small-is-better/">small tasks</a> and start accomplishing those tasks.</strong>&#160; Figure out exactly what you have to do to move forward and do it.&#160; Don’t give in and waste time.&#160; The time you feel the most like killing time, is the time when you must throw yourself into your work all the more. </li>    <li><strong>Set some goals for yourself.</strong>&#160; Short term and long term.&#160; The short terms goals should clearly lead to the long term goals.&#160; Review those goals frequently and always try to make progress towards the goals.&#160; Even a little bit of progress adds up over time. </li>    <li><strong>Don’t start thinking about changing careers or looking for an easier job.</strong>&#160; Don’t start thinking you will feel this way forever.&#160; Realize that what you are experiencing now is a feeling and feelings are not trustworthy. </li>    <li><strong>Clean up.</strong>&#160; Clean up your workspace.&#160; Clean up your computer.&#160; Get yourself some new equipment if it will help.&#160; Feeling like you have a new and fresh environment can do wonders for motivation. </li>    <li><strong>Challenge yourself.</strong>&#160; Your gut is going to tell you to slow down and relax, but that road leads to laziness.&#160; When laziness comes your way, the best way to fight it is to push right into it! </li> </ul>  <p>Well, that is all the tips I have for you for today.&#160; Just remember that you are not alone and what you are experiencing is normal.&#160; </p>  <p>If you’re in a period now where you are motivated and feel great about your work and what you are doing, you might want to bookmark this post and come back to it when it can benefit you more.&#160; </p>  <p>Remember though, setting up good habits and routines now can help you cruise through the hard times later. </p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>  <ul></ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Microsoft doesn&#8217;t create bad developers, developers do</title>
		<link>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoft-doesnt-create-bad-developers-developers-do</link>
		<comments>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:47:16 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/</guid>
		<description><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an [...]]]></description>
			<content:encoded><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an industry that is evolving at an incredible pace, contains an incalculable number of technologies, frameworks, best practices and constantly redefines the definition of how things should be done in the best possibly way. It’s the industry that makes the rest of the world tick. Daunting really, if you think about it.

A while back I read a couple of posts by <a href="http://www.gilzilberfeld.com/" target="_blank">Gil Zilberfeld</a> (<a title="Read Gil's post on Why Microsoft makes bad programmers" href="http://www.gilzilberfeld.com/2010/07/why-microsoft-makes-bad-programmers.html" target="_blank">here</a> and <a title="Read Gil's post on CSI: Microsoft" href="http://www.gilzilberfeld.com/2010/08/csi-microsoft.html" target="_blank">here</a>) where Gil talks about the responsibility that vendors such as Microsoft plays in the role of securing the quality of the work that is produced in our industry. While I think I see the points  Gil is trying to make, I think he misses the beat a bit and I have a hard time agreeing with the conclusions he draws.

The way I see it there are two types of developers; those that are just in it to pay the bills and those that consider themselves as craftsmen. If you consider yourself a craftsman then you should already be aware that you are responsible for your own faith and actions in this industry. But, if you are just in it to pay the bills then you are probably also looking to do so by doing the least amount of work and that includes looking for information on how to solve a particular problem or how to apply a technology onto your stack.

So if you are one of the developers that are only looking towards Microsoft (or the relevant company for the technology stack you are working on) is it their fault if you implement something in a way that could be considered bad? Of course not! Sure there are a lot of outdated and down right poor samples at the Microsoft (or relevant company) website and their idea on how certain things should be solved are bound to differ from others (and that’s definitely not to say that there isn’t good contents, there are a ton of it). However, if you rely on a single source of information, you are always going to get an opinionated view. Take my word on it (right?).

Doctors reads medical journals, publishes research papers, attend conferences, network with colleagues and make sure they stay up to date with the latest in their field. I’m pretty sure you are happy that they spend all of this time to make sure they can provide the best possible care and treatment when someone are in need of their services. I know I am.

Just as with any other profession, developers are responsible for their own education, for honing their skills in the craft that they have chosen to practice. In order to keep up in an industry that evolves at the speed of light you need to invest in yourself. The code you write today should be some of the best you have ever written, while a year later you should be considerably less excited about its quality. It’s a sign of growth. That you’ve continued to move forward as a craftsman, that you skills have been honed and broadened during the past year.

So what about the tools? Do we really rely on them too much to get the work done? I would say, definitely not! But again you have to specify just exactly what you are talking about when talking about tooling. If you rely on visual designers, drag and drop, wizards and the likes to to the majority of your work, then yes you are probably relying too much on your tools. Odds are that you will have a hard time to get anything outside of standard behavior to run and there will be pain points when you need to debug.

However you would do yourself (and your employer) a huge disservice if you did not make it your goal to know the tools in your toolbox as good as possible. What’s wrong with knowing how to use the debugger, the IDE and tools like ReSharper as good as possible? Used correctly they will have a huge impact on productivity. Make sure you know the finer details of the tools and make them work for your and not the other way around. Yes, sometimes tools do get in the way of the goal, even slow you down, and when that is the case, don’t use the tools! Tools are there to help you when you need them, not to act as a crutch you always have to lean on so you don’t fall on your ass.

Well there you have my thoughts on the subject. It’s always up to the developer, not the companies. Always.

I am also around on twitter <a title="Visit my twitter profile" href="http://twitter.com/thecodejunkie" target="_blank">@thecodejunkie</a> in case you need one more person to follow]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Software, &#8220;It&#8217;s not what we do&#8221;.</title>
		<link>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-its-not-what-we-do</link>
		<comments>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 12:13:36 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/09/software-its-not-what-we-do/</guid>
		<description><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a [...]]]></description>
			<content:encoded><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a “core competency”.

One thing I have heard expressed in those places is, “software development is not our core competency, therefore recommendations around professional development practices don’t apply to us.”

Good, lord. Really, people?

This is akin to a Boeing corporate attorney claiming that he need not be competent because Boeing makes airplanes.

I don’t know where this absurd line of reasoning comes from, but I know why it is tolerated. It is tolerated because we don’t have the formal structures to hold professionals accountable the way we might hold an electrician, plumber, or physician accountable to being merely competent. If you are reading this post you probably make 3X the salary of a plumber, yet are held to a lower degree of professional accountability for your work.

This is sad, but it doesn’t mean that we need to pick up the mantle of mediocrity available to us. We can hold ourselves accountable for professionalism no matter where we work.

If the organization we serve specializes in jellybeans, services, software widgets, or any other industry, we are hired to bring our best game to the table. This is why they hire us, folks! We are supposed to know what we are doing, not making excuses for incompetence!

In summary, no matter what type of organization you work for:
<ul>
	<li>Yes, you need to use source control.</li>
	<li>Yes, you need to automate the build.</li>
	<li>No, you shouldn’t be releasing the assemblies compiled on your machine.</li>
	<li>Yes, you need to stop writing long methods and pay attention to code complexity.</li>
	<li>Yes, you need to buy your developers the best tools available.</li>
	<li>No, you don’t need to write your own logging framework.</li>
	<li>Yes, you should be practicing test first development.</li>
	<li>No, continuing to ship known defects is not acceptable.</li>
	<li>Yes, you should understand who your customer is.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Software Craftsmanship on the Polymorphic Podcast</title>
		<link>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-craftsmanship-on-the-polymorphic-podcast</link>
		<comments>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:11:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/</guid>
		<description><![CDATA[I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of being the host!</p>  <p><a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx?"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ListenBanner" border="0" alt="ListenBanner" align="right" src="http://elegantcode.com/wp-content/uploads/2010/08/ListenBanner.png" width="341" height="53" /></a> The interview is now live and <a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx" target="_blank">available here</a>. </p>  <p>We visited many of my favorite topics including:</p>  <ul>   <li>How to sell Agile in your org</li>    <li>Scrum and ScrumBut</li>    <li>Code Craftsmanship</li>    <li>Agile in small teams</li>    <li>How to be an agile army of one</li>    <li>How my mom is the perfect complexity gauge</li>    <li>And ElegantCode.com gets a shout out!</li> </ul>  <p>This was really fun. Thanks, Craig!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enforce Correct Usage By Wrapping Types</title>
		<link>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keep-pressing-on-my-friend-when-programming-seems-bleak</link>
		<comments>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 22:16:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/</guid>
		<description><![CDATA[Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again? Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper? I used to think it just happened to me.&#160; The first time [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again?</p>  <p>Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper?</p>  <p>I used to think it just happened to me.&#160; The first time it happened to me, I almost switched my major from CS to CIS.&#160; But, the more and more I work in this field and talk to other programmers, the more and more I see the same exact thing happening.&#160; And guess what?&#160; It is happening to everyone.</p>  <p>Not just you.&#160; You are not alone.</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2010/09/tired_man.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="tired_man" border="0" alt="tired_man" src="http://elegantcode.com/wp-content/uploads/2010/09/tired_man_thumb.jpg" width="248" height="356" /></a></p>  <h2>I’m not talking about burnout here</h2>  <p>This is more than burnout.&#160; This lack of motivation energy-sapping-plague can hit a programmer at any time whether you just finished a week of all nighters or you just came back from a peaceful vacation.</p>  <p>I actually find that it is the time when I am furthest from what should be burn out that this phenomenon is most likely to occur.</p>  <p>So, if it’s not burnout, what is it?</p>  <p>I’ll call it programming lethargy.&#160; It actually happens to two other groups of professionals: athletes and craftsmen.</p>  <p>The truth is it is a perfectly normal cycle.&#160; This “barrier” is actually the reason why there are many apprentices, few journeymen and even fewer masters.</p>  <p>When you hit this phase be glad, it means you are about to be tested and if you come out on the other side, you will end up with a renewed interest and passion and leave behind the others that can’t cut it.</p>  <p>Oh, and it will happen again, probably several more times.</p>  <h2>Press on my friend</h2>  <p>What can you do about this problem?</p>  <p>Don’t despair, just press on.&#160; Stay the course and all will be well.</p>  <p>I am not sure why this happens, but I do know that it is a true test of your desire for the goal, whether to be a better programmer or a better athlete, or a better singer or musician. </p>  <p>The test is whether or not you can still press on when the motivation and passion is not there.</p>  <p>The reward waiting for you on the other side? </p>  <ul>   <li>A renewed passion and energy.&#160; </li>    <li>A new kind of appreciation for what you do.&#160; </li>    <li>Experience and true appreciation for your craft. </li> </ul>  <p>The question you have to ask yourself, is what do you ultimately want to become?&#160; If what you do is more than just a job to you, then you’ll find the strength to press on.</p>  <h2>How to press on when the motivation is gone</h2>  <p>If you agree with me, or even think that perhaps what I am saying is worth considering, then you will probably wonder how you can get through this phase or test to see the other side.</p>  <p>We can look at athletics again as a comparison to provide some insight.</p>  <p>Think about a professional track runner, training for competition.&#160; Consider what would happen if that athlete decided to not have a formal training schedule, but instead only train when he felt like it.</p>  <p>What would happen when he didn’t feel like training for a week?</p>  <p>Now let’s say he had a training schedule and he followed it, even on the mornings when he didn’t feel like getting up to train.</p>  <p>What would happen if his training was not planned out?&#160; If he didn’t know what kind of drills to do or have a long term plan for the training sessions?</p>  <p>If you want to make it through the times when you don’t feel the motivation and passion for writing code and solving problems, then you have to have a plan.&#160; A solid plan that will ensure that you will be able to press on.</p>  <p>Here are some tips to make sure that when you get struck by programming lethargy, you do make it through to the other side.</p>  <ul>   <li>I’ve talked about this <a href="http://simpleprogrammer.com/2010/07/02/the-importance-of-always-reading/">several times</a> in my blog.&#160; <strong>Make sure you are always reading a technical book.</strong>&#160; Create a schedule and stick to it.&#160; Even 15-30 minutes a day of reading will let you read around 1-2 books a month.&#160; That is a huge amount of knowledge. </li>    <li>When you don’t feel like working,<strong> break up your work into <a href="http://simpleprogrammer.com/2010/07/09/why-small-is-better/">small tasks</a> and start accomplishing those tasks.</strong>&#160; Figure out exactly what you have to do to move forward and do it.&#160; Don’t give in and waste time.&#160; The time you feel the most like killing time, is the time when you must throw yourself into your work all the more. </li>    <li><strong>Set some goals for yourself.</strong>&#160; Short term and long term.&#160; The short terms goals should clearly lead to the long term goals.&#160; Review those goals frequently and always try to make progress towards the goals.&#160; Even a little bit of progress adds up over time. </li>    <li><strong>Don’t start thinking about changing careers or looking for an easier job.</strong>&#160; Don’t start thinking you will feel this way forever.&#160; Realize that what you are experiencing now is a feeling and feelings are not trustworthy. </li>    <li><strong>Clean up.</strong>&#160; Clean up your workspace.&#160; Clean up your computer.&#160; Get yourself some new equipment if it will help.&#160; Feeling like you have a new and fresh environment can do wonders for motivation. </li>    <li><strong>Challenge yourself.</strong>&#160; Your gut is going to tell you to slow down and relax, but that road leads to laziness.&#160; When laziness comes your way, the best way to fight it is to push right into it! </li> </ul>  <p>Well, that is all the tips I have for you for today.&#160; Just remember that you are not alone and what you are experiencing is normal.&#160; </p>  <p>If you’re in a period now where you are motivated and feel great about your work and what you are doing, you might want to bookmark this post and come back to it when it can benefit you more.&#160; </p>  <p>Remember though, setting up good habits and routines now can help you cruise through the hard times later. </p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>  <ul></ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Craftsmanship</title>
	<atom:link href="http://elegantcode.com/category/craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00: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>Temovate Cream For Sale</title>
		<link>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-software-development-will-never-be-engineering</link>
		<comments>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:37:48 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/</guid>
		<description><![CDATA[I always find it rather interesting when academics try to quantify generalized metrics about software development. Temovate Cream For Sale, Things like: per lines of code, there will be X number of bugs. Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.” These are all interesting [...]]]></description>
			<content:encoded><![CDATA[<p> <p>I always find it rather interesting when academics try to quantify generalized metrics about software development.</p>  <p> <b>Temovate Cream For Sale</b>, Things like: per lines of code, there will be X number of bugs.</p>  <p>Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.”</p>  <p>These are all interesting thoughts, but software development will never conform to rigid engineering principles like many other engineering practices.&#160; The longer I work in the field, the more and more I realize that software development has nothing to do with engineering.&#160; We just happen to attend some of the same math classes in school.</p>  <h2>Building bridges</h2>  <p>One of the main arguments I hear people make about the current state of software development as an engineering practice is based around its relative maturity to other engineering fields.</p>  <p>There is a huge problem with this line of thinking.</p>  <p>The argument goes something like this:&#160; “<em>Engineering has been around for hundreds of years and has matured to the point where it is a measurable science, but software development has only been around in earnest for the last few decades or so, therefore it is relatively immature as an engineering discipline.”</em></p>  <p>On the surface this argument seems sounds.&#160; And certainly in 50 years software development will be different than it is now.&#160; Heck, it is much more different than it was just 10 years ago.</p>  <p>But, here is the problem.&#160; We build much more software than we do bridges.</p>  <p><img src="http://www.nps.gov/glca/historyculture/images/Navajo_Bridges_1.gif" width="589" height="442" /></p>  <h6 align="center">&#160;</h6>  <p>Let me give you an example that came to light in another area of my interest… poker.</p>  <h1></h1>  <h2>The poker quickening</h2>  <p>An interesting thing happened in the poker community in the last 10 years; poker pros with decades of experience started getting beat time and time again by 19 year old poker prodigies.</p>  <p>From an outside perspective it looks like the poker world opening up just widened the search for talent and there it was.&#160; But, a closer examination of the evidence leads to the truth.</p>  <p>Before the online poker industry was born, poker was played in card rooms and casinos in states where it was legal and occasionally at small home games throughout the US.</p>  <p>A poker pro might play poker tournaments perhaps 100 times to 150 times a year.&#160; The sum knowledge of the poker community and the meta game around it was based on this base of professional poker players playing tournaments and gaining experience at this mediocre rate.</p>  <p>Once the internet poker rooms started opening up, things changed, and they changed rapidly.&#160; Now anyone could play poker from their home PC.&#160; Not only could they play poker, they could play poker tournaments at all hours of the day.</p>  <p>Here is a list of some of the major changes that took place:</p>  <ul>   <li>Hands are dealt at 60-80 hands per hour instead of 10-30</li>    <li>Players can play in many tournaments at one time, 10 tournaments at once is not unheard of</li>    <li>Players can analyze hand histories and historical data about their play and opponents play through the use of software </li>    <li>Age requirements are out the window, technically any one of any age could be playing online</li>    <li>Players can play 24 hours a day</li>    <li>The professional online tournament player could easily play over 3000 tournaments in a year, while a brick and mortar pro would be lucky to reach 100 in a year.</li>   <img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://t1.gstatic.com/images?q=tbn:ANd9GcRj9uGNWSyqGWEneiH6xaBAyS6COwGYicdNadZu-06KWQLhIi6LMw&amp;t=1" width="316" height="270" /></ul>  <p>&#160;</p>  <p>So where am I going with all this?</p>  <p>The point is that as a whole more hands were dealt and more poker knowledge and experience was obtained in 1 year of online poker than probably the entire history of poker before that.&#160; We reached such an accelerated pace of play that all previous knowledge of poker became obsolete.&#160; </p>  <p>The strategy of tournament poker completely changed.&#160; The game evolved perhaps 500 years into the future in a matter of 5 years time.</p>  <p>The same has happened with software development.</p>  <h2>Back to the bridge building</h2>  <p>So let’s take that poker example and look at it through the lens of software development.</p>  <p>Let us compare the engineering maturity to software development to the engineering maturity of the engineering discipline of building bridges.</p>  <p>I think most people would agree that bridge building is a very mature engineering discipline but many people would argue that software development is not.</p>  <p><strong>How many bridges do you think have been built in the world?</strong></p>  <p>Well there are <a href="http://www.betterroads.com/category/bridge-inventory/erroads.randallreillycms.com/files/2009/11/BR1109_BridgeInventory.pdf">about 600,000 bridges in the United States alone</a>, so the world figure must be at least somewhere around 10 times that number perhaps 20.</p>  <p><strong>How many software programs have been written?</strong></p>  <p>This is a very hard number to estimate, but lets take a rough guess based on <a href="http://stackoverflow.com/questions/453880/how-many-developers-are-there-in-the-world">how many software developers there are in the world</a>.&#160; </p>  <p>If we say there are about 12 million software developers and each software developer has written approximately 3 programs, we can estimate that a large amount more programs have been written than bridges built.</p>  <p>My point is not to knock bridge building, we are pretty good at it as a whole, but rather to show that collectively, even though we have been building bridges for hundreds of years, we have probably devoted an equivalent amount of time to building software.</p>  <p>This line of thinking may lead you to argue back that software development and bridge building are very different.&#160; Bridge building has a fixed set of requirements that are pretty close to the the same for each bridge you build, but software development is a big open void of whims and ambiguously contradictory statements.</p>  <p>I agree with you 100%!&#160; And in essence that is my point.</p>  <h2>Software development is different</h2>  <p>And we have had enough time to realize that.&#160; Waiting for software development to gel into some kind of engineering discipline like other engineering disciplines is like waiting for water without gelatin mix to turn into Jello.&#160; </p>  <p>It’s just not going to happen!</p>  <p>In my mind it is clear that the argument that we haven’t given it enough time is just wishful thinking.&#160; The nature of software development, just like online poker, leads itself to rapid evolution.</p>  <p>Consider what direction software development is evolving.&#160; Is it even evolving in the direction of rigid engineering practices or is it evolving in the exact OPPOSITE direction?</p>  <p>Ten years ago, we tried to use UML diagrams and CASE tools to develop software.&#160; Ten years ago waterfall was all the rage.&#160; Ten years ago, we thought that ten years in the future we would have programs that would allow us to build software in the same way that CAD tools allow for building machine parts.</p>  <p>Not only did it not happen.&#160; It went completely the other way.&#160; Now we are all talking about Agile.&#160; Now people don’t even remember what CASE tools are.&#160; Now we are building software without trying to define the whole system in UML diagrams.</p>  <p><strong>The fact of the matter is software systems are unruly beasts!</strong></p>  <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://aznbadger.files.wordpress.com/2010/06/beast.jpg" /></p>  <p>In my mind it comes down to one simple distinction.&#160; Software is living, bridges aren’t.&#160; When you are done building a bridge, you are done building the bridge.&#160; </p>  <p>Sure someone, probably not you, will have to come along and do some routine maintenance on it.&#160; Sure, some small things might change about it, but for all intents and purposes the work is done.</p>  <p>In most software development scenarios, this is not the case.&#160; In most software development scenarios, releasing V1 is not even close to the end.&#160; Sometimes V1 and V2 don’t even look that same at all.&#160; Software development is about operating on a living breathing thing and all the while keeping it alive.</p>  <p>The truth is, we software developers have more in common with surgeons than with other engineers.</p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>.  Buy Temovate Cream without a prescription.  Temovate Cream trusted pharmacy reviews.  Temovate Cream over the counter.  Where can i order Temovate Cream without prescription.  Online buy Temovate Cream without a prescription.  Temovate Cream no rx.  Buy cheap Temovate Cream no rx.  Temovate Cream photos.  Buy Temovate Cream online no prescription.  Order Temovate Cream online c.o.d.  Herbal Temovate Cream.  About Temovate Cream.  Australia, uk, us, usa.  Cheap Temovate Cream.  Temovate Cream class.  Temovate Cream brand name.  Online Temovate Cream without a prescription.  Buy Temovate Cream without prescription.  Buy Temovate Cream from canada.  After Temovate Cream.  Order Temovate Cream from mexican pharmacy.  Temovate Cream without a prescription.  Purchase Temovate Cream.  Temovate Cream natural.  Temovate Cream overnight.  Temovate Cream online cod.  Where can i buy cheapest Temovate Cream online.  Purchase Temovate Cream for sale.  Online buying Temovate Cream.  Purchase Temovate Cream online.  Temovate Cream used for.  Temovate Cream coupon.  Temovate Cream description.  Order Temovate Cream no prescription.  Temovate Cream maximum dosage.  Cheap Temovate Cream no rx.  Temovate Cream images.  Temovate Cream blogs.  Buy Temovate Cream online cod.  Buy generic Temovate Cream.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4472'>Bactroban For Sale</a>. <a href='http://elegantcode.com/?p=4632'>Armour For Sale</a>. <a href='http://elegantcode.com/?p=4639'>Buy Estrace Vaginal Cream Without Prescription</a>. <a href='http://elegantcode.com/?p=4668'>Buy Augmentin Without Prescription</a>. <a href='http://elegantcode.com/?p=4535'>Buy Tindamax Without Prescription</a>. <a href='http://elegantcode.com/?p=4931'>Fast shipping Diclofenac</a>. <a href='http://elegantcode.com/?p=4240'>Combivent brand name</a>. <a href='http://elegantcode.com/?p=4417'>Levaquin overnight</a>. <a href='http://elegantcode.com/?p=4597'>Purchase Toradol online</a>. <a href='http://elegantcode.com/?p=4221'>Australia, uk, us, usa</a>.<br />
<b>Trackbacks from:</b> <a href='http://www.quarterlives.com/?p=1148'>Temovate Cream For Sale</a>. <a href='http://4realz.net/?p=1972'>Temovate Cream For Sale</a>. <a href='http://www.macneilbmx.com/blog/?p=5997'>Temovate Cream For Sale</a>. <a href='http://www.greatgreengoods.com/?p=2476'>Temovate Cream For Sale</a>. <a href='http://www.thegriffonnews.com/?p=9947'>Temovate Cream For Sale</a>. <a href='http://social-blend.com/?p=1160'>Temovate Cream brand name</a>. <a href='http://blog.farmland.org/?p=3812'>Where can i find Temovate Cream online</a>. <a href='http://reversemortgagedaily.com/?p=14136'>Generic Temovate Cream</a>. <a href='http://linuxologist.com/?p=1792'>Temovate Cream photos</a>. <a href='http://home.officesnapshots.com/?p=114'>Order Temovate Cream from mexican pharmacy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Buy Xalatan Without Prescription</title>
		<link>http://elegantcode.com/2011/04/13/why-rules-rule/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-rules-rule</link>
		<comments>http://elegantcode.com/2011/04/13/why-rules-rule/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 03:19:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/04/13/why-rules-rule/</guid>
		<description><![CDATA[Buy Xalatan Without Prescription, I have to admit, I love rules. They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally. Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how [...]]]></description>
			<content:encoded><![CDATA[<p> <p> <b>Buy Xalatan Without Prescription</b>, I have to admit, I love rules.</p>  <p>They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally.</p>  <p>Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how valuable they are, because when rules are doing their job, you don’t even notice them.</p>  <p>The first rule of your day is likely your alarm clock.&#160; This is a self imposed rule that you have created for yourself to get up at a certain time in the morning.&#160; Try to function in any meaningful way by completely removing that rule and see what happens.</p>  <p>Almost all games we play have rules.&#160; Without rules those games wouldn’t be much fun.</p>  <p>We drive on the correct side of the road in our lane, following rules of traffic, which if not obeyed put us in mortal danger and make the road quite a scary place.</p>  <p>It is a gross understatement to say rules are important to our daily life.</p>  <p>Yet, I am constantly amazed how many people seem to oppose any notion of rules when it comes to our craft of software development.</p>  <h2>There is this notion that rules somehow preclude judgment</h2>  <p>Somehow the idea has crept into many of our brains that rules and good judgment, (what we might call craftsmanship), are diametrically opposed to each other.</p>  <p>There seems to be a pervasive thought that rules suck all the fun out of things and take away creativity, skill and experience, reducing the follower of such rules to a mindless robot, replaceable by any other robot.</p>  <p>Not only do I think this viewpoint is completely wrong, but I think it is downright destructive to the craft of software development.</p>  <p>Let us first dispel the notion that rules destroy creativity and its kin.</p>  <p>Think about a game like Scrabble.&#160; Scrabble is a game that is based on a very restrictive set of rules.&#160; You basically have only two moves you can do.</p>  <ol>   <li>Make a word using only letters in your rack and letters on the board.</li>    <li>Discard some letters to get some new ones.</li> </ol>  <p>Rules dictate how many letters you can have and what ways you can arrange them.&#160; Yet, how much creativity is actually created by these constraints?</p>  <p>Music is often seen as a cousin to coding, and is another great example of constraints which breed creativity.&#160; Music has a huge amount of constraint.&#160; There are many natural rules about sounds and chords.&#160; We only have a small amount of notes to even work with, yet people have been elaborating on those 12 notes for hundreds of years and new creative sounds are produced every single day!</p>  <p><strong>If you really take the time to think about it, I think you will find that constraints actually breed creativity not destroy it.</strong></p>  <h2>The truth is rules come from good judgment at the right time</h2>  <p>Let me posit you this question.</p>  <p>When is a better time to make a judgment decision of what to do when a bear attacks you?</p>  <ul>   <li>When the bear is actually attacking you</li>    <li>Sitting at your computer with a huge amount of reference material available to you about bear attacks and a calm peaceful environment</li> </ul>  <p>If you chose when the bear is actually attacking you turn to page 32.</p>  <p><strong>Page 32:</strong></p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bear-attack" border="0" alt="bear-attack" src="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack_thumb.jpg" width="447" height="318" /></a></p>  <p><em>Having no rules in which to operate, in the heat of the moment, you decide to “tickle” the bear.&#160; The bear slays you and munches on your bones.&#160; Your adventure has come to an end.</em></p>  <p><strong><em>You are DEAD!</em></strong></p>  <p>The point is that your judgment is much more likely to be sound when you are removed from the situation which you are making the judgment call about.&#160; Unless you are a close relative of Spock, you’ll probably find that human emotions tends to interfere with sound judgment.</p>  <p>This is why I instead firmly believe that <strong>we should use our good judgment to formulate rules that we will use in the situations which they apply to rather than to try and execute good judgment when we are engrossed in the situation.</strong></p>  <p>If you still disagree with me here, let’s ponder the example of the alarm clock one more time.&#160; Better yet, I challenge you to make a judgment call each morning of when you should wake up.&#160; You can’t use an alarm clock or any rules.&#160; (Before you do this, you might want to make sure you get your resume polished up.)</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="alarm clock" border="0" alt="alarm clock" src="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock_thumb.jpg" width="235" height="386" /></a></p>  <h2>How does this all apply to software development?</h2>  <p>I’m not going to attempt to address every way in this blog post, perhaps we’ll revisit this subject in the future, because it is so important.&#160; Instead my goal here is to convince you to embrace rules and to not fear setting them for yourself, for your team or for your code.</p>  <p>Some of the biggest failings of teams that I see is the fear of setting rules.&#160; Teams seem to be so afraid of restricting someone or impairing their ability to make judgment calls that they go the direction of never setting any concrete rules, just guidelines or best practices.</p>  <p>There is a huge difference between guidelines and rules.&#160; Guidelines help you make a decision, rules make it for you.&#160; Don’t be fooled into thinking they are the same thing, and don’t fear rules.&#160; I always prefer rules over guidelines, because they are much more valuable.</p>  <p><strong>You can actually measure the effect of a rule, but you can’t easily measure the effect of a </strong><strong>guideline.</strong></p>  <p>Let me give you some examples of areas in software development that I think are great places to enforce some rules:</p>  <ul>   <li>Naming conventions</li>    <li>Unit testing</li>    <li>Process of starting work</li>    <li>Who works on work</li>    <li>When work is considered done</li>    <li>How defects are handled</li>    <li>What changes can be made to work in progress</li>    <li>What should be in a backlog</li>    <li>Language and library choices</li>    <li>Data access strategies</li>    <li>Dealing with build failures</li> </ul>  <p>Every time you are having a conversation which ends up identifying something to improve upon, you should be thinking about how you can codify it into a rule.&#160; Don’t be afraid to step out here.&#160; It’s ok to make the wrong rule and change it later.&#160; If you do this you learn something.</p>  <p>Having rules in place prevents you from making in-the-moment decisions which you later come to regret.</p>  <p>When I go to a buffet, I set rules for how much food I can eat.&#160; When I decide to start a workout routine, I set rules for how often and what duration I will workout.&#160; When I write code, I set rules for how I will write that code.</p>  <p>In any of those areas, when I fail to set rules, I end up failing.&#160; It is human nature.</p>  <h2>But rules impede me and end up making me do silly things</h2>  <p>Good.&#160; That is called feedback.</p>  <p>Remember back when you were just making judgment calls all the time instead of following rules you or your team preset ahead of time, you weren’t getting any feedback, now you are.&#160; Be happy about it, celebrate!</p>  <p>You can always change the rules.&#160; You can always tweak the parameters, but if you want to have any success in process improvement, it is much like cooking on the stove.&#160; You are much better off with burner dials that have numbers on them or at least some kind of label, then ones with just a blank dial.&#160; If you don’t know where the dial is, how will you know which way to turn it?</p>  <p>Sometimes rules are going to make you do something silly or seemingly extraneous.&#160; Sometimes rules are going to cause you to possibly even do the wrong thing.</p>  <p>But, if you want to have any chance of learning from your mistakes, if you want to truly improve your process, you must resist the urge to break the rules and instead wait for a time to reflect upon the rules and make appropriate changes at that time.</p>  <p>Learn to embrace rules and you’ll suddenly see an improvement in all areas of life where you apply them, especially your software development!</p>  <h6><strong>As always, you can subscribe to this </strong><a href="http://feeds2.feedburner.com/ElegantCode"><strong>RSS feed</strong></a><strong> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at </strong><a href="http://simpleprogrammer.com/"><strong>http://simpleprogrammer.com</strong></a><strong>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter </strong><a href="http://twitter.com/jsonmez"><strong>here</strong></a><strong>.</strong></h6>.  Xalatan description.  Xalatan no rx.  Buying Xalatan online over the counter.  Fast shipping Xalatan.  Xalatan overnight.  Buy Xalatan from mexico.  Xalatan without a prescription.  Where to buy Xalatan.  No prescription Xalatan online.  What is Xalatan.  Xalatan price.  Rx free Xalatan.  Purchase Xalatan online.  Generic Xalatan.  Xalatan street price.  Xalatan from canada.  About Xalatan.  Taking Xalatan.  Xalatan online cod.  Australia, uk, us, usa.  Order Xalatan online overnight delivery no prescription.  Xalatan recreational.  Xalatan canada, mexico, india.  Xalatan interactions.  Xalatan alternatives.  Online buying Xalatan.  My Xalatan experience.  Where can i cheapest Xalatan online.  Online Xalatan without a prescription.  Xalatan wiki.  Order Xalatan no prescription.  Get Xalatan.  Xalatan from mexico.  Xalatan schedule.  Xalatan dangers.  Purchase Xalatan for sale.  Where can i buy cheapest Xalatan online.  Discount Xalatan.  Is Xalatan addictive.  Buy cheap Xalatan.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4728'>Ventolin For Sale</a>. <a href='http://elegantcode.com/?p=4184'>Synthroid For Sale</a>. <a href='http://elegantcode.com/?p=4384'>Buy Ultram Without Prescription</a>. <a href='http://elegantcode.com/?p=4373'>Topamax For Sale</a>. <a href='http://elegantcode.com/?p=5156'>Amoxicillin For Sale</a>. <a href='http://elegantcode.com/?p=4297'>After Reglan</a>. <a href='http://elegantcode.com/?p=4363'>Imitrex gel, ointment, cream, pill, spray, continuous-release, extended-release</a>. <a href='http://elegantcode.com/?p=4721'>Flonase maximum dosage</a>. <a href='http://elegantcode.com/?p=4534'>Xalatan recreational</a>. <a href='http://elegantcode.com/?p=4354'>Herbal Glucophage</a>.<br />
<b>Trackbacks from:</b> <a href='http://social-blend.com/?p=1234'>Buy Xalatan Without Prescription</a>. <a href='http://www.quarterlives.com/?p=1098'>Buy Xalatan Without Prescription</a>. <a href='http://4realz.net/?p=816'>Buy Xalatan Without Prescription</a>. <a href='http://tayloegray.com/?p=302'>Buy Xalatan Without Prescription</a>. <a href='http://www.macneilbmx.com/blog/?p=5580'>Buy Xalatan Without Prescription</a>. <a href='http://blog.farmland.org/?p=2108'>Xalatan used for</a>. <a href='http://reversemortgagedaily.com/?p=14507'>Xalatan interactions</a>. <a href='http://linuxologist.com/?p=1519'>Online buying Xalatan</a>. <a href='http://home.officesnapshots.com/?p=268'>My Xalatan experience</a>. <a href='http://evanrapoport.com/?p=613'>Buy Xalatan online cod</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/04/13/why-rules-rule/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Programming is not a Craft: My Take</title>
		<link>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=programming-is-not-a-craft-my-take</link>
		<comments>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 17:38:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/</guid>
		<description><![CDATA[Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: Programming is not a Craft. Dan’s sentiments are not unique. I have heard similar opinions from other [...]]]></description>
			<content:encoded><![CDATA[<p>Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: <a href="http://dannorth.net/2011/01/11/programming-is-not-a-craft/" target="_blank">Programming is not a Craft</a>. Dan’s sentiments are not unique. I have heard <a href="http://blogs.tedneward.com/2008/05/11/Im+ProChoice+Pro+Programmer+Choice+That+Is.aspx" target="_blank">similar opinions</a> from other prominent developers I respect.</p>  <p>I read in Dan's post (and in some of the comments) a visceral reaction to gold plating things not determined &quot;important&quot; by the customer. I get that. I also see a need to temper this with the simple fact that the client doesn’t always know what is best for them. Let’s just get that out in the open. My doctor knows what is better for my physical body than I do and I am willing to pay for that. Will I always take the advice I am paying for? Well, probably not. And I’m sure that leaves my doctor shaking her head in dismay.</p>  <p>I learned that integrity is &quot;doing the right thing even when no one is looking&quot;, and I see the Software Craftsmanship discussion as striving for integrity in the systems we create.</p>  <p>One mark of a true professional might be a willingness to balance client need with implementaion elegance resulting in software that meets the need of the client AND is something worthy of pride when shown to another developer. If the only reason we are writing code is to provide the minimum a client wants to pay for, then how compelling is my work, really? Can I be proud of my professional body of work if I am simply marching to orders? I say no.</p>  <p>Where I part ways with Dan is in his analogy of the plumber. Granted, I simply want my pipes to work, but I am willing to pay for a plumber that takes pride in his work. I trust that plumber will simply do a better job as he strives to make his work appreciated by the next plumber that sees it. Can I quantify this into dollars? Not really. Perhaps in the extra time required to lay in a perfectly soldered joint as opposed to a sloppy one. Am I willing to pay more for this type of person to do the work? No question: Yes.</p>  <p>The bottom line for me is that we would all like to take pride in our work. No one I’ve ever met gets up in the morning thinking, “Today I will make a piece of crap”, and keeps at the job with any pleasure. We want to enjoy our work and be proud of it. Is that so bad? The very real software craftsmanship discussion simply gives us a vehicle for discussion in the pride we may take in our work for its own sake.</p>  <p>The risk to the craftsmanship community is to avoid getting carried away with dogma. Every time I hear <a href="http://channel9.msdn.com/Blogs/MichaelLehman/PP-Symposium-2010-Opening-Keynote-Robert-C-Martin" target="_blank">Bob Martin assert to a 500 person room</a> that if they aren't writing unit tests they are &quot;not professionals&quot; or somehow unworthy of being in the room with him, I cringe. That’s a perfect way to draw fire and alienate people who might otherwise join you in your cause. It also happens to be a perfect way to stand out as a charismatic speaker who gets lots of attention, but I digress… </p>  <p>Do I write tests? Yes. </p>  <p>Always? No. </p>  <p>Am I ashamed when I don't? Not really. Some jobs still call for duct tape. </p>  <p>Professionalism is knowing the appropriateness of a tool for a job and in always striving for integrity in our work. </p>  <p>My .02.</p>  <p>And, Dan, I admire and appreciate your contribution to our craft <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://elegantcode.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" /> .</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Burden Called Meetings</title>
		<link>http://elegantcode.com/2010/12/09/a-burden-called-meetings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-burden-called-meetings</link>
		<comments>http://elegantcode.com/2010/12/09/a-burden-called-meetings/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 19:00:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/12/09/a-burden-called-meetings/</guid>
		<description><![CDATA[I’ve been working for an enterprise corporation for 5+ years, which I’m going to be leaving soon. This organization is suffering from a wide-spread malady called “meetingitis”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working for an enterprise corporation for 5+ years, which <a href="http://elegantcode.com/2010/10/27/moving-to-greener-pastures/">I’m going to be leaving</a> soon. This organization is suffering from a wide-spread malady called “<a href="http://secretgeek.net/meetingitis.asp">meetingitis</a>”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming to a conclusion or a solution. Then there are also those kinds of meetings where you don’t have anything to say or contribute; these are just a complete waste of time.</p>  <p>Yesterday, <a href="http://twitter.com/seagile">Yves</a> pointed me out on Twitter that it is <a href="http://www.mccarthyshow.com/LearnForFree/TheCoreProtocolsOnline/tabid/103/Default.aspx">perfectly fine to leave a meeting</a> if you feel that you’re not able to gain or contribute anything. Today, I walked out of a meeting where one of the participants started making insults against me. I just stood up, walked to the door and left. And I must say that it felt liberating doing so. I went back to my desk, calmed down and got some actual work done. Without a basic form of respect, one simply can’t achieve anything, let alone come to win-win agreements. From now on, I’ll be evaluating all meetings that require my presence before I accept them and also keep evaluating my presence while being there. </p>  <p>Let me close of this mini-rant by sharing a must-see recording of a talk called “<a href="http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html">Why work doesn’t happen at work</a>” by <a href="http://twitter.com/jasonfried">Jason Fried</a>. I recommend you watch this short video, and if you like it, I also recommend picking up a copy of <a href="http://www.amazon.com/exec/obidos/ASIN/0307463745/elegantcode-20">Rework</a>. </p>  <p>I hereby rest my case.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/12/09/a-burden-called-meetings/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Laborers versus Professionals</title>
		<link>http://elegantcode.com/2010/10/27/laborers-versus-professionals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=laborers-versus-professionals</link>
		<comments>http://elegantcode.com/2010/10/27/laborers-versus-professionals/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:53:43 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/10/27/laborers-versus-professionals/</guid>
		<description><![CDATA[A while ago, my good friend Michel Grootjans&#160;tweeted the following: Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question. Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, my good friend <a href="http://geekswithblogs.net/alternativedotnet/Default.aspx">Michel Grootjans</a>&#160;<a href="http://twitter.com/michelgrootjans/status/24569673878">tweeted</a> the following:</p>  <blockquote>   <p>Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question.</p> </blockquote>  <p>Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a while. Try to picture your own work environment and how this relates. Go ahead! I can wait.</p>  <p>OK then, let’s move on.</p>  <p>I’ve been working for an enterprise corporation for 5+ years now. One of the things I’ve seen and learned there over this period of time is that laborers are more valued by management than professionals. Let me elaborate on this. </p>  <p>One of the biggest issues in a typical enterprise corporation is trust, specifically the lack thereof. The direct consequence of this lack of trust are massive amounts of constraints, regulatory processes and <a href="http://c2.com/cgi/wiki?FearDrivenDevelopment">fear-driven development</a>. This is the natural habitat of laborer developers, a nice and cozy place where they can spend their hibernation until retirement. This is where the term ‘code monkey’ originates from. Nine to five, no thinking, narrow focus, like soldiers in the military obeying orders to make a big mess. But sometimes, amongst these massive cohorts of laborers, there are small islands that exist of one or more professional developers. These are the kind of people that are very passionate about their craft, that want drive innovation and also want to continuously learn and improve. If you’re a developer and you’re reading this blog post, you probably fall into this category of developers.</p>  <p>But professional developers always have one part of the establishment going against them. It’s not the laborers. They don’t care. It’s an instrument better known as management. A large part of the IT industry, especially corporate IT shops, are being run by giant flocks of managers. Some of these managers started out as software developers and some of them are just born that way. But there’s something that they all have in common: they don’t write code as part of their day job. Although they don’t get their hands dirty with writing software, most managers do feel compelled to impose all kinds of political decisions regarding business requirements, software architecture/design, tools and technologies to the development teams they are ‘managing’. I for one want to make it clear that this has to stop. In order to lift this industry to the next level, we as software professionals need to free ourselves from the leash that is currently being held by management.&#160;&#160; </p>  <p>Professional developers working in these kinds of corporate environments are generally considered as troublemakers, if not by their direct bosses then certainly by other parts of management. The general attitude towards professionals is slamming them with more&#160; procedures, so called ‘company standards’ and ‘default architectures’. This ends up with a lot of frustration, a feeling of burn-out or even worse, suffocation as it may seem that the walls are closing in. Professional developers generally have a hard time placing this attitude towards them. They just want to do the right thing and provide the best possible solution they’re able to come up with. If managers don’t trust their development teams to make the right decisions, then why did they got hired in the first place? </p>  <p>I for one am pleading to get past this all this. Any business that wants to survive in this hard world economy and even wants to get ahead of its competition has to free its professional developers from management. It’s that simple. Management is great for enforcing compliance, but if engagement is what you want (and is definitely needed for bringing innovation), self-direction is essential. I already wrote <a href="http://vanryswyckjan.blogspot.com/2008/02/on-software-factories.html">a blog post about self-organizing teams</a> a couple of years ago. Today, I’m even more convinced that self-direction is one of the major key enablers for innovation in the IT industry of the 21th century. Anyway, someone who isn’t coding at least 50% of his day job shouldn’t be allowed to interfere with any kind technical decision making. Period! </p>  <p>I’m not saying that development teams should get a signed blank check. On the contrary. Financial and business constraints should still be taken into account. But when it comes to creativity, methodologies, technologies and tools, management shouldn’t get in the way. Development teams should be able to take responsibility for their own actions. Managers should know their place by making sure that their development teams can operate as optimal and efficient as possible by removing as many impediments as possible.</p>  <p>Let me show you a couple of examples where this principle of autonomy has immensely paid of so that you’re able to judge for yourself.</p>  <p>I personally find health care a fascinating craft. I find it fascinating simply because there are so many parallels than can be drawn between software engineering and the state of health care roughly 200 years ago :-). Lets take about modern hospitals for example. Medical facilities are generally being run by senior medical staff and not by managers! Senior medical staff are people that have a high degree of mastery in what they do and still perform their craft every single day. Maybe they’re not doing it full time so that they’re able to fulfill their ‘path-finding’ responsibilities, but still, they are still fixing their patients. Hospitals do have managers however, but they are there simply for enabling the medical staff to not worry about anything else besides saving lives. Can you picture lying in an operating room when a manager in a suit bursts through the door, yelling at the surgeon that he’s not allowed to use technique xyz to save your live? Preposterous you say? Not so with the current state of affairs in IT departments of the enterprise corporations. </p>  <p>There are a couple of concrete examples in the IT industry as well. Remember when Google <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?_r=1">announced</a> that their engineers get to spend 20 percent of their time to work on something of their own interest? This resulted in massive improvements for products like GMail, Google Maps, Google Docs, etc … and directly contributed to Google’s success and current market share. Other companies like <a href="http://blogs.atlassian.com/rebelutionary/archives/000495.html">Atlassian</a> and <a href="http://blog.facebook.com/">Facebook</a> are enabling innovation in basically the same way. </p>  <p>Yet another example is Pixar. If you haven’t seen or listened to <a href="http://www.scottberkun.com/blog/2010/inside-pixars-leadership/">this interview</a> with Ed Catmull, the president of Pixar, stop reading this blog post and let it inspire you now! Somewhere along this awesome interview he mentions the following:</p>  <blockquote>   <p>Part of the behavior is I don’t know the answers. And at first that seems a little bit glib. But after awhile people get that I really don’t know the answer to a lot of these things. So we set it up so that the management really doesn’t tell people what to do.&#160; </p> </blockquote>  <p>Think about how amazing it would be like to work in an environment like that. It’s inevitable that great things are bound to happen.</p>  <p>There are plenty of other examples out there, like open-source software, Wikipedia, etc. … . They all prove that self-management results in engagement and that this is going to be a major differentiator in tomorrow’s economy.&#160; </p>  <p>Make sure to check out the following resources as well:</p>  <ul>   <li><a href="http://www.ted.com/talks/dan_pink_on_motivation.html">The surprising science of motivation</a> by Daniel Pink </li>    <li><a href="http://openmymind.net/2010/10/7/programmer-passion">Programmer Passion: An Enterprises Most Useful Yet Repressed Advantage</a> by Karl Seguin </li>    <li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">Drive: The surprising truth about what motivates us</a> </li> </ul> Till next time.   ]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/10/27/laborers-versus-professionals/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Keep Pressing on my Friend (When programming seems bleak)</title>
		<link>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keep-pressing-on-my-friend-when-programming-seems-bleak</link>
		<comments>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 22:16:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/</guid>
		<description><![CDATA[Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again? Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper? I used to think it just happened to me.&#160; The first time [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again?</p>  <p>Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper?</p>  <p>I used to think it just happened to me.&#160; The first time it happened to me, I almost switched my major from CS to CIS.&#160; But, the more and more I work in this field and talk to other programmers, the more and more I see the same exact thing happening.&#160; And guess what?&#160; It is happening to everyone.</p>  <p>Not just you.&#160; You are not alone.</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2010/09/tired_man.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="tired_man" border="0" alt="tired_man" src="http://elegantcode.com/wp-content/uploads/2010/09/tired_man_thumb.jpg" width="248" height="356" /></a></p>  <h2>I’m not talking about burnout here</h2>  <p>This is more than burnout.&#160; This lack of motivation energy-sapping-plague can hit a programmer at any time whether you just finished a week of all nighters or you just came back from a peaceful vacation.</p>  <p>I actually find that it is the time when I am furthest from what should be burn out that this phenomenon is most likely to occur.</p>  <p>So, if it’s not burnout, what is it?</p>  <p>I’ll call it programming lethargy.&#160; It actually happens to two other groups of professionals: athletes and craftsmen.</p>  <p>The truth is it is a perfectly normal cycle.&#160; This “barrier” is actually the reason why there are many apprentices, few journeymen and even fewer masters.</p>  <p>When you hit this phase be glad, it means you are about to be tested and if you come out on the other side, you will end up with a renewed interest and passion and leave behind the others that can’t cut it.</p>  <p>Oh, and it will happen again, probably several more times.</p>  <h2>Press on my friend</h2>  <p>What can you do about this problem?</p>  <p>Don’t despair, just press on.&#160; Stay the course and all will be well.</p>  <p>I am not sure why this happens, but I do know that it is a true test of your desire for the goal, whether to be a better programmer or a better athlete, or a better singer or musician. </p>  <p>The test is whether or not you can still press on when the motivation and passion is not there.</p>  <p>The reward waiting for you on the other side? </p>  <ul>   <li>A renewed passion and energy.&#160; </li>    <li>A new kind of appreciation for what you do.&#160; </li>    <li>Experience and true appreciation for your craft. </li> </ul>  <p>The question you have to ask yourself, is what do you ultimately want to become?&#160; If what you do is more than just a job to you, then you’ll find the strength to press on.</p>  <h2>How to press on when the motivation is gone</h2>  <p>If you agree with me, or even think that perhaps what I am saying is worth considering, then you will probably wonder how you can get through this phase or test to see the other side.</p>  <p>We can look at athletics again as a comparison to provide some insight.</p>  <p>Think about a professional track runner, training for competition.&#160; Consider what would happen if that athlete decided to not have a formal training schedule, but instead only train when he felt like it.</p>  <p>What would happen when he didn’t feel like training for a week?</p>  <p>Now let’s say he had a training schedule and he followed it, even on the mornings when he didn’t feel like getting up to train.</p>  <p>What would happen if his training was not planned out?&#160; If he didn’t know what kind of drills to do or have a long term plan for the training sessions?</p>  <p>If you want to make it through the times when you don’t feel the motivation and passion for writing code and solving problems, then you have to have a plan.&#160; A solid plan that will ensure that you will be able to press on.</p>  <p>Here are some tips to make sure that when you get struck by programming lethargy, you do make it through to the other side.</p>  <ul>   <li>I’ve talked about this <a href="http://simpleprogrammer.com/2010/07/02/the-importance-of-always-reading/">several times</a> in my blog.&#160; <strong>Make sure you are always reading a technical book.</strong>&#160; Create a schedule and stick to it.&#160; Even 15-30 minutes a day of reading will let you read around 1-2 books a month.&#160; That is a huge amount of knowledge. </li>    <li>When you don’t feel like working,<strong> break up your work into <a href="http://simpleprogrammer.com/2010/07/09/why-small-is-better/">small tasks</a> and start accomplishing those tasks.</strong>&#160; Figure out exactly what you have to do to move forward and do it.&#160; Don’t give in and waste time.&#160; The time you feel the most like killing time, is the time when you must throw yourself into your work all the more. </li>    <li><strong>Set some goals for yourself.</strong>&#160; Short term and long term.&#160; The short terms goals should clearly lead to the long term goals.&#160; Review those goals frequently and always try to make progress towards the goals.&#160; Even a little bit of progress adds up over time. </li>    <li><strong>Don’t start thinking about changing careers or looking for an easier job.</strong>&#160; Don’t start thinking you will feel this way forever.&#160; Realize that what you are experiencing now is a feeling and feelings are not trustworthy. </li>    <li><strong>Clean up.</strong>&#160; Clean up your workspace.&#160; Clean up your computer.&#160; Get yourself some new equipment if it will help.&#160; Feeling like you have a new and fresh environment can do wonders for motivation. </li>    <li><strong>Challenge yourself.</strong>&#160; Your gut is going to tell you to slow down and relax, but that road leads to laziness.&#160; When laziness comes your way, the best way to fight it is to push right into it! </li> </ul>  <p>Well, that is all the tips I have for you for today.&#160; Just remember that you are not alone and what you are experiencing is normal.&#160; </p>  <p>If you’re in a period now where you are motivated and feel great about your work and what you are doing, you might want to bookmark this post and come back to it when it can benefit you more.&#160; </p>  <p>Remember though, setting up good habits and routines now can help you cruise through the hard times later. </p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>  <ul></ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Microsoft doesn&#8217;t create bad developers, developers do</title>
		<link>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoft-doesnt-create-bad-developers-developers-do</link>
		<comments>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:47:16 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/</guid>
		<description><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an [...]]]></description>
			<content:encoded><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an industry that is evolving at an incredible pace, contains an incalculable number of technologies, frameworks, best practices and constantly redefines the definition of how things should be done in the best possibly way. It’s the industry that makes the rest of the world tick. Daunting really, if you think about it.

A while back I read a couple of posts by <a href="http://www.gilzilberfeld.com/" target="_blank">Gil Zilberfeld</a> (<a title="Read Gil's post on Why Microsoft makes bad programmers" href="http://www.gilzilberfeld.com/2010/07/why-microsoft-makes-bad-programmers.html" target="_blank">here</a> and <a title="Read Gil's post on CSI: Microsoft" href="http://www.gilzilberfeld.com/2010/08/csi-microsoft.html" target="_blank">here</a>) where Gil talks about the responsibility that vendors such as Microsoft plays in the role of securing the quality of the work that is produced in our industry. While I think I see the points  Gil is trying to make, I think he misses the beat a bit and I have a hard time agreeing with the conclusions he draws.

The way I see it there are two types of developers; those that are just in it to pay the bills and those that consider themselves as craftsmen. If you consider yourself a craftsman then you should already be aware that you are responsible for your own faith and actions in this industry. But, if you are just in it to pay the bills then you are probably also looking to do so by doing the least amount of work and that includes looking for information on how to solve a particular problem or how to apply a technology onto your stack.

So if you are one of the developers that are only looking towards Microsoft (or the relevant company for the technology stack you are working on) is it their fault if you implement something in a way that could be considered bad? Of course not! Sure there are a lot of outdated and down right poor samples at the Microsoft (or relevant company) website and their idea on how certain things should be solved are bound to differ from others (and that’s definitely not to say that there isn’t good contents, there are a ton of it). However, if you rely on a single source of information, you are always going to get an opinionated view. Take my word on it (right?).

Doctors reads medical journals, publishes research papers, attend conferences, network with colleagues and make sure they stay up to date with the latest in their field. I’m pretty sure you are happy that they spend all of this time to make sure they can provide the best possible care and treatment when someone are in need of their services. I know I am.

Just as with any other profession, developers are responsible for their own education, for honing their skills in the craft that they have chosen to practice. In order to keep up in an industry that evolves at the speed of light you need to invest in yourself. The code you write today should be some of the best you have ever written, while a year later you should be considerably less excited about its quality. It’s a sign of growth. That you’ve continued to move forward as a craftsman, that you skills have been honed and broadened during the past year.

So what about the tools? Do we really rely on them too much to get the work done? I would say, definitely not! But again you have to specify just exactly what you are talking about when talking about tooling. If you rely on visual designers, drag and drop, wizards and the likes to to the majority of your work, then yes you are probably relying too much on your tools. Odds are that you will have a hard time to get anything outside of standard behavior to run and there will be pain points when you need to debug.

However you would do yourself (and your employer) a huge disservice if you did not make it your goal to know the tools in your toolbox as good as possible. What’s wrong with knowing how to use the debugger, the IDE and tools like ReSharper as good as possible? Used correctly they will have a huge impact on productivity. Make sure you know the finer details of the tools and make them work for your and not the other way around. Yes, sometimes tools do get in the way of the goal, even slow you down, and when that is the case, don’t use the tools! Tools are there to help you when you need them, not to act as a crutch you always have to lean on so you don’t fall on your ass.

Well there you have my thoughts on the subject. It’s always up to the developer, not the companies. Always.

I am also around on twitter <a title="Visit my twitter profile" href="http://twitter.com/thecodejunkie" target="_blank">@thecodejunkie</a> in case you need one more person to follow]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Software, &#8220;It&#8217;s not what we do&#8221;.</title>
		<link>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-its-not-what-we-do</link>
		<comments>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 12:13:36 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/09/software-its-not-what-we-do/</guid>
		<description><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a [...]]]></description>
			<content:encoded><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a “core competency”.

One thing I have heard expressed in those places is, “software development is not our core competency, therefore recommendations around professional development practices don’t apply to us.”

Good, lord. Really, people?

This is akin to a Boeing corporate attorney claiming that he need not be competent because Boeing makes airplanes.

I don’t know where this absurd line of reasoning comes from, but I know why it is tolerated. It is tolerated because we don’t have the formal structures to hold professionals accountable the way we might hold an electrician, plumber, or physician accountable to being merely competent. If you are reading this post you probably make 3X the salary of a plumber, yet are held to a lower degree of professional accountability for your work.

This is sad, but it doesn’t mean that we need to pick up the mantle of mediocrity available to us. We can hold ourselves accountable for professionalism no matter where we work.

If the organization we serve specializes in jellybeans, services, software widgets, or any other industry, we are hired to bring our best game to the table. This is why they hire us, folks! We are supposed to know what we are doing, not making excuses for incompetence!

In summary, no matter what type of organization you work for:
<ul>
	<li>Yes, you need to use source control.</li>
	<li>Yes, you need to automate the build.</li>
	<li>No, you shouldn’t be releasing the assemblies compiled on your machine.</li>
	<li>Yes, you need to stop writing long methods and pay attention to code complexity.</li>
	<li>Yes, you need to buy your developers the best tools available.</li>
	<li>No, you don’t need to write your own logging framework.</li>
	<li>Yes, you should be practicing test first development.</li>
	<li>No, continuing to ship known defects is not acceptable.</li>
	<li>Yes, you should understand who your customer is.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Software Craftsmanship on the Polymorphic Podcast</title>
		<link>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-craftsmanship-on-the-polymorphic-podcast</link>
		<comments>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:11:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/</guid>
		<description><![CDATA[I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of being the host!</p>  <p><a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx?"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ListenBanner" border="0" alt="ListenBanner" align="right" src="http://elegantcode.com/wp-content/uploads/2010/08/ListenBanner.png" width="341" height="53" /></a> The interview is now live and <a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx" target="_blank">available here</a>. </p>  <p>We visited many of my favorite topics including:</p>  <ul>   <li>How to sell Agile in your org</li>    <li>Scrum and ScrumBut</li>    <li>Code Craftsmanship</li>    <li>Agile in small teams</li>    <li>How to be an agile army of one</li>    <li>How my mom is the perfect complexity gauge</li>    <li>And ElegantCode.com gets a shout out!</li> </ul>  <p>This was really fun. Thanks, Craig!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enforce Correct Usage By Wrapping Types</title>
		<link>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoft-doesnt-create-bad-developers-developers-do</link>
		<comments>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:47:16 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/</guid>
		<description><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an [...]]]></description>
			<content:encoded><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an industry that is evolving at an incredible pace, contains an incalculable number of technologies, frameworks, best practices and constantly redefines the definition of how things should be done in the best possibly way. It’s the industry that makes the rest of the world tick. Daunting really, if you think about it.

A while back I read a couple of posts by <a href="http://www.gilzilberfeld.com/" target="_blank">Gil Zilberfeld</a> (<a title="Read Gil's post on Why Microsoft makes bad programmers" href="http://www.gilzilberfeld.com/2010/07/why-microsoft-makes-bad-programmers.html" target="_blank">here</a> and <a title="Read Gil's post on CSI: Microsoft" href="http://www.gilzilberfeld.com/2010/08/csi-microsoft.html" target="_blank">here</a>) where Gil talks about the responsibility that vendors such as Microsoft plays in the role of securing the quality of the work that is produced in our industry. While I think I see the points  Gil is trying to make, I think he misses the beat a bit and I have a hard time agreeing with the conclusions he draws.

The way I see it there are two types of developers; those that are just in it to pay the bills and those that consider themselves as craftsmen. If you consider yourself a craftsman then you should already be aware that you are responsible for your own faith and actions in this industry. But, if you are just in it to pay the bills then you are probably also looking to do so by doing the least amount of work and that includes looking for information on how to solve a particular problem or how to apply a technology onto your stack.

So if you are one of the developers that are only looking towards Microsoft (or the relevant company for the technology stack you are working on) is it their fault if you implement something in a way that could be considered bad? Of course not! Sure there are a lot of outdated and down right poor samples at the Microsoft (or relevant company) website and their idea on how certain things should be solved are bound to differ from others (and that’s definitely not to say that there isn’t good contents, there are a ton of it). However, if you rely on a single source of information, you are always going to get an opinionated view. Take my word on it (right?).

Doctors reads medical journals, publishes research papers, attend conferences, network with colleagues and make sure they stay up to date with the latest in their field. I’m pretty sure you are happy that they spend all of this time to make sure they can provide the best possible care and treatment when someone are in need of their services. I know I am.

Just as with any other profession, developers are responsible for their own education, for honing their skills in the craft that they have chosen to practice. In order to keep up in an industry that evolves at the speed of light you need to invest in yourself. The code you write today should be some of the best you have ever written, while a year later you should be considerably less excited about its quality. It’s a sign of growth. That you’ve continued to move forward as a craftsman, that you skills have been honed and broadened during the past year.

So what about the tools? Do we really rely on them too much to get the work done? I would say, definitely not! But again you have to specify just exactly what you are talking about when talking about tooling. If you rely on visual designers, drag and drop, wizards and the likes to to the majority of your work, then yes you are probably relying too much on your tools. Odds are that you will have a hard time to get anything outside of standard behavior to run and there will be pain points when you need to debug.

However you would do yourself (and your employer) a huge disservice if you did not make it your goal to know the tools in your toolbox as good as possible. What’s wrong with knowing how to use the debugger, the IDE and tools like ReSharper as good as possible? Used correctly they will have a huge impact on productivity. Make sure you know the finer details of the tools and make them work for your and not the other way around. Yes, sometimes tools do get in the way of the goal, even slow you down, and when that is the case, don’t use the tools! Tools are there to help you when you need them, not to act as a crutch you always have to lean on so you don’t fall on your ass.

Well there you have my thoughts on the subject. It’s always up to the developer, not the companies. Always.

I am also around on twitter <a title="Visit my twitter profile" href="http://twitter.com/thecodejunkie" target="_blank">@thecodejunkie</a> in case you need one more person to follow]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Craftsmanship</title>
	<atom:link href="http://elegantcode.com/category/craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00: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>Temovate Cream For Sale</title>
		<link>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-software-development-will-never-be-engineering</link>
		<comments>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:37:48 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/</guid>
		<description><![CDATA[I always find it rather interesting when academics try to quantify generalized metrics about software development. Temovate Cream For Sale, Things like: per lines of code, there will be X number of bugs. Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.” These are all interesting [...]]]></description>
			<content:encoded><![CDATA[<p> <p>I always find it rather interesting when academics try to quantify generalized metrics about software development.</p>  <p> <b>Temovate Cream For Sale</b>, Things like: per lines of code, there will be X number of bugs.</p>  <p>Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.”</p>  <p>These are all interesting thoughts, but software development will never conform to rigid engineering principles like many other engineering practices.&#160; The longer I work in the field, the more and more I realize that software development has nothing to do with engineering.&#160; We just happen to attend some of the same math classes in school.</p>  <h2>Building bridges</h2>  <p>One of the main arguments I hear people make about the current state of software development as an engineering practice is based around its relative maturity to other engineering fields.</p>  <p>There is a huge problem with this line of thinking.</p>  <p>The argument goes something like this:&#160; “<em>Engineering has been around for hundreds of years and has matured to the point where it is a measurable science, but software development has only been around in earnest for the last few decades or so, therefore it is relatively immature as an engineering discipline.”</em></p>  <p>On the surface this argument seems sounds.&#160; And certainly in 50 years software development will be different than it is now.&#160; Heck, it is much more different than it was just 10 years ago.</p>  <p>But, here is the problem.&#160; We build much more software than we do bridges.</p>  <p><img src="http://www.nps.gov/glca/historyculture/images/Navajo_Bridges_1.gif" width="589" height="442" /></p>  <h6 align="center">&#160;</h6>  <p>Let me give you an example that came to light in another area of my interest… poker.</p>  <h1></h1>  <h2>The poker quickening</h2>  <p>An interesting thing happened in the poker community in the last 10 years; poker pros with decades of experience started getting beat time and time again by 19 year old poker prodigies.</p>  <p>From an outside perspective it looks like the poker world opening up just widened the search for talent and there it was.&#160; But, a closer examination of the evidence leads to the truth.</p>  <p>Before the online poker industry was born, poker was played in card rooms and casinos in states where it was legal and occasionally at small home games throughout the US.</p>  <p>A poker pro might play poker tournaments perhaps 100 times to 150 times a year.&#160; The sum knowledge of the poker community and the meta game around it was based on this base of professional poker players playing tournaments and gaining experience at this mediocre rate.</p>  <p>Once the internet poker rooms started opening up, things changed, and they changed rapidly.&#160; Now anyone could play poker from their home PC.&#160; Not only could they play poker, they could play poker tournaments at all hours of the day.</p>  <p>Here is a list of some of the major changes that took place:</p>  <ul>   <li>Hands are dealt at 60-80 hands per hour instead of 10-30</li>    <li>Players can play in many tournaments at one time, 10 tournaments at once is not unheard of</li>    <li>Players can analyze hand histories and historical data about their play and opponents play through the use of software </li>    <li>Age requirements are out the window, technically any one of any age could be playing online</li>    <li>Players can play 24 hours a day</li>    <li>The professional online tournament player could easily play over 3000 tournaments in a year, while a brick and mortar pro would be lucky to reach 100 in a year.</li>   <img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://t1.gstatic.com/images?q=tbn:ANd9GcRj9uGNWSyqGWEneiH6xaBAyS6COwGYicdNadZu-06KWQLhIi6LMw&amp;t=1" width="316" height="270" /></ul>  <p>&#160;</p>  <p>So where am I going with all this?</p>  <p>The point is that as a whole more hands were dealt and more poker knowledge and experience was obtained in 1 year of online poker than probably the entire history of poker before that.&#160; We reached such an accelerated pace of play that all previous knowledge of poker became obsolete.&#160; </p>  <p>The strategy of tournament poker completely changed.&#160; The game evolved perhaps 500 years into the future in a matter of 5 years time.</p>  <p>The same has happened with software development.</p>  <h2>Back to the bridge building</h2>  <p>So let’s take that poker example and look at it through the lens of software development.</p>  <p>Let us compare the engineering maturity to software development to the engineering maturity of the engineering discipline of building bridges.</p>  <p>I think most people would agree that bridge building is a very mature engineering discipline but many people would argue that software development is not.</p>  <p><strong>How many bridges do you think have been built in the world?</strong></p>  <p>Well there are <a href="http://www.betterroads.com/category/bridge-inventory/erroads.randallreillycms.com/files/2009/11/BR1109_BridgeInventory.pdf">about 600,000 bridges in the United States alone</a>, so the world figure must be at least somewhere around 10 times that number perhaps 20.</p>  <p><strong>How many software programs have been written?</strong></p>  <p>This is a very hard number to estimate, but lets take a rough guess based on <a href="http://stackoverflow.com/questions/453880/how-many-developers-are-there-in-the-world">how many software developers there are in the world</a>.&#160; </p>  <p>If we say there are about 12 million software developers and each software developer has written approximately 3 programs, we can estimate that a large amount more programs have been written than bridges built.</p>  <p>My point is not to knock bridge building, we are pretty good at it as a whole, but rather to show that collectively, even though we have been building bridges for hundreds of years, we have probably devoted an equivalent amount of time to building software.</p>  <p>This line of thinking may lead you to argue back that software development and bridge building are very different.&#160; Bridge building has a fixed set of requirements that are pretty close to the the same for each bridge you build, but software development is a big open void of whims and ambiguously contradictory statements.</p>  <p>I agree with you 100%!&#160; And in essence that is my point.</p>  <h2>Software development is different</h2>  <p>And we have had enough time to realize that.&#160; Waiting for software development to gel into some kind of engineering discipline like other engineering disciplines is like waiting for water without gelatin mix to turn into Jello.&#160; </p>  <p>It’s just not going to happen!</p>  <p>In my mind it is clear that the argument that we haven’t given it enough time is just wishful thinking.&#160; The nature of software development, just like online poker, leads itself to rapid evolution.</p>  <p>Consider what direction software development is evolving.&#160; Is it even evolving in the direction of rigid engineering practices or is it evolving in the exact OPPOSITE direction?</p>  <p>Ten years ago, we tried to use UML diagrams and CASE tools to develop software.&#160; Ten years ago waterfall was all the rage.&#160; Ten years ago, we thought that ten years in the future we would have programs that would allow us to build software in the same way that CAD tools allow for building machine parts.</p>  <p>Not only did it not happen.&#160; It went completely the other way.&#160; Now we are all talking about Agile.&#160; Now people don’t even remember what CASE tools are.&#160; Now we are building software without trying to define the whole system in UML diagrams.</p>  <p><strong>The fact of the matter is software systems are unruly beasts!</strong></p>  <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://aznbadger.files.wordpress.com/2010/06/beast.jpg" /></p>  <p>In my mind it comes down to one simple distinction.&#160; Software is living, bridges aren’t.&#160; When you are done building a bridge, you are done building the bridge.&#160; </p>  <p>Sure someone, probably not you, will have to come along and do some routine maintenance on it.&#160; Sure, some small things might change about it, but for all intents and purposes the work is done.</p>  <p>In most software development scenarios, this is not the case.&#160; In most software development scenarios, releasing V1 is not even close to the end.&#160; Sometimes V1 and V2 don’t even look that same at all.&#160; Software development is about operating on a living breathing thing and all the while keeping it alive.</p>  <p>The truth is, we software developers have more in common with surgeons than with other engineers.</p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>.  Buy Temovate Cream without a prescription.  Temovate Cream trusted pharmacy reviews.  Temovate Cream over the counter.  Where can i order Temovate Cream without prescription.  Online buy Temovate Cream without a prescription.  Temovate Cream no rx.  Buy cheap Temovate Cream no rx.  Temovate Cream photos.  Buy Temovate Cream online no prescription.  Order Temovate Cream online c.o.d.  Herbal Temovate Cream.  About Temovate Cream.  Australia, uk, us, usa.  Cheap Temovate Cream.  Temovate Cream class.  Temovate Cream brand name.  Online Temovate Cream without a prescription.  Buy Temovate Cream without prescription.  Buy Temovate Cream from canada.  After Temovate Cream.  Order Temovate Cream from mexican pharmacy.  Temovate Cream without a prescription.  Purchase Temovate Cream.  Temovate Cream natural.  Temovate Cream overnight.  Temovate Cream online cod.  Where can i buy cheapest Temovate Cream online.  Purchase Temovate Cream for sale.  Online buying Temovate Cream.  Purchase Temovate Cream online.  Temovate Cream used for.  Temovate Cream coupon.  Temovate Cream description.  Order Temovate Cream no prescription.  Temovate Cream maximum dosage.  Cheap Temovate Cream no rx.  Temovate Cream images.  Temovate Cream blogs.  Buy Temovate Cream online cod.  Buy generic Temovate Cream.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4472'>Bactroban For Sale</a>. <a href='http://elegantcode.com/?p=4632'>Armour For Sale</a>. <a href='http://elegantcode.com/?p=4639'>Buy Estrace Vaginal Cream Without Prescription</a>. <a href='http://elegantcode.com/?p=4668'>Buy Augmentin Without Prescription</a>. <a href='http://elegantcode.com/?p=4535'>Buy Tindamax Without Prescription</a>. <a href='http://elegantcode.com/?p=4931'>Fast shipping Diclofenac</a>. <a href='http://elegantcode.com/?p=4240'>Combivent brand name</a>. <a href='http://elegantcode.com/?p=4417'>Levaquin overnight</a>. <a href='http://elegantcode.com/?p=4597'>Purchase Toradol online</a>. <a href='http://elegantcode.com/?p=4221'>Australia, uk, us, usa</a>.<br />
<b>Trackbacks from:</b> <a href='http://www.quarterlives.com/?p=1148'>Temovate Cream For Sale</a>. <a href='http://4realz.net/?p=1972'>Temovate Cream For Sale</a>. <a href='http://www.macneilbmx.com/blog/?p=5997'>Temovate Cream For Sale</a>. <a href='http://www.greatgreengoods.com/?p=2476'>Temovate Cream For Sale</a>. <a href='http://www.thegriffonnews.com/?p=9947'>Temovate Cream For Sale</a>. <a href='http://social-blend.com/?p=1160'>Temovate Cream brand name</a>. <a href='http://blog.farmland.org/?p=3812'>Where can i find Temovate Cream online</a>. <a href='http://reversemortgagedaily.com/?p=14136'>Generic Temovate Cream</a>. <a href='http://linuxologist.com/?p=1792'>Temovate Cream photos</a>. <a href='http://home.officesnapshots.com/?p=114'>Order Temovate Cream from mexican pharmacy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Buy Xalatan Without Prescription</title>
		<link>http://elegantcode.com/2011/04/13/why-rules-rule/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-rules-rule</link>
		<comments>http://elegantcode.com/2011/04/13/why-rules-rule/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 03:19:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/04/13/why-rules-rule/</guid>
		<description><![CDATA[Buy Xalatan Without Prescription, I have to admit, I love rules. They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally. Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how [...]]]></description>
			<content:encoded><![CDATA[<p> <p> <b>Buy Xalatan Without Prescription</b>, I have to admit, I love rules.</p>  <p>They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally.</p>  <p>Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how valuable they are, because when rules are doing their job, you don’t even notice them.</p>  <p>The first rule of your day is likely your alarm clock.&#160; This is a self imposed rule that you have created for yourself to get up at a certain time in the morning.&#160; Try to function in any meaningful way by completely removing that rule and see what happens.</p>  <p>Almost all games we play have rules.&#160; Without rules those games wouldn’t be much fun.</p>  <p>We drive on the correct side of the road in our lane, following rules of traffic, which if not obeyed put us in mortal danger and make the road quite a scary place.</p>  <p>It is a gross understatement to say rules are important to our daily life.</p>  <p>Yet, I am constantly amazed how many people seem to oppose any notion of rules when it comes to our craft of software development.</p>  <h2>There is this notion that rules somehow preclude judgment</h2>  <p>Somehow the idea has crept into many of our brains that rules and good judgment, (what we might call craftsmanship), are diametrically opposed to each other.</p>  <p>There seems to be a pervasive thought that rules suck all the fun out of things and take away creativity, skill and experience, reducing the follower of such rules to a mindless robot, replaceable by any other robot.</p>  <p>Not only do I think this viewpoint is completely wrong, but I think it is downright destructive to the craft of software development.</p>  <p>Let us first dispel the notion that rules destroy creativity and its kin.</p>  <p>Think about a game like Scrabble.&#160; Scrabble is a game that is based on a very restrictive set of rules.&#160; You basically have only two moves you can do.</p>  <ol>   <li>Make a word using only letters in your rack and letters on the board.</li>    <li>Discard some letters to get some new ones.</li> </ol>  <p>Rules dictate how many letters you can have and what ways you can arrange them.&#160; Yet, how much creativity is actually created by these constraints?</p>  <p>Music is often seen as a cousin to coding, and is another great example of constraints which breed creativity.&#160; Music has a huge amount of constraint.&#160; There are many natural rules about sounds and chords.&#160; We only have a small amount of notes to even work with, yet people have been elaborating on those 12 notes for hundreds of years and new creative sounds are produced every single day!</p>  <p><strong>If you really take the time to think about it, I think you will find that constraints actually breed creativity not destroy it.</strong></p>  <h2>The truth is rules come from good judgment at the right time</h2>  <p>Let me posit you this question.</p>  <p>When is a better time to make a judgment decision of what to do when a bear attacks you?</p>  <ul>   <li>When the bear is actually attacking you</li>    <li>Sitting at your computer with a huge amount of reference material available to you about bear attacks and a calm peaceful environment</li> </ul>  <p>If you chose when the bear is actually attacking you turn to page 32.</p>  <p><strong>Page 32:</strong></p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bear-attack" border="0" alt="bear-attack" src="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack_thumb.jpg" width="447" height="318" /></a></p>  <p><em>Having no rules in which to operate, in the heat of the moment, you decide to “tickle” the bear.&#160; The bear slays you and munches on your bones.&#160; Your adventure has come to an end.</em></p>  <p><strong><em>You are DEAD!</em></strong></p>  <p>The point is that your judgment is much more likely to be sound when you are removed from the situation which you are making the judgment call about.&#160; Unless you are a close relative of Spock, you’ll probably find that human emotions tends to interfere with sound judgment.</p>  <p>This is why I instead firmly believe that <strong>we should use our good judgment to formulate rules that we will use in the situations which they apply to rather than to try and execute good judgment when we are engrossed in the situation.</strong></p>  <p>If you still disagree with me here, let’s ponder the example of the alarm clock one more time.&#160; Better yet, I challenge you to make a judgment call each morning of when you should wake up.&#160; You can’t use an alarm clock or any rules.&#160; (Before you do this, you might want to make sure you get your resume polished up.)</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="alarm clock" border="0" alt="alarm clock" src="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock_thumb.jpg" width="235" height="386" /></a></p>  <h2>How does this all apply to software development?</h2>  <p>I’m not going to attempt to address every way in this blog post, perhaps we’ll revisit this subject in the future, because it is so important.&#160; Instead my goal here is to convince you to embrace rules and to not fear setting them for yourself, for your team or for your code.</p>  <p>Some of the biggest failings of teams that I see is the fear of setting rules.&#160; Teams seem to be so afraid of restricting someone or impairing their ability to make judgment calls that they go the direction of never setting any concrete rules, just guidelines or best practices.</p>  <p>There is a huge difference between guidelines and rules.&#160; Guidelines help you make a decision, rules make it for you.&#160; Don’t be fooled into thinking they are the same thing, and don’t fear rules.&#160; I always prefer rules over guidelines, because they are much more valuable.</p>  <p><strong>You can actually measure the effect of a rule, but you can’t easily measure the effect of a </strong><strong>guideline.</strong></p>  <p>Let me give you some examples of areas in software development that I think are great places to enforce some rules:</p>  <ul>   <li>Naming conventions</li>    <li>Unit testing</li>    <li>Process of starting work</li>    <li>Who works on work</li>    <li>When work is considered done</li>    <li>How defects are handled</li>    <li>What changes can be made to work in progress</li>    <li>What should be in a backlog</li>    <li>Language and library choices</li>    <li>Data access strategies</li>    <li>Dealing with build failures</li> </ul>  <p>Every time you are having a conversation which ends up identifying something to improve upon, you should be thinking about how you can codify it into a rule.&#160; Don’t be afraid to step out here.&#160; It’s ok to make the wrong rule and change it later.&#160; If you do this you learn something.</p>  <p>Having rules in place prevents you from making in-the-moment decisions which you later come to regret.</p>  <p>When I go to a buffet, I set rules for how much food I can eat.&#160; When I decide to start a workout routine, I set rules for how often and what duration I will workout.&#160; When I write code, I set rules for how I will write that code.</p>  <p>In any of those areas, when I fail to set rules, I end up failing.&#160; It is human nature.</p>  <h2>But rules impede me and end up making me do silly things</h2>  <p>Good.&#160; That is called feedback.</p>  <p>Remember back when you were just making judgment calls all the time instead of following rules you or your team preset ahead of time, you weren’t getting any feedback, now you are.&#160; Be happy about it, celebrate!</p>  <p>You can always change the rules.&#160; You can always tweak the parameters, but if you want to have any success in process improvement, it is much like cooking on the stove.&#160; You are much better off with burner dials that have numbers on them or at least some kind of label, then ones with just a blank dial.&#160; If you don’t know where the dial is, how will you know which way to turn it?</p>  <p>Sometimes rules are going to make you do something silly or seemingly extraneous.&#160; Sometimes rules are going to cause you to possibly even do the wrong thing.</p>  <p>But, if you want to have any chance of learning from your mistakes, if you want to truly improve your process, you must resist the urge to break the rules and instead wait for a time to reflect upon the rules and make appropriate changes at that time.</p>  <p>Learn to embrace rules and you’ll suddenly see an improvement in all areas of life where you apply them, especially your software development!</p>  <h6><strong>As always, you can subscribe to this </strong><a href="http://feeds2.feedburner.com/ElegantCode"><strong>RSS feed</strong></a><strong> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at </strong><a href="http://simpleprogrammer.com/"><strong>http://simpleprogrammer.com</strong></a><strong>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter </strong><a href="http://twitter.com/jsonmez"><strong>here</strong></a><strong>.</strong></h6>.  Xalatan description.  Xalatan no rx.  Buying Xalatan online over the counter.  Fast shipping Xalatan.  Xalatan overnight.  Buy Xalatan from mexico.  Xalatan without a prescription.  Where to buy Xalatan.  No prescription Xalatan online.  What is Xalatan.  Xalatan price.  Rx free Xalatan.  Purchase Xalatan online.  Generic Xalatan.  Xalatan street price.  Xalatan from canada.  About Xalatan.  Taking Xalatan.  Xalatan online cod.  Australia, uk, us, usa.  Order Xalatan online overnight delivery no prescription.  Xalatan recreational.  Xalatan canada, mexico, india.  Xalatan interactions.  Xalatan alternatives.  Online buying Xalatan.  My Xalatan experience.  Where can i cheapest Xalatan online.  Online Xalatan without a prescription.  Xalatan wiki.  Order Xalatan no prescription.  Get Xalatan.  Xalatan from mexico.  Xalatan schedule.  Xalatan dangers.  Purchase Xalatan for sale.  Where can i buy cheapest Xalatan online.  Discount Xalatan.  Is Xalatan addictive.  Buy cheap Xalatan.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4728'>Ventolin For Sale</a>. <a href='http://elegantcode.com/?p=4184'>Synthroid For Sale</a>. <a href='http://elegantcode.com/?p=4384'>Buy Ultram Without Prescription</a>. <a href='http://elegantcode.com/?p=4373'>Topamax For Sale</a>. <a href='http://elegantcode.com/?p=5156'>Amoxicillin For Sale</a>. <a href='http://elegantcode.com/?p=4297'>After Reglan</a>. <a href='http://elegantcode.com/?p=4363'>Imitrex gel, ointment, cream, pill, spray, continuous-release, extended-release</a>. <a href='http://elegantcode.com/?p=4721'>Flonase maximum dosage</a>. <a href='http://elegantcode.com/?p=4534'>Xalatan recreational</a>. <a href='http://elegantcode.com/?p=4354'>Herbal Glucophage</a>.<br />
<b>Trackbacks from:</b> <a href='http://social-blend.com/?p=1234'>Buy Xalatan Without Prescription</a>. <a href='http://www.quarterlives.com/?p=1098'>Buy Xalatan Without Prescription</a>. <a href='http://4realz.net/?p=816'>Buy Xalatan Without Prescription</a>. <a href='http://tayloegray.com/?p=302'>Buy Xalatan Without Prescription</a>. <a href='http://www.macneilbmx.com/blog/?p=5580'>Buy Xalatan Without Prescription</a>. <a href='http://blog.farmland.org/?p=2108'>Xalatan used for</a>. <a href='http://reversemortgagedaily.com/?p=14507'>Xalatan interactions</a>. <a href='http://linuxologist.com/?p=1519'>Online buying Xalatan</a>. <a href='http://home.officesnapshots.com/?p=268'>My Xalatan experience</a>. <a href='http://evanrapoport.com/?p=613'>Buy Xalatan online cod</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/04/13/why-rules-rule/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Programming is not a Craft: My Take</title>
		<link>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=programming-is-not-a-craft-my-take</link>
		<comments>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 17:38:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/</guid>
		<description><![CDATA[Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: Programming is not a Craft. Dan’s sentiments are not unique. I have heard similar opinions from other [...]]]></description>
			<content:encoded><![CDATA[<p>Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: <a href="http://dannorth.net/2011/01/11/programming-is-not-a-craft/" target="_blank">Programming is not a Craft</a>. Dan’s sentiments are not unique. I have heard <a href="http://blogs.tedneward.com/2008/05/11/Im+ProChoice+Pro+Programmer+Choice+That+Is.aspx" target="_blank">similar opinions</a> from other prominent developers I respect.</p>  <p>I read in Dan's post (and in some of the comments) a visceral reaction to gold plating things not determined &quot;important&quot; by the customer. I get that. I also see a need to temper this with the simple fact that the client doesn’t always know what is best for them. Let’s just get that out in the open. My doctor knows what is better for my physical body than I do and I am willing to pay for that. Will I always take the advice I am paying for? Well, probably not. And I’m sure that leaves my doctor shaking her head in dismay.</p>  <p>I learned that integrity is &quot;doing the right thing even when no one is looking&quot;, and I see the Software Craftsmanship discussion as striving for integrity in the systems we create.</p>  <p>One mark of a true professional might be a willingness to balance client need with implementaion elegance resulting in software that meets the need of the client AND is something worthy of pride when shown to another developer. If the only reason we are writing code is to provide the minimum a client wants to pay for, then how compelling is my work, really? Can I be proud of my professional body of work if I am simply marching to orders? I say no.</p>  <p>Where I part ways with Dan is in his analogy of the plumber. Granted, I simply want my pipes to work, but I am willing to pay for a plumber that takes pride in his work. I trust that plumber will simply do a better job as he strives to make his work appreciated by the next plumber that sees it. Can I quantify this into dollars? Not really. Perhaps in the extra time required to lay in a perfectly soldered joint as opposed to a sloppy one. Am I willing to pay more for this type of person to do the work? No question: Yes.</p>  <p>The bottom line for me is that we would all like to take pride in our work. No one I’ve ever met gets up in the morning thinking, “Today I will make a piece of crap”, and keeps at the job with any pleasure. We want to enjoy our work and be proud of it. Is that so bad? The very real software craftsmanship discussion simply gives us a vehicle for discussion in the pride we may take in our work for its own sake.</p>  <p>The risk to the craftsmanship community is to avoid getting carried away with dogma. Every time I hear <a href="http://channel9.msdn.com/Blogs/MichaelLehman/PP-Symposium-2010-Opening-Keynote-Robert-C-Martin" target="_blank">Bob Martin assert to a 500 person room</a> that if they aren't writing unit tests they are &quot;not professionals&quot; or somehow unworthy of being in the room with him, I cringe. That’s a perfect way to draw fire and alienate people who might otherwise join you in your cause. It also happens to be a perfect way to stand out as a charismatic speaker who gets lots of attention, but I digress… </p>  <p>Do I write tests? Yes. </p>  <p>Always? No. </p>  <p>Am I ashamed when I don't? Not really. Some jobs still call for duct tape. </p>  <p>Professionalism is knowing the appropriateness of a tool for a job and in always striving for integrity in our work. </p>  <p>My .02.</p>  <p>And, Dan, I admire and appreciate your contribution to our craft <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://elegantcode.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" /> .</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Burden Called Meetings</title>
		<link>http://elegantcode.com/2010/12/09/a-burden-called-meetings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-burden-called-meetings</link>
		<comments>http://elegantcode.com/2010/12/09/a-burden-called-meetings/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 19:00:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/12/09/a-burden-called-meetings/</guid>
		<description><![CDATA[I’ve been working for an enterprise corporation for 5+ years, which I’m going to be leaving soon. This organization is suffering from a wide-spread malady called “meetingitis”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working for an enterprise corporation for 5+ years, which <a href="http://elegantcode.com/2010/10/27/moving-to-greener-pastures/">I’m going to be leaving</a> soon. This organization is suffering from a wide-spread malady called “<a href="http://secretgeek.net/meetingitis.asp">meetingitis</a>”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming to a conclusion or a solution. Then there are also those kinds of meetings where you don’t have anything to say or contribute; these are just a complete waste of time.</p>  <p>Yesterday, <a href="http://twitter.com/seagile">Yves</a> pointed me out on Twitter that it is <a href="http://www.mccarthyshow.com/LearnForFree/TheCoreProtocolsOnline/tabid/103/Default.aspx">perfectly fine to leave a meeting</a> if you feel that you’re not able to gain or contribute anything. Today, I walked out of a meeting where one of the participants started making insults against me. I just stood up, walked to the door and left. And I must say that it felt liberating doing so. I went back to my desk, calmed down and got some actual work done. Without a basic form of respect, one simply can’t achieve anything, let alone come to win-win agreements. From now on, I’ll be evaluating all meetings that require my presence before I accept them and also keep evaluating my presence while being there. </p>  <p>Let me close of this mini-rant by sharing a must-see recording of a talk called “<a href="http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html">Why work doesn’t happen at work</a>” by <a href="http://twitter.com/jasonfried">Jason Fried</a>. I recommend you watch this short video, and if you like it, I also recommend picking up a copy of <a href="http://www.amazon.com/exec/obidos/ASIN/0307463745/elegantcode-20">Rework</a>. </p>  <p>I hereby rest my case.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/12/09/a-burden-called-meetings/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Laborers versus Professionals</title>
		<link>http://elegantcode.com/2010/10/27/laborers-versus-professionals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=laborers-versus-professionals</link>
		<comments>http://elegantcode.com/2010/10/27/laborers-versus-professionals/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:53:43 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/10/27/laborers-versus-professionals/</guid>
		<description><![CDATA[A while ago, my good friend Michel Grootjans&#160;tweeted the following: Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question. Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, my good friend <a href="http://geekswithblogs.net/alternativedotnet/Default.aspx">Michel Grootjans</a>&#160;<a href="http://twitter.com/michelgrootjans/status/24569673878">tweeted</a> the following:</p>  <blockquote>   <p>Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question.</p> </blockquote>  <p>Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a while. Try to picture your own work environment and how this relates. Go ahead! I can wait.</p>  <p>OK then, let’s move on.</p>  <p>I’ve been working for an enterprise corporation for 5+ years now. One of the things I’ve seen and learned there over this period of time is that laborers are more valued by management than professionals. Let me elaborate on this. </p>  <p>One of the biggest issues in a typical enterprise corporation is trust, specifically the lack thereof. The direct consequence of this lack of trust are massive amounts of constraints, regulatory processes and <a href="http://c2.com/cgi/wiki?FearDrivenDevelopment">fear-driven development</a>. This is the natural habitat of laborer developers, a nice and cozy place where they can spend their hibernation until retirement. This is where the term ‘code monkey’ originates from. Nine to five, no thinking, narrow focus, like soldiers in the military obeying orders to make a big mess. But sometimes, amongst these massive cohorts of laborers, there are small islands that exist of one or more professional developers. These are the kind of people that are very passionate about their craft, that want drive innovation and also want to continuously learn and improve. If you’re a developer and you’re reading this blog post, you probably fall into this category of developers.</p>  <p>But professional developers always have one part of the establishment going against them. It’s not the laborers. They don’t care. It’s an instrument better known as management. A large part of the IT industry, especially corporate IT shops, are being run by giant flocks of managers. Some of these managers started out as software developers and some of them are just born that way. But there’s something that they all have in common: they don’t write code as part of their day job. Although they don’t get their hands dirty with writing software, most managers do feel compelled to impose all kinds of political decisions regarding business requirements, software architecture/design, tools and technologies to the development teams they are ‘managing’. I for one want to make it clear that this has to stop. In order to lift this industry to the next level, we as software professionals need to free ourselves from the leash that is currently being held by management.&#160;&#160; </p>  <p>Professional developers working in these kinds of corporate environments are generally considered as troublemakers, if not by their direct bosses then certainly by other parts of management. The general attitude towards professionals is slamming them with more&#160; procedures, so called ‘company standards’ and ‘default architectures’. This ends up with a lot of frustration, a feeling of burn-out or even worse, suffocation as it may seem that the walls are closing in. Professional developers generally have a hard time placing this attitude towards them. They just want to do the right thing and provide the best possible solution they’re able to come up with. If managers don’t trust their development teams to make the right decisions, then why did they got hired in the first place? </p>  <p>I for one am pleading to get past this all this. Any business that wants to survive in this hard world economy and even wants to get ahead of its competition has to free its professional developers from management. It’s that simple. Management is great for enforcing compliance, but if engagement is what you want (and is definitely needed for bringing innovation), self-direction is essential. I already wrote <a href="http://vanryswyckjan.blogspot.com/2008/02/on-software-factories.html">a blog post about self-organizing teams</a> a couple of years ago. Today, I’m even more convinced that self-direction is one of the major key enablers for innovation in the IT industry of the 21th century. Anyway, someone who isn’t coding at least 50% of his day job shouldn’t be allowed to interfere with any kind technical decision making. Period! </p>  <p>I’m not saying that development teams should get a signed blank check. On the contrary. Financial and business constraints should still be taken into account. But when it comes to creativity, methodologies, technologies and tools, management shouldn’t get in the way. Development teams should be able to take responsibility for their own actions. Managers should know their place by making sure that their development teams can operate as optimal and efficient as possible by removing as many impediments as possible.</p>  <p>Let me show you a couple of examples where this principle of autonomy has immensely paid of so that you’re able to judge for yourself.</p>  <p>I personally find health care a fascinating craft. I find it fascinating simply because there are so many parallels than can be drawn between software engineering and the state of health care roughly 200 years ago :-). Lets take about modern hospitals for example. Medical facilities are generally being run by senior medical staff and not by managers! Senior medical staff are people that have a high degree of mastery in what they do and still perform their craft every single day. Maybe they’re not doing it full time so that they’re able to fulfill their ‘path-finding’ responsibilities, but still, they are still fixing their patients. Hospitals do have managers however, but they are there simply for enabling the medical staff to not worry about anything else besides saving lives. Can you picture lying in an operating room when a manager in a suit bursts through the door, yelling at the surgeon that he’s not allowed to use technique xyz to save your live? Preposterous you say? Not so with the current state of affairs in IT departments of the enterprise corporations. </p>  <p>There are a couple of concrete examples in the IT industry as well. Remember when Google <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?_r=1">announced</a> that their engineers get to spend 20 percent of their time to work on something of their own interest? This resulted in massive improvements for products like GMail, Google Maps, Google Docs, etc … and directly contributed to Google’s success and current market share. Other companies like <a href="http://blogs.atlassian.com/rebelutionary/archives/000495.html">Atlassian</a> and <a href="http://blog.facebook.com/">Facebook</a> are enabling innovation in basically the same way. </p>  <p>Yet another example is Pixar. If you haven’t seen or listened to <a href="http://www.scottberkun.com/blog/2010/inside-pixars-leadership/">this interview</a> with Ed Catmull, the president of Pixar, stop reading this blog post and let it inspire you now! Somewhere along this awesome interview he mentions the following:</p>  <blockquote>   <p>Part of the behavior is I don’t know the answers. And at first that seems a little bit glib. But after awhile people get that I really don’t know the answer to a lot of these things. So we set it up so that the management really doesn’t tell people what to do.&#160; </p> </blockquote>  <p>Think about how amazing it would be like to work in an environment like that. It’s inevitable that great things are bound to happen.</p>  <p>There are plenty of other examples out there, like open-source software, Wikipedia, etc. … . They all prove that self-management results in engagement and that this is going to be a major differentiator in tomorrow’s economy.&#160; </p>  <p>Make sure to check out the following resources as well:</p>  <ul>   <li><a href="http://www.ted.com/talks/dan_pink_on_motivation.html">The surprising science of motivation</a> by Daniel Pink </li>    <li><a href="http://openmymind.net/2010/10/7/programmer-passion">Programmer Passion: An Enterprises Most Useful Yet Repressed Advantage</a> by Karl Seguin </li>    <li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">Drive: The surprising truth about what motivates us</a> </li> </ul> Till next time.   ]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/10/27/laborers-versus-professionals/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Keep Pressing on my Friend (When programming seems bleak)</title>
		<link>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keep-pressing-on-my-friend-when-programming-seems-bleak</link>
		<comments>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 22:16:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/</guid>
		<description><![CDATA[Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again? Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper? I used to think it just happened to me.&#160; The first time [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again?</p>  <p>Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper?</p>  <p>I used to think it just happened to me.&#160; The first time it happened to me, I almost switched my major from CS to CIS.&#160; But, the more and more I work in this field and talk to other programmers, the more and more I see the same exact thing happening.&#160; And guess what?&#160; It is happening to everyone.</p>  <p>Not just you.&#160; You are not alone.</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2010/09/tired_man.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="tired_man" border="0" alt="tired_man" src="http://elegantcode.com/wp-content/uploads/2010/09/tired_man_thumb.jpg" width="248" height="356" /></a></p>  <h2>I’m not talking about burnout here</h2>  <p>This is more than burnout.&#160; This lack of motivation energy-sapping-plague can hit a programmer at any time whether you just finished a week of all nighters or you just came back from a peaceful vacation.</p>  <p>I actually find that it is the time when I am furthest from what should be burn out that this phenomenon is most likely to occur.</p>  <p>So, if it’s not burnout, what is it?</p>  <p>I’ll call it programming lethargy.&#160; It actually happens to two other groups of professionals: athletes and craftsmen.</p>  <p>The truth is it is a perfectly normal cycle.&#160; This “barrier” is actually the reason why there are many apprentices, few journeymen and even fewer masters.</p>  <p>When you hit this phase be glad, it means you are about to be tested and if you come out on the other side, you will end up with a renewed interest and passion and leave behind the others that can’t cut it.</p>  <p>Oh, and it will happen again, probably several more times.</p>  <h2>Press on my friend</h2>  <p>What can you do about this problem?</p>  <p>Don’t despair, just press on.&#160; Stay the course and all will be well.</p>  <p>I am not sure why this happens, but I do know that it is a true test of your desire for the goal, whether to be a better programmer or a better athlete, or a better singer or musician. </p>  <p>The test is whether or not you can still press on when the motivation and passion is not there.</p>  <p>The reward waiting for you on the other side? </p>  <ul>   <li>A renewed passion and energy.&#160; </li>    <li>A new kind of appreciation for what you do.&#160; </li>    <li>Experience and true appreciation for your craft. </li> </ul>  <p>The question you have to ask yourself, is what do you ultimately want to become?&#160; If what you do is more than just a job to you, then you’ll find the strength to press on.</p>  <h2>How to press on when the motivation is gone</h2>  <p>If you agree with me, or even think that perhaps what I am saying is worth considering, then you will probably wonder how you can get through this phase or test to see the other side.</p>  <p>We can look at athletics again as a comparison to provide some insight.</p>  <p>Think about a professional track runner, training for competition.&#160; Consider what would happen if that athlete decided to not have a formal training schedule, but instead only train when he felt like it.</p>  <p>What would happen when he didn’t feel like training for a week?</p>  <p>Now let’s say he had a training schedule and he followed it, even on the mornings when he didn’t feel like getting up to train.</p>  <p>What would happen if his training was not planned out?&#160; If he didn’t know what kind of drills to do or have a long term plan for the training sessions?</p>  <p>If you want to make it through the times when you don’t feel the motivation and passion for writing code and solving problems, then you have to have a plan.&#160; A solid plan that will ensure that you will be able to press on.</p>  <p>Here are some tips to make sure that when you get struck by programming lethargy, you do make it through to the other side.</p>  <ul>   <li>I’ve talked about this <a href="http://simpleprogrammer.com/2010/07/02/the-importance-of-always-reading/">several times</a> in my blog.&#160; <strong>Make sure you are always reading a technical book.</strong>&#160; Create a schedule and stick to it.&#160; Even 15-30 minutes a day of reading will let you read around 1-2 books a month.&#160; That is a huge amount of knowledge. </li>    <li>When you don’t feel like working,<strong> break up your work into <a href="http://simpleprogrammer.com/2010/07/09/why-small-is-better/">small tasks</a> and start accomplishing those tasks.</strong>&#160; Figure out exactly what you have to do to move forward and do it.&#160; Don’t give in and waste time.&#160; The time you feel the most like killing time, is the time when you must throw yourself into your work all the more. </li>    <li><strong>Set some goals for yourself.</strong>&#160; Short term and long term.&#160; The short terms goals should clearly lead to the long term goals.&#160; Review those goals frequently and always try to make progress towards the goals.&#160; Even a little bit of progress adds up over time. </li>    <li><strong>Don’t start thinking about changing careers or looking for an easier job.</strong>&#160; Don’t start thinking you will feel this way forever.&#160; Realize that what you are experiencing now is a feeling and feelings are not trustworthy. </li>    <li><strong>Clean up.</strong>&#160; Clean up your workspace.&#160; Clean up your computer.&#160; Get yourself some new equipment if it will help.&#160; Feeling like you have a new and fresh environment can do wonders for motivation. </li>    <li><strong>Challenge yourself.</strong>&#160; Your gut is going to tell you to slow down and relax, but that road leads to laziness.&#160; When laziness comes your way, the best way to fight it is to push right into it! </li> </ul>  <p>Well, that is all the tips I have for you for today.&#160; Just remember that you are not alone and what you are experiencing is normal.&#160; </p>  <p>If you’re in a period now where you are motivated and feel great about your work and what you are doing, you might want to bookmark this post and come back to it when it can benefit you more.&#160; </p>  <p>Remember though, setting up good habits and routines now can help you cruise through the hard times later. </p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>  <ul></ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Microsoft doesn&#8217;t create bad developers, developers do</title>
		<link>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoft-doesnt-create-bad-developers-developers-do</link>
		<comments>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:47:16 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/</guid>
		<description><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an [...]]]></description>
			<content:encoded><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an industry that is evolving at an incredible pace, contains an incalculable number of technologies, frameworks, best practices and constantly redefines the definition of how things should be done in the best possibly way. It’s the industry that makes the rest of the world tick. Daunting really, if you think about it.

A while back I read a couple of posts by <a href="http://www.gilzilberfeld.com/" target="_blank">Gil Zilberfeld</a> (<a title="Read Gil's post on Why Microsoft makes bad programmers" href="http://www.gilzilberfeld.com/2010/07/why-microsoft-makes-bad-programmers.html" target="_blank">here</a> and <a title="Read Gil's post on CSI: Microsoft" href="http://www.gilzilberfeld.com/2010/08/csi-microsoft.html" target="_blank">here</a>) where Gil talks about the responsibility that vendors such as Microsoft plays in the role of securing the quality of the work that is produced in our industry. While I think I see the points  Gil is trying to make, I think he misses the beat a bit and I have a hard time agreeing with the conclusions he draws.

The way I see it there are two types of developers; those that are just in it to pay the bills and those that consider themselves as craftsmen. If you consider yourself a craftsman then you should already be aware that you are responsible for your own faith and actions in this industry. But, if you are just in it to pay the bills then you are probably also looking to do so by doing the least amount of work and that includes looking for information on how to solve a particular problem or how to apply a technology onto your stack.

So if you are one of the developers that are only looking towards Microsoft (or the relevant company for the technology stack you are working on) is it their fault if you implement something in a way that could be considered bad? Of course not! Sure there are a lot of outdated and down right poor samples at the Microsoft (or relevant company) website and their idea on how certain things should be solved are bound to differ from others (and that’s definitely not to say that there isn’t good contents, there are a ton of it). However, if you rely on a single source of information, you are always going to get an opinionated view. Take my word on it (right?).

Doctors reads medical journals, publishes research papers, attend conferences, network with colleagues and make sure they stay up to date with the latest in their field. I’m pretty sure you are happy that they spend all of this time to make sure they can provide the best possible care and treatment when someone are in need of their services. I know I am.

Just as with any other profession, developers are responsible for their own education, for honing their skills in the craft that they have chosen to practice. In order to keep up in an industry that evolves at the speed of light you need to invest in yourself. The code you write today should be some of the best you have ever written, while a year later you should be considerably less excited about its quality. It’s a sign of growth. That you’ve continued to move forward as a craftsman, that you skills have been honed and broadened during the past year.

So what about the tools? Do we really rely on them too much to get the work done? I would say, definitely not! But again you have to specify just exactly what you are talking about when talking about tooling. If you rely on visual designers, drag and drop, wizards and the likes to to the majority of your work, then yes you are probably relying too much on your tools. Odds are that you will have a hard time to get anything outside of standard behavior to run and there will be pain points when you need to debug.

However you would do yourself (and your employer) a huge disservice if you did not make it your goal to know the tools in your toolbox as good as possible. What’s wrong with knowing how to use the debugger, the IDE and tools like ReSharper as good as possible? Used correctly they will have a huge impact on productivity. Make sure you know the finer details of the tools and make them work for your and not the other way around. Yes, sometimes tools do get in the way of the goal, even slow you down, and when that is the case, don’t use the tools! Tools are there to help you when you need them, not to act as a crutch you always have to lean on so you don’t fall on your ass.

Well there you have my thoughts on the subject. It’s always up to the developer, not the companies. Always.

I am also around on twitter <a title="Visit my twitter profile" href="http://twitter.com/thecodejunkie" target="_blank">@thecodejunkie</a> in case you need one more person to follow]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Software, &#8220;It&#8217;s not what we do&#8221;.</title>
		<link>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-its-not-what-we-do</link>
		<comments>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 12:13:36 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/09/software-its-not-what-we-do/</guid>
		<description><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a [...]]]></description>
			<content:encoded><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a “core competency”.

One thing I have heard expressed in those places is, “software development is not our core competency, therefore recommendations around professional development practices don’t apply to us.”

Good, lord. Really, people?

This is akin to a Boeing corporate attorney claiming that he need not be competent because Boeing makes airplanes.

I don’t know where this absurd line of reasoning comes from, but I know why it is tolerated. It is tolerated because we don’t have the formal structures to hold professionals accountable the way we might hold an electrician, plumber, or physician accountable to being merely competent. If you are reading this post you probably make 3X the salary of a plumber, yet are held to a lower degree of professional accountability for your work.

This is sad, but it doesn’t mean that we need to pick up the mantle of mediocrity available to us. We can hold ourselves accountable for professionalism no matter where we work.

If the organization we serve specializes in jellybeans, services, software widgets, or any other industry, we are hired to bring our best game to the table. This is why they hire us, folks! We are supposed to know what we are doing, not making excuses for incompetence!

In summary, no matter what type of organization you work for:
<ul>
	<li>Yes, you need to use source control.</li>
	<li>Yes, you need to automate the build.</li>
	<li>No, you shouldn’t be releasing the assemblies compiled on your machine.</li>
	<li>Yes, you need to stop writing long methods and pay attention to code complexity.</li>
	<li>Yes, you need to buy your developers the best tools available.</li>
	<li>No, you don’t need to write your own logging framework.</li>
	<li>Yes, you should be practicing test first development.</li>
	<li>No, continuing to ship known defects is not acceptable.</li>
	<li>Yes, you should understand who your customer is.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Software Craftsmanship on the Polymorphic Podcast</title>
		<link>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-craftsmanship-on-the-polymorphic-podcast</link>
		<comments>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:11:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/</guid>
		<description><![CDATA[I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of being the host!</p>  <p><a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx?"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ListenBanner" border="0" alt="ListenBanner" align="right" src="http://elegantcode.com/wp-content/uploads/2010/08/ListenBanner.png" width="341" height="53" /></a> The interview is now live and <a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx" target="_blank">available here</a>. </p>  <p>We visited many of my favorite topics including:</p>  <ul>   <li>How to sell Agile in your org</li>    <li>Scrum and ScrumBut</li>    <li>Code Craftsmanship</li>    <li>Agile in small teams</li>    <li>How to be an agile army of one</li>    <li>How my mom is the perfect complexity gauge</li>    <li>And ElegantCode.com gets a shout out!</li> </ul>  <p>This was really fun. Thanks, Craig!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enforce Correct Usage By Wrapping Types</title>
		<link>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-its-not-what-we-do</link>
		<comments>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 12:13:36 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/09/software-its-not-what-we-do/</guid>
		<description><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a [...]]]></description>
			<content:encoded><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a “core competency”.

One thing I have heard expressed in those places is, “software development is not our core competency, therefore recommendations around professional development practices don’t apply to us.”

Good, lord. Really, people?

This is akin to a Boeing corporate attorney claiming that he need not be competent because Boeing makes airplanes.

I don’t know where this absurd line of reasoning comes from, but I know why it is tolerated. It is tolerated because we don’t have the formal structures to hold professionals accountable the way we might hold an electrician, plumber, or physician accountable to being merely competent. If you are reading this post you probably make 3X the salary of a plumber, yet are held to a lower degree of professional accountability for your work.

This is sad, but it doesn’t mean that we need to pick up the mantle of mediocrity available to us. We can hold ourselves accountable for professionalism no matter where we work.

If the organization we serve specializes in jellybeans, services, software widgets, or any other industry, we are hired to bring our best game to the table. This is why they hire us, folks! We are supposed to know what we are doing, not making excuses for incompetence!

In summary, no matter what type of organization you work for:
<ul>
	<li>Yes, you need to use source control.</li>
	<li>Yes, you need to automate the build.</li>
	<li>No, you shouldn’t be releasing the assemblies compiled on your machine.</li>
	<li>Yes, you need to stop writing long methods and pay attention to code complexity.</li>
	<li>Yes, you need to buy your developers the best tools available.</li>
	<li>No, you don’t need to write your own logging framework.</li>
	<li>Yes, you should be practicing test first development.</li>
	<li>No, continuing to ship known defects is not acceptable.</li>
	<li>Yes, you should understand who your customer is.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Craftsmanship</title>
	<atom:link href="http://elegantcode.com/category/craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00: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>Temovate Cream For Sale</title>
		<link>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-software-development-will-never-be-engineering</link>
		<comments>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:37:48 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/</guid>
		<description><![CDATA[I always find it rather interesting when academics try to quantify generalized metrics about software development. Temovate Cream For Sale, Things like: per lines of code, there will be X number of bugs. Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.” These are all interesting [...]]]></description>
			<content:encoded><![CDATA[<p> <p>I always find it rather interesting when academics try to quantify generalized metrics about software development.</p>  <p> <b>Temovate Cream For Sale</b>, Things like: per lines of code, there will be X number of bugs.</p>  <p>Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.”</p>  <p>These are all interesting thoughts, but software development will never conform to rigid engineering principles like many other engineering practices.&#160; The longer I work in the field, the more and more I realize that software development has nothing to do with engineering.&#160; We just happen to attend some of the same math classes in school.</p>  <h2>Building bridges</h2>  <p>One of the main arguments I hear people make about the current state of software development as an engineering practice is based around its relative maturity to other engineering fields.</p>  <p>There is a huge problem with this line of thinking.</p>  <p>The argument goes something like this:&#160; “<em>Engineering has been around for hundreds of years and has matured to the point where it is a measurable science, but software development has only been around in earnest for the last few decades or so, therefore it is relatively immature as an engineering discipline.”</em></p>  <p>On the surface this argument seems sounds.&#160; And certainly in 50 years software development will be different than it is now.&#160; Heck, it is much more different than it was just 10 years ago.</p>  <p>But, here is the problem.&#160; We build much more software than we do bridges.</p>  <p><img src="http://www.nps.gov/glca/historyculture/images/Navajo_Bridges_1.gif" width="589" height="442" /></p>  <h6 align="center">&#160;</h6>  <p>Let me give you an example that came to light in another area of my interest… poker.</p>  <h1></h1>  <h2>The poker quickening</h2>  <p>An interesting thing happened in the poker community in the last 10 years; poker pros with decades of experience started getting beat time and time again by 19 year old poker prodigies.</p>  <p>From an outside perspective it looks like the poker world opening up just widened the search for talent and there it was.&#160; But, a closer examination of the evidence leads to the truth.</p>  <p>Before the online poker industry was born, poker was played in card rooms and casinos in states where it was legal and occasionally at small home games throughout the US.</p>  <p>A poker pro might play poker tournaments perhaps 100 times to 150 times a year.&#160; The sum knowledge of the poker community and the meta game around it was based on this base of professional poker players playing tournaments and gaining experience at this mediocre rate.</p>  <p>Once the internet poker rooms started opening up, things changed, and they changed rapidly.&#160; Now anyone could play poker from their home PC.&#160; Not only could they play poker, they could play poker tournaments at all hours of the day.</p>  <p>Here is a list of some of the major changes that took place:</p>  <ul>   <li>Hands are dealt at 60-80 hands per hour instead of 10-30</li>    <li>Players can play in many tournaments at one time, 10 tournaments at once is not unheard of</li>    <li>Players can analyze hand histories and historical data about their play and opponents play through the use of software </li>    <li>Age requirements are out the window, technically any one of any age could be playing online</li>    <li>Players can play 24 hours a day</li>    <li>The professional online tournament player could easily play over 3000 tournaments in a year, while a brick and mortar pro would be lucky to reach 100 in a year.</li>   <img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://t1.gstatic.com/images?q=tbn:ANd9GcRj9uGNWSyqGWEneiH6xaBAyS6COwGYicdNadZu-06KWQLhIi6LMw&amp;t=1" width="316" height="270" /></ul>  <p>&#160;</p>  <p>So where am I going with all this?</p>  <p>The point is that as a whole more hands were dealt and more poker knowledge and experience was obtained in 1 year of online poker than probably the entire history of poker before that.&#160; We reached such an accelerated pace of play that all previous knowledge of poker became obsolete.&#160; </p>  <p>The strategy of tournament poker completely changed.&#160; The game evolved perhaps 500 years into the future in a matter of 5 years time.</p>  <p>The same has happened with software development.</p>  <h2>Back to the bridge building</h2>  <p>So let’s take that poker example and look at it through the lens of software development.</p>  <p>Let us compare the engineering maturity to software development to the engineering maturity of the engineering discipline of building bridges.</p>  <p>I think most people would agree that bridge building is a very mature engineering discipline but many people would argue that software development is not.</p>  <p><strong>How many bridges do you think have been built in the world?</strong></p>  <p>Well there are <a href="http://www.betterroads.com/category/bridge-inventory/erroads.randallreillycms.com/files/2009/11/BR1109_BridgeInventory.pdf">about 600,000 bridges in the United States alone</a>, so the world figure must be at least somewhere around 10 times that number perhaps 20.</p>  <p><strong>How many software programs have been written?</strong></p>  <p>This is a very hard number to estimate, but lets take a rough guess based on <a href="http://stackoverflow.com/questions/453880/how-many-developers-are-there-in-the-world">how many software developers there are in the world</a>.&#160; </p>  <p>If we say there are about 12 million software developers and each software developer has written approximately 3 programs, we can estimate that a large amount more programs have been written than bridges built.</p>  <p>My point is not to knock bridge building, we are pretty good at it as a whole, but rather to show that collectively, even though we have been building bridges for hundreds of years, we have probably devoted an equivalent amount of time to building software.</p>  <p>This line of thinking may lead you to argue back that software development and bridge building are very different.&#160; Bridge building has a fixed set of requirements that are pretty close to the the same for each bridge you build, but software development is a big open void of whims and ambiguously contradictory statements.</p>  <p>I agree with you 100%!&#160; And in essence that is my point.</p>  <h2>Software development is different</h2>  <p>And we have had enough time to realize that.&#160; Waiting for software development to gel into some kind of engineering discipline like other engineering disciplines is like waiting for water without gelatin mix to turn into Jello.&#160; </p>  <p>It’s just not going to happen!</p>  <p>In my mind it is clear that the argument that we haven’t given it enough time is just wishful thinking.&#160; The nature of software development, just like online poker, leads itself to rapid evolution.</p>  <p>Consider what direction software development is evolving.&#160; Is it even evolving in the direction of rigid engineering practices or is it evolving in the exact OPPOSITE direction?</p>  <p>Ten years ago, we tried to use UML diagrams and CASE tools to develop software.&#160; Ten years ago waterfall was all the rage.&#160; Ten years ago, we thought that ten years in the future we would have programs that would allow us to build software in the same way that CAD tools allow for building machine parts.</p>  <p>Not only did it not happen.&#160; It went completely the other way.&#160; Now we are all talking about Agile.&#160; Now people don’t even remember what CASE tools are.&#160; Now we are building software without trying to define the whole system in UML diagrams.</p>  <p><strong>The fact of the matter is software systems are unruly beasts!</strong></p>  <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://aznbadger.files.wordpress.com/2010/06/beast.jpg" /></p>  <p>In my mind it comes down to one simple distinction.&#160; Software is living, bridges aren’t.&#160; When you are done building a bridge, you are done building the bridge.&#160; </p>  <p>Sure someone, probably not you, will have to come along and do some routine maintenance on it.&#160; Sure, some small things might change about it, but for all intents and purposes the work is done.</p>  <p>In most software development scenarios, this is not the case.&#160; In most software development scenarios, releasing V1 is not even close to the end.&#160; Sometimes V1 and V2 don’t even look that same at all.&#160; Software development is about operating on a living breathing thing and all the while keeping it alive.</p>  <p>The truth is, we software developers have more in common with surgeons than with other engineers.</p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>.  Buy Temovate Cream without a prescription.  Temovate Cream trusted pharmacy reviews.  Temovate Cream over the counter.  Where can i order Temovate Cream without prescription.  Online buy Temovate Cream without a prescription.  Temovate Cream no rx.  Buy cheap Temovate Cream no rx.  Temovate Cream photos.  Buy Temovate Cream online no prescription.  Order Temovate Cream online c.o.d.  Herbal Temovate Cream.  About Temovate Cream.  Australia, uk, us, usa.  Cheap Temovate Cream.  Temovate Cream class.  Temovate Cream brand name.  Online Temovate Cream without a prescription.  Buy Temovate Cream without prescription.  Buy Temovate Cream from canada.  After Temovate Cream.  Order Temovate Cream from mexican pharmacy.  Temovate Cream without a prescription.  Purchase Temovate Cream.  Temovate Cream natural.  Temovate Cream overnight.  Temovate Cream online cod.  Where can i buy cheapest Temovate Cream online.  Purchase Temovate Cream for sale.  Online buying Temovate Cream.  Purchase Temovate Cream online.  Temovate Cream used for.  Temovate Cream coupon.  Temovate Cream description.  Order Temovate Cream no prescription.  Temovate Cream maximum dosage.  Cheap Temovate Cream no rx.  Temovate Cream images.  Temovate Cream blogs.  Buy Temovate Cream online cod.  Buy generic Temovate Cream.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4472'>Bactroban For Sale</a>. <a href='http://elegantcode.com/?p=4632'>Armour For Sale</a>. <a href='http://elegantcode.com/?p=4639'>Buy Estrace Vaginal Cream Without Prescription</a>. <a href='http://elegantcode.com/?p=4668'>Buy Augmentin Without Prescription</a>. <a href='http://elegantcode.com/?p=4535'>Buy Tindamax Without Prescription</a>. <a href='http://elegantcode.com/?p=4931'>Fast shipping Diclofenac</a>. <a href='http://elegantcode.com/?p=4240'>Combivent brand name</a>. <a href='http://elegantcode.com/?p=4417'>Levaquin overnight</a>. <a href='http://elegantcode.com/?p=4597'>Purchase Toradol online</a>. <a href='http://elegantcode.com/?p=4221'>Australia, uk, us, usa</a>.<br />
<b>Trackbacks from:</b> <a href='http://www.quarterlives.com/?p=1148'>Temovate Cream For Sale</a>. <a href='http://4realz.net/?p=1972'>Temovate Cream For Sale</a>. <a href='http://www.macneilbmx.com/blog/?p=5997'>Temovate Cream For Sale</a>. <a href='http://www.greatgreengoods.com/?p=2476'>Temovate Cream For Sale</a>. <a href='http://www.thegriffonnews.com/?p=9947'>Temovate Cream For Sale</a>. <a href='http://social-blend.com/?p=1160'>Temovate Cream brand name</a>. <a href='http://blog.farmland.org/?p=3812'>Where can i find Temovate Cream online</a>. <a href='http://reversemortgagedaily.com/?p=14136'>Generic Temovate Cream</a>. <a href='http://linuxologist.com/?p=1792'>Temovate Cream photos</a>. <a href='http://home.officesnapshots.com/?p=114'>Order Temovate Cream from mexican pharmacy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Buy Xalatan Without Prescription</title>
		<link>http://elegantcode.com/2011/04/13/why-rules-rule/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-rules-rule</link>
		<comments>http://elegantcode.com/2011/04/13/why-rules-rule/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 03:19:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/04/13/why-rules-rule/</guid>
		<description><![CDATA[Buy Xalatan Without Prescription, I have to admit, I love rules. They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally. Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how [...]]]></description>
			<content:encoded><![CDATA[<p> <p> <b>Buy Xalatan Without Prescription</b>, I have to admit, I love rules.</p>  <p>They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally.</p>  <p>Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how valuable they are, because when rules are doing their job, you don’t even notice them.</p>  <p>The first rule of your day is likely your alarm clock.&#160; This is a self imposed rule that you have created for yourself to get up at a certain time in the morning.&#160; Try to function in any meaningful way by completely removing that rule and see what happens.</p>  <p>Almost all games we play have rules.&#160; Without rules those games wouldn’t be much fun.</p>  <p>We drive on the correct side of the road in our lane, following rules of traffic, which if not obeyed put us in mortal danger and make the road quite a scary place.</p>  <p>It is a gross understatement to say rules are important to our daily life.</p>  <p>Yet, I am constantly amazed how many people seem to oppose any notion of rules when it comes to our craft of software development.</p>  <h2>There is this notion that rules somehow preclude judgment</h2>  <p>Somehow the idea has crept into many of our brains that rules and good judgment, (what we might call craftsmanship), are diametrically opposed to each other.</p>  <p>There seems to be a pervasive thought that rules suck all the fun out of things and take away creativity, skill and experience, reducing the follower of such rules to a mindless robot, replaceable by any other robot.</p>  <p>Not only do I think this viewpoint is completely wrong, but I think it is downright destructive to the craft of software development.</p>  <p>Let us first dispel the notion that rules destroy creativity and its kin.</p>  <p>Think about a game like Scrabble.&#160; Scrabble is a game that is based on a very restrictive set of rules.&#160; You basically have only two moves you can do.</p>  <ol>   <li>Make a word using only letters in your rack and letters on the board.</li>    <li>Discard some letters to get some new ones.</li> </ol>  <p>Rules dictate how many letters you can have and what ways you can arrange them.&#160; Yet, how much creativity is actually created by these constraints?</p>  <p>Music is often seen as a cousin to coding, and is another great example of constraints which breed creativity.&#160; Music has a huge amount of constraint.&#160; There are many natural rules about sounds and chords.&#160; We only have a small amount of notes to even work with, yet people have been elaborating on those 12 notes for hundreds of years and new creative sounds are produced every single day!</p>  <p><strong>If you really take the time to think about it, I think you will find that constraints actually breed creativity not destroy it.</strong></p>  <h2>The truth is rules come from good judgment at the right time</h2>  <p>Let me posit you this question.</p>  <p>When is a better time to make a judgment decision of what to do when a bear attacks you?</p>  <ul>   <li>When the bear is actually attacking you</li>    <li>Sitting at your computer with a huge amount of reference material available to you about bear attacks and a calm peaceful environment</li> </ul>  <p>If you chose when the bear is actually attacking you turn to page 32.</p>  <p><strong>Page 32:</strong></p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bear-attack" border="0" alt="bear-attack" src="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack_thumb.jpg" width="447" height="318" /></a></p>  <p><em>Having no rules in which to operate, in the heat of the moment, you decide to “tickle” the bear.&#160; The bear slays you and munches on your bones.&#160; Your adventure has come to an end.</em></p>  <p><strong><em>You are DEAD!</em></strong></p>  <p>The point is that your judgment is much more likely to be sound when you are removed from the situation which you are making the judgment call about.&#160; Unless you are a close relative of Spock, you’ll probably find that human emotions tends to interfere with sound judgment.</p>  <p>This is why I instead firmly believe that <strong>we should use our good judgment to formulate rules that we will use in the situations which they apply to rather than to try and execute good judgment when we are engrossed in the situation.</strong></p>  <p>If you still disagree with me here, let’s ponder the example of the alarm clock one more time.&#160; Better yet, I challenge you to make a judgment call each morning of when you should wake up.&#160; You can’t use an alarm clock or any rules.&#160; (Before you do this, you might want to make sure you get your resume polished up.)</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="alarm clock" border="0" alt="alarm clock" src="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock_thumb.jpg" width="235" height="386" /></a></p>  <h2>How does this all apply to software development?</h2>  <p>I’m not going to attempt to address every way in this blog post, perhaps we’ll revisit this subject in the future, because it is so important.&#160; Instead my goal here is to convince you to embrace rules and to not fear setting them for yourself, for your team or for your code.</p>  <p>Some of the biggest failings of teams that I see is the fear of setting rules.&#160; Teams seem to be so afraid of restricting someone or impairing their ability to make judgment calls that they go the direction of never setting any concrete rules, just guidelines or best practices.</p>  <p>There is a huge difference between guidelines and rules.&#160; Guidelines help you make a decision, rules make it for you.&#160; Don’t be fooled into thinking they are the same thing, and don’t fear rules.&#160; I always prefer rules over guidelines, because they are much more valuable.</p>  <p><strong>You can actually measure the effect of a rule, but you can’t easily measure the effect of a </strong><strong>guideline.</strong></p>  <p>Let me give you some examples of areas in software development that I think are great places to enforce some rules:</p>  <ul>   <li>Naming conventions</li>    <li>Unit testing</li>    <li>Process of starting work</li>    <li>Who works on work</li>    <li>When work is considered done</li>    <li>How defects are handled</li>    <li>What changes can be made to work in progress</li>    <li>What should be in a backlog</li>    <li>Language and library choices</li>    <li>Data access strategies</li>    <li>Dealing with build failures</li> </ul>  <p>Every time you are having a conversation which ends up identifying something to improve upon, you should be thinking about how you can codify it into a rule.&#160; Don’t be afraid to step out here.&#160; It’s ok to make the wrong rule and change it later.&#160; If you do this you learn something.</p>  <p>Having rules in place prevents you from making in-the-moment decisions which you later come to regret.</p>  <p>When I go to a buffet, I set rules for how much food I can eat.&#160; When I decide to start a workout routine, I set rules for how often and what duration I will workout.&#160; When I write code, I set rules for how I will write that code.</p>  <p>In any of those areas, when I fail to set rules, I end up failing.&#160; It is human nature.</p>  <h2>But rules impede me and end up making me do silly things</h2>  <p>Good.&#160; That is called feedback.</p>  <p>Remember back when you were just making judgment calls all the time instead of following rules you or your team preset ahead of time, you weren’t getting any feedback, now you are.&#160; Be happy about it, celebrate!</p>  <p>You can always change the rules.&#160; You can always tweak the parameters, but if you want to have any success in process improvement, it is much like cooking on the stove.&#160; You are much better off with burner dials that have numbers on them or at least some kind of label, then ones with just a blank dial.&#160; If you don’t know where the dial is, how will you know which way to turn it?</p>  <p>Sometimes rules are going to make you do something silly or seemingly extraneous.&#160; Sometimes rules are going to cause you to possibly even do the wrong thing.</p>  <p>But, if you want to have any chance of learning from your mistakes, if you want to truly improve your process, you must resist the urge to break the rules and instead wait for a time to reflect upon the rules and make appropriate changes at that time.</p>  <p>Learn to embrace rules and you’ll suddenly see an improvement in all areas of life where you apply them, especially your software development!</p>  <h6><strong>As always, you can subscribe to this </strong><a href="http://feeds2.feedburner.com/ElegantCode"><strong>RSS feed</strong></a><strong> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at </strong><a href="http://simpleprogrammer.com/"><strong>http://simpleprogrammer.com</strong></a><strong>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter </strong><a href="http://twitter.com/jsonmez"><strong>here</strong></a><strong>.</strong></h6>.  Xalatan description.  Xalatan no rx.  Buying Xalatan online over the counter.  Fast shipping Xalatan.  Xalatan overnight.  Buy Xalatan from mexico.  Xalatan without a prescription.  Where to buy Xalatan.  No prescription Xalatan online.  What is Xalatan.  Xalatan price.  Rx free Xalatan.  Purchase Xalatan online.  Generic Xalatan.  Xalatan street price.  Xalatan from canada.  About Xalatan.  Taking Xalatan.  Xalatan online cod.  Australia, uk, us, usa.  Order Xalatan online overnight delivery no prescription.  Xalatan recreational.  Xalatan canada, mexico, india.  Xalatan interactions.  Xalatan alternatives.  Online buying Xalatan.  My Xalatan experience.  Where can i cheapest Xalatan online.  Online Xalatan without a prescription.  Xalatan wiki.  Order Xalatan no prescription.  Get Xalatan.  Xalatan from mexico.  Xalatan schedule.  Xalatan dangers.  Purchase Xalatan for sale.  Where can i buy cheapest Xalatan online.  Discount Xalatan.  Is Xalatan addictive.  Buy cheap Xalatan.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4728'>Ventolin For Sale</a>. <a href='http://elegantcode.com/?p=4184'>Synthroid For Sale</a>. <a href='http://elegantcode.com/?p=4384'>Buy Ultram Without Prescription</a>. <a href='http://elegantcode.com/?p=4373'>Topamax For Sale</a>. <a href='http://elegantcode.com/?p=5156'>Amoxicillin For Sale</a>. <a href='http://elegantcode.com/?p=4297'>After Reglan</a>. <a href='http://elegantcode.com/?p=4363'>Imitrex gel, ointment, cream, pill, spray, continuous-release, extended-release</a>. <a href='http://elegantcode.com/?p=4721'>Flonase maximum dosage</a>. <a href='http://elegantcode.com/?p=4534'>Xalatan recreational</a>. <a href='http://elegantcode.com/?p=4354'>Herbal Glucophage</a>.<br />
<b>Trackbacks from:</b> <a href='http://social-blend.com/?p=1234'>Buy Xalatan Without Prescription</a>. <a href='http://www.quarterlives.com/?p=1098'>Buy Xalatan Without Prescription</a>. <a href='http://4realz.net/?p=816'>Buy Xalatan Without Prescription</a>. <a href='http://tayloegray.com/?p=302'>Buy Xalatan Without Prescription</a>. <a href='http://www.macneilbmx.com/blog/?p=5580'>Buy Xalatan Without Prescription</a>. <a href='http://blog.farmland.org/?p=2108'>Xalatan used for</a>. <a href='http://reversemortgagedaily.com/?p=14507'>Xalatan interactions</a>. <a href='http://linuxologist.com/?p=1519'>Online buying Xalatan</a>. <a href='http://home.officesnapshots.com/?p=268'>My Xalatan experience</a>. <a href='http://evanrapoport.com/?p=613'>Buy Xalatan online cod</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/04/13/why-rules-rule/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Programming is not a Craft: My Take</title>
		<link>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=programming-is-not-a-craft-my-take</link>
		<comments>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 17:38:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/</guid>
		<description><![CDATA[Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: Programming is not a Craft. Dan’s sentiments are not unique. I have heard similar opinions from other [...]]]></description>
			<content:encoded><![CDATA[<p>Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: <a href="http://dannorth.net/2011/01/11/programming-is-not-a-craft/" target="_blank">Programming is not a Craft</a>. Dan’s sentiments are not unique. I have heard <a href="http://blogs.tedneward.com/2008/05/11/Im+ProChoice+Pro+Programmer+Choice+That+Is.aspx" target="_blank">similar opinions</a> from other prominent developers I respect.</p>  <p>I read in Dan's post (and in some of the comments) a visceral reaction to gold plating things not determined &quot;important&quot; by the customer. I get that. I also see a need to temper this with the simple fact that the client doesn’t always know what is best for them. Let’s just get that out in the open. My doctor knows what is better for my physical body than I do and I am willing to pay for that. Will I always take the advice I am paying for? Well, probably not. And I’m sure that leaves my doctor shaking her head in dismay.</p>  <p>I learned that integrity is &quot;doing the right thing even when no one is looking&quot;, and I see the Software Craftsmanship discussion as striving for integrity in the systems we create.</p>  <p>One mark of a true professional might be a willingness to balance client need with implementaion elegance resulting in software that meets the need of the client AND is something worthy of pride when shown to another developer. If the only reason we are writing code is to provide the minimum a client wants to pay for, then how compelling is my work, really? Can I be proud of my professional body of work if I am simply marching to orders? I say no.</p>  <p>Where I part ways with Dan is in his analogy of the plumber. Granted, I simply want my pipes to work, but I am willing to pay for a plumber that takes pride in his work. I trust that plumber will simply do a better job as he strives to make his work appreciated by the next plumber that sees it. Can I quantify this into dollars? Not really. Perhaps in the extra time required to lay in a perfectly soldered joint as opposed to a sloppy one. Am I willing to pay more for this type of person to do the work? No question: Yes.</p>  <p>The bottom line for me is that we would all like to take pride in our work. No one I’ve ever met gets up in the morning thinking, “Today I will make a piece of crap”, and keeps at the job with any pleasure. We want to enjoy our work and be proud of it. Is that so bad? The very real software craftsmanship discussion simply gives us a vehicle for discussion in the pride we may take in our work for its own sake.</p>  <p>The risk to the craftsmanship community is to avoid getting carried away with dogma. Every time I hear <a href="http://channel9.msdn.com/Blogs/MichaelLehman/PP-Symposium-2010-Opening-Keynote-Robert-C-Martin" target="_blank">Bob Martin assert to a 500 person room</a> that if they aren't writing unit tests they are &quot;not professionals&quot; or somehow unworthy of being in the room with him, I cringe. That’s a perfect way to draw fire and alienate people who might otherwise join you in your cause. It also happens to be a perfect way to stand out as a charismatic speaker who gets lots of attention, but I digress… </p>  <p>Do I write tests? Yes. </p>  <p>Always? No. </p>  <p>Am I ashamed when I don't? Not really. Some jobs still call for duct tape. </p>  <p>Professionalism is knowing the appropriateness of a tool for a job and in always striving for integrity in our work. </p>  <p>My .02.</p>  <p>And, Dan, I admire and appreciate your contribution to our craft <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://elegantcode.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" /> .</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Burden Called Meetings</title>
		<link>http://elegantcode.com/2010/12/09/a-burden-called-meetings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-burden-called-meetings</link>
		<comments>http://elegantcode.com/2010/12/09/a-burden-called-meetings/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 19:00:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/12/09/a-burden-called-meetings/</guid>
		<description><![CDATA[I’ve been working for an enterprise corporation for 5+ years, which I’m going to be leaving soon. This organization is suffering from a wide-spread malady called “meetingitis”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working for an enterprise corporation for 5+ years, which <a href="http://elegantcode.com/2010/10/27/moving-to-greener-pastures/">I’m going to be leaving</a> soon. This organization is suffering from a wide-spread malady called “<a href="http://secretgeek.net/meetingitis.asp">meetingitis</a>”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming to a conclusion or a solution. Then there are also those kinds of meetings where you don’t have anything to say or contribute; these are just a complete waste of time.</p>  <p>Yesterday, <a href="http://twitter.com/seagile">Yves</a> pointed me out on Twitter that it is <a href="http://www.mccarthyshow.com/LearnForFree/TheCoreProtocolsOnline/tabid/103/Default.aspx">perfectly fine to leave a meeting</a> if you feel that you’re not able to gain or contribute anything. Today, I walked out of a meeting where one of the participants started making insults against me. I just stood up, walked to the door and left. And I must say that it felt liberating doing so. I went back to my desk, calmed down and got some actual work done. Without a basic form of respect, one simply can’t achieve anything, let alone come to win-win agreements. From now on, I’ll be evaluating all meetings that require my presence before I accept them and also keep evaluating my presence while being there. </p>  <p>Let me close of this mini-rant by sharing a must-see recording of a talk called “<a href="http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html">Why work doesn’t happen at work</a>” by <a href="http://twitter.com/jasonfried">Jason Fried</a>. I recommend you watch this short video, and if you like it, I also recommend picking up a copy of <a href="http://www.amazon.com/exec/obidos/ASIN/0307463745/elegantcode-20">Rework</a>. </p>  <p>I hereby rest my case.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/12/09/a-burden-called-meetings/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Laborers versus Professionals</title>
		<link>http://elegantcode.com/2010/10/27/laborers-versus-professionals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=laborers-versus-professionals</link>
		<comments>http://elegantcode.com/2010/10/27/laborers-versus-professionals/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:53:43 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/10/27/laborers-versus-professionals/</guid>
		<description><![CDATA[A while ago, my good friend Michel Grootjans&#160;tweeted the following: Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question. Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, my good friend <a href="http://geekswithblogs.net/alternativedotnet/Default.aspx">Michel Grootjans</a>&#160;<a href="http://twitter.com/michelgrootjans/status/24569673878">tweeted</a> the following:</p>  <blockquote>   <p>Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question.</p> </blockquote>  <p>Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a while. Try to picture your own work environment and how this relates. Go ahead! I can wait.</p>  <p>OK then, let’s move on.</p>  <p>I’ve been working for an enterprise corporation for 5+ years now. One of the things I’ve seen and learned there over this period of time is that laborers are more valued by management than professionals. Let me elaborate on this. </p>  <p>One of the biggest issues in a typical enterprise corporation is trust, specifically the lack thereof. The direct consequence of this lack of trust are massive amounts of constraints, regulatory processes and <a href="http://c2.com/cgi/wiki?FearDrivenDevelopment">fear-driven development</a>. This is the natural habitat of laborer developers, a nice and cozy place where they can spend their hibernation until retirement. This is where the term ‘code monkey’ originates from. Nine to five, no thinking, narrow focus, like soldiers in the military obeying orders to make a big mess. But sometimes, amongst these massive cohorts of laborers, there are small islands that exist of one or more professional developers. These are the kind of people that are very passionate about their craft, that want drive innovation and also want to continuously learn and improve. If you’re a developer and you’re reading this blog post, you probably fall into this category of developers.</p>  <p>But professional developers always have one part of the establishment going against them. It’s not the laborers. They don’t care. It’s an instrument better known as management. A large part of the IT industry, especially corporate IT shops, are being run by giant flocks of managers. Some of these managers started out as software developers and some of them are just born that way. But there’s something that they all have in common: they don’t write code as part of their day job. Although they don’t get their hands dirty with writing software, most managers do feel compelled to impose all kinds of political decisions regarding business requirements, software architecture/design, tools and technologies to the development teams they are ‘managing’. I for one want to make it clear that this has to stop. In order to lift this industry to the next level, we as software professionals need to free ourselves from the leash that is currently being held by management.&#160;&#160; </p>  <p>Professional developers working in these kinds of corporate environments are generally considered as troublemakers, if not by their direct bosses then certainly by other parts of management. The general attitude towards professionals is slamming them with more&#160; procedures, so called ‘company standards’ and ‘default architectures’. This ends up with a lot of frustration, a feeling of burn-out or even worse, suffocation as it may seem that the walls are closing in. Professional developers generally have a hard time placing this attitude towards them. They just want to do the right thing and provide the best possible solution they’re able to come up with. If managers don’t trust their development teams to make the right decisions, then why did they got hired in the first place? </p>  <p>I for one am pleading to get past this all this. Any business that wants to survive in this hard world economy and even wants to get ahead of its competition has to free its professional developers from management. It’s that simple. Management is great for enforcing compliance, but if engagement is what you want (and is definitely needed for bringing innovation), self-direction is essential. I already wrote <a href="http://vanryswyckjan.blogspot.com/2008/02/on-software-factories.html">a blog post about self-organizing teams</a> a couple of years ago. Today, I’m even more convinced that self-direction is one of the major key enablers for innovation in the IT industry of the 21th century. Anyway, someone who isn’t coding at least 50% of his day job shouldn’t be allowed to interfere with any kind technical decision making. Period! </p>  <p>I’m not saying that development teams should get a signed blank check. On the contrary. Financial and business constraints should still be taken into account. But when it comes to creativity, methodologies, technologies and tools, management shouldn’t get in the way. Development teams should be able to take responsibility for their own actions. Managers should know their place by making sure that their development teams can operate as optimal and efficient as possible by removing as many impediments as possible.</p>  <p>Let me show you a couple of examples where this principle of autonomy has immensely paid of so that you’re able to judge for yourself.</p>  <p>I personally find health care a fascinating craft. I find it fascinating simply because there are so many parallels than can be drawn between software engineering and the state of health care roughly 200 years ago :-). Lets take about modern hospitals for example. Medical facilities are generally being run by senior medical staff and not by managers! Senior medical staff are people that have a high degree of mastery in what they do and still perform their craft every single day. Maybe they’re not doing it full time so that they’re able to fulfill their ‘path-finding’ responsibilities, but still, they are still fixing their patients. Hospitals do have managers however, but they are there simply for enabling the medical staff to not worry about anything else besides saving lives. Can you picture lying in an operating room when a manager in a suit bursts through the door, yelling at the surgeon that he’s not allowed to use technique xyz to save your live? Preposterous you say? Not so with the current state of affairs in IT departments of the enterprise corporations. </p>  <p>There are a couple of concrete examples in the IT industry as well. Remember when Google <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?_r=1">announced</a> that their engineers get to spend 20 percent of their time to work on something of their own interest? This resulted in massive improvements for products like GMail, Google Maps, Google Docs, etc … and directly contributed to Google’s success and current market share. Other companies like <a href="http://blogs.atlassian.com/rebelutionary/archives/000495.html">Atlassian</a> and <a href="http://blog.facebook.com/">Facebook</a> are enabling innovation in basically the same way. </p>  <p>Yet another example is Pixar. If you haven’t seen or listened to <a href="http://www.scottberkun.com/blog/2010/inside-pixars-leadership/">this interview</a> with Ed Catmull, the president of Pixar, stop reading this blog post and let it inspire you now! Somewhere along this awesome interview he mentions the following:</p>  <blockquote>   <p>Part of the behavior is I don’t know the answers. And at first that seems a little bit glib. But after awhile people get that I really don’t know the answer to a lot of these things. So we set it up so that the management really doesn’t tell people what to do.&#160; </p> </blockquote>  <p>Think about how amazing it would be like to work in an environment like that. It’s inevitable that great things are bound to happen.</p>  <p>There are plenty of other examples out there, like open-source software, Wikipedia, etc. … . They all prove that self-management results in engagement and that this is going to be a major differentiator in tomorrow’s economy.&#160; </p>  <p>Make sure to check out the following resources as well:</p>  <ul>   <li><a href="http://www.ted.com/talks/dan_pink_on_motivation.html">The surprising science of motivation</a> by Daniel Pink </li>    <li><a href="http://openmymind.net/2010/10/7/programmer-passion">Programmer Passion: An Enterprises Most Useful Yet Repressed Advantage</a> by Karl Seguin </li>    <li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">Drive: The surprising truth about what motivates us</a> </li> </ul> Till next time.   ]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/10/27/laborers-versus-professionals/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Keep Pressing on my Friend (When programming seems bleak)</title>
		<link>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keep-pressing-on-my-friend-when-programming-seems-bleak</link>
		<comments>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 22:16:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/</guid>
		<description><![CDATA[Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again? Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper? I used to think it just happened to me.&#160; The first time [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again?</p>  <p>Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper?</p>  <p>I used to think it just happened to me.&#160; The first time it happened to me, I almost switched my major from CS to CIS.&#160; But, the more and more I work in this field and talk to other programmers, the more and more I see the same exact thing happening.&#160; And guess what?&#160; It is happening to everyone.</p>  <p>Not just you.&#160; You are not alone.</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2010/09/tired_man.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="tired_man" border="0" alt="tired_man" src="http://elegantcode.com/wp-content/uploads/2010/09/tired_man_thumb.jpg" width="248" height="356" /></a></p>  <h2>I’m not talking about burnout here</h2>  <p>This is more than burnout.&#160; This lack of motivation energy-sapping-plague can hit a programmer at any time whether you just finished a week of all nighters or you just came back from a peaceful vacation.</p>  <p>I actually find that it is the time when I am furthest from what should be burn out that this phenomenon is most likely to occur.</p>  <p>So, if it’s not burnout, what is it?</p>  <p>I’ll call it programming lethargy.&#160; It actually happens to two other groups of professionals: athletes and craftsmen.</p>  <p>The truth is it is a perfectly normal cycle.&#160; This “barrier” is actually the reason why there are many apprentices, few journeymen and even fewer masters.</p>  <p>When you hit this phase be glad, it means you are about to be tested and if you come out on the other side, you will end up with a renewed interest and passion and leave behind the others that can’t cut it.</p>  <p>Oh, and it will happen again, probably several more times.</p>  <h2>Press on my friend</h2>  <p>What can you do about this problem?</p>  <p>Don’t despair, just press on.&#160; Stay the course and all will be well.</p>  <p>I am not sure why this happens, but I do know that it is a true test of your desire for the goal, whether to be a better programmer or a better athlete, or a better singer or musician. </p>  <p>The test is whether or not you can still press on when the motivation and passion is not there.</p>  <p>The reward waiting for you on the other side? </p>  <ul>   <li>A renewed passion and energy.&#160; </li>    <li>A new kind of appreciation for what you do.&#160; </li>    <li>Experience and true appreciation for your craft. </li> </ul>  <p>The question you have to ask yourself, is what do you ultimately want to become?&#160; If what you do is more than just a job to you, then you’ll find the strength to press on.</p>  <h2>How to press on when the motivation is gone</h2>  <p>If you agree with me, or even think that perhaps what I am saying is worth considering, then you will probably wonder how you can get through this phase or test to see the other side.</p>  <p>We can look at athletics again as a comparison to provide some insight.</p>  <p>Think about a professional track runner, training for competition.&#160; Consider what would happen if that athlete decided to not have a formal training schedule, but instead only train when he felt like it.</p>  <p>What would happen when he didn’t feel like training for a week?</p>  <p>Now let’s say he had a training schedule and he followed it, even on the mornings when he didn’t feel like getting up to train.</p>  <p>What would happen if his training was not planned out?&#160; If he didn’t know what kind of drills to do or have a long term plan for the training sessions?</p>  <p>If you want to make it through the times when you don’t feel the motivation and passion for writing code and solving problems, then you have to have a plan.&#160; A solid plan that will ensure that you will be able to press on.</p>  <p>Here are some tips to make sure that when you get struck by programming lethargy, you do make it through to the other side.</p>  <ul>   <li>I’ve talked about this <a href="http://simpleprogrammer.com/2010/07/02/the-importance-of-always-reading/">several times</a> in my blog.&#160; <strong>Make sure you are always reading a technical book.</strong>&#160; Create a schedule and stick to it.&#160; Even 15-30 minutes a day of reading will let you read around 1-2 books a month.&#160; That is a huge amount of knowledge. </li>    <li>When you don’t feel like working,<strong> break up your work into <a href="http://simpleprogrammer.com/2010/07/09/why-small-is-better/">small tasks</a> and start accomplishing those tasks.</strong>&#160; Figure out exactly what you have to do to move forward and do it.&#160; Don’t give in and waste time.&#160; The time you feel the most like killing time, is the time when you must throw yourself into your work all the more. </li>    <li><strong>Set some goals for yourself.</strong>&#160; Short term and long term.&#160; The short terms goals should clearly lead to the long term goals.&#160; Review those goals frequently and always try to make progress towards the goals.&#160; Even a little bit of progress adds up over time. </li>    <li><strong>Don’t start thinking about changing careers or looking for an easier job.</strong>&#160; Don’t start thinking you will feel this way forever.&#160; Realize that what you are experiencing now is a feeling and feelings are not trustworthy. </li>    <li><strong>Clean up.</strong>&#160; Clean up your workspace.&#160; Clean up your computer.&#160; Get yourself some new equipment if it will help.&#160; Feeling like you have a new and fresh environment can do wonders for motivation. </li>    <li><strong>Challenge yourself.</strong>&#160; Your gut is going to tell you to slow down and relax, but that road leads to laziness.&#160; When laziness comes your way, the best way to fight it is to push right into it! </li> </ul>  <p>Well, that is all the tips I have for you for today.&#160; Just remember that you are not alone and what you are experiencing is normal.&#160; </p>  <p>If you’re in a period now where you are motivated and feel great about your work and what you are doing, you might want to bookmark this post and come back to it when it can benefit you more.&#160; </p>  <p>Remember though, setting up good habits and routines now can help you cruise through the hard times later. </p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>  <ul></ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Microsoft doesn&#8217;t create bad developers, developers do</title>
		<link>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoft-doesnt-create-bad-developers-developers-do</link>
		<comments>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:47:16 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/</guid>
		<description><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an [...]]]></description>
			<content:encoded><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an industry that is evolving at an incredible pace, contains an incalculable number of technologies, frameworks, best practices and constantly redefines the definition of how things should be done in the best possibly way. It’s the industry that makes the rest of the world tick. Daunting really, if you think about it.

A while back I read a couple of posts by <a href="http://www.gilzilberfeld.com/" target="_blank">Gil Zilberfeld</a> (<a title="Read Gil's post on Why Microsoft makes bad programmers" href="http://www.gilzilberfeld.com/2010/07/why-microsoft-makes-bad-programmers.html" target="_blank">here</a> and <a title="Read Gil's post on CSI: Microsoft" href="http://www.gilzilberfeld.com/2010/08/csi-microsoft.html" target="_blank">here</a>) where Gil talks about the responsibility that vendors such as Microsoft plays in the role of securing the quality of the work that is produced in our industry. While I think I see the points  Gil is trying to make, I think he misses the beat a bit and I have a hard time agreeing with the conclusions he draws.

The way I see it there are two types of developers; those that are just in it to pay the bills and those that consider themselves as craftsmen. If you consider yourself a craftsman then you should already be aware that you are responsible for your own faith and actions in this industry. But, if you are just in it to pay the bills then you are probably also looking to do so by doing the least amount of work and that includes looking for information on how to solve a particular problem or how to apply a technology onto your stack.

So if you are one of the developers that are only looking towards Microsoft (or the relevant company for the technology stack you are working on) is it their fault if you implement something in a way that could be considered bad? Of course not! Sure there are a lot of outdated and down right poor samples at the Microsoft (or relevant company) website and their idea on how certain things should be solved are bound to differ from others (and that’s definitely not to say that there isn’t good contents, there are a ton of it). However, if you rely on a single source of information, you are always going to get an opinionated view. Take my word on it (right?).

Doctors reads medical journals, publishes research papers, attend conferences, network with colleagues and make sure they stay up to date with the latest in their field. I’m pretty sure you are happy that they spend all of this time to make sure they can provide the best possible care and treatment when someone are in need of their services. I know I am.

Just as with any other profession, developers are responsible for their own education, for honing their skills in the craft that they have chosen to practice. In order to keep up in an industry that evolves at the speed of light you need to invest in yourself. The code you write today should be some of the best you have ever written, while a year later you should be considerably less excited about its quality. It’s a sign of growth. That you’ve continued to move forward as a craftsman, that you skills have been honed and broadened during the past year.

So what about the tools? Do we really rely on them too much to get the work done? I would say, definitely not! But again you have to specify just exactly what you are talking about when talking about tooling. If you rely on visual designers, drag and drop, wizards and the likes to to the majority of your work, then yes you are probably relying too much on your tools. Odds are that you will have a hard time to get anything outside of standard behavior to run and there will be pain points when you need to debug.

However you would do yourself (and your employer) a huge disservice if you did not make it your goal to know the tools in your toolbox as good as possible. What’s wrong with knowing how to use the debugger, the IDE and tools like ReSharper as good as possible? Used correctly they will have a huge impact on productivity. Make sure you know the finer details of the tools and make them work for your and not the other way around. Yes, sometimes tools do get in the way of the goal, even slow you down, and when that is the case, don’t use the tools! Tools are there to help you when you need them, not to act as a crutch you always have to lean on so you don’t fall on your ass.

Well there you have my thoughts on the subject. It’s always up to the developer, not the companies. Always.

I am also around on twitter <a title="Visit my twitter profile" href="http://twitter.com/thecodejunkie" target="_blank">@thecodejunkie</a> in case you need one more person to follow]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Software, &#8220;It&#8217;s not what we do&#8221;.</title>
		<link>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-its-not-what-we-do</link>
		<comments>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 12:13:36 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/09/software-its-not-what-we-do/</guid>
		<description><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a [...]]]></description>
			<content:encoded><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a “core competency”.

One thing I have heard expressed in those places is, “software development is not our core competency, therefore recommendations around professional development practices don’t apply to us.”

Good, lord. Really, people?

This is akin to a Boeing corporate attorney claiming that he need not be competent because Boeing makes airplanes.

I don’t know where this absurd line of reasoning comes from, but I know why it is tolerated. It is tolerated because we don’t have the formal structures to hold professionals accountable the way we might hold an electrician, plumber, or physician accountable to being merely competent. If you are reading this post you probably make 3X the salary of a plumber, yet are held to a lower degree of professional accountability for your work.

This is sad, but it doesn’t mean that we need to pick up the mantle of mediocrity available to us. We can hold ourselves accountable for professionalism no matter where we work.

If the organization we serve specializes in jellybeans, services, software widgets, or any other industry, we are hired to bring our best game to the table. This is why they hire us, folks! We are supposed to know what we are doing, not making excuses for incompetence!

In summary, no matter what type of organization you work for:
<ul>
	<li>Yes, you need to use source control.</li>
	<li>Yes, you need to automate the build.</li>
	<li>No, you shouldn’t be releasing the assemblies compiled on your machine.</li>
	<li>Yes, you need to stop writing long methods and pay attention to code complexity.</li>
	<li>Yes, you need to buy your developers the best tools available.</li>
	<li>No, you don’t need to write your own logging framework.</li>
	<li>Yes, you should be practicing test first development.</li>
	<li>No, continuing to ship known defects is not acceptable.</li>
	<li>Yes, you should understand who your customer is.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Software Craftsmanship on the Polymorphic Podcast</title>
		<link>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-craftsmanship-on-the-polymorphic-podcast</link>
		<comments>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:11:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/</guid>
		<description><![CDATA[I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of being the host!</p>  <p><a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx?"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ListenBanner" border="0" alt="ListenBanner" align="right" src="http://elegantcode.com/wp-content/uploads/2010/08/ListenBanner.png" width="341" height="53" /></a> The interview is now live and <a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx" target="_blank">available here</a>. </p>  <p>We visited many of my favorite topics including:</p>  <ul>   <li>How to sell Agile in your org</li>    <li>Scrum and ScrumBut</li>    <li>Code Craftsmanship</li>    <li>Agile in small teams</li>    <li>How to be an agile army of one</li>    <li>How my mom is the perfect complexity gauge</li>    <li>And ElegantCode.com gets a shout out!</li> </ul>  <p>This was really fun. Thanks, Craig!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enforce Correct Usage By Wrapping Types</title>
		<link>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-craftsmanship-on-the-polymorphic-podcast</link>
		<comments>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:11:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/</guid>
		<description><![CDATA[I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of being the host!</p>  <p><a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx?"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ListenBanner" border="0" alt="ListenBanner" align="right" src="http://elegantcode.com/wp-content/uploads/2010/08/ListenBanner.png" width="341" height="53" /></a> The interview is now live and <a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx" target="_blank">available here</a>. </p>  <p>We visited many of my favorite topics including:</p>  <ul>   <li>How to sell Agile in your org</li>    <li>Scrum and ScrumBut</li>    <li>Code Craftsmanship</li>    <li>Agile in small teams</li>    <li>How to be an agile army of one</li>    <li>How my mom is the perfect complexity gauge</li>    <li>And ElegantCode.com gets a shout out!</li> </ul>  <p>This was really fun. Thanks, Craig!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Elegant Code &#187; Craftsmanship</title>
	<atom:link href="http://elegantcode.com/category/craftsmanship/feed/" rel="self" type="application/rss+xml" />
	<link>http://elegantcode.com</link>
	<description></description>
	<lastBuildDate>Tue, 15 May 2012 10:00: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>Temovate Cream For Sale</title>
		<link>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-software-development-will-never-be-engineering</link>
		<comments>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 03:37:48 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/</guid>
		<description><![CDATA[I always find it rather interesting when academics try to quantify generalized metrics about software development. Temovate Cream For Sale, Things like: per lines of code, there will be X number of bugs. Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.” These are all interesting [...]]]></description>
			<content:encoded><![CDATA[<p> <p>I always find it rather interesting when academics try to quantify generalized metrics about software development.</p>  <p> <b>Temovate Cream For Sale</b>, Things like: per lines of code, there will be X number of bugs.</p>  <p>Statements like: it has been empirically proven that “blah” affects the development of software in some way “blah.”</p>  <p>These are all interesting thoughts, but software development will never conform to rigid engineering principles like many other engineering practices.&#160; The longer I work in the field, the more and more I realize that software development has nothing to do with engineering.&#160; We just happen to attend some of the same math classes in school.</p>  <h2>Building bridges</h2>  <p>One of the main arguments I hear people make about the current state of software development as an engineering practice is based around its relative maturity to other engineering fields.</p>  <p>There is a huge problem with this line of thinking.</p>  <p>The argument goes something like this:&#160; “<em>Engineering has been around for hundreds of years and has matured to the point where it is a measurable science, but software development has only been around in earnest for the last few decades or so, therefore it is relatively immature as an engineering discipline.”</em></p>  <p>On the surface this argument seems sounds.&#160; And certainly in 50 years software development will be different than it is now.&#160; Heck, it is much more different than it was just 10 years ago.</p>  <p>But, here is the problem.&#160; We build much more software than we do bridges.</p>  <p><img src="http://www.nps.gov/glca/historyculture/images/Navajo_Bridges_1.gif" width="589" height="442" /></p>  <h6 align="center">&#160;</h6>  <p>Let me give you an example that came to light in another area of my interest… poker.</p>  <h1></h1>  <h2>The poker quickening</h2>  <p>An interesting thing happened in the poker community in the last 10 years; poker pros with decades of experience started getting beat time and time again by 19 year old poker prodigies.</p>  <p>From an outside perspective it looks like the poker world opening up just widened the search for talent and there it was.&#160; But, a closer examination of the evidence leads to the truth.</p>  <p>Before the online poker industry was born, poker was played in card rooms and casinos in states where it was legal and occasionally at small home games throughout the US.</p>  <p>A poker pro might play poker tournaments perhaps 100 times to 150 times a year.&#160; The sum knowledge of the poker community and the meta game around it was based on this base of professional poker players playing tournaments and gaining experience at this mediocre rate.</p>  <p>Once the internet poker rooms started opening up, things changed, and they changed rapidly.&#160; Now anyone could play poker from their home PC.&#160; Not only could they play poker, they could play poker tournaments at all hours of the day.</p>  <p>Here is a list of some of the major changes that took place:</p>  <ul>   <li>Hands are dealt at 60-80 hands per hour instead of 10-30</li>    <li>Players can play in many tournaments at one time, 10 tournaments at once is not unheard of</li>    <li>Players can analyze hand histories and historical data about their play and opponents play through the use of software </li>    <li>Age requirements are out the window, technically any one of any age could be playing online</li>    <li>Players can play 24 hours a day</li>    <li>The professional online tournament player could easily play over 3000 tournaments in a year, while a brick and mortar pro would be lucky to reach 100 in a year.</li>   <img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://t1.gstatic.com/images?q=tbn:ANd9GcRj9uGNWSyqGWEneiH6xaBAyS6COwGYicdNadZu-06KWQLhIi6LMw&amp;t=1" width="316" height="270" /></ul>  <p>&#160;</p>  <p>So where am I going with all this?</p>  <p>The point is that as a whole more hands were dealt and more poker knowledge and experience was obtained in 1 year of online poker than probably the entire history of poker before that.&#160; We reached such an accelerated pace of play that all previous knowledge of poker became obsolete.&#160; </p>  <p>The strategy of tournament poker completely changed.&#160; The game evolved perhaps 500 years into the future in a matter of 5 years time.</p>  <p>The same has happened with software development.</p>  <h2>Back to the bridge building</h2>  <p>So let’s take that poker example and look at it through the lens of software development.</p>  <p>Let us compare the engineering maturity to software development to the engineering maturity of the engineering discipline of building bridges.</p>  <p>I think most people would agree that bridge building is a very mature engineering discipline but many people would argue that software development is not.</p>  <p><strong>How many bridges do you think have been built in the world?</strong></p>  <p>Well there are <a href="http://www.betterroads.com/category/bridge-inventory/erroads.randallreillycms.com/files/2009/11/BR1109_BridgeInventory.pdf">about 600,000 bridges in the United States alone</a>, so the world figure must be at least somewhere around 10 times that number perhaps 20.</p>  <p><strong>How many software programs have been written?</strong></p>  <p>This is a very hard number to estimate, but lets take a rough guess based on <a href="http://stackoverflow.com/questions/453880/how-many-developers-are-there-in-the-world">how many software developers there are in the world</a>.&#160; </p>  <p>If we say there are about 12 million software developers and each software developer has written approximately 3 programs, we can estimate that a large amount more programs have been written than bridges built.</p>  <p>My point is not to knock bridge building, we are pretty good at it as a whole, but rather to show that collectively, even though we have been building bridges for hundreds of years, we have probably devoted an equivalent amount of time to building software.</p>  <p>This line of thinking may lead you to argue back that software development and bridge building are very different.&#160; Bridge building has a fixed set of requirements that are pretty close to the the same for each bridge you build, but software development is a big open void of whims and ambiguously contradictory statements.</p>  <p>I agree with you 100%!&#160; And in essence that is my point.</p>  <h2>Software development is different</h2>  <p>And we have had enough time to realize that.&#160; Waiting for software development to gel into some kind of engineering discipline like other engineering disciplines is like waiting for water without gelatin mix to turn into Jello.&#160; </p>  <p>It’s just not going to happen!</p>  <p>In my mind it is clear that the argument that we haven’t given it enough time is just wishful thinking.&#160; The nature of software development, just like online poker, leads itself to rapid evolution.</p>  <p>Consider what direction software development is evolving.&#160; Is it even evolving in the direction of rigid engineering practices or is it evolving in the exact OPPOSITE direction?</p>  <p>Ten years ago, we tried to use UML diagrams and CASE tools to develop software.&#160; Ten years ago waterfall was all the rage.&#160; Ten years ago, we thought that ten years in the future we would have programs that would allow us to build software in the same way that CAD tools allow for building machine parts.</p>  <p>Not only did it not happen.&#160; It went completely the other way.&#160; Now we are all talking about Agile.&#160; Now people don’t even remember what CASE tools are.&#160; Now we are building software without trying to define the whole system in UML diagrams.</p>  <p><strong>The fact of the matter is software systems are unruly beasts!</strong></p>  <p><img style="display: block; float: none; margin-left: auto; margin-right: auto" src="http://aznbadger.files.wordpress.com/2010/06/beast.jpg" /></p>  <p>In my mind it comes down to one simple distinction.&#160; Software is living, bridges aren’t.&#160; When you are done building a bridge, you are done building the bridge.&#160; </p>  <p>Sure someone, probably not you, will have to come along and do some routine maintenance on it.&#160; Sure, some small things might change about it, but for all intents and purposes the work is done.</p>  <p>In most software development scenarios, this is not the case.&#160; In most software development scenarios, releasing V1 is not even close to the end.&#160; Sometimes V1 and V2 don’t even look that same at all.&#160; Software development is about operating on a living breathing thing and all the while keeping it alive.</p>  <p>The truth is, we software developers have more in common with surgeons than with other engineers.</p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>.  Buy Temovate Cream without a prescription.  Temovate Cream trusted pharmacy reviews.  Temovate Cream over the counter.  Where can i order Temovate Cream without prescription.  Online buy Temovate Cream without a prescription.  Temovate Cream no rx.  Buy cheap Temovate Cream no rx.  Temovate Cream photos.  Buy Temovate Cream online no prescription.  Order Temovate Cream online c.o.d.  Herbal Temovate Cream.  About Temovate Cream.  Australia, uk, us, usa.  Cheap Temovate Cream.  Temovate Cream class.  Temovate Cream brand name.  Online Temovate Cream without a prescription.  Buy Temovate Cream without prescription.  Buy Temovate Cream from canada.  After Temovate Cream.  Order Temovate Cream from mexican pharmacy.  Temovate Cream without a prescription.  Purchase Temovate Cream.  Temovate Cream natural.  Temovate Cream overnight.  Temovate Cream online cod.  Where can i buy cheapest Temovate Cream online.  Purchase Temovate Cream for sale.  Online buying Temovate Cream.  Purchase Temovate Cream online.  Temovate Cream used for.  Temovate Cream coupon.  Temovate Cream description.  Order Temovate Cream no prescription.  Temovate Cream maximum dosage.  Cheap Temovate Cream no rx.  Temovate Cream images.  Temovate Cream blogs.  Buy Temovate Cream online cod.  Buy generic Temovate Cream.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4472'>Bactroban For Sale</a>. <a href='http://elegantcode.com/?p=4632'>Armour For Sale</a>. <a href='http://elegantcode.com/?p=4639'>Buy Estrace Vaginal Cream Without Prescription</a>. <a href='http://elegantcode.com/?p=4668'>Buy Augmentin Without Prescription</a>. <a href='http://elegantcode.com/?p=4535'>Buy Tindamax Without Prescription</a>. <a href='http://elegantcode.com/?p=4931'>Fast shipping Diclofenac</a>. <a href='http://elegantcode.com/?p=4240'>Combivent brand name</a>. <a href='http://elegantcode.com/?p=4417'>Levaquin overnight</a>. <a href='http://elegantcode.com/?p=4597'>Purchase Toradol online</a>. <a href='http://elegantcode.com/?p=4221'>Australia, uk, us, usa</a>.<br />
<b>Trackbacks from:</b> <a href='http://www.quarterlives.com/?p=1148'>Temovate Cream For Sale</a>. <a href='http://4realz.net/?p=1972'>Temovate Cream For Sale</a>. <a href='http://www.macneilbmx.com/blog/?p=5997'>Temovate Cream For Sale</a>. <a href='http://www.greatgreengoods.com/?p=2476'>Temovate Cream For Sale</a>. <a href='http://www.thegriffonnews.com/?p=9947'>Temovate Cream For Sale</a>. <a href='http://social-blend.com/?p=1160'>Temovate Cream brand name</a>. <a href='http://blog.farmland.org/?p=3812'>Where can i find Temovate Cream online</a>. <a href='http://reversemortgagedaily.com/?p=14136'>Generic Temovate Cream</a>. <a href='http://linuxologist.com/?p=1792'>Temovate Cream photos</a>. <a href='http://home.officesnapshots.com/?p=114'>Order Temovate Cream from mexican pharmacy</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/06/22/why-software-development-will-never-be-engineering/feed/</wfw:commentRss>
		<slash:comments>92</slash:comments>
		</item>
		<item>
		<title>Buy Xalatan Without Prescription</title>
		<link>http://elegantcode.com/2011/04/13/why-rules-rule/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=why-rules-rule</link>
		<comments>http://elegantcode.com/2011/04/13/why-rules-rule/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 03:19:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/04/13/why-rules-rule/</guid>
		<description><![CDATA[Buy Xalatan Without Prescription, I have to admit, I love rules. They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally. Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how [...]]]></description>
			<content:encoded><![CDATA[<p> <p> <b>Buy Xalatan Without Prescription</b>, I have to admit, I love rules.</p>  <p>They go against my nature to the core, but they are some of the most valuable institutions I put into my life, both personally and professionally.</p>  <p>Rules are all around us.&#160; We follow so many of them each day and don’t even recognize how valuable they are, because when rules are doing their job, you don’t even notice them.</p>  <p>The first rule of your day is likely your alarm clock.&#160; This is a self imposed rule that you have created for yourself to get up at a certain time in the morning.&#160; Try to function in any meaningful way by completely removing that rule and see what happens.</p>  <p>Almost all games we play have rules.&#160; Without rules those games wouldn’t be much fun.</p>  <p>We drive on the correct side of the road in our lane, following rules of traffic, which if not obeyed put us in mortal danger and make the road quite a scary place.</p>  <p>It is a gross understatement to say rules are important to our daily life.</p>  <p>Yet, I am constantly amazed how many people seem to oppose any notion of rules when it comes to our craft of software development.</p>  <h2>There is this notion that rules somehow preclude judgment</h2>  <p>Somehow the idea has crept into many of our brains that rules and good judgment, (what we might call craftsmanship), are diametrically opposed to each other.</p>  <p>There seems to be a pervasive thought that rules suck all the fun out of things and take away creativity, skill and experience, reducing the follower of such rules to a mindless robot, replaceable by any other robot.</p>  <p>Not only do I think this viewpoint is completely wrong, but I think it is downright destructive to the craft of software development.</p>  <p>Let us first dispel the notion that rules destroy creativity and its kin.</p>  <p>Think about a game like Scrabble.&#160; Scrabble is a game that is based on a very restrictive set of rules.&#160; You basically have only two moves you can do.</p>  <ol>   <li>Make a word using only letters in your rack and letters on the board.</li>    <li>Discard some letters to get some new ones.</li> </ol>  <p>Rules dictate how many letters you can have and what ways you can arrange them.&#160; Yet, how much creativity is actually created by these constraints?</p>  <p>Music is often seen as a cousin to coding, and is another great example of constraints which breed creativity.&#160; Music has a huge amount of constraint.&#160; There are many natural rules about sounds and chords.&#160; We only have a small amount of notes to even work with, yet people have been elaborating on those 12 notes for hundreds of years and new creative sounds are produced every single day!</p>  <p><strong>If you really take the time to think about it, I think you will find that constraints actually breed creativity not destroy it.</strong></p>  <h2>The truth is rules come from good judgment at the right time</h2>  <p>Let me posit you this question.</p>  <p>When is a better time to make a judgment decision of what to do when a bear attacks you?</p>  <ul>   <li>When the bear is actually attacking you</li>    <li>Sitting at your computer with a huge amount of reference material available to you about bear attacks and a calm peaceful environment</li> </ul>  <p>If you chose when the bear is actually attacking you turn to page 32.</p>  <p><strong>Page 32:</strong></p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="bear-attack" border="0" alt="bear-attack" src="http://elegantcode.com/wp-content/uploads/2011/04/bear-attack_thumb.jpg" width="447" height="318" /></a></p>  <p><em>Having no rules in which to operate, in the heat of the moment, you decide to “tickle” the bear.&#160; The bear slays you and munches on your bones.&#160; Your adventure has come to an end.</em></p>  <p><strong><em>You are DEAD!</em></strong></p>  <p>The point is that your judgment is much more likely to be sound when you are removed from the situation which you are making the judgment call about.&#160; Unless you are a close relative of Spock, you’ll probably find that human emotions tends to interfere with sound judgment.</p>  <p>This is why I instead firmly believe that <strong>we should use our good judgment to formulate rules that we will use in the situations which they apply to rather than to try and execute good judgment when we are engrossed in the situation.</strong></p>  <p>If you still disagree with me here, let’s ponder the example of the alarm clock one more time.&#160; Better yet, I challenge you to make a judgment call each morning of when you should wake up.&#160; You can’t use an alarm clock or any rules.&#160; (Before you do this, you might want to make sure you get your resume polished up.)</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock.jpg"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="alarm clock" border="0" alt="alarm clock" src="http://elegantcode.com/wp-content/uploads/2011/04/alarm-clock_thumb.jpg" width="235" height="386" /></a></p>  <h2>How does this all apply to software development?</h2>  <p>I’m not going to attempt to address every way in this blog post, perhaps we’ll revisit this subject in the future, because it is so important.&#160; Instead my goal here is to convince you to embrace rules and to not fear setting them for yourself, for your team or for your code.</p>  <p>Some of the biggest failings of teams that I see is the fear of setting rules.&#160; Teams seem to be so afraid of restricting someone or impairing their ability to make judgment calls that they go the direction of never setting any concrete rules, just guidelines or best practices.</p>  <p>There is a huge difference between guidelines and rules.&#160; Guidelines help you make a decision, rules make it for you.&#160; Don’t be fooled into thinking they are the same thing, and don’t fear rules.&#160; I always prefer rules over guidelines, because they are much more valuable.</p>  <p><strong>You can actually measure the effect of a rule, but you can’t easily measure the effect of a </strong><strong>guideline.</strong></p>  <p>Let me give you some examples of areas in software development that I think are great places to enforce some rules:</p>  <ul>   <li>Naming conventions</li>    <li>Unit testing</li>    <li>Process of starting work</li>    <li>Who works on work</li>    <li>When work is considered done</li>    <li>How defects are handled</li>    <li>What changes can be made to work in progress</li>    <li>What should be in a backlog</li>    <li>Language and library choices</li>    <li>Data access strategies</li>    <li>Dealing with build failures</li> </ul>  <p>Every time you are having a conversation which ends up identifying something to improve upon, you should be thinking about how you can codify it into a rule.&#160; Don’t be afraid to step out here.&#160; It’s ok to make the wrong rule and change it later.&#160; If you do this you learn something.</p>  <p>Having rules in place prevents you from making in-the-moment decisions which you later come to regret.</p>  <p>When I go to a buffet, I set rules for how much food I can eat.&#160; When I decide to start a workout routine, I set rules for how often and what duration I will workout.&#160; When I write code, I set rules for how I will write that code.</p>  <p>In any of those areas, when I fail to set rules, I end up failing.&#160; It is human nature.</p>  <h2>But rules impede me and end up making me do silly things</h2>  <p>Good.&#160; That is called feedback.</p>  <p>Remember back when you were just making judgment calls all the time instead of following rules you or your team preset ahead of time, you weren’t getting any feedback, now you are.&#160; Be happy about it, celebrate!</p>  <p>You can always change the rules.&#160; You can always tweak the parameters, but if you want to have any success in process improvement, it is much like cooking on the stove.&#160; You are much better off with burner dials that have numbers on them or at least some kind of label, then ones with just a blank dial.&#160; If you don’t know where the dial is, how will you know which way to turn it?</p>  <p>Sometimes rules are going to make you do something silly or seemingly extraneous.&#160; Sometimes rules are going to cause you to possibly even do the wrong thing.</p>  <p>But, if you want to have any chance of learning from your mistakes, if you want to truly improve your process, you must resist the urge to break the rules and instead wait for a time to reflect upon the rules and make appropriate changes at that time.</p>  <p>Learn to embrace rules and you’ll suddenly see an improvement in all areas of life where you apply them, especially your software development!</p>  <h6><strong>As always, you can subscribe to this </strong><a href="http://feeds2.feedburner.com/ElegantCode"><strong>RSS feed</strong></a><strong> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at </strong><a href="http://simpleprogrammer.com/"><strong>http://simpleprogrammer.com</strong></a><strong>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter </strong><a href="http://twitter.com/jsonmez"><strong>here</strong></a><strong>.</strong></h6>.  Xalatan description.  Xalatan no rx.  Buying Xalatan online over the counter.  Fast shipping Xalatan.  Xalatan overnight.  Buy Xalatan from mexico.  Xalatan without a prescription.  Where to buy Xalatan.  No prescription Xalatan online.  What is Xalatan.  Xalatan price.  Rx free Xalatan.  Purchase Xalatan online.  Generic Xalatan.  Xalatan street price.  Xalatan from canada.  About Xalatan.  Taking Xalatan.  Xalatan online cod.  Australia, uk, us, usa.  Order Xalatan online overnight delivery no prescription.  Xalatan recreational.  Xalatan canada, mexico, india.  Xalatan interactions.  Xalatan alternatives.  Online buying Xalatan.  My Xalatan experience.  Where can i cheapest Xalatan online.  Online Xalatan without a prescription.  Xalatan wiki.  Order Xalatan no prescription.  Get Xalatan.  Xalatan from mexico.  Xalatan schedule.  Xalatan dangers.  Purchase Xalatan for sale.  Where can i buy cheapest Xalatan online.  Discount Xalatan.  Is Xalatan addictive.  Buy cheap Xalatan.</p>
<p></p>
<p><b>Similar posts:</b> <a href='http://elegantcode.com/?p=4728'>Ventolin For Sale</a>. <a href='http://elegantcode.com/?p=4184'>Synthroid For Sale</a>. <a href='http://elegantcode.com/?p=4384'>Buy Ultram Without Prescription</a>. <a href='http://elegantcode.com/?p=4373'>Topamax For Sale</a>. <a href='http://elegantcode.com/?p=5156'>Amoxicillin For Sale</a>. <a href='http://elegantcode.com/?p=4297'>After Reglan</a>. <a href='http://elegantcode.com/?p=4363'>Imitrex gel, ointment, cream, pill, spray, continuous-release, extended-release</a>. <a href='http://elegantcode.com/?p=4721'>Flonase maximum dosage</a>. <a href='http://elegantcode.com/?p=4534'>Xalatan recreational</a>. <a href='http://elegantcode.com/?p=4354'>Herbal Glucophage</a>.<br />
<b>Trackbacks from:</b> <a href='http://social-blend.com/?p=1234'>Buy Xalatan Without Prescription</a>. <a href='http://www.quarterlives.com/?p=1098'>Buy Xalatan Without Prescription</a>. <a href='http://4realz.net/?p=816'>Buy Xalatan Without Prescription</a>. <a href='http://tayloegray.com/?p=302'>Buy Xalatan Without Prescription</a>. <a href='http://www.macneilbmx.com/blog/?p=5580'>Buy Xalatan Without Prescription</a>. <a href='http://blog.farmland.org/?p=2108'>Xalatan used for</a>. <a href='http://reversemortgagedaily.com/?p=14507'>Xalatan interactions</a>. <a href='http://linuxologist.com/?p=1519'>Online buying Xalatan</a>. <a href='http://home.officesnapshots.com/?p=268'>My Xalatan experience</a>. <a href='http://evanrapoport.com/?p=613'>Buy Xalatan online cod</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/04/13/why-rules-rule/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Programming is not a Craft: My Take</title>
		<link>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=programming-is-not-a-craft-my-take</link>
		<comments>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/#comments</comments>
		<pubDate>Wed, 12 Jan 2011 17:38:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/</guid>
		<description><![CDATA[Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: Programming is not a Craft. Dan’s sentiments are not unique. I have heard similar opinions from other [...]]]></description>
			<content:encoded><![CDATA[<p>Dan North has provided tremendous benefit to our profession and in the brief conversations I have had with him has proven to be an affable guy. I was a bit taken aback when I read his recent post: <a href="http://dannorth.net/2011/01/11/programming-is-not-a-craft/" target="_blank">Programming is not a Craft</a>. Dan’s sentiments are not unique. I have heard <a href="http://blogs.tedneward.com/2008/05/11/Im+ProChoice+Pro+Programmer+Choice+That+Is.aspx" target="_blank">similar opinions</a> from other prominent developers I respect.</p>  <p>I read in Dan's post (and in some of the comments) a visceral reaction to gold plating things not determined &quot;important&quot; by the customer. I get that. I also see a need to temper this with the simple fact that the client doesn’t always know what is best for them. Let’s just get that out in the open. My doctor knows what is better for my physical body than I do and I am willing to pay for that. Will I always take the advice I am paying for? Well, probably not. And I’m sure that leaves my doctor shaking her head in dismay.</p>  <p>I learned that integrity is &quot;doing the right thing even when no one is looking&quot;, and I see the Software Craftsmanship discussion as striving for integrity in the systems we create.</p>  <p>One mark of a true professional might be a willingness to balance client need with implementaion elegance resulting in software that meets the need of the client AND is something worthy of pride when shown to another developer. If the only reason we are writing code is to provide the minimum a client wants to pay for, then how compelling is my work, really? Can I be proud of my professional body of work if I am simply marching to orders? I say no.</p>  <p>Where I part ways with Dan is in his analogy of the plumber. Granted, I simply want my pipes to work, but I am willing to pay for a plumber that takes pride in his work. I trust that plumber will simply do a better job as he strives to make his work appreciated by the next plumber that sees it. Can I quantify this into dollars? Not really. Perhaps in the extra time required to lay in a perfectly soldered joint as opposed to a sloppy one. Am I willing to pay more for this type of person to do the work? No question: Yes.</p>  <p>The bottom line for me is that we would all like to take pride in our work. No one I’ve ever met gets up in the morning thinking, “Today I will make a piece of crap”, and keeps at the job with any pleasure. We want to enjoy our work and be proud of it. Is that so bad? The very real software craftsmanship discussion simply gives us a vehicle for discussion in the pride we may take in our work for its own sake.</p>  <p>The risk to the craftsmanship community is to avoid getting carried away with dogma. Every time I hear <a href="http://channel9.msdn.com/Blogs/MichaelLehman/PP-Symposium-2010-Opening-Keynote-Robert-C-Martin" target="_blank">Bob Martin assert to a 500 person room</a> that if they aren't writing unit tests they are &quot;not professionals&quot; or somehow unworthy of being in the room with him, I cringe. That’s a perfect way to draw fire and alienate people who might otherwise join you in your cause. It also happens to be a perfect way to stand out as a charismatic speaker who gets lots of attention, but I digress… </p>  <p>Do I write tests? Yes. </p>  <p>Always? No. </p>  <p>Am I ashamed when I don't? Not really. Some jobs still call for duct tape. </p>  <p>Professionalism is knowing the appropriateness of a tool for a job and in always striving for integrity in our work. </p>  <p>My .02.</p>  <p>And, Dan, I admire and appreciate your contribution to our craft <img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://elegantcode.com/wp-content/uploads/2011/01/wlEmoticon-smile.png" /> .</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2011/01/12/programming-is-not-a-craft-my-take/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Burden Called Meetings</title>
		<link>http://elegantcode.com/2010/12/09/a-burden-called-meetings/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-burden-called-meetings</link>
		<comments>http://elegantcode.com/2010/12/09/a-burden-called-meetings/#comments</comments>
		<pubDate>Thu, 09 Dec 2010 19:00:48 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/12/09/a-burden-called-meetings/</guid>
		<description><![CDATA[I’ve been working for an enterprise corporation for 5+ years, which I’m going to be leaving soon. This organization is suffering from a wide-spread malady called “meetingitis”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been working for an enterprise corporation for 5+ years, which <a href="http://elegantcode.com/2010/10/27/moving-to-greener-pastures/">I’m going to be leaving</a> soon. This organization is suffering from a wide-spread malady called “<a href="http://secretgeek.net/meetingitis.asp">meetingitis</a>”. This phenomenon bothers me from time to time, especially when I’m being pulled in those pointless meetings, wandering about the same thing over and over again without coming to a conclusion or a solution. Then there are also those kinds of meetings where you don’t have anything to say or contribute; these are just a complete waste of time.</p>  <p>Yesterday, <a href="http://twitter.com/seagile">Yves</a> pointed me out on Twitter that it is <a href="http://www.mccarthyshow.com/LearnForFree/TheCoreProtocolsOnline/tabid/103/Default.aspx">perfectly fine to leave a meeting</a> if you feel that you’re not able to gain or contribute anything. Today, I walked out of a meeting where one of the participants started making insults against me. I just stood up, walked to the door and left. And I must say that it felt liberating doing so. I went back to my desk, calmed down and got some actual work done. Without a basic form of respect, one simply can’t achieve anything, let alone come to win-win agreements. From now on, I’ll be evaluating all meetings that require my presence before I accept them and also keep evaluating my presence while being there. </p>  <p>Let me close of this mini-rant by sharing a must-see recording of a talk called “<a href="http://www.ted.com/talks/jason_fried_why_work_doesn_t_happen_at_work.html">Why work doesn’t happen at work</a>” by <a href="http://twitter.com/jasonfried">Jason Fried</a>. I recommend you watch this short video, and if you like it, I also recommend picking up a copy of <a href="http://www.amazon.com/exec/obidos/ASIN/0307463745/elegantcode-20">Rework</a>. </p>  <p>I hereby rest my case.</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/12/09/a-burden-called-meetings/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Laborers versus Professionals</title>
		<link>http://elegantcode.com/2010/10/27/laborers-versus-professionals/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=laborers-versus-professionals</link>
		<comments>http://elegantcode.com/2010/10/27/laborers-versus-professionals/#comments</comments>
		<pubDate>Wed, 27 Oct 2010 18:53:43 +0000</pubDate>
		<dc:creator>Jan Van Ryswyck</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/10/27/laborers-versus-professionals/</guid>
		<description><![CDATA[A while ago, my good friend Michel Grootjans&#160;tweeted the following: Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question. Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a [...]]]></description>
			<content:encoded><![CDATA[<p>A while ago, my good friend <a href="http://geekswithblogs.net/alternativedotnet/Default.aspx">Michel Grootjans</a>&#160;<a href="http://twitter.com/michelgrootjans/status/24569673878">tweeted</a> the following:</p>  <blockquote>   <p>Are developers (a) laborers or (b) professionals? If (a) don't expect them to think. If (b) don't expect them to execute without question.</p> </blockquote>  <p>Personally, these few sentences struck a nerve or two. Read it a couple of times and think about this statement for a while. Try to picture your own work environment and how this relates. Go ahead! I can wait.</p>  <p>OK then, let’s move on.</p>  <p>I’ve been working for an enterprise corporation for 5+ years now. One of the things I’ve seen and learned there over this period of time is that laborers are more valued by management than professionals. Let me elaborate on this. </p>  <p>One of the biggest issues in a typical enterprise corporation is trust, specifically the lack thereof. The direct consequence of this lack of trust are massive amounts of constraints, regulatory processes and <a href="http://c2.com/cgi/wiki?FearDrivenDevelopment">fear-driven development</a>. This is the natural habitat of laborer developers, a nice and cozy place where they can spend their hibernation until retirement. This is where the term ‘code monkey’ originates from. Nine to five, no thinking, narrow focus, like soldiers in the military obeying orders to make a big mess. But sometimes, amongst these massive cohorts of laborers, there are small islands that exist of one or more professional developers. These are the kind of people that are very passionate about their craft, that want drive innovation and also want to continuously learn and improve. If you’re a developer and you’re reading this blog post, you probably fall into this category of developers.</p>  <p>But professional developers always have one part of the establishment going against them. It’s not the laborers. They don’t care. It’s an instrument better known as management. A large part of the IT industry, especially corporate IT shops, are being run by giant flocks of managers. Some of these managers started out as software developers and some of them are just born that way. But there’s something that they all have in common: they don’t write code as part of their day job. Although they don’t get their hands dirty with writing software, most managers do feel compelled to impose all kinds of political decisions regarding business requirements, software architecture/design, tools and technologies to the development teams they are ‘managing’. I for one want to make it clear that this has to stop. In order to lift this industry to the next level, we as software professionals need to free ourselves from the leash that is currently being held by management.&#160;&#160; </p>  <p>Professional developers working in these kinds of corporate environments are generally considered as troublemakers, if not by their direct bosses then certainly by other parts of management. The general attitude towards professionals is slamming them with more&#160; procedures, so called ‘company standards’ and ‘default architectures’. This ends up with a lot of frustration, a feeling of burn-out or even worse, suffocation as it may seem that the walls are closing in. Professional developers generally have a hard time placing this attitude towards them. They just want to do the right thing and provide the best possible solution they’re able to come up with. If managers don’t trust their development teams to make the right decisions, then why did they got hired in the first place? </p>  <p>I for one am pleading to get past this all this. Any business that wants to survive in this hard world economy and even wants to get ahead of its competition has to free its professional developers from management. It’s that simple. Management is great for enforcing compliance, but if engagement is what you want (and is definitely needed for bringing innovation), self-direction is essential. I already wrote <a href="http://vanryswyckjan.blogspot.com/2008/02/on-software-factories.html">a blog post about self-organizing teams</a> a couple of years ago. Today, I’m even more convinced that self-direction is one of the major key enablers for innovation in the IT industry of the 21th century. Anyway, someone who isn’t coding at least 50% of his day job shouldn’t be allowed to interfere with any kind technical decision making. Period! </p>  <p>I’m not saying that development teams should get a signed blank check. On the contrary. Financial and business constraints should still be taken into account. But when it comes to creativity, methodologies, technologies and tools, management shouldn’t get in the way. Development teams should be able to take responsibility for their own actions. Managers should know their place by making sure that their development teams can operate as optimal and efficient as possible by removing as many impediments as possible.</p>  <p>Let me show you a couple of examples where this principle of autonomy has immensely paid of so that you’re able to judge for yourself.</p>  <p>I personally find health care a fascinating craft. I find it fascinating simply because there are so many parallels than can be drawn between software engineering and the state of health care roughly 200 years ago :-). Lets take about modern hospitals for example. Medical facilities are generally being run by senior medical staff and not by managers! Senior medical staff are people that have a high degree of mastery in what they do and still perform their craft every single day. Maybe they’re not doing it full time so that they’re able to fulfill their ‘path-finding’ responsibilities, but still, they are still fixing their patients. Hospitals do have managers however, but they are there simply for enabling the medical staff to not worry about anything else besides saving lives. Can you picture lying in an operating room when a manager in a suit bursts through the door, yelling at the surgeon that he’s not allowed to use technique xyz to save your live? Preposterous you say? Not so with the current state of affairs in IT departments of the enterprise corporations. </p>  <p>There are a couple of concrete examples in the IT industry as well. Remember when Google <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html?_r=1">announced</a> that their engineers get to spend 20 percent of their time to work on something of their own interest? This resulted in massive improvements for products like GMail, Google Maps, Google Docs, etc … and directly contributed to Google’s success and current market share. Other companies like <a href="http://blogs.atlassian.com/rebelutionary/archives/000495.html">Atlassian</a> and <a href="http://blog.facebook.com/">Facebook</a> are enabling innovation in basically the same way. </p>  <p>Yet another example is Pixar. If you haven’t seen or listened to <a href="http://www.scottberkun.com/blog/2010/inside-pixars-leadership/">this interview</a> with Ed Catmull, the president of Pixar, stop reading this blog post and let it inspire you now! Somewhere along this awesome interview he mentions the following:</p>  <blockquote>   <p>Part of the behavior is I don’t know the answers. And at first that seems a little bit glib. But after awhile people get that I really don’t know the answer to a lot of these things. So we set it up so that the management really doesn’t tell people what to do.&#160; </p> </blockquote>  <p>Think about how amazing it would be like to work in an environment like that. It’s inevitable that great things are bound to happen.</p>  <p>There are plenty of other examples out there, like open-source software, Wikipedia, etc. … . They all prove that self-management results in engagement and that this is going to be a major differentiator in tomorrow’s economy.&#160; </p>  <p>Make sure to check out the following resources as well:</p>  <ul>   <li><a href="http://www.ted.com/talks/dan_pink_on_motivation.html">The surprising science of motivation</a> by Daniel Pink </li>    <li><a href="http://openmymind.net/2010/10/7/programmer-passion">Programmer Passion: An Enterprises Most Useful Yet Repressed Advantage</a> by Karl Seguin </li>    <li><a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">Drive: The surprising truth about what motivates us</a> </li> </ul> Till next time.   ]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/10/27/laborers-versus-professionals/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Keep Pressing on my Friend (When programming seems bleak)</title>
		<link>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=keep-pressing-on-my-friend-when-programming-seems-bleak</link>
		<comments>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/#comments</comments>
		<pubDate>Sat, 11 Sep 2010 22:16:13 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>
		<category><![CDATA[Psychology]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/</guid>
		<description><![CDATA[Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again? Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper? I used to think it just happened to me.&#160; The first time [...]]]></description>
			<content:encoded><![CDATA[<p>Do you ever get the feeling that you just want to get a cabin in the woods and never see a computer again?</p>  <p>Do you ever feel like someone stole your motivation and sapped your energy like a mosquito in a bug zapper?</p>  <p>I used to think it just happened to me.&#160; The first time it happened to me, I almost switched my major from CS to CIS.&#160; But, the more and more I work in this field and talk to other programmers, the more and more I see the same exact thing happening.&#160; And guess what?&#160; It is happening to everyone.</p>  <p>Not just you.&#160; You are not alone.</p>  <p><a href="http://elegantcode.com/wp-content/uploads/2010/09/tired_man.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto; padding-top: 0px" title="tired_man" border="0" alt="tired_man" src="http://elegantcode.com/wp-content/uploads/2010/09/tired_man_thumb.jpg" width="248" height="356" /></a></p>  <h2>I’m not talking about burnout here</h2>  <p>This is more than burnout.&#160; This lack of motivation energy-sapping-plague can hit a programmer at any time whether you just finished a week of all nighters or you just came back from a peaceful vacation.</p>  <p>I actually find that it is the time when I am furthest from what should be burn out that this phenomenon is most likely to occur.</p>  <p>So, if it’s not burnout, what is it?</p>  <p>I’ll call it programming lethargy.&#160; It actually happens to two other groups of professionals: athletes and craftsmen.</p>  <p>The truth is it is a perfectly normal cycle.&#160; This “barrier” is actually the reason why there are many apprentices, few journeymen and even fewer masters.</p>  <p>When you hit this phase be glad, it means you are about to be tested and if you come out on the other side, you will end up with a renewed interest and passion and leave behind the others that can’t cut it.</p>  <p>Oh, and it will happen again, probably several more times.</p>  <h2>Press on my friend</h2>  <p>What can you do about this problem?</p>  <p>Don’t despair, just press on.&#160; Stay the course and all will be well.</p>  <p>I am not sure why this happens, but I do know that it is a true test of your desire for the goal, whether to be a better programmer or a better athlete, or a better singer or musician. </p>  <p>The test is whether or not you can still press on when the motivation and passion is not there.</p>  <p>The reward waiting for you on the other side? </p>  <ul>   <li>A renewed passion and energy.&#160; </li>    <li>A new kind of appreciation for what you do.&#160; </li>    <li>Experience and true appreciation for your craft. </li> </ul>  <p>The question you have to ask yourself, is what do you ultimately want to become?&#160; If what you do is more than just a job to you, then you’ll find the strength to press on.</p>  <h2>How to press on when the motivation is gone</h2>  <p>If you agree with me, or even think that perhaps what I am saying is worth considering, then you will probably wonder how you can get through this phase or test to see the other side.</p>  <p>We can look at athletics again as a comparison to provide some insight.</p>  <p>Think about a professional track runner, training for competition.&#160; Consider what would happen if that athlete decided to not have a formal training schedule, but instead only train when he felt like it.</p>  <p>What would happen when he didn’t feel like training for a week?</p>  <p>Now let’s say he had a training schedule and he followed it, even on the mornings when he didn’t feel like getting up to train.</p>  <p>What would happen if his training was not planned out?&#160; If he didn’t know what kind of drills to do or have a long term plan for the training sessions?</p>  <p>If you want to make it through the times when you don’t feel the motivation and passion for writing code and solving problems, then you have to have a plan.&#160; A solid plan that will ensure that you will be able to press on.</p>  <p>Here are some tips to make sure that when you get struck by programming lethargy, you do make it through to the other side.</p>  <ul>   <li>I’ve talked about this <a href="http://simpleprogrammer.com/2010/07/02/the-importance-of-always-reading/">several times</a> in my blog.&#160; <strong>Make sure you are always reading a technical book.</strong>&#160; Create a schedule and stick to it.&#160; Even 15-30 minutes a day of reading will let you read around 1-2 books a month.&#160; That is a huge amount of knowledge. </li>    <li>When you don’t feel like working,<strong> break up your work into <a href="http://simpleprogrammer.com/2010/07/09/why-small-is-better/">small tasks</a> and start accomplishing those tasks.</strong>&#160; Figure out exactly what you have to do to move forward and do it.&#160; Don’t give in and waste time.&#160; The time you feel the most like killing time, is the time when you must throw yourself into your work all the more. </li>    <li><strong>Set some goals for yourself.</strong>&#160; Short term and long term.&#160; The short terms goals should clearly lead to the long term goals.&#160; Review those goals frequently and always try to make progress towards the goals.&#160; Even a little bit of progress adds up over time. </li>    <li><strong>Don’t start thinking about changing careers or looking for an easier job.</strong>&#160; Don’t start thinking you will feel this way forever.&#160; Realize that what you are experiencing now is a feeling and feelings are not trustworthy. </li>    <li><strong>Clean up.</strong>&#160; Clean up your workspace.&#160; Clean up your computer.&#160; Get yourself some new equipment if it will help.&#160; Feeling like you have a new and fresh environment can do wonders for motivation. </li>    <li><strong>Challenge yourself.</strong>&#160; Your gut is going to tell you to slow down and relax, but that road leads to laziness.&#160; When laziness comes your way, the best way to fight it is to push right into it! </li> </ul>  <p>Well, that is all the tips I have for you for today.&#160; Just remember that you are not alone and what you are experiencing is normal.&#160; </p>  <p>If you’re in a period now where you are motivated and feel great about your work and what you are doing, you might want to bookmark this post and come back to it when it can benefit you more.&#160; </p>  <p>Remember though, setting up good habits and routines now can help you cruise through the hard times later. </p>  <h6>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com/">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h6>  <ul></ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/11/keep-pressing-on-my-friend-when-programming-seems-bleak/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Microsoft doesn&#8217;t create bad developers, developers do</title>
		<link>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=microsoft-doesnt-create-bad-developers-developers-do</link>
		<comments>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 10:47:16 +0000</pubDate>
		<dc:creator>Andreas Håkansson</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/</guid>
		<description><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an [...]]]></description>
			<content:encoded><![CDATA[Have you ever stopped to think about the industry you have choose to work in (I’m bluntly assuming that if you are reading this you are working in the software industry in some way)? I would call it one of the most complex industries in the world. Think about it. We are working in an industry that is evolving at an incredible pace, contains an incalculable number of technologies, frameworks, best practices and constantly redefines the definition of how things should be done in the best possibly way. It’s the industry that makes the rest of the world tick. Daunting really, if you think about it.

A while back I read a couple of posts by <a href="http://www.gilzilberfeld.com/" target="_blank">Gil Zilberfeld</a> (<a title="Read Gil's post on Why Microsoft makes bad programmers" href="http://www.gilzilberfeld.com/2010/07/why-microsoft-makes-bad-programmers.html" target="_blank">here</a> and <a title="Read Gil's post on CSI: Microsoft" href="http://www.gilzilberfeld.com/2010/08/csi-microsoft.html" target="_blank">here</a>) where Gil talks about the responsibility that vendors such as Microsoft plays in the role of securing the quality of the work that is produced in our industry. While I think I see the points  Gil is trying to make, I think he misses the beat a bit and I have a hard time agreeing with the conclusions he draws.

The way I see it there are two types of developers; those that are just in it to pay the bills and those that consider themselves as craftsmen. If you consider yourself a craftsman then you should already be aware that you are responsible for your own faith and actions in this industry. But, if you are just in it to pay the bills then you are probably also looking to do so by doing the least amount of work and that includes looking for information on how to solve a particular problem or how to apply a technology onto your stack.

So if you are one of the developers that are only looking towards Microsoft (or the relevant company for the technology stack you are working on) is it their fault if you implement something in a way that could be considered bad? Of course not! Sure there are a lot of outdated and down right poor samples at the Microsoft (or relevant company) website and their idea on how certain things should be solved are bound to differ from others (and that’s definitely not to say that there isn’t good contents, there are a ton of it). However, if you rely on a single source of information, you are always going to get an opinionated view. Take my word on it (right?).

Doctors reads medical journals, publishes research papers, attend conferences, network with colleagues and make sure they stay up to date with the latest in their field. I’m pretty sure you are happy that they spend all of this time to make sure they can provide the best possible care and treatment when someone are in need of their services. I know I am.

Just as with any other profession, developers are responsible for their own education, for honing their skills in the craft that they have chosen to practice. In order to keep up in an industry that evolves at the speed of light you need to invest in yourself. The code you write today should be some of the best you have ever written, while a year later you should be considerably less excited about its quality. It’s a sign of growth. That you’ve continued to move forward as a craftsman, that you skills have been honed and broadened during the past year.

So what about the tools? Do we really rely on them too much to get the work done? I would say, definitely not! But again you have to specify just exactly what you are talking about when talking about tooling. If you rely on visual designers, drag and drop, wizards and the likes to to the majority of your work, then yes you are probably relying too much on your tools. Odds are that you will have a hard time to get anything outside of standard behavior to run and there will be pain points when you need to debug.

However you would do yourself (and your employer) a huge disservice if you did not make it your goal to know the tools in your toolbox as good as possible. What’s wrong with knowing how to use the debugger, the IDE and tools like ReSharper as good as possible? Used correctly they will have a huge impact on productivity. Make sure you know the finer details of the tools and make them work for your and not the other way around. Yes, sometimes tools do get in the way of the goal, even slow you down, and when that is the case, don’t use the tools! Tools are there to help you when you need them, not to act as a crutch you always have to lean on so you don’t fall on your ass.

Well there you have my thoughts on the subject. It’s always up to the developer, not the companies. Always.

I am also around on twitter <a title="Visit my twitter profile" href="http://twitter.com/thecodejunkie" target="_blank">@thecodejunkie</a> in case you need one more person to follow]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/09/01/microsoft-doesnt-create-bad-developers-developers-do/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Software, &#8220;It&#8217;s not what we do&#8221;.</title>
		<link>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-its-not-what-we-do</link>
		<comments>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/#comments</comments>
		<pubDate>Mon, 09 Aug 2010 12:13:36 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/09/software-its-not-what-we-do/</guid>
		<description><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a [...]]]></description>
			<content:encoded><![CDATA[I get to visit with a lot of developers in a lot of different organizations. Sometimes those developers work for software companies, sometimes they don’t. More often they do not. Most IT professionals don’t work for software companies, after all, and custom software development in these environments is considered an “enabling technology” rather than a “core competency”.

One thing I have heard expressed in those places is, “software development is not our core competency, therefore recommendations around professional development practices don’t apply to us.”

Good, lord. Really, people?

This is akin to a Boeing corporate attorney claiming that he need not be competent because Boeing makes airplanes.

I don’t know where this absurd line of reasoning comes from, but I know why it is tolerated. It is tolerated because we don’t have the formal structures to hold professionals accountable the way we might hold an electrician, plumber, or physician accountable to being merely competent. If you are reading this post you probably make 3X the salary of a plumber, yet are held to a lower degree of professional accountability for your work.

This is sad, but it doesn’t mean that we need to pick up the mantle of mediocrity available to us. We can hold ourselves accountable for professionalism no matter where we work.

If the organization we serve specializes in jellybeans, services, software widgets, or any other industry, we are hired to bring our best game to the table. This is why they hire us, folks! We are supposed to know what we are doing, not making excuses for incompetence!

In summary, no matter what type of organization you work for:
<ul>
	<li>Yes, you need to use source control.</li>
	<li>Yes, you need to automate the build.</li>
	<li>No, you shouldn’t be releasing the assemblies compiled on your machine.</li>
	<li>Yes, you need to stop writing long methods and pay attention to code complexity.</li>
	<li>Yes, you need to buy your developers the best tools available.</li>
	<li>No, you don’t need to write your own logging framework.</li>
	<li>Yes, you should be practicing test first development.</li>
	<li>No, continuing to ship known defects is not acceptable.</li>
	<li>Yes, you should understand who your customer is.</li>
</ul>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/09/software-its-not-what-we-do/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Software Craftsmanship on the Polymorphic Podcast</title>
		<link>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=software-craftsmanship-on-the-polymorphic-podcast</link>
		<comments>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 17:11:22 +0000</pubDate>
		<dc:creator>David Starr</dc:creator>
				<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/</guid>
		<description><![CDATA[I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently honored to be a guest on Craig Shoemaker’s Polymorphic Podcast. Craig was one of the very first podcasters to focus on .NET and I remember listening to his show on my way to work many years ago. Another cool part for me is that I got to be a guest instead of being the host!</p>  <p><a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx?"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="ListenBanner" border="0" alt="ListenBanner" align="right" src="http://elegantcode.com/wp-content/uploads/2010/08/ListenBanner.png" width="341" height="53" /></a> The interview is now live and <a href="http://weblogs.asp.net/craigshoemaker/archive/2010/08/03/software-craftsmanship-with-david-starr.aspx" target="_blank">available here</a>. </p>  <p>We visited many of my favorite topics including:</p>  <ul>   <li>How to sell Agile in your org</li>    <li>Scrum and ScrumBut</li>    <li>Code Craftsmanship</li>    <li>Agile in small teams</li>    <li>How to be an agile army of one</li>    <li>How my mom is the perfect complexity gauge</li>    <li>And ElegantCode.com gets a shout out!</li> </ul>  <p>This was really fun. Thanks, Craig!</p>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/08/04/software-craftsmanship-on-the-polymorphic-podcast/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Enforce Correct Usage By Wrapping Types</title>
		<link>http://elegantcode.com/2010/07/11/enforce-correct-usage-by-wrapping-types/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=enforce-correct-usage-by-wrapping-types</link>
		<comments>http://elegantcode.com/2010/07/11/enforce-correct-usage-by-wrapping-types/#comments</comments>
		<pubDate>Sun, 11 Jul 2010 22:40:49 +0000</pubDate>
		<dc:creator>John Sonmez</dc:creator>
				<category><![CDATA[API]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Conventions]]></category>
		<category><![CDATA[Craftsmanship]]></category>

		<guid isPermaLink="false">http://elegantcode.com/2010/07/11/enforce-correct-usage-by-wrapping-types/</guid>
		<description><![CDATA[Have you ever written an API or a method and expected it to be used a certain way, but then found people doing all kinds of bad things with your precious API that you never intended? I was working on building an automated testing framework for a welfare system in which cases could be added [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever written an API or a method and expected it to be used a certain way, but then found people doing all kinds of bad things with your precious API that you never intended?</p>  <p>I was working on building an automated testing framework for a welfare system in which cases could be added and benefits run for a given month.</p>  <p>A typical scenario might be something like:</p>  <ol>   <li>Create a new case for this month. </li>    <li>Add some people, do some things. </li>    <li>Run benefits for this month. </li>    <li>Run benefits for the next month.&#160; Something should happen because the child on the case is now 19. </li> </ol>  <p>Seems pretty straightforward until you consider what happens if someone hard codes dates into the test.</p>  <p>I am sure you can imagine plenty of scenarios in a situation like this where hard coded dates would eventually cause all kinds of problems.</p>  <p>The problem is… </p>  <p><strong>If you create an API which takes in various dates, how do you ensure the dates passed in are calculated and not just hard coded?</strong></p>  <p><a href="http://elegantcode.com/wp-content/uploads/2010/07/pigsinblanket.jpg"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="pigsinblanket" border="0" alt="pigsinblanket" src="http://elegantcode.com/wp-content/uploads/2010/07/pigsinblanket_thumb.jpg" width="514" height="514" /></a> </p>  <h2>Why convention doesn’t work</h2>  <p>Your first response might be to create some documentation that describes the importance of making dates “float” forward with time, and not be hard coded.</p>  <p>You might clearly describe how you should not hard code July 7th 1990 to be the birth date of a 20 year old for a test case.</p>  <p>You might give some guidelines of how to properly calculate ages.</p>  <p>But, you have no way of making sure the users of your API will follow those conventions or even read your document.</p>  <p>What if we do the hard work for them?</p>  <h2>Why utilities are still not good enough</h2>  <p>The next idea you might have is to create utilities that would do date conversions and calculate ages for the user of your API, so that they just have to remember to use them and all will be good.</p>  <p>This solution is better than one relying purely on convention, but still has some major flaws.&#160; Part of the problem of utility methods is that they are not self-discoverable.&#160; I’ve <a href="http://simpleprogrammer.com/2010/01/29/static-methods-will-shock-you/">talked about before</a> how DateUtilities like classes can get overlooked if you don’t know the utility class is there.</p>  <p>If you are relying on your users to go out and find your utility methods to make life easier for them, you are putting a large amount of responsibility in the wrong place.&#160; In my experience, it is very unlikely that anyone but yourself will actually use the utility methods.</p>  <p>You really need a way to stop them from being able to hard code dates.</p>  <h2>How can you stop someone from hard coding dates?</h2>  <p>Don’t accept dates in your API.</p>  <p>It is simple.</p>  <p>What?&#160; What do you mean?&#160; You can’t just stop accepting dates, you need dates.&#160; Not just dates, but integers, or strings.&#160; You can’t just not accept the bad data… or can you?</p>  <p>Consider wrapping the data type in another data type which creates your desired data type, but only using the convention or rules you desire.</p>  <p>Let me show you an example with the dates:</p>  <div id="codeSnippetWrapper">   <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">     <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> CreateCase(DateTime applicationDate)</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> {</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>    DoSomethingWithTheDate(applicationDate);</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> }</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span> CreateCase(<span style="color: #0000ff">new</span> DateTime(1990, 7, 8));</pre>
<!--CRLF--></div>
</div>

<p></p>

<p>In the above example, you can see that I am directly taking a .NET DateTime object.&#160; You can also see that I am directly hard coding a date when calling this method.</p>

<p>Let’s see if we can fix that.</p>

<div id="codeSnippetWrapper">
  <div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">void</span> CreateCase(CaseDate applicationDate)</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> {</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>     DoSomethingWithTheDate(CaseDate.ToDateTime());</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> }</pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>&#160; </pre>
<!--CRLF-->

    <pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span> CreateCase(CaseDate.YearsAgo(20));</pre>
<!--CRLF--></div>
</div>

<p></p>

<h2>What happened?</h2>

<p>Here is what we did:</p>

<ol>
  <li>We created a custom type called CaseDate. </li>

  <li>We replaced all the external usages of DateTime with CaseDate. </li>

  <li>We provided methods on CaseDate which allow the creation of dates, only through the way we want to allow them to be created. </li>
</ol>

<ol>Now we can easily prevent users of the API from being able to create hard coded dates.&#160; The API only will take CaseDate objects and internally creates DateTime objects from the CaseDate objects.</ol>

<ol>We can add other methods to CaseDate to allow the creation of dates from x number of months ago or in the future, or any other valid creation method we want.</ol>

<p>By doing this, we are restricting the valid set of inputs to our methods at compile time, not throwing exceptions at run time.</p>

<p>We are achieving the same kind of valuable input constrictions that we have been able to <a href="http://elegantcode.com/2010/05/08/the-power-of-enum/">achieve with enumerations</a>, except we are adding more complex restrictions than a simple list of selections.</p>

<h2>Where can I use this?</h2>

<p>Not just dates.&#160; There are many places where restricting the input to your method or API is going to simplify logic, protect against error conditions, and enforce constraints.</p>

<p>Consider using this pattern in some of these scenarios:</p>

<ul>
  <li>You want to use an enumeration, but your list of possible choices is too large, or repetitive. </li>

  <li>Anywhere you are using a primitive type and that primitive type represents some more complex concept. </li>

  <li>Anywhere you have parameter validation or manipulation repeated in multiple methods. </li>

  <li>Anytime you process some input or repeat a series of steps to transform it before sending it as input. </li>
</ul>

<p>Every time you are about to make a primitive type a parameter to a method you should ask yourself if it makes sense to wrap the primitive type into an class.</p>

<p>Remember, especially when creating an API, any time your method takes a primitive type, you lose the ability to constrain that input, and are forced to validate it instead.</p>

<p>Should you always wrap all primitive types?&#160; No, but it is another tool you can use to provide an extra layer of indirection between the logic of your API and your callers use of it.</p>

<h5>As always, you can subscribe to this <a href="http://feeds2.feedburner.com/ElegantCode">RSS feed</a> to follow my posts on elegant code.&#160; Feel free to check out my main personal blog at <a href="http://simpleprogrammer.com">http://simpleprogrammer.com</a>, which has a wider range of posts, updated 2-3 times a week.&#160; Also, you can follow me on twitter <a href="http://twitter.com/jsonmez">here</a>.</h5>]]></content:encoded>
			<wfw:commentRss>http://elegantcode.com/2010/07/11/enforce-correct-usage-by-wrapping-types/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
	</channel>
</rss>

