Skip to content


Lessons (re)learned

Every now and again I am reminded of certain software development lessons I've already learned and, for reasons I'm yet to document, I keep re-learning. Groundhog Day feelings.

Writing these lessons down is my attempt at retaining this knowledge long(er) term; to reduce the time spent going in circles only to learn the same lesson again. When the code is giving us the same ol' hints, we, most certainly, can apply the same ol' techniques.

There are overlaps with common code smells, well known good practices and other practices. I don't mean to give them new names or anything. Instead, I want to put them words that I can refer to later and quickly remember.

I'll organize these lessons in a series of smaller, focused posts, and I'll try my best to link to where I believe I first learned about them. Some of them are directly related to one another.

This series is somewhat open-ended, as I intend to keep making adjustments and adding new lessons. So, without further ado, lets get to the lessons:

  1. No Primitives
  2. Isolate Nondeterminism
  3. Reduced Integration Surface
  4. Inject Dependencies
  5. No Getters Nor Setters
  6. (planned) Own Your Interfaces
  7. (planned) Only One Return Type
  8. (planned) Avoid Private Methods