Eric Wise

Sponsors

The Lounge

Blogs I Read

Fun & Games

Advertisement

Images in this post missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at imagehelp@codebetter.com
Followup: Rejecting Software Engineering

Pretty fun post actually, sparked a lot of debate and good examples on both sides.  So I got to thinking tonight and the funny thing about that post is that I was talking about why I reject the title of engineer and of course it led to a debate about whether we should all be called engineers or not which I think is deconstructive to what I was trying to convey.  Then I got to thinking that it would probably make more sense if I provided the audience with what I would prefer to be called.

I want to be known as a software craftsman.

I see myself on the art and creative side to be more like a craftsman.  I don't build (or have any interest in building) the operating systems, or the developer toolsets like visual studio or resharper or eclipse any more than the average carpenter has an interest in building his own hammer and saw.  Software craftsmanship is a term that has been bandied about in the community off and on, but it really resonates with what I attempt to do.  What do I attempt to do?

I attempt to select tools, patterns, and practices and with them craft beautiful, working software.

To do this properly, I have always tried to approach new tools, patterns, and practices without ego.  Like a master craftsman, I need to understand what is available to me and know when to use a claw hammer and when to use a rubber mallet.  Like a master craftsman I put great care into my code and take materials provided by others and create something of value.  Above all, I strive for my employers to add value faster than I add cost.  This is something that I think many of us forget in our quest to use the latest neato tools and patterns.  Is what we're doing adding value faster than adding cost?  If it isn't, I will reject said tool and pattern for the task I am on.  This is where some others in my circle of the community get annoyed with me, they start talking about new patterns and tools like LINQ etc and the first question out of my mouth is "whats the value to me?  Will this add value faster than cost?".

As a side note, I tend to favor beauty in simplicity, not in complexity, as anyone who has worked with my code can see.


Posted Thu, Jun 28 2007 10:44 PM by Eric Wise

[Advertisement]

Comments

Jeremy wrote re: Followup: Rejecting Software Engineering
on Fri, Jun 29 2007 3:42 AM

Engineer, architect, craftsman, wainwright* -- all us "senior developers" or "managers what also code stuff" are all struggling for what to call ourselves.

I think we're not addressing the fundamental problem as I see it - the term "programmer" has been devalued somewhere along the way.

When did this happen? And why? Why it that senior (non-technical)  people at my company can say things like "oh, just find a couple of programmers and chuck them on the project" like they're coming in to flip burgers?  Why do we still hear programming subtly referred to as a low-level job?

And this is contrary to, and despite the fact that most people would acknowledge that programming is pretty f'ing hard!

Am I alone in this perception?

* "Wagon-maker"

Xor wrote re: Followup: Rejecting Software Engineering
on Fri, Jun 29 2007 8:17 AM

I think we should all call ourselves Technical Fellows.. This is what Anders Hejlsberg of Microsoft calls himself and I think he is above us all here as he's been writing languages like C# and turbo Pascal for over 25 years. He is truly humble and never tries to be above anyone else and that is what we should strive for because all this crap about what we should call ourselves is just nonsense. We know who we are and the world as we know it would be mediocre without us as we innovate and push technology to its limits.

Wayne M wrote re: Followup: Rejecting Software Engineering
on Fri, Jun 29 2007 8:38 AM

A rose by any other name smells as sweet.  Titles are only for strangers - the people who know me know the reality of what I do.  Forget about the titles!

Peter Ritchie wrote re: Followup: Rejecting Software Engineering
on Fri, Jun 29 2007 9:22 AM

It's easy to mix up roles and titles.  I'm assuming Eric is suggesting he wants his role called "software craftsman".  The title given to him by a company is related but separate from that: it's a means of creating a taxonomy of employees.

"Technical Fellow" is a title...

Scott wrote re: Followup: Rejecting Software Engineering
on Fri, Jun 29 2007 12:49 PM

electron wrangler

logic gatekeeper

he who is not false

Gil Zilberfeld wrote re: Followup: Rejecting Software Engineering
on Fri, Jun 29 2007 2:03 PM

I used to like Problem Solver. But then the Sopranos came on...

There are two questions here: What you call (or describe) yourself and what makes you different (per Jeremey's post).

Jeremy: It happens always, since very few of the developer ever get to be senior people. Being one and one who worked with many, developers communicate up pretty badly. Those who do a good job can move up. Then they bring thei insight to the discussion.

And I won't go into that "I'm an architect now, so I don't need to write code" senior-developers- lsoing touch by moving up.

Maybe the second question is more important - what can you do differently? Do all developers/engineers do TDD? Do all carpenters use the same (insert any tool you know that I don't here)?

Manuel Klimek wrote re: Followup: Rejecting Software Engineering
on Mon, Jul 2 2007 2:51 AM

I think when software developers prefer not to use the title "engineer" to describe what they're doing, they're trying to avoid a mapping of the engineering process onto the software development process that is wrong.

Read more about this here:

<a href="klimek.box4.net/.../">Understanding The Fuzz About Engineering In Software Development</a>

Jay Kimble wrote re: Followup: Rejecting Software Engineering
on Mon, Jul 2 2007 2:31 PM

Manuel,

I think you've fallen into the same trap that others fell into in Eric original post.

As Eric and I have chatted, the reality is that the Software Process (be it an agile, rad, or SDLC process) is very different then say building a bridge.  

I hate saying it but the question I personally hate the most is "how long?"

And you should have an idea why... mainly because for all your planning, unless you have done this particular task a million times with no variation whatsoever you can only really guess as to how long.  So you guess at it then double the number or whatever padding you personally add to get to the number that you tell the "customer."

I, like Eric, disagree with the term "Software Engineering" for what I do (as do many of us on CodeBetter... Don't get Bellware started on the topic...).  We are skilled craftsmen, definitely.  But what we do is not necessarily reproducable in a scientific sense (unless of course you are doing a project that is exactly the same... and at that I bet you will take a slightly different approach potentially getting it done faster).

Craig Bowes wrote re: Followup: Rejecting Software Engineering
on Mon, Jul 2 2007 3:04 PM

"Why it that senior (non-technical)  people at my company can say things like "oh, just find a couple of programmers and chuck them on the project" like they're coming in to flip burgers?  Why do we still hear programming subtly referred to as a low-level job?"

I think this differs from company to company, but sadly it is not uncommon.  I used to work for a major matchmaking/dating website, and despite the fact that the website and its application code was the entire source of revenue and the only product/service they sold, programmers were still treated like "brick layers."  Were were "idiot nerds" who didn't know anything or do anything difficult.

At other places, i've had a good experience were i felt programmers were  respected.  Also, I would say respect for programmers is increasing overall.  Early game programmers for example made very little money and didn't get their names on the credits.

I still call myself programmer, if for no other reason to differentiate from "Web Designers".  If I say "Web Developer" when someone asks me what i do, they assume I do graphic design, not programming.

Eric Wise wrote re: Followup: Rejecting Software Engineering
on Mon, Jul 2 2007 10:11 PM

Actually subtley referring to programming as a low-level job is pretty accurate in my book.  I know the community mixes and matches terms so it's not applicable universally, but when I think "programmer" I think the following:

Someone who takes a semi detailed spec and codes per spec with little or no creative freedom.

That is a low-level position to me.  If I write a detailed spec, I would expect just about anyone who has rudimentary training in the language to be able to accomplish it.

Being in management and having to review, train, and set career paths for developers I basically set up 3 levels of people on my team.

Level 1: You do exactly what you are told and nothing more.  If you're not told what to do exactly you screw it up or are helplessly stuck.

Level 2: You still receive direction and some specifications, but you actually think about what you are doing and when you notice weaknesses or flaws, you are able to bring it to someone's attention and describe/defend your viewpoint.

Level 3: You can work with little direction, given just goals and broad direction on where the codebase needs to go.  You constantly evaluate the code in the system and make recommendations for refactorings and enhancements.  You police lower developers and act as a mentor and guide.

After level 3 you pretty much stay there or become a manager.  I went the manager route.  =)  But yeah, if you're level 1, you do have to accept that in the IT world you are the equivalent of a fry cook (not to say you aren't educated etc, don't get offended, but you're easy to replace).

It is always a shame when companies don't treat their workers (any workers, not just IT) with dignity and respect.  I try to treat all my people well.  At the same time, if you're a Level 1 skillset, I don't expect you to be walking around with a diva complex either.  ;)

bean wrote re: Followup: Rejecting Software Engineering
on Thu, Jul 5 2007 2:27 PM

>> I think we should all call ourselves Technical Fellows.. This is what Anders Hejlsberg of Microsoft calls himself and I think he is above us all here as he's been writing languages like C# and turbo Pascal for over 25 years.

Dude, that's Anders actual title at Microsoft!

www.microsoft.com/.../default.mspx

bean wrote re: Followup: Rejecting Software Engineering
on Thu, Jul 5 2007 2:33 PM
SteveJ wrote re: Followup: Rejecting Software Engineering
on Thu, Jul 5 2007 3:57 PM

I prefer CodeMonkey.  I'd rather sound useless than pompous (architect).  Only doctors, lawyers, and engineers want to sound impressive on a business card.  Judge me by work, please.

I've never seen a spec perfect enough that a fry cook could code it up without assistance.   Anyone that can program has some value and I think that creating divisions and levels is most of the problem.  You take the people that seem to be automatons, expose them to new ideas, encourage critical thinking and then either programmers have been created or you cut your losses and throw them away.  Too often Level1s are created by management rather than by the employee (recent college grad = can't be trusted with a compiler).

Eric Wise wrote re: Followup: Rejecting Software Engineering
on Fri, Jul 6 2007 5:34 PM

Bean- I welcome alternative viewpoints and encourage all sides to participate in my blog discussions.  I will never weep about that.

Maybe the pro-engineering types are asking the wrong question.  How about "Why is it that seemingly a good chunk of the community doesn't want to be called an engineer?  What connotation does the title engineer convey that makes people like me and others reject the title?"

I have the same problem with TDD zealots.  You question anything about TDD and the response is "Oh you just don't get it, you're an idiot" instead of the more reasoned internal response of "why don't people get it, is my view really correct?  How can I better explain myself?"

Manuel Klimek wrote re: Followup: Rejecting Software Engineering
on Sun, Jul 8 2007 2:54 PM

Eric,

the question you propose is exactly what I asked on my blog, since the wikipedia definition of "Engineering" seems to have little in common with what some people obviously call engineering. There is an interesting discussion with a member or the latter group beneath my article :-)

That said, I am a strong believer in TDD, one could say I'm "test infected" - what questions do you have?

Cheers,

Manuel

{codesqueeze} wrote Software Engineer vs. Code Artist
on Thu, Aug 23 2007 11:50 AM

Is software development engineering or artistry? This long running debate received new life when Steve McConnell gave a fiery reply to an IEEE Computer article titled &#8220;Software Development : What is the problem?&#8220;. Eric Wise has now stirr.