Pedersen’s Software Development Principles

Over the last year I’ve had a couple of opportunities to teach the fundamentals of Software Engineering over the course of a week.  Each week I wrap the discussion with these 7 “principles” which I’ve found to be very consistent across my career.

  1. (Pedersen’s Conjecture) All software design problems can be addressed by the correct application of the principles of coupling and cohesion.
  2. Powers of 2 just work better with computers. So when you have the opportunity to pick a number, use a power of 2; unless you’re trying to break something, then use a power of 2 +/- 1 or 2.
  3. Unit tests are not a burden, they are the demonstration of professionalism that is all too commonly lacking in our peers.
  4. The desire to optimize anything should be treated as a cold symptom. You should get some sleep before continuing down that path.
  5. Any magic used to make a developer’s life easier always breaks in a way and at a time as to make their life much worse.
  6. There are 100 ways to do anything in software; 2 are known good, 2 are known bad, the remaining 96 are all arguable.
  7. A test that is intermittently failing will change to constantly failing immediately before any deadline thereby causing you to spend time fixing the test now when you can least afforded to so.

Tags: , ,

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: