Saturday, September 1, 2018

Hero, Hero

James and his tribe were on a long journey across harsh and varied land.

James was stronger, faster, and more adaptable than the rest of his group. So he took on a position of natural leadership. He was never designated the leader. People just followed his advice and relied on him for help.

Friday, August 31, 2018

A Performance Story from an Old Job

I used to work at a place called Rogue Wave Software.

It was my first real job and a fantastic place to cut my teeth. Even though it was the '90's, the developers there had a better concept of what software design was than a lot of the developers I've met, since.

One little story that still amuses me to this day involves one of their products, DBTools.h++ (later SourcePro DB). DBTools.h++ had a very object-oriented design. Even today, that would be true but it was especially true at the time.

This anecdote is about how that design held up to other approaches with regards to performance.

Thursday, August 30, 2018

A Quick Exploration of Encapsulation

A long time ago, I had an argument about C++ with a coworker. He said that a private field could not be accessed in C++ because that's how the language works. I argued that it could because it was all just bits in memory.

He was adamant in his assertion and the only way to win the argument was to write a little patch of code that took a pointer to an object, converted that to a void* pointer, converted that to a char array, and then poked bytes into a private field using the char array.

Wednesday, August 29, 2018

Code-Continuity

The the Coder's Code tells us that we should never make code worse. One way to support that idea is to make sure that all your design changes do not affect behavior in any way.

I've believed this in some form or other for a while but, recently, I've made a new friend who has taken it to a whole new level. His name is Eran Pe'er and he owns a the consulting company DevCraft.

Tuesday, August 28, 2018

The Pernicious Racing Analogy

Ever heard one of these?
"Let's get it right this sprint."
"Let's get to the finish-line."
"It's a marathon, not a sprint."
How about it's not a race at all?

Monday, August 27, 2018

The Future-Self Test

If you're looking for some kind of gate you can insert into your development process to try to drive code quality in a positive direction, I submit this: the Future-Self Test.