What is Software Philosophy?

There are two sides to programming: the computer/logical and the human/artistic.  Our education and work have mostly focused on the computer/logical side.  In my over 50 years of programming I have rarely seen any explorations of the human/artistic side. I have taught some of that but to a limited degree. So I coined the term 'Software Philosophy' to label the human/artistic side of programming. These essays are going to explore and illuminate how much of programming isn't about logic. They may veer slightly into software architecture and efficiency and other areas but they will all be under the umbrella of software philosophy - thinking about your coding.

If you are a competent coder then you will likely be interested in this. If you went to the Dunning-Kruger School of Programming, then you shouldn't even be in this profession. One cow-orker I knew, when I asked him why he used so many global variables said to me, "Globals are good!". These essays are not for the likes of him.

Here are some aspects of Software Philosophy:

  • Language Independent

You can use these ideas in any language. No need to know any syntax or semantics. I will use Perl and pseudo-code in examples but you can easily translate those to your favorite languages.

  •  No Algorithms

This is not about efficiency, O(N) theory and such.

  • Easy to Implement

You can incrementally add these ideas as you want. Some are really just tiny tweaks on how you think when coding.

Here is an important point: There are no rules or requirements in software philosophy. This is not an anal agile system with daily 4am boring meetings and twice on Sunday. You can pick and choose these concepts (of a plan) and integrate them into your work. Your code will improve and you will have a happier life. If they don't work for you, then I will pay for your colonoscopy as your rectum is occupied by your cranium.

Start by taking the software philosophy quiz.  The quiz is designed to tickle some of your synapses and rearrange them so you will see what is actually the important human side of code. It is only 3 simple questions plus a bonus one and it should only take you a couple of minutes to do. Try it!  You'll like it! (2 points if you get that reference). If you like this, then proselytize the ideas to your flock.

Essay topics will become live links when published.

Please put feedback and comments on this blog so they don't get lost in other media. 

Software Philosophy Quiz

Print Rarely, Print Late, Print Never

Eschew Else

Goldilocks Principle

White Space is Your Friend 

Why do we use Subroutines?

What is an Object?

What is a Universal API?

Module Design Strength

Module Connections Strength 

The Marriage of Event Loops and Kernel Threads

Table Driven Design

Vertical vs Horizontal calls

All Programs are Essentially ETL

How to Layout a Program

The Best Debugging Tool

 A Rose ...

Isolation

A-Z Skeletons

 

 

  

 

 

Comments