How to Read Code (Eight Things to Remember)

“I hate reading other people’s code” is a common refrain among software developers of all experience levels. However, it’s a necessary skill, especially for developers rolling onto existing codebases, and if you approach it with the right perspective and the right tools, it can be an enjoyable and enlightening experience. Read more on How to Read Code (Eight Things to Remember)…

How We Used a Week of Spikes to Map Out a Feature

For those uninitiated to agile software development, “a spike solution is a very simple program to explore potential solutions” to a particularly challenging problem. This term and definition comes from XP Explained by Kent Beck, and it is still as relevant today as it ever was.
Read more on How We Used a Week of Spikes to Map Out a Feature…

Why (and How) Developers Should Care about Design [Video]

Design is essential to software product development, and developers have a crucial role to play in good software design.

Atomic’s path to understanding what design does (and all the various activities covered by that seemingly simple word) began when our company was a few years old. We were turning out great code, and we were predictble with time and budget, but we’d started to notice that:

Read more on Why (and How) Developers Should Care about Design [Video]…

How I Learned to Love (or at Least Like) Pair Programming

Some people are naturally inclined to pair. Not me. My brain is all over the place when I code, so it’s difficult to focus energy on solving the problem at hand while explaining my reasoning and approaches to my pair.

This thing is, pair programming is a highly-regarded and widely-practiced convention here at Atomic. When I started here, I had never paired before. And I was quite surprised to see both how effective it was for others, and how difficult it was for me.
Read more on How I Learned to Love (or at Least Like) Pair Programming…

Ancient Stoic Wisdom for Writing Better Software

My time at a software company has shown me how much focus there is on the new: new smartphone and laptop models, new revs, new development boards, new languages, and so on. But what about the old? I’m talking really old, like “two millennia before the Unix-Epoch” old.

The Stoic philosophers Zeno of Citium, Epictetus, and Seneca spoke at length about logic, control, and truth–all terms we discuss as programmers, but with very different meanings and applications. Still, Stoic works have lasted for thousands of years. What lessons do the ancient Greeks have for an industry with an obsession for the newest, latest thing?
Read more on Ancient Stoic Wisdom for Writing Better Software…

Three Attitudes that Lead to Maintainable Code

When writing code, there are many specific principles that aim to make your code more maintainable: DRY, the single responsibility principle, the Law of Demeter, the open/closed principle, etc. These are great principles to follow, but it can be difficult to keep all of them in your head at once. I’ve found it’s often easier to keep a few broader ideas in mind. Read more on Three Attitudes that Lead to Maintainable Code…

Diagrams as Software Documentation – When a Picture Says it Best

Software documentation is all too frequently overlooked or becomes irrelevant, lost in the inevitable wave of change. Accurate documentation requires not only thought and execution, but maintenance, as reality changes.

One form of documentation that is too frequently overlooked is a diagram. Read more on Diagrams as Software Documentation – When a Picture Says it Best…