Fog Creek Software
Discussion Board




Why does everyone think they can write software?

Joel's quote today is a question that I have asked many times:

<quote>
There’s something weird about software development, some mystical quality, that makes all kinds of people think they know how to do it.
</quote>


What a fabulous question!

Gee…does anyone have an answer to the above? (really…do you?).

The other day I received email from someone for a link to a web site that makes developing a software easy and pain less process (sorry..did not think to send them here!)

I replied that if you can find me a site that makes working on your teeth easy and painless, then I sure we can find a site the same for software. After, all you can go down the hardware store and purchase a few drills, and then your company can save tons of money by working on your staffs teeth. I mean, why pay a dentist to work on teeth when you can purchase a drill for $20 bucks? The same goes for working on your company cars…why bother to use a mechanic?

I am truly perplexed by this "mystical quality" that makes so many people think that they can write software.

As time marches on, and as tools get better am now starting to realize that the MOST important development skill is not coding..but desing..and more important the UI. (not how it looks..but how the UI interacts with the user).

It is kind like writing…most people can write..but can you write a best selling novel?

Since software tools are becoming so good..then anyone can now write software. However, most of the low low hanging fruit where you can make easy money is long gone.

Thus, software is now much more like writing.

Everyone can write..but WHAT you write is going to define the success of your product….not CAN you write.


Albert D. Kallal
Edmonton, Alberta Canada
kallal@msn.com
http://www.attcanada.net/~kallal.msn

Albert D. Kallal
Wednesday, May 05, 2004

I think the answer has something to do with the phenomenon (that has been discussed on this board) in which if you make a snazzy looking UI mock-up, the suits will think the app is ready to ship.  Its very easy to create stuff that looks like software, its very hard to create stuff that actually is software, but this isn't obvious.

Ken Klose
Wednesday, May 05, 2004

It's like art.  Everybody thinks they can paint for example.  Until you're knee deep in paint and all you see on the canvas is a pink blob where the portrait *should* be.

GiorgioG
Wednesday, May 05, 2004

its all those ".... for Dummies" and "....in 21 Days" books.

apw
Wednesday, May 05, 2004

Look at the popularity of blogging. Everyone (well, lots of people) think what they write in their blog is worth reading.

And I don't agree that software is unique, there are laws regulating all kinds of things because people think the same thing about other skiilled work (e.g. wiring a house really isn't really all that hard, but you probably should hire a licensed electrician to get it done safely and according to the electrical code).

Tom H
Wednesday, May 05, 2004

Since software tools are becoming so good..then anyone can now write software.- That is what people think, but the process has probably become more complex, and there are a more things to consider than ever before.

Prakash S
Wednesday, May 05, 2004

I think the misconception comes from people as they are growing up.  In 8'th grade you type in some basic code you found in a book and tell your teacher, 'Look what I made.'  The teacher praises you in effect telling you that you actually did something and that it was good when in fact you did nothing except copy.  The problem continues until that person becomes a programmer, the only difference is that they are now copying code from Google groups.  Isn't that how the lastest QuarkXPress was made ;-)

So now you have a person who thinks of themselves as being able to write software becuase their teacher praised them for writing a 10 line - number guessing game in basic that they actually copied out of a book.

Worse you have markup languages like HTML that can create the illusion of programming something complex.  Look at the webpage I made!  Wowowow! :-(

It's too easy to copy and paste and say look what I did.  It's a lot harder to start from scratch and say look what I did.

Copy and paste and guess = Programmer.
Analyze a problem and code a solution that doesn't exist = Software developer.


Wednesday, May 05, 2004

These newbies don't know how flawed thier programs are.  The programs they write meet one user's needs on one computer and aren't extendible.  That sort of software is very easy to write.


SW DEV = WRITING
The comparison of software develoment to writing is very appropriate.

In both cases, you can WRITE *something*. Just as someone can cut himself with a scalpel or connect a pipe.

UNWARE OF THEIR IGNORANCE
The problem is that the neophyte is completely unaware that they have created something that is unelegant, hard to maintain, or doesn't meet the user's requirements.

FLAWS VISIBLE LATER
You can create a reasonable piece of software that will meet ONE person's needs on ONE computer. That's a prototype. It's a completely different skill to make that program extendable, meet many user's needs, and work on any Windows computer.

VILLIANS & VIGILANTES
I remember playing a game like Dungeons & Dragons, called "Villians and Vigilantes" (comic book roleplaying game).  Your character got "Invention Points". I never understood how you could quickly invent a "thowaway" invention (one time user only) and why it cost fewer Invention Point to create a throwaway than to create a reusable device.. I thought "hey, if you can use it once, why not many times" and "how can it cost less to buiild an invention FASTER?"

Now I know.

Mr. Analogy
Wednesday, May 05, 2004

Oh.. that reminds me...


I once worked as a Management Consultant and suggested we create a knowledgebase for the consultants. The president said "can't you write that in DOS BASIC" ?

Of course, my failing was that I didn't know enough to ask: "so, will you want this to be used by more than one person?  Do you want to train everyone on using an obscure command prompt interface?

Mr. Analogy
Wednesday, May 05, 2004

I think the painting comparison is a good one. Too many people think being able to get one step away from Painting by Numbers makes them an artist. Just have a laugh at some local exibition....

Someone said "Copy and paste and guess = Programmer.
Analyze a problem and code a solution that doesn't exist = Software developer. "
I don't agree.
Copy and paste and guess = Programmer.
Analyze a problem and code a solution that doesn't exist = Better Programmer.
The trick is in the Developer bit: it's about creating some new and developing it into something usefull. Coding a solution that doesn't exist might make you Code Developer, not Software Developer. Software is more than code; it's usability, design...

Some people have made the car-mechanic comparison. Anyone who can fix a car would be a Coder; apply existing solutions to fix a problem. An engine tuner would be a Code Developer; actually improving things. Then there are car designers. They would be equal to Software Developers.

Personally I'm convinced I know next to nothing about software development. I consider myself a pretty good coder. I'm good at analyzing bugs and fixing them, and at improving usability and efficiency of software. Designing and developing from the ground up? I wish....
I've had the privilige to see some totally incompetent managers at work. You probably know the scenario: a decade with the company, best palls with the director, so eventually they had to make him a manager. Motivating people? Giving people in the team actual responsibility? No way Jose.... As a result of his mismanagement the application is a disaster in the making, but as has been mentioned before: the mock ups look great, so the suits are happy.... (Toet, if you're reading this: yes, that's you I'm talking about...)
In the mean time the news just told me this year in Holland alone 15.000 IT jobs will disappear through off-shoring. Basically the same problem: the suits think any bunch of minimum wage coders can develop software....

Duq
Wednesday, May 05, 2004

Five years ago I was in training for Cold Fusion  . Some people in the group had just HTML background, some had programming background. Pretty strange mixture of experience, One girl presented herself as a programmer who knows C++, JAVA, VB, javascript , SYBASE....,  you name it.  She looked very young . I was impressed and suprissed why is she taking the training. Training was very intoductory , really nothing to learn for anybody with some programming skills, basically waste of time. 
Then the instructor mentioned variables . The knowledgeable girl started to ask questions repeatedly : "What is variable, why do we need to use it?"

Contradictory to this story a long ago my manager said about a very knowledgeable and experienced programmer with at least 6 years of heavy assembler coding  that this guy is just novice.

So it is really depends.

LI
Wednesday, May 05, 2004

[quote=op]

Joel's quote today is a question that I have asked many times:

<quote>
There’s something weird about software development, some mystical quality, that makes all kinds of people think they know how to do it.
</quote>


What a fabulous question!

Gee…does anyone have an answer to the above? (really…do you?).

[/quote]

nitpicking, but there is no "question" in Joel's quote.

as to a non-answer: someone mentioned writing. almost everyone can compose characters to form words and sentences. this is "writing", but it is not "Writing".

in the same way, many people can click and drag and copy/paste and form "programs", but this is not "Programming".

josheli
Wednesday, May 05, 2004

I think its not so much the profession, but a certain type of people.(I mean, lots of people will stare at you with awe when you fix a driver conflict for them.)

Maybe the profession attracts the kind of people who always thinks they know everything. The boom years probably pulled quite a few of those into the industry.

...Get-rich-quick people who found themselves seated behind a keyboard as the dust from the investment frenzy settled.

Eric Debois
Wednesday, May 05, 2004

Programmers (like engineers) are not taught to create a "mystique" around their work.

Ask an engineer how he did something and he'll explain it in detail and try to make it understandable.

Ask a lawyer or doctor and they'll try to make it seem mysterious. 

Mr. Analogy
Wednesday, May 05, 2004

Actually, I think a lot of people think they can do <skill>. There is a huge difference between what a well-trained driver with a good attitude can do and what most drivers actually do. Likewise with welding or soldering, throwing a frisbee, and so on. My particular vanity is that I tend to think that if a human mind was able to concieve of and build something, I should be able to at least fix it and probably duplicate it. I'm starting to learn that I have limitations, but my default thought is "I can do that!"

Ron Porter
Wednesday, May 05, 2004

Mr. Analogy, my experience is just the opposite.

How often do folks here go on and on about how programming is an art? I know so many people who don't use software manuals, because they are made to feel stupid as a reader.

How many developers add features to products, just because it can be done? As a manager, I had to constantly shoot down proposed features, simply because no user had ever indicated it might be useful. When done properly, software development can be downright boring. Maybe seeing the dull look on your friends face after mentioning "neural networks" somehow makes up for that.

I agree in general about engineers. Every civil engineer I know of is capable of explaining what they do in clear layperson english. Obviously some of that is due to most people having knowledge of what a beam, brick, and foundation is, but for some reason software engineers often seem to cherish their godly level of comprehension. And yes, I'm guilty of this myself.

Maybe surrounding themselves with mystique makes up for the fact that they sit typing in a cubicle for 10 hours a day?

Edward
Wednesday, May 05, 2004

Edward, you don't understand the point Mr Analogy is making.

Programmers will try to explain things to newcomers, whereas snotty professions pretend it's complicated and direct the questioner to "see a lawyer" (or whatever,) which means go and pay for the advice.

Programmers might not always explain clearly, but partly that's because the questioners are dumb. It's easy explaining about concrete and structures, but hard to explain about linked lists or normalisation.

Expanding on Mr Analogy's point, and Joel's, it's not so much that everyone thinks they can write software; it is that there is no profession ready to dump on them from a great height.

After all, I can do medicine easily ( band-aids, bandages etc) but wouldn't get offered a job in a hospital. I can speak well in court, but wouldn't get offered a job as a lawyer.

.
Wednesday, May 05, 2004

People claim they can do lots of things these days. Look at the singers, actors, actresses, movie directors... How about closer? Your dentist, lawyer, plumber, electrician..

Most professions these days are filled with incompetent people who claim they can get the job done, but end up delivering miserable service.

Just because people claim they can do something doesn't mean they actually can.. or maybe they can but not well.

I am curious why people claiming they can write software is bothering the OP so much?!... :)

grunt
Wednesday, May 05, 2004

How come guys at Google are billionaires and I am here reading a discussion on who is real or who is fake software programmer/developer/architect?

AnonymousAmious
Wednesday, May 05, 2004

Because you chose to "read" and they chose to "do"

grunt
Wednesday, May 05, 2004

AnonymousAmious, don't worry, Peter Norvig at Google (dir of search quality) once mentioned, "One of the best programmers I ever hired had only a High School degree; he's produced a lot of great software, has his own news group, and through stock options is no doubt much richer than I'll ever be."
http://www.norvig.com/21-days.html

No doubt he thought he was doomed to spend his life answering forum questions about AI and Lisp... die unloved..

Tayssir John Gabbour
Wednesday, May 05, 2004

" ... all kinds of people think they know how to do it."

What makes you think he's referring to non-"programmers".

Mr. E. Lurker
Wednesday, May 05, 2004

Sorry, now that I've actually _read_ the thread ...

Mr. E. Lurker
Wednesday, May 05, 2004

Most of my clients are small business owners.  90% of the work I do consists of refactoring byzantine, barely functional "applications" written by the business owners, usually in VB or Access (two of the most accessible platforms for making things hapen programatically).  Every single one of them considers the tasks they give me to be "a small thing" that "should be really easy".  Every single one of them believes himself capable of writing release-quality software.  Every single one of them asks me for advice and then poo-poos the advice I give.

The basic problem is accessibility.  Anyone with a computer and an IDE (both highly affordable things these days) can tinker about and make something halfway useful happen on the screen.  Lacking any sort of perspective regarding what really goes into building an app, these people watch things happening on their screen and think to themselves "so that's all there is to it?  Pshaw!  This is easy."

Contrast that with medicine, or law, or even automotive repair.  How accessible are the facilites required to practice these vocations?  How easy is it for a person to wake up one morning and decide to "try doctoring"?  It's not easy at all.  Sure, you can go buy an anatomy book or a book of common remedies and learn a few things, but most of the value in medicine is perceived to be between the doctor's ears.  Likewise, you can head down to the law library and learn a few things, but again the value in law is perceived to be between the lawyer's ears. 

Software development, by comparison, has a highly visible, highly accessible tool that is easily perceived to be the seat of programming capability; the IDE.

The IDE allows the layman to believe that it is the IDE itself that is most important to the development process.  The IDE pulls attantion away from what is between the developer's ears.  The IDE allows the layman to sit down and "do" software development, if badly.  The IDE is a talisman to the layman.

If doctors made use of fairly ubiquitous, affordable handheld diagnostic units to do much of their work with patients, you can bet your ass that the field of medicine would soon be beseiged with people who had bought a diganostic tool, read a copy of 'Microsoft Doctoring Step-By-Step' over the weekend and decided that doctoring is easy and the diagnostic tool only costs $99 so hey, I'm going to do all the doctoring for myself, my friends and my family.  Ditto the legal profession.

I think this is the same affliction that leads people to buy all these ridiculous ab-trainign devices instead of just eating less and doing actual exercise; it is easier to believe that the thing (in this case, the IDE) will allow you to be what you want to be than to believe that hard work and a lot of smarts will allow you to be what you want to be.

Norrick
Wednesday, May 05, 2004

".", I think you're bringing something new in talking about "snotty professions". They won't answer those types of questions because the Law makes them accountable.

I don't think I was missing the point though. However, a much better analogy to your linked lists and normalisations would be finite element analysis, a tool commonly used by civil engineers.  That too, would not be easily understood by a layperson.

Two weeks ago I had a party for my volleyball team. There was a History PhD student, and English PhD student, and a CS  grad who works as a developer.

I had wonderful conversations with the first two about what they were doing, what was interesting them in their research, etc. They loved talking about it. The CS guy just smiled after I mentioned I had just started working in Java, and said "Oh, yeah, I just do server-side stuff", and ended the conversation there.

Granted, as an experiment, the size of the sample space makes it meaningless, but it is very characteristic of my past experiences. 

Edward
Thursday, May 06, 2004

I like your point Norrick.

Perhaps another way of putting it - an IDE removes, or lowers, an existing barrier-to-entry in the programming profession.

In fact, there is almost a negative barrier, i.e. a "pull-to-entry" with several products, such as Microsoft Excel. At a certain point of complexity, it helps to quickly throw together a little macro. Toss in a little VBA. Ooops, that VBA can't quite do what I want it to do. Let's redo it in VB. Just a few dozen lines, can't be that bad (and it often isn't!).

Before you know it, you've got a homegrown contact manager held together with paperclips and post-it notes, with a few thousand lines of VB, when there was never any sort of design to start with. The sort of thing that probably could have been done with Outlook to begin with. Obviously VBA/VB have their (very useful) place, but it's easy for non-developers to get sucked in over their heads.

Edward
Thursday, May 06, 2004

Q. Why do Mrs. and Mr. Joe Average, and their best friend,  think they can develop (Develop) software (Software) programs (Programs)?

A1.  They seem to have a fairly comfortable grasp of logic and the English language. IF THIS IS EQUAL TO THAT THEN THAT SHOULD BE HERE AND THIS SHOULD BE THERE. A statement Mr. Average has no difficulty dealing with.

A2.  Sandboxed Execution. Any computer, at least the sort accesible to the above family, is a sandbox.  They can create bug infested crap and just reboot should the result be unpleasent, without the fear of losing their lives and their loved ones' limbs, or commiting murder, or going hungry to bed,  or causing a nuclear disaster. Quark was a Publishing Software. Not life threatening or hunger generating. If it fails, it fails.

A3.  Most such indiviudals are already qualified some-other-professionals. This has its pluses as well.

Yes, every one *CAN* be a Software Developer (R), just as anyone *CAN* be a Rocket Scientist or a Surgeon. It so happens that Software Development provides a relatively cheap and non-violent way to identify and actualize one's potential. No, there is no need to do such a thing at all. Yes, people will still do it.

KayJay
Thursday, May 06, 2004

Norrick, your absolutly correct.  When I was 16, I could install linux on my POS pc I bought for 200 bucks, download GCC, and start fooling around.  Couple years later, and I knew ASP and HTML as well as most people, so I got a job.  Name ONE other profession where thats possible.  I can't think of any.  People immediatly assume that if 16 year old kids can do it (kinda), then they can do it.  But, as another poster pointed out, making something look like it works or even almost working is a lot easier then making something work correctly. 

vince
Thursday, May 06, 2004

<quote author="vince">
.... But, as another poster pointed out, making something look like it works or even almost working is a lot easier then making something work correctly.
</quote>

Could you, Vince, or someone else, define "correctly"?

KayJay
Thursday, May 06, 2004

A lot of comments on people not pretending to be Doctors,
but have you noticed the popularity of "alternative" medicine (magnetics, super-vitamines, ...) People are fond of playing Dr., they just can't put it on their resume and expect to get as medical job....

So are we feeling a need for an official Software Development profession, with licensing and regulation?

Chris Hulan
Thursday, May 06, 2004

Edward, I'm afraid you've fallen for the marketing clap-trap of the lawyers and medicos.

There's nothing stopping them answering questions for free, the way dumb programmers do, except that they're taught, correctly, that it undermines their own interests.

Whoever mentioned licencing - the point about that is that it must be adopted by programmers, not by those who want to kick programmers. Licencing systems for lawyers and doctors are controlled by those guys, and they set limits on numbers of practitioners. This guarantees their incomes and protects them from offshoring.

.
Thursday, May 06, 2004

Yes, you don't just see this with lawnerds/docs. A friend of mine asked a pest control person for advice on how one should react to a wasp invasion. He was extremely nice about it but explained something to the effect of, "Call me in that case." And it was obvious why.

Also I read an anecdote of someone who loved the dish at a restaurant so much, she asked for the recipe. The chef wrote it for her, but charged the price of the dish for it. Obviously there's the matter of writing something down being a tedious and timewasting process, but it also kept the diner from devaluing the knowledge.

Now, some musicians apparently are doing well with releasing free songs, though there are other factors involved there too.  And Free Software is always going to be a factor in the computer industry -- look at MSFT who nukes competitors by releasing free software (but without any freedom guarantees like the real Free Software people give). I think the software world is mutating interestingly.

Tayssir John Gabbour
Thursday, May 06, 2004

"A lot of comments on people not pretending to be Doctors,
but have you noticed the popularity of "alternative" medicine (magnetics, super-vitamines, ...) People are fond of playing Dr., they just can't put it on their resume and expect to get as medical job...."

Exactly.  And in those cases, there is always a Thing that the alternative practitioner derives his expertise from...the vitamins, the magnets, the crystals, the incense, whatever.  It is the Thing that makes the practitioner feel competent.


"So are we feeling a need for an official Software Development profession, with licensing and regulation?"

I go back and forth on this.  The essential problem is that so many things fall within the umbrella of software development I'm not sure anyone could agree on the minimum level of knowledge required to get licensed.  Saying you want to do "software development" right now is like saying you want to go into "industry" in the 1800s; there are a tremendous number of options available to you under that broad term.  I'm not sure it is possible to get the industry to agree on the specifics of what the minimum required level of knowledge is to get licensed.

Also, the issue of administering the licensing process is problematic.  There's a tremendous potential for abuse there.

Last but not least, a radical cultural shift would have to take place within the ranks of professional developers with regard to how they interact with customers and peers.  The prevalence of the stereotypical avoidant personality is a huge liability to the profession being taken seriously, license or not.  Nobody respects a shrinking violet.  Nobody respects someone who is unwilling or unable to communicate with other human beings.

It's a pretty complicated issue.

Norrick
Thursday, May 06, 2004

"Now, some musicians apparently are doing well with releasing free songs, though there are other factors involved there too."

Namely, that musicians don't - usually - perform for free. Especially if they have already formed a following (which is what I'm assuming you mean when you say they're "doing well").

So, giving the songs away may attract people to pay tickets in your gigs.

Paulo Caetano
Thursday, May 06, 2004

---"Namely, that musicians don't - usually - perform for free (...) So, giving the songs away may attract people to pay tickets in your gigs. "----

Most software consultants don't do custom or consultation for free. So giving  the programs away may attract customers to pay them consultation fees for their company.

Stephen Jones
Thursday, May 06, 2004

uh, anything that doesn't core dump, or throw an unchecked exception, and otherwise works the way it was intended is "correct".  Was this a trick question?

vince
Thursday, May 06, 2004

*  Recent Topics

*  Fog Creek Home