Consistency: Your best friend or your worst nightmare

Consistency: We developers love it don’t we?

We come up with beautiful architectures making sure everything is consistent. If we use a service in one place, we’ll use it everywhere. If we have a ViewModel for showing data, we’ll use a ViewModel everywhere, even if it’s not needed. Because we need to be consistent.

Partly I guess this is motivated because we think that being consistent helps ourselves and teammates understand what’s going on, even if that drives us to YAGNI and a series of WTF’s of why we did something that’s not required. We do it to be consistent!

It might seem inoffensive, but consistency can be damaging. It leads us into trying to homogenize everything despite it not being the appropriate approach in many cases.

So next time someone asks:

image9ba8

…it’s cause we like to be consistent!

Breaking consistency when required not only lowers levels of WTF’s, it can even help scalability!

5 thoughts on “Consistency: Your best friend or your worst nightmare

  1. OJ

    Well said mate. My thoughts exactly (plus a but more). I think it may go a little deeper than that. While we seem to have an addiction for consistency I would say that in many cases the reason why we don’t see a mixture of back end stores in a single app is because the dev doesn’t even know it’s an option. It’s not something they think about.

    In my time as a dev never once have I worked with another dev who has suggested using multiple data stores, each containing data which let’s them solve their part of the problem. It’s a shame. Eveything time I have suggested it I’ve been shot down by a room full of devs. Most laugh as if I’ve said something incredibly stupid. Sad really!

    Nice blog post and thanks for taking the time to write it!

    OJ

    Reply
  2. hadi

    @OJ

    We’ve been so focused on pushing technological limitations over to business needs for so long, that at some point, things switched and now we think businesses need those limitations. Having one consistent database comes from our incorrect belief that businesses need up to the minute consistency.

    Reply
  3. Simone

    I’m currently fighting with that same DB approach right now: we have different apps in the same database.
    OK, all the apps have the same connection string, but versioning is a nightmare as some table are updated, others are not, it becomes difficult to promote things between the various stages of the deployment chain.

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s