

Ask HN: How do you explain programming to non-programmers? - robomartin

To be sure, this topic has been covered before.  However, I have yet to find a compendium of ideas or, even better, a bullet-proof set of explanations that conveys all of what we do to non-programmers.<p>In looking around for different approaches I ran into a number of interesting ideas.  There's the "building a factory" analogy or "instructions for climbing mount Everest" analogy.<p>My focus was to try to explain the nature of the work a programmer, how it differs from linear or scheduled work and issues such as why it can be hard to estimate software project development time.<p>Most anyone working what I call "linear" jobs has a hard time understanding what programming is about.  They get to the office and have n tasks to complete.  Sure, the day may throw a wrench here and there, but, for the most part, the process is reasonably predictable.<p>Another case is that of a family practice doctor's office:  They have patients scheduled and they can see n patients in eight hours.  There's the occasional emergency, but, again, for the most part, the process is mostly linear and very predictable.<p>Creating non-trivial software products is nothing like that.  There are lots of "unknown unknowns", particularly if you are trenching new territory.  And then there are those problems that come-up unannounced that can consume hours, days or weeks.<p>Then there's the process of discovery.  While working on an iOS app it became evident that interesting new UI approaches would work better.  New functionality could be added, etc.  Therefore, the scope of the project grew and variability was added as new feature sets or approaches were explored.<p>It's the nature of a creative art where you set out to go somewhere yet don't always have absolute knowledge of how to get there or where "there" might actually be.<p>I'm sure there are lots of interest takes on this from HN members.
======
MarlonPro
Fact: that's very difficult to explain. Many have asked the same question and
got different answers. You can find some at stack exchange
[http://programmers.stackexchange.com/search?q=How+do+you+exp...](http://programmers.stackexchange.com/search?q=How+do+you+explain+programming+to+non-
programmers)

~~~
robomartin
Right. I found most of those. And, well, none of them really cover it. I do
realize that this is a tough one to crack.

