Fog Creek Software
Discussion Board

Developing Software is Hard

Elsewhere, Albert D. Kallal brilliantly took the words right out of my mouth:

>The same goes for software. It is not hard to write software.

>It is hard to write software that makes you a million.

Bravo Dr. Kallal!

I agree that just about anyone can write software. It's not hard at all. But software that actually works and that people are able to use and want to pay for and that advances the state of the art is not easy.

Sure, snapping together toy applications for small businesses in VB is easy. But designing and writing VB itself. That's some real development. And not easy.

Hey, doing some little projects for your PhD thesis or your community college class is no problem at all. But writing an application with 100,000 LOC or more is a whole nother ball game.

Those who think otherwise are easy to spot. They've never done it and made it work. But the untrained listener might not be able to tell. The Big Talk sure sounds good, after all!


Was doing some painting recently and found it amusing the people who wondered why it was taking so long. "Painting is easy," I was told, "You can paint a whole house in a weekend. I've done it a thousand times myself."

Sure, painting is easy if you have pristine wallboard, empty rooms, no carpet laid yet, and you are painting every wall and ceiling flat white. There's not much you can do to screw up and that's why it's easy to paint new tract homes.

But start to do something less generic, or work on a building that is 'in use' rather than unoccupied, or start to use shiney paints that don't hide your sloppy brushwork like flat paint does, or have multiple colors meeting each other, non-straight lines, or layered effects. That's not so easy to do a good job.

Those who say development is easy either have never done real development, or are trolling. In either case, they should take it elsewhere.

X. J. Scott
Saturday, August 10, 2002

Once you actually know what you're doing, it's not so hard. Of course, I never know what I'm doing, so it's always hard.

Really though, coming up with an idea, planning, and marketing are the hard parts. There are few rules for those things, but when coding, everything is well defined and you can tell when it works.

Jojo Masterson
Saturday, August 10, 2002

Yes exactly - and rocket science is hard too. And let's not pretend they never have crashes either, or changing specs (metric system anyone?).  A machine in Fargo crashes, a planet is missed, a few dead bodies - that is pretty far from what anyone dwells on when solving the problems of the work day. Speaking of which, one of my favorite quotes from Von Braun, after the first V2 hit London:

"The rocket worked perfectly except for landing on the wrong planet."

Something to chew on before we hand out too many '...but there were lives at stake' points to rocket scientists, or  programmers for that matter.

Robin Debreuil
Saturday, August 10, 2002

>Once you actually know what you're doing, it's not so hard. Of course, I never know what I'm doing, so it's always hard.

Mmmm... don't know about that. There's plenty of stuff that is hard even if one knows what he is doing.

>Really though, coming up with an idea, planning, and marketing are the hard parts.

Coming up with ideas is easy easy easy. When people find out I'm an engineer, they often tell me about the 'great idea's they've had, wanting me to work for them (for no salary but an unspecified share of future profits of course) to do the tiny matter of implementing it. One guy recently had the brilliant idea of an umbrella that displaced water through electrostatic repulsion. The energy source was no problem -- he had heard the human body used electricity to transmit nerve impulses and so why not use that as a battery! I was probably foolish to pass on his fine offer of a 5% stake in his cyberumbrella but I "guess I'm just not a risk taker."

> There are few rules for those things,

A few rules???

> but when coding, everything is well defined

Oh really!

> and you can tell when it works.

Ah, so is that when it compiles?

And Robin,

Thanks for the great Von Braun quote.
Spaceship engineering is hard indeed and quite similar to some kinds of software development. No one's ever done it before, you're on your own, and the best laid surefire plans still need to be tested to see if they really do work, and redesigned after they blow up.

X. J. Scott
Saturday, August 10, 2002

You think a derivative of Pareto's 80/20 rule applies here?  80% of development is easy (like the thousands of VB apps) but 20% is hard (Like making VB itself)  I'd say it's more like 95/5 however.

Saturday, August 10, 2002

So what is hard to you? Even outside of programming.

Jason S.
Saturday, August 10, 2002

In my college days, I never faced a project where I couldnt keep every thing in my head. The first commercial solo project I had exceeded 3000 lines or so, and almost threw me into a depression. I felt like I was a really crappy coder because I couldnt maintain an intuitive relationship with all that code.
It was only then I discovred that there are simple tools to help you with that, like modelling, design docs and well written comments. =D

Eric DeBois
Saturday, August 10, 2002

Just because software makes a lot of money doesn't mean it was difficult to develop.

Inventing Quicksort was hard.  Inventing VB wasn't.  VB was revolutionary in a business sense, but it didn't advance the field of computer science.  Quicksort was revolutionary in the sense of brain power and advancing the field.

"Those who think otherwise are easy to spot. They've never done it and made it work."

Either that or we're just a lot better than you.  And yes, my experience includes working on big projects - biggest so far approached 1 million lines (as if THAT was any sort of measure of complexity).

big brained guru programmer, I guess?
Saturday, August 10, 2002

There are a few things that are hard about software, if you're just talking about mainly solitary programming:

1) depending on incomplete/buggy things
2) performance constraints
3) programming for humans to read, with good taste
4) abstraction-breaking (result of #1 & #2?)

This is not adding in morale or other social problems.

BTW, the 95/5 rule might be right because most businesses want well-understood solutions that don't fall to too many of these problems.  Sometimes you have to be like da Vinci, dreaming of solutions that can't yet be implemented.

Saturday, August 10, 2002

>"Those who think otherwise are easy to spot. They've never done it and made it work."

>Either that or we're just a lot better than you.

Nice to know it's that simple. You think Software Development is easy, therefore you are much better than me. Hey great, that settles it I guess.

X. J. Scott
Saturday, August 10, 2002

> Bella:  So what is hard to you? Even outside of programming.

I would say developing any kind of video game (including 6502 8 bit programming) would be hard (to put it mildly)

Writing a good rock song that doesn't sound like a Ramones song is hard.

Sunday, August 11, 2002

KJScott... "Nice to know it's that simple. You think Software Development is easy, therefore you are much better than me. Hey great, that settles it I guess. "

If you think about it, there are more people that believe they are better because they can make a thing more difficult or complex than necessary.

The quicksort example is a good one.  Quicksort is not difficult to understand nor to write.  What was difficult about quicksort was getting to the point of insight that MADE it simple - and no checklist driven, big agency certified "software engineering" process can ever make that sudden insight happen - a process has no intelligence.

Difficulty is so easy to create any idiot can do it... and they usually do.

Joe AA
Sunday, August 11, 2002

Software development is hard.
Nuclear Physics is hard.
Rocket Science is hard.

Making french fries at McDonalds is easy.
Watching the assembly line for off-colors is easy.
Watching Oprah is easy.
Washing dishes is easy.

Software development is not easy.

(And people who hide behind aliases are trolls who don't believe in their own opinions. That's just common sense.)

X. J. Scott
Sunday, August 11, 2002

Are you saying software development is real easy or am I misunderstanding you?

If you do find from your own personal experience that it is easy, do you think that anyone can do it? Is the work that all developers do easy, or most of them or some? What sort of work is being done by those who are doing the easy work? Do you think to do any sort of development only a few weeks of training are necessary like with moderately easy work, or only a few days as with very easy work?

Computer pioneers like Kernighan, Ritchie, Djikstra. Were they wasting their time getting degrees since the work they do is easy?

I have to wonder about things like this when I continually hear 'software development is not hard' over and over again.

I wonder "Are these real developers who actually think this or just trolls with nothing better to do"?

I wonder "What are they developing? Perhaps simple VB applications? Or perhaps they are simply low level coders who receive fully spec'd out requirements from an architect which they just mindlessly code out?"

I wonder if the people making these assertions are doing the same thing year in and year out rather than crowing to accept new challenges. Hey, if I was doing now the same sorts of things I did two years ago, I'd think it was easy. And if I was doing the same things I did 15 years ago I'd be bored out of my mind. But technology has moved on. Things are different. I work on different problems now.

Moving on and learning new things keeps it fun. Keeps me challenged. When I hear "my work is easy" from another person, I hear someone who is not challenging themselves, who is not making full use of their potential, who is bored with their work.

So if you are not a troll, I'd give you some friendly advise to move onwards and upwards. Stop being so bored with your easy work. Spend less time on chat boards. Learn something new. Go outside and smell the fresh air. Start living life!

And realize, software development - like anything really worth doing - is hard.

X. J. Scott
Sunday, August 11, 2002

Hey! The post I just responded to has been deleted! That is very interesting. Looks like Joel's putting some fine tuning into his engine!

(Anyway, the post I responded to was just another one basically saying that development is easy.)

X. J. Scott
Sunday, August 11, 2002

A post got deleted?!

XJ, I think you are right.  I would like to find a new job, and maybe I will.  Economy kind of sucks right now though.  And I tend to get really bored with jobs after a few years (and then start spending my time on message boards).  Maybe its time to enroll in that PhD program.  All of the jobs in my area are corporate IT crap.  Maybe that's why I think its so easy.  I tend to work with a bunch of smart people too.  Everybody on this job is smart and is expected to know Stroustroup/Gang of Four/Meyers by heart.

big brained guru programmer, I guess?
Sunday, August 11, 2002

I think XJ is having one of his delusions again.  He is so hard at work developing his extremely complex and difficult VB applications he really can't be held responsible for what he does... It ain't easy ya know... really.

Joe AA
Sunday, August 11, 2002

We had a developer working with us who thought everything was easy. After we fired him, I had to go and fix some bugs in his code and add some new features. I spent about a week "scrubbing" the application he wrote and consolidated/simplified the code to about half of the number of lines, streamlining the UI behavior and improving the performance at the same time. Apparently he hadn't discovered the hard parts of software development. I now know that someone who says writing software is easy isn't always a smart developer.

I think it's hard
Sunday, August 11, 2002

"Hard"...  if we had a compiler, it would ask what that symbol means.  Do we mean hard as painful for 99% of programmers, or something that can't be automated away, or fundamentally nontrivial not counting problem-specific domains?

Sunday, August 11, 2002

Oh! Perhaps the disagreement is as simple as a difference in definitions.

Hard... in the sense of difficult. In the sense of not being easy.

Not necessarily painful or unpleasant.

Not sure if complex or simple is a factor. Some hard development can be complex, while other hard development may be simple.

e = mc^2 is simple to write and to understand what it says, but is still intrinsically difficult.

Agree/disagree as to this sort of hard?

X. J. Scott
Sunday, August 11, 2002

When doing easy stuff, success is assured. There are few risks. When doing hard stuff, failure can be a frequent result:

"Failure is the opportunity to begin again more intelligently." -- Henry Ford

"Far better it is to dare mighty things, to win glorious triumphs, even through checkered by failure, than to rank with those poor spirits who neither enjoy much nor suffer much because they live in the gray twilight that knows neither victory nor defeat." -- Theodore Roosevelt


Working hard doesn't involve running around like crazy without a plan:

"Never confuse motion with action." --Benjamin Franklin

Neither does it involve sitting about waiting for someone else to do the work:

"If there is no wind, row" -- Proverb
"Things may come to those who wait, but only the things left by those who hustle." -- Abraham Lincoln
"I haven't failed. I've found 10,000 ways that don't work." --Thomas Edison


If you want to get things done, the way is to do hard work, not easy work:

"Hard work doesn't guarantee success, but improves its chances." -- B. J. Gupta
"There is no substitute for hard work." -- Thomas Edison
"There are no secrets to success. It is the result of preparation, hard work, and learning from failure." -- Colin Powell
"Working hard overcomes a whole lot of other obstacles. You can have unbelievable intelligence, you can have connections, you can have opportunities fall out of the sky. But in the end, hard work is the true, enduring characteristic of successful people." -- Marsha Evans, Rear Admiral


Whether one values hard work speaks to what sort of person they are:
"Hard work spotlights the character of people: some turn up their sleeves, some turn up their noses, and some don't turn up at all." -- Sam Ewing

Because many of the things that are most worth doing are hard to do:

"If people knew how hard I worked to achieve my mastery, it wouldn't seem so wonderful after all." -- Michelangelo

X. J. Scott
Monday, August 12, 2002

> Computer pioneers like Kernighan, Ritchie, Djikstra. Were they wasting their time getting degrees since the work they do is easy?

XJ, those are all great quotes, but that still doesn't change the fact that some coding is easy, so is hard.  Coding complexity isn't the issue, it's the problem domain you are solving that determines the complexity of your task. 

Coding can be the easiest thing on the planet, and the hardest.  There, i think that's more acurate.  Are you a "Business Programmer"?  If so, please don't compare your work to those luminaries above.  Dragging together a few VB screens, writing some SQL statements,  and moving a few files around with a Perl script, writing a servlet to read HTTP requests and parse together and spit back HTML....that's all child's play, and I'd guess the majority of people here do just that.  However, writing a SQL engine, creating VB, making Perl, creating a video driver, making a combustion engine, etc.  Now THAT'S complex work. 

Joe AA,  great comment about people making things more complicated than they have to be.  (or in this case, aggrandizing the difficulty of your work)  Huge problem in IT today, esp. when your stuck working with people who need to make themselves appear more talented than the job/task requires.

Monday, August 12, 2002

Dammit Bella,

That is exactly it.  The problem is not in the coding, but in he subject material.  I could ramble on and froth at the mouth.  But you said it.

Nat Ersoz
Monday, August 12, 2002

So All pre-Ramones rock songs were difficult ;-)

Is creativity difficult? Design? Engineering? Manufacturing?

It's just not a good or interesting question.  What would I do with the answer? If someone proved that software engineering is easy, would it matter to anyone? Why?

I like developing software because it's <slang:very_good | excellent mine="cool"/>, not hard. Some people don't think it's <slang:very good | excellent mine="cool"/>. If not, I hope they do something that's <slang:very good | excellent mine="cool"/>  to them.

For me, any job that deals directly with other people's personal problems would be hard (doctor, some aspects of legal work).

Dan Sickles
Monday, August 12, 2002

I am brilliant.

Monday, August 12, 2002

How can anyone here can work a keyboard with those gigantic fucking chips on your shoulders?

Yes, you are all luminaries and others are beneath you. You can figure it out, while others stumble. You are a pioneer, others are just following trail you've blazed. Your candle is the one that lights the world. What magnificent creatures you all are, true renaissance men. I sweat you so hard you fucking bad asses! Your code is so elegant, it flows like a symphony worthy of Beethoven. Masterpiece it is! Look at it! Behold it! Hold it up to the light! Place it in the Guggenheim so others can come from around the world and see it's spectacular glow as it shines like a diamond, light beams bouncing from it's every perfection. Holding it to white light the beams splits into a million colors. Words cannot describe it. I am humbled. You have saved the human race. We are all in your debt.

Wednesday, August 14, 2002

hee hee!

you got it!

and it was a piece of cake too!

code master
Wednesday, August 14, 2002

[Are you a "Business
Programmer"? If so, please don't compare your work to those luminaries above. Dragging together a few VB screens, writing some SQL statements, and moving a few files around with a Perl script,]

Business database programs can be very complex.

Wednesday, August 14, 2002

*  Recent Topics

*  Fog Creek Home