What programming concepts are applicable to general life issues—business success, relationships, etc.—and how would you apply them in those situations?

+9  A: 

That language is everything. It modifies our way of thinking and interacting with each other.

+18  A: 

That every problem can be solved by breaking it down into logical steps.

Neil Aitken
Or every problem can be broken down with a big Hammer ;)
Robert Gould
Indeed, very little can't be solved with a large enough hammer :)
Neil Aitken
goes with being an engineer as well :)
+9  A: 

That it's probably all your fault

Paul Dixon
Unless you can blame it on the last guy
Neil Aitken
+5  A: 

If you can't abstract things to create a summary or overview (or superclass or interface) you don't really understand them and need to keep asking questions.

+13  A: 

Keeping Things Simple.

Breaking concepts into subparts, recursively, until they are small enough to tackle.

Just saying 'no' to things which seem way too complicated. :)

+4  A: 

Am I the only one that unit-tests their breakfast each morning?

Robert Gould
Yes. Damn 10 chars.
+4  A: 

Keep relations between objects in a good health by not trying to know more than an object wants to tell.

It's much better to synchronize through message passing communication than using shared resources.

Clean well defined interfaces keep the organization healthy and scallable.

Boris Pavlović
+8  A: 

I'm saddened that version control isn't in wider use in the "real world". I know a workgroup of people who write reports. They need to keep track of changes, they need to know who made which change, they need to have multiple people editing different sections of the same report.

They stumble through using MS Word's track changes, complain that "so-and-so is in the file, so I can't edit it", and spend lots of time arguing about which language is the most current. They've created a file naming system that's supposed to incorporate a datestamp and version numbers. Of course, they're humans, so they forget, make mistakes, etc.

If they knew how to use version control, many of their problems would simply disappear.

perhaps you can introduce them to it?
Sadly, I'm not compensated for solving their bureaucratic problems, and I have plenty of my own bureaucratic problems I am compensated for.
+5  A: 

Thinking about the problem even just a little bit rather than just diving in will help you reach a better solution.

+1  A: 

None. The world around me doesn't work in the same way a computer does.

Jasper Bekkers
+1  A: 

The application of logic in both analysis and problem solving.

+7  A: 

Garbage in... garbage out.

James Sun

Optimist, the glass is half full Pessimist, the glass is half empty engineer, the glass is too big programmer, why doesn't the glass resize?

If only the world was more applicable to programming methods. but then after a few billions years how many times would the system have crashed?

Jim C
+3  A: 

You usually get things done a lot quicker if you read the manual/documentation first.

Richard Nienaber
+1  A: 

I think it would be kind of hard to apply Test Driven Development concept in your life.
Say, if you wanted to paint an apartment. What test would be applicable first?
It would be even worse when it comes to buying things. Becuase, you would have to buy random stuff and then verify if this stuff turned up to be what you really wanted.


I've used predictive execution for data entry before. We had to enter some information about every part in our inventory and most times it was faster to predict information about the next part to be able to move on sooner, it more than made up for the slight backtrack that would happen once in a while.

More of a hardware-level strategy, but still, it was effective.

+4  A: 

Where to parallelise: Asking my wife to go and get a pizza from the place at the end of the road rather than helping me unload the car - if we unloaded the car twice as fast, we would have finished in 15 min then had to wait half an hour for the pizza; instead I unloaded the car in 30min and she turned up with the pizza as I took the last of the stuff in. (it wasalso an excuse to stop her helping, as she had pulled a muscle in her back earlier in the week)

Queuing theory: useful at festivals whether or not we're likely to get into a packed venue before the act we're wanting to see is scheduled, though it assumes the rate of exit will be constant.

Pete Kirkham

Experience and theory in solving programming problems can help in everyday life and especially with abstract and complex life problems.

For instance, in a new and unstable life situation, instead of stressing and consequently procrastinating compounding the problem, I sometimes pretend I am approaching a complex and uncertain programming task; I take a deep breath, admit to myself that there is probably a reasonably good solution to the problem, then take a high-level view of the situation, get my bearings several times and make a tentative first attempt that I can be confident will probably not work but will reveal what might work. From there I can make informed decisions and ward off the dreaded procrastination - having confidence in small revealing steps.

Instead of stressing and allowing myself to make mistakes I come to a "good enough" solution to many everyday problems.

+2  A: 

Nothing Comes For Free: Practice makes perfect.

Don't Recreate the Wheel: When presented with a new problem space, learn from those that came before...Research (Read/Ask questions).

One Man's Junk: There is no such thing as a prototype, just an example of one possible solution which could be the basis of the final product.

Glitz Can Be Dangerous: Graphics make customers/managers/teammates happy and feel there is progress when the heavy lifting is behind the scenes.

Mark Thistle

Any good "programming" concepts you can apply to real life, isn't a programming only concept and could also be learned naturally or learned through most other activites that involve problem solving, thinking things out on an abstract level, planning before doing and methodically tackling difficult tasks.

tl;dr It's not so much what programming concepts you apply to real life as to what good habits have you learned from programming. /humble opinion

Aaron C

People would rather you ask questions than stay silent and ignorant.


In real world, there are many things you can't solve from logic theory perspective, unlike in programming.

+1  A: 

Version 1.0 of anything always has bugs.

Anthony Rizk

Before you call tech-support, power cycle that bad boy.

  • Simpler life causes fewer breakdowns, just like simpler code produces fewer errors. If life feels too complicated, it probably is. Reduce, refactor, reuse.
  • Time management is a skill that is useful everywhere.
  • Very rarely is life WYSIWYG.
  • Planning is essential. You'll never get anywhere without goals and it helps when those goals are simple, clearly stated, easily measured, and attainable.
  • There is no substitute for clear communication.
  • Execution will usually beat innovation, but it's best to have both.
  • Feature creep can be exciting until you learn how much work you have left. It slows projects down and delays deadlines...not being able to say no is life's equivalent.
  • Shortcuts aren't worth it.
  • Learn from the right sources and check for best practices. Be wary of buzzwords.
  • Too little information can be asphyxiating and too much can be paralyzing. Get what you need to finish the job.
  • Iterate. Improve.
  • Bloat happens when you try to fit too much in.
  • Abstracting problems into their component parts is a good way to solve them.
  • Validate and filter your speech before outputting.

Words we speak are like keywords or identifiers in any programming language. If you can manage to use them in the right order, you can simply get successful results from life.

Orkun Balkancı
+1  A: 

Not everything worth doing is possible to do in polynomial time.


You usually get things done a lot quicker if you read the manual/documentation first.

On the other hand, regarding some topics (such as relationships and social skills), the documentation is sorely lacking :D

Jonas Kölker
+1  A: 

There are few applicable to day to day life (some of them already mentioned):

  • KISS
  • You ain't gonna need it
  • Garbage In, garbage Out

Probably more.

Richard Knop

You don't want to terminate unexpectedly due to occurrences of errors, you only want to terminate under conditions that you control.


Windows programmer

Reuse things you have already done!


that we have to take a moment to think before taking action