Real World Data

When you’re developing an application, it can sometimes be difficult to get data from the real world that matches your data model. Instead, all you are given is a schema or spec for that data an...

Testing Your Own Code

I’m sure you’ve heard people say that developers are not good at testing their own code. I feel like people believe this to be an axiom; an underlying and fundamental principle of software...

Infinite Loops

Entering an infinite loop is one of the worst ways a program can fail. It may not be as insidious as a bug that subtly corrupts data, nor as attention-demanding as an exception being thrown, but like ...

Estimates

Estimating tasks is hard to get right. I’ll probably blog about this again in the future, but for now I’m going to give my current thinking. You’ll hear lots of opinions if you talk ...

Doing Things Quickly

At virtually every job I’ve ever had, managers want my tasks done quickly. Yesterday, usually. The faster the better. Sure they pay lip service to making sure that it’s done correctly, but...

On Casting

As programming students, we are taught how to cast types as rote. In none of my courses was I ever taught that casting was necessarily a bad thing. In fact, C++ even has several keywords just for cast...

Expressiveness

I was thinking the other day about magic numbers. I’m sure you’ve come across them. In fact, I’m pretty sure you’ve created them! Everyone who programs has. It might be a value...

Learning to Delegate

Learning to delegate is one of those things that you don’t really need to do much at the beginning of your career. And since it’s not (rarely?) taught in school, it’s something you l...

Code Reviews

Last night I had a dream that I was performing a code review for someone. Keep in mind that browsers like Chrome, Firefox and others use an integer to represent this, but Internet Explorer and a brows...

Optimizing Too Early?

For years I’ve been in the camp that optimization of software should come towards the end of a project. Build the software, profile it, then fix any outlandish problems. And that has largely wor...