Archive For The “Fundamentals” Category

DDD: Questions around ubiquitous language

What happens in situations where the developers and the business don’t agree on the terminology — the Ubiquitous Language — of a system? This post was inspired by a blog post by Greg Young, which was in turn inspired by a question on the DDD mailing list. Here are some of my experiences where this […]

Read more »

Another argument in favour of TDD

An interesting observation came up at work the other day, while we were discussing developer working habits. Say you’re adding a new feature to an application, that takes 2-3 days to develop. If you don’t write any unit tests, you have no way of knowing if any of your code works until you’ve finished everything, […]

Read more »

Object-oriented basics: single object or collection scope?

Here is a contrived example of a common SOLID violation you might see. Can you spot it? Except in trivially simple cases, there should always be a class boundary when shifting context from coordinating a collection versus performing actions on a single object. The class above is violating this rule — it knows how to […]

Read more »

How to lose traction on a personal software project

So you’ve started writing your first program — great stuff! Here are a few tips and traps to watch out for along the way. Long periods of time when your program doesn’t compile and/or run at all You enthusiastically start work on some big changes (e.g. re-architecting your application), but stop because you hit a […]

Read more »

Cargo-cult commenting

Currently I am responsible for maintaining a big legacy .NET ERP system. It’s plagued by something I like to call cargo-cult commenting — source code comments that are ritually included, for some reason, but serve no real purpose at all. These are the sort of comments that: Are written for aesthetic reasons more than anything […]

Read more »