Posts
1150
Comments
891
Trackbacks
1
Developer Growth Price is Right: From Coder to Craftsman, without going over

Jeremy Miller has a post about the evolution of a developer (in terms of DI/IoC) and also includes something from a previous post of his (but doesn’t directly link):

“I think there is an inflection point where a coder mindlessly spewing out code transforms into a thoughtful software craftsman capable of creating maintainable code.”

Now, I think the idea that this is an off-on switch type of thing is wrong.  Developers like to talk about ‘aha!’ moments (“Take on me!!!!!!!!”….sorry, I digress, but I loved ‘Hunting High and Low’) and they are real.  They are real in other intellectual disciplines, and the experience of them can be pretty powerful (in my Philosophy hey-day, I had more than a few), but I think the experience is also over-rated.  You went from not getting something to getting something (or at least you think so…I think a lot of ‘aha!’ moments are phony), but the development of a developer is much more of a continuum.  And the moronic Alt.NET stereotype of the dumb 9-5 80% lingers in here (more on this in another post soon).

Nit-picking aside, there’s an obvious truth to what he’s talking about, and he aptly describes stages along the way.

But, I think there are times at which this ‘development of a developer’ process is in a negative direction.

digression: you can view videos and content from Uncle Fester’s EchoChamberConf here.  Lots of good stuff.  In order to have Continuous Improvement, you also need to have the notion of ‘a step backward’ and the notion of ‘a completely bad idea that should be abandoned’…but I digress.

To re-use another stupid analogy that I might have used at some point, but am way too lazy to lookup, consider the act of painting.

Have you ever had to paint a room, or had the brilliant idea of painting a room yourself?  As a way of making money in college, one summer I worked on a crew that re-painted dorm rooms (looking back, I think the main point of this arrangement was to give middle-aged ‘manager-type’ men a new pool of young girls to hit on in hopes of finding one or more that was dumb and/or naive…this is also the case at any restaurant like Bennigan’s…but I digress).  It was not particularly enjoyable (students had many interesting ways of using their dorm rooms…in case you ever need to know this, partially digested Cheerios do not decompose, at least not noticeably, but I digress) .  At times, you came across a room where the student(s) had actually done some pretty decent work.  And you placed a layer or two of white paint (or off-white or whatever it was) over it, and you were done.  Since it was during the summer, and it was in Houston, it was freaking hot.  But I digress.

Anyway, if you own a house, you might end up painting a room on your own, because you think you can save money and/or you’ve watched too many Loews’ ads and feel inadequate.  Depending on your skill level, it might actually turn out well (as long as you don’t look at the baseboards too closely, etc.).

However, if you are a business owner and need a room painted, you aren’t likely to call Mary Jane Homeowner, but a professional company that does that sort of thing.  These companies fit on a continuum but in general, you get a better result than if you would hire someone like, say, me.  There are steps you need to take to make sure the results are professional.  I think it has something to do with primer.  Bad analogy when I don’t know what professional painters do, but figure it out.

To push the analogy, a developer can live a long time (and I mean a *long* time) just slapping a layer of white paint over a codebase without ever thinking about design principles.  The transition from coder to craftsman is something like transitioning from “I’m painting stuff for some immediate need” to “I’m painting stuff in a way that is repeatable, because I actually care about it.” 

To really push the analogy (to get to the whole ‘without going over’ bit), suppose you are a business that needs a room painted, and all you can hire to do so is Michelangelo.

If I’m Michelangelo,I don’t want to just put up some white paint and make sure the floorboards are painted properly, I want to create a work of art.

But if I’m a business owner, unless I’m painting a room at the Bellagio, I don’t want a work of art.  I want a professionally painted room.

The artists of the development world want to push things like deprecating the database, moving to an object-oriented database system, and other things that are really not applicable in the real world.  It isn’t that you couldn’t build a system on these lines.  You could.  And the artist is best capable of delivering this.  But this isn’t what a business really wants.

When the ‘development of a developer’ pushes from Craftsman to Artist, you have problems.  And it is an interesting problem.  If you abstract the context as much as possible, wouldn’t you want to have Michelangelo instead of just some competent painter?  Seemingly, the answer is obviously yes.  But in the real world of business, the answer is no.  You want someone who will accept the business requirement of the job at hand, and a ‘lesser’ painter/developer is more likely to give you that.

posted on Thursday, November 13, 2008 9:26 PM Print
Comments
Gravatar
# re: Developer Growth Price is Right: From Coder to Craftsman, without going over
Aaron Erickson
11/14/2008 6:53 AM
Though generally I am cautious of overuse of analogies, this one is pretty close.

The inoculation against this is to have a developer that has developed something for a market, where you have to balance "perfection" and "good", because quality isn't the only item on the axis of considerations.

This is especially difficult in consulting through a down market, where your competition is plenty happy to quote the college student coming in with a can of spray paint and put it the cost of that up against your Michealangelo. While some buyers will see and appreciate the difference, when the CIO himself is likely only to be in his job for 18 months (yes, that is the average tenure) - the long term means shit, so go with the cheapest option because by the time the costs bear fruit, you have moved on.

Wish it were different. But this is why Feathers sells a lot of books :/ This dynamic means brownfield development will always be a growth industry.
Gravatar
# re: Developer Growth Price is Right: From Coder to Craftsman, without going over
jlivesay
11/14/2008 10:24 AM
I'm not sure I agree that better developers some how lose the ability to make rational decisions. In fact, one major benefit to hiring better developers is that when something needs to be done with a minimal investment they can do so and still maintain good quality.

The only thing hiring a lesser skilled developer does is give you access to lesser skills. On the other hand if you are hiring someone who is more interested in pushing an agenda than real solutions then you might encounter this problem.

Are you suggesting that as developers progress along the path of improvement they are more likely to become slaves to an agenda?

Gravatar
# re: Developer Growth Price is Right: From Coder to Craftsman, without going over
jdn
11/14/2008 10:49 AM
@jlivesay

Depends on what you mean. Almost by definition, yes, they are more likely because the lesser developers won't have an agenda (other than maybe to get to the bar on time).

And I certainly have observed the tendency to view everything as a nail once one finds a hammer (and that hammer could be MVC, SOA, GOF, or any number of things).

Part of this post was inspired by the latest alt.net meeting in chicago. As always highly enjoyable, especially the open discussion afterwards. Not to steal the thunder from the coming post, but the highlight for me was when someone said "So, basically you are saying we are a bunch of elitist douchebags." To which I responded, "Yes, and as one, I can say that."
Gravatar
# re: Developer Growth Price is Right: From Coder to Craftsman, without going over
jlivesay
11/14/2008 11:01 AM
@jdn

I know we've both worked with developers who use an agenda, or stubbornness, as reason to not advance their knowledge.
Gravatar
# re: Developer Growth Price is Right: From Coder to Craftsman, without going over
jdn
11/14/2008 11:16 AM
@jlivesay

Agreed. But that's a different soapbox and I can only balance on one at a time.
Gravatar
# re: Developer Growth Price is Right: From Coder to Craftsman, without going over
Brian
11/15/2008 7:29 PM
@jdn/jlivesay

'Not to steal the thunder from the coming post, but the highlight for me was when someone said "So, basically you are saying we are a bunch of elitist douchebags." To which I responded, "Yes, and as one, I can say that."'

While those of us who purposely stay out of ALT.NET for that very reason, we know it's not *all* of you; just some bad apples who've had a very limited, myopic, life experiences (just not in software) and therefore truly believe writing software (and most other things) is black and white and not an art.

They're usually pretty easy to point out - they bash TypeMock, and believe if your not use RhinoMocks in your testing with Unit Tests (which are with NUnit because MSTest in their opinion sucks and you can't do TDD with). They always are working on something 'new', or they're consultants, or they always work on market software, and have never done any real time in an IT shop.

Most of you are pretty alright and I get a lot of good tricks and tips from several ALT.NET'ers - but some of you are exactly what you point out which is exactly why the reputation is what it is (one bad apple spoils the bunch - well in this case there are quite a few, but still a minority). Those few pricks out there who don't understand bell-curves, balance, and shades of gray and want to belittle anyone who doesn't agree with what they say our act offended when someone disagrees.

I'm looking forward to the post - they're definitely going to kick you out of the 'cool kids' club one of these times. J
Gravatar
# re: Developer Growth Price is Right: From Coder to Craftsman, without going over
jdn
11/15/2008 7:48 PM
@Brian

Well, it has been requested that I be 'kicked out' of alt.net already, so I don't think that will change much, no matter what I post.

Regardless, I think some of it comes from a lack of presentation skills. Elitism that comes from merit shouldn't be criticized just for that. There really are people, processes, and techniques that are superior to others. Stating these superior things is not by itself bad, nor is levelling criticisms based on them. It's when it descends to a myopic (good term) puritanical agenda that it becomes really annoying. 'It is impossible to write quality code without surrounding tests.' Um, no.

It's funny you should mention 'bell-curves' as that is a term I was planning on using in the upcoming post.

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 4 and 7 and type the answer here: