views:

341

answers:

12

Thanks to "Uncle Bob's" recent pontifications on Hanselminutes and the Stackoverflow podcasts, as well as Jeff and Joel's appropriate disrespect of the "SOLID" principles, I've given a lot of thought to questions like "How perfect does a program really have to be?"; "How closely does it need to follow standards and 'best practice' templates?"; "Does it matter how the software gets to the result as long as it gets to the right result?"; "Is writing software really an engineering endeavor or something else?" It's the last question I want to focus on here.

As programmers, the vast majority of us are employed to deliver operational efficiency for a for-profit business. We automate the processing of business rules, allowing an organization to do more with less, at maximum speed and at the lowest cost. We are driven primarily by the needs of business, and as most MBAs will tell you: Business is War. If business is war, and my position in the organization exists to help us win the battles of this war, then professionally I have more in common with a warrior than an engineer. As such, quotes like Patton's "A good plan executed today is better than a perfect plan executed at some indefinite point in the future" should be on our motivational posters rather than the tedious theories of abstract principles. Only if your company has been fabulously successful with a product that is merely "good enough to get the job done" (hey Microsoft -- I'm talking about Windows 3.x, 95 and NT!) will you ever have the luxury of going back and engineering a perfect solution.

So to form this into a question: What are programmers: Engineers? Warriors? Something else?

A: 

Warriors, and sometimes poets. :)

Jeremy Reagan
+8  A: 

Normal people trying to make a living.

Otávio Décio
That gets into another gripe of mine: programmers who are passionless automatons who simply slap out code without any concern beyond whether or not they get paid for it. I have a passion for programming and am bothered by people who don't share that passion!
Parvenu74
I would be seriously concerned if I don't get paid for what I do, passion or not.
Otávio Décio
Certainly getting paid is important, but I would much rather work a job I love than to do highly-paid drudge work just to make a living.
Parvenu74
+3  A: 

Artists :)

Yuval A
+6  A: 

Craftmen.

We create things to make lives easier and/or more fun, and we build tools to help us build those things.

Baltimark
A: 

Code Monkeys!

Nick
A: 

I think this falls along the lines of the old "Perfect is the enemy of good" chestnut.

+1  A: 

Clueless ?

Quibblesome
+1  A: 

Warriors are the poor saps that use the tools we create.

StingyJack
A: 

To paraphrase an essay, warriors go outside.

Dan Monego
+1  A: 

We are:

  70     % Typists *
  10     % Artists
   9.999 % Mathematicians
   0.001 % Robber Barons

* See Steve Yegge's Post

Rob Lachlan
+3  A: 

Actually there is a parallel to war: In Vom Kriege (On War) Clausewitz writes at length that the main problem with war is friction, the masses of little problems which cause slowdown. In principle war is not difficult, but in practice the little problems and the chaos can become overwhelming.

I think the analogy is plain to see: Writing most software is not difficult in principle (complicated algorithms are rare), but the masses of detail often become overwhelming.

So strive to reduce friction.

starblue
+2  A: 

Problem Solvers

Esti
Very true. Unfortunately management often thinks of programming as "no problem" and wonder why it seems so hard. After all, we are just writing down what is already understood, right?
kmarsh
What upsets me is when managers insist about talking about "opportunities" in stead of "problems" - like problems are inherently evil.
Esti