Fog Creek Software
Discussion Board




Programming Difficult?

I once heard programming and software development described as "The most mentally strenuous occupation a person can perform on a day to day basis".

I realize "programming" can mean a number of roles, but in this case I am talking about the type of programming done by developers at a small ISV (for instance, FogCreek or SourceGear). Not R&D fields or space shuttle simulation software.

My gut feeling says programming is much more mentally straining than most trades, more than engineering fields and business/accounting roles, but perhaps less than professions such as law and medicine. But as I am unfortunately not experienced in any of these fields, I may be very wrong.

So I would like to hear people's opinions on this, especially from people that have experience in the above mentioned fields.

Paul Stovell <www.stitchsoftware.com>
Wednesday, August 04, 2004

I can compare it only to being a telecom consultant, sales person, marketing person and manager.


The scope of things you're actively holding in your head at one time is an order of magnitude higher.


Because of the state of the art, different layers of the product affect one another. E.g., My install needs to by synced with my program (so they are using the same registry keys) and my marketing needs to be updated when a feature changes.

A. Software is in constant flux (if you're making it better).
B. Software's different layers affect each other more than in othe industries. This is largely an advantage b/c you can create an integrated product.  We could choose NOT to integrate and have a less powerful product.
E.g., GM engineers don't generally need to worry about the next generation of tires when desiging the engine.

Basically, I find that my SCOPE is much larger as a programmer. That means MORE THINGS TO CONSIDER when makng decisions.

But, I run an ISV, so I (by choice and circumstance) and involved in all of those aspects)

Mr.Analogy
Wednesday, August 04, 2004


Hardware design is just as difficult as programming. In fact some types of hardware design, such as FPGA/ASIC design (think Verilog, VHDL), is a mix of the two worlds... As you type in the design in a C-like language, you have to constantly remind yourself "What kind of hardware will this code generate?"

This is not to say that software programming/development is easy... I am just pointing out that when you don't know enough about other professions, it is very easy to label them as "much easier to do than software programming".

The points mentioned by Mr.Analogy are all true for hardware development as well. Maybe it doesn't apply to GM engineers who don't have to worry about the tires when designing the engine (oh wait they do... The friction of the tires will effect the engine performance), but when you have a product that is out there and will be out there for years to come and you keep enhancing the product or the parts used in the product slowly become obsolete and they have to be replaced with slightly different newer parts and all the generations still have to be in sync, then suddenly the decisions you make when making these changes become very important and interconnected to the previous decisions you made.  Intel designers have had this problem for years for example when they kept coming out with new CPUs.

What's the point of your question anyway? Are you trying to win a pissing contest or something?

hw dude
Wednesday, August 04, 2004

I would certainly think that something like emergency medicine is a more stressful occupation -- you have to keep a number of things in your head, e.g. drug dosages per kg of body weight, certain drug combinations are harmful, you have to make snap diagnoses based on symptoms which may not be conclusive, or the patient may be unconcious.

And if you make a mistake someone could die.

AMS
Wednesday, August 04, 2004

Emergency medicine has a tiny subset of the total medical catalog that they use day-to-day. Furthrmore, and given the massive number of mistakes made in the medical system, I'd rather they didn't rely upon their imperfect memory, but rather were equipped with a PDA or the like to quickly look up the appropriate drugs/dosages.

Dennis Forbes
Wednesday, August 04, 2004

And how many of us actually do the hard stuff eight hours a day anyway?  Perhaps if we just talk about the amount of exercise it gives to the more abstract thinking parts of the brain,  programming might be hard to beat, but as for raw brain output, I'm sure there are many that are much harder.

When I was in shop class in junior high school, I saw a video of a lumber mill in operation.  There was a huge conveyer belt with whole tree trunks rolling along.  Some guy in a tower would then pull a bunch of levers, which would make a bunch of saws pop up and slice it into boards.  This guy had to make a very quick decision about how to make the best use out of each unique tree, and probably also had to worry about quotas of 2x4s to 1x12, and which parts of the tree are warpy, and which parts would be unusable.  I'm sure it takes a long time to do that mans job well, and good luck coming into work without a full nights sleep, and screwing up the whole companies bottom line for a day.

A new york city bus driver probably puts out a lot more concentration that the average programmer.

But again, there is that abstract thinking part of the brain that I think most people rarely have to use that programmers have to use daily.

Keith Wright
Wednesday, August 04, 2004

"The most mentally strenuous occupation a person can perform on a day to day basis"

No way.  Thinking of all the things I do as part of my job programming is the most enjoyable.  I find writing, making presentations, or just trying to convince other people of something more "mentally strenous" than programming.    One I have to create soemthign for humans and the other for computers.  Computers are much less complex.

Bill Rushmore
Wednesday, August 04, 2004

" a PDA or the like to quickly look up the appropriate drugs/dosages."

Thus transferring the stress of getting the right drug from the medical guy to ... a programmer. :)

sgf
Wednesday, August 04, 2004

Dennis,

My point was that not too many programmers face situations like (substitute patient for program):

Hm.  Here's a program I've never seen before.  It's not responding.  I don't really know why.  It can't tell me anything.  Time to hook up my debugging instruments and see what I can find out.  I have 60 minutes to figure this out or someone dies.

I'm not saying that emergency docs face this every day, but certainly it does happen, whereas in my job I can't imagine anything approaching this kind of pressure.

AMS
Wednesday, August 04, 2004

^

I've dealt with that type of pressure, in big-sales demo situations.  Shit happens and it needs to be fixed quickly.

It's not the same as life-or-death, but it's hairy. 

indeed
Wednesday, August 04, 2004

"The most mentally strenuous occupation a person can perform on a day to day basis".

Ha ha -- no way. I was an air traffic controller in my early career, and that was far more mentally strenuous than any programming I've ever done (GUI, database, simulation, and embedded control).  In ATC you can't take a mental break, you can't check some site on the web, you can't daydream, you can't have some song going on in your head, you can't lose your concentration for a single second or you will lose the "flick" and can cause a huge mess that cascades for a half hour, not to mention the safety issues.

If you make just a single mistake (not even a mid-air, just getting too close), it's a huge mark against your career, involves a lot of shame, decertification, and retraining, and if it happens again within the year, you're fired.  A SINGLE moment where you lose concentration can easily cause that. And you have to concentrate like that all day, every day, and you might get off at 3pm then have to back at 11pm and pull an all-nighter. 

"Programming" has to be the easiest gig of all you mentioned. Engineering and embedded is tougher because you can't just step through with a debugger. And I'd think maybe an E.R. Doctor is the most strenuous of all, or at least law enforcement where they never knows what's going to pop out the window at them when they make a traffic stop.

I guess everyone thinks their job is the most strenuous, but definitely it's not coding!

Bill
Wednesday, August 04, 2004

Count me skeptical too.

I'd think that, say, being an air-traffic controller for busy airspace would be more mentally strenuous. Admittedly you don't have to deal with the wide range of novel problems and huge amount of scope that developers encounter, but you have to do make complex spatial decisions in real time in a situation where hundreds of people's lives are potentially at risk. The margin for error is very low. If I could do that job at all, I'm sure I'd be way more mentally exhausted at the end of the day than I am after a day of programming.

I also wonder about fields like architecture, at least at the peak of the profession where people are designing radically new buildings. It seems like the scope you'd have to manage mentally would be *huge*.

John C.
Wednesday, August 04, 2004

i think you guys are confusing emotionally strenuous with mentally strenuous

Kenny
Wednesday, August 04, 2004

<quote>
I'd think that, say, being an air-traffic controller for busy airspace would be more mentally strenuous. <...>, but you have to do make complex spatial decisions in real time in a situation where hundreds of people's lives are potentially at risk. The margin for error is very low.
<unquote>

Next time I fly I'd rather like to think that air-traffic controller is not a mentally strenuous job with a low margin for error. <g>

Anonymous by default
Wednesday, August 04, 2004

There's a million jobs just as difficult as developing software.  I couldn't run a saw mill, for example.  Could you manage a sales team?  Didn't think so.

Hey, if we combine two threads here, we get:  managers suck and their job is easy too.  Smart stuff!

profound insights galore
Wednesday, August 04, 2004

All of you are clearly wrong - don't you know that programmers are special little dears with the hardest job evar?

(Required)
Wednesday, August 04, 2004

Programming is the greatest plush job going.

...and managers ARE stupid.

muppet
Wednesday, August 04, 2004

"There's a million jobs just as difficult as developing software."

This really is a misguided thread. The complexity of software development varies astronomically depending upon environment/task/developer-There are some tasks that a monkey could perform (and many people are making a weekly wage calling themselves software developers doing them), and there are others that require a one in a million person to really do successfully (a John Carmack). There are developers on all points in between.

Dennis Forbes
Wednesday, August 04, 2004

perhaps the original use of the term "mentally strenuous" was meant in a "mental marathon" sort of way?

not necessarily creating major insights of logical deduction (as in a 100m dash), but more of a constant use of one's logic processes?

so, simply working on somewhat difficult math equations all day would be the equivalent of doing a mentally strenuous activity.

if that's the case, then yes, programming is certainly mentally strenuous... but then, so would sorting mail...

Kenny
Wednesday, August 04, 2004

Anything to do with (possibility of) loss of human life is more strenuous than those that do not. A traffic cop's job is more strenuous, physically, emotionally and mentally than that indespensible coder's at Oracle.

KayJay
Wednesday, August 04, 2004

"Anything to do with (possibility of) loss of human life is more strenuous than those that do not."

So driving to work is mentally and emotionally more strenuous than software development? Hypothetically a small lapse of judgement could mean that one swerves off the road and takes out a cluster of nuns waiting for the church bus. Nonetheless, I'd say driving to most people is close to chewing gum for most people.

Theoretically the burger flipper at McDonalds could kill people if they lapse in good hygeine (`plating' a cooked burger with a flipper that just flipped a raw, ecoli ridden hunk of flesh, for instance). I don't think that makes it a tremendously complex job.

Dennis Forbes
Wednesday, August 04, 2004

Dennis -

If your argument is that the medical profession is not complex and doesn't require enormous skill, talent, and intelligence, then I am very very worried about the sort of doctors you must be consulting with.

muppet
Wednesday, August 04, 2004

I actually don't prescribe to the super-human doctor mythology, and as a general profession it has more to do with dedication and persistence than any extraordinary talent, but that is beside the point.

However what I was disagreeing with was the stated premise that jobs that could potentially impact human life are inherently more emotionally and mentally stressful than those that don't directly have such an impact. This is demonstratably untrue as there are countless low mental and emotional stress jobs that have a tremendous ability to impact human life - a truck driver has the ability to cause mass carnage, but the mental requirement to avoid that mass carnage is sufficient to ensure that it's a relatively low stress job.

Dennis Forbes
Wednesday, August 04, 2004

stressful <> strenuous!

Kenny
Wednesday, August 04, 2004

Actually strenuous is a synonym for stressful in the context used here, however let's resolve that discussion by the following

/s/stressful/strenuous

Dennis Forbes
Wednesday, August 04, 2004

ah, then a soldier in a combat zone probably wins the prize... with programmers not even being on the chart.

Kenny
Wednesday, August 04, 2004

----"ah, then a soldier in a combat zone probably wins the prize... with programmers not even being on the chart. "-----

Yea, but being a civilian in a combat zone is even more stressful. At least soldiers can shoot back.

Stephen Jones
Wednesday, August 04, 2004

Programming on a trading desk is pretty strenuous.

Tom Vu
Wednesday, August 04, 2004

The big problem is that programming as an occupation doesn't have the same clear divisions as other occupations. Writing something new and complex is very strenuous work, yet typically performed in much the same environment and for the same pay as writing web pages.

Contrast that with law, where the best jobs are the hardest, and known to be the hardest. This means they're the most prestigious and attract high pay. Similarly with medicine.

The question is whether programming will settle down to a state where rewards match expertise?

.
Wednesday, August 04, 2004

Abstract creations are emotionally and intellectually fulfilling. Even stressfull/strenuous. No doubt. But, anything that has a real physical significance on the human body -  food, shelter, clothing, death, pain, relief, fragrance, stench, taste, the five senses - IMO, is far more strenuous (and IMHO, more important) than any intellectual activity that caters to or utilises our sixth sense. The sixth is dependent on the existence and efficacy of the other five.

Reminds me of the super-star automobile engineer. He looked up from the bonnet of the Jag and asked the cardiac surgeon, "Doc! There is not much of a difference between your job and mine. Both of us repair engines. Each of them are intricately complex with hundreds of individual components that need to work in precise co-ordination. I am sure I can fix any heart, just like I can fix any engine.". To which the surgeon replied "Maybe. Try fixing your cars with the engine running."

KayJay
Thursday, August 05, 2004

I dunno -- Yes and no. (In answer to the original question.)

Normally, no. Because the job normally consists of things like "find out that I need a table creating in the master schema. Send off the request to the DBAs. Kick back and relax for a fortnight, maybe three weeks while they think about whether to say 'No' or 'Never!' at which point I can escalate the whole thing to someone else."

At the moment, the current job is /exhausting/ me. We don't have DBAs or anything like that to get in the way, so we're basically writing software as fast as we can. And at the end of every day I go home and crawl into bed and go to sleep and sleep the sleep of the very, very tired.

I don't think I could work any harder. So yeah, it's pretty difficult.

I think the issue over comparing to other jobs is the distinction between the amount of thinking effort and the immediacy of the risk of cocking it up. EMTs and air traffic controllers also have to think fast and make decisions quickly, but the issues show up right there and then and involve bodies. Software engineers normally manage to duck out of the grief by having left the area by the time someone notices the tax calculations are 10 million quid out and companies are going bust as a result.

It's the difference between "pressure" and "Stress"...

Katie Lucas
Thursday, August 05, 2004

*  Recent Topics

*  Fog Creek Home