Programming · Explanation

How do you explain how programming works to complete non-techies?

Abhinandan Chada Android Developer at Code Brew Labs

December 6th, 2016

I didn't realize just how hard this was until my company had an offsite yesterday where they let the sales people and the engineers play together. I guess I normally hang out with people who have at least been forced to do Java or Matlab programming or something in college, but a lot of paradigms I thought of as common knowledge aren't.

The best example we came up with (for explaining how a large web site works) was an Excel spreadsheet analogy. Imagine a spreadsheet that has a bunch of graphs constructed from the data. The spreadsheet is our database of all of our data, and each graph is a different web page view.

Programming is pretty interesting, and I think non-programmers would really enjoy knowing what's going on. Too often though, I think explanations go right over their heads, and they've learned to not even bother asking.

Dane Madsen Organizational and Operational Strategy Consultant

December 7th, 2016

I agree with Brian - sales people only need to know what it does and have confidence that it will do it.  You can describe it in detail or use analogies if you find that a good exercise in team building, but the reason I am a good sales person and not a coder is I find one interesting and the other not. I submit software people really do not care about a sales process either.  

Garet Claborn CEO, Lead Developer at Approach Corporation

December 6th, 2016

One analogy I found useful is airline terminals.

Imagine you must:

1. load cargo onto an airplane
2. ship the cargo from city to city, across the continent and back
3. change type of and amount of cargo along the way

At each stop, you have a logic condition such as an if statement. Data is manipulated, then the procedure continues.

To accomplish some goal like processing X tons of steel into rods, the plane may have to make multiple trips (as in a loop) to a factory. Conversely, if you have enough processing centers, you can deploy multiple planes, as in parallel processing.

You can continue from here to describe different crate sizes as different data types. Some can fit in others, some are specially marked or have functionality, etc..

Programming is the art of finding the most efficient use of paths, planes, cargo and time.

You can even say the size of the plane is your RAM, the loading bay represents L1/L2 caches and the warehouse you're pulling from is your disk storage. Networks can also be represented across many terminals, getting into the question, "What do you do if Plane A is at Terminal A, and needs cargo from Plane B at Terminal B"

Rob G

December 8th, 2016

i suspect the key phrase in your question/explanation above is "I think non-programmers would really enjoy knowing what's going on. Too often though, I think explanations go right over their heads, and they've learned to not even bother asking."  The reality is most people, not just sales people, simply don't care about how something works or are curious enough to bother spending the time to understand.  This isn't necessarily a bad thing, it's just not something they are passionate about.  This phenomenon is not confined to just programming.  How many people know or care to know how their car works or their mobile phone or air conditioning? These are things they use every day, yet the vast majority of people could care less about how these things work.  Even when something breaks their interest is only to the extent of getting it working again.  Engineers and scientists are wired differently than  the rest of the population and that's OK.  I was born wired to be an engineer. My parents tell me the first thing i used to do with a new toy was to take it apart to see how it worked.  go figure.   I spent the first 1/4 or so of my career as an engineer doing "engineering things" including writing code.  I spent the second 1/4 or so my career in sales doing "sales things", somewhat out of necessity.  Sales was a stretch for me, but it grew to be a passion.  Now i'm passionate about negotiating and closing deals.  I've spent the last 1/2 of my career as an entrepreneur doing "entrepreneur things".  Startups are my passion now because I get to do some engineering things and some sales things and all the other things i like to do and some i don't.  I hate accounting and paperwork!  Nothing makes my eyes glaze over faster than accounting. I could care less about all the things book keepers and accountants are passionate about, but as an entrepreneur i need to know enough about accounting to be successful.  If i need to know it i will ask an accountant, otherwise don't bother to explain it because nothing will put me to sleep faster.  In fact i have a hard time understanding how anyone could possibly be passionate about accounting... which helps me understand why there are people who simply don't care about engineering 'things'.  we are just different.  thank god there are people who are wired to be accountants and bankers and art historians and opera singers and police officers.... because that's not me.   What typically makes engineers engineers is their innate curiosity and desire to find engineering solutions to engineering problems.  You may find this shocking, but not all people are curious about how things work or how to solve challenging engineering problems.  If a sales person needs or wants to know about the process of SW development then they will ask.  shocking, i know. 

Irwin Stein Very experienced (40 years) corporate,securities and real estate attorney.

December 6th, 2016

Imagine how difficult it is to explain basic marketing, law or business concepts to programmers who only hang out with other programmers. I learned programming in college and I never found it interesting.  If you cannot explain what you do then you  should work on your communication skills.  I would think that sales people would have a basic idea of what the website does, not the code that makes it work.

Chris Hote Start-up coach, investor

December 8th, 2016

I think you might try using the "user story" format (Agile terminology) as a vehicle to ease the conversation. 
Ideally, a user story captures what the user wants (this is actually what the sales rep sees or hears) and how it will be implemented (this is what the techies will do). From following how a user story evolves, both techies and sales reps may connect the dots between the user's business needs and how it is built. 

Ozzie Sutcliffe ServiceNow Consultant

December 8th, 2016

Maybe its a simple as describing a website like  a newspaper / magazine shop
The front entrance is the homepage,each magazine is a menu item, the index of the magazine ,can be a sub menu related to the magazine. Information can be grouped in many ways, author, title, subjects ( all can be keywords ). Every time you open  magazine in your browser, you take up place on your (ram) viewing area.
Open too many magazines and you run out of viewing room. The machine slows down because its busy opening and closing magazines. just as you would be if you tried to open 20 magazines on a 3 foot square table.

I think people who want to know find out.. If they are not interested then it does not matter how you present it.

Howard Shubs System manager / programmer

December 6th, 2016

No, they really don't care as a class.  Trying to explain it to them can be good for practising communications, but don't expect much else from it.

Gabor Nagy Founder / Chief architect at Skyline Robotics

December 6th, 2016

You can start by explaining that computers are a bit like hyper-logical and very strict, but not very smart children.
So, programming is "telling" the computer what to do, by breaking complex tasks down to simple instructions, such as. Initialize a variable to 0, add 2 to it, and do this a 100 times.

The exciting part is designing very complex systems, by organizing these instructions into bigger and bigger, reusable units, and the pride of craftmanship.
A beautifully designed piece of software is a mixture of art and science.

The really exciting part is what you can accomplish by doing all this!
From, building a car that can drive itself, and creating virtual reality, to cool robots, accurate full-planet weather simulation, molecular simulation and AI, to cure cancer and so on.
As a software engineer / programmer, you have nearly god-like powers!
You can create complex, immortal things. You transcend the limitations of your mortal and vulnerable bio-body (wetware).
Your only limitation is what hardware you have access to, at the time, which keeps getting better.

There's no such thing as too much computing power. Only a limited imagination.
- Gabor Nagy

Give me a computer a billion-billion times faster than the top supercomputer, and in a week, I will be complaining that it's too slow.
- Gabor Nagy

Be patient though. Apparently, not everyone is interested in such super-powers, or are unwilling to put in the work.
I used to think that anyone can become at least a decent / good programmer, but recent studies by some university CS professors in the UK, suggests that only about 1/3 of the population can.
Of course, the other 2/3 are better at other things, which is good. Diversity is great.
And, hey, it's job security for the rest of us!

Brian Nyagol Asst. Controls & Instrumentation Engineer at Davis & Shirtliff

December 7th, 2016

Abhinandan Chada,

Every good programmer should have a way to communicate their solution to non-programmers. If this is not the case, then one should really consider polishing their communication skills, and re-doing the software development life cycle. 

I believe the best way to explain what a website or a software does is by using a probable use case, and take them through how the software/website interacts with the user, in form of a well illustrated flow chart. 

Like Irwin Stein points out, sales people only need to know what the software/website does without thinking about what lines of code makes it work.

However, the problem is that most programmers do not know how to evaluate their audience and swap languages depending on that, thus most of must get boring the moment they start talking.

The aim of communication is understanding. If this is not achieved, everything breaks down. 

Chris Hote Start-up coach, investor

December 7th, 2016

@Abhinandan: which problems do you try to solve from trying to educate non-techies to programming?