«

»

Aug 14

Foundations of Just Enough Programming

The ability to simplify means to eliminate the unnecessary so that the necessary may speak. — Hans Hoffmann

A little while ago I’d come up with the following as a semi-serious description of Just Enough Programming:

Are you tired of over architected applications?  Does infinite scalability imply infinite development time?  Are you surrounded by applications whose sole goal is to be buzzword compliant?  Do you suffer indigestion from the “extra sauce” that makes the management happy?  Do the systems diagrams look like a redneck family tree?

If any or all of these are true, then you need Just Enough Programming™.  JEP makes liberal use of Ockham’s Razor, cutting through the cruft and getting to the crux of the issue.  It slices.  It dices.  It even juliennes.  JEP fosters simplicity and elegance by seeking to make systems as simple as possible, but not simpler.  Its goal is to achieve perfection by reaching the state where we have nothing more to take away.  JEP is not just a methodology; it’s a way of life.

While it’s tongue in cheek I’d like to talk about the foundations of JEP.

As I envision it, JEP is built on the following:

Ockham’s Razor
“entia non sunt multiplicanda praeter necessitatem”, or, if you will, “All things being equal, the simplest solution is the best”. Less is more.
YAGNI
Your spreadsheet is really not going to need that built-in flight simulator. No matter how cool it might be, there are things which your application doesn’t need. Also, there’s no reason to code something on the off chance you’ll need it. It’s better to wait until you actually do need it. By then the specs will have changed anyway and you won’t be redoing work.
DRY
Cut and paste is right out. Maintaining the same code or even the same information, in multiple locations leads to problems. Besides, why type it twice?
TDD/BDD
Testing is needed to ensure that as we add to and refactor/simplify our applications, that they continue to work.
Agile Methodologies
Testing, integration, short development cycles. All of these help to focus on the task at hand.

Truth be told, there’s a lot of overlap in the list.  I’ll definitely be shaving down the list, but this works for a start.  I’ll investigate each of these topics in turn over time.  If anyone has any thoughts or anything to add, please share it in the comments.

1 ping

  1. Ramblings » Blog Archive » Just Enough Programming: The missing cornerstone

    […] with a coworker about JEP. In the course of our conversation I realized that in my list of the foundations of JEP, I had left off what is perhaps the most important one of all — Pragmatism. If I were to sum […]

Leave a Reply

%d bloggers like this: