Avoiding Complexity In The Software Process

ComplexityOne of the greatest enemies of software is complexity, since it invariably leads to Software Entropy. It increases the cost of producing software. The good news is that we’ve gotten better over the decades at assuring best practices steer away from complexity – but sometimes people who implement the software processes themselves do not understand the why of things and create complexity in the software process itself – and even create new and interesting problems.

A simple thing like code reviews can be made complicated by different disciplines sharing the same space. Let’s say that you have code that uses stored procedures. Clearly, you’ll want a DBA doing the review of the stored procedure(s) and table changes – you might not want to call it a code review, but it is a review of a sort. Would you create a new column on your Agile board to track DBA reviews? I would hope not, if you’re using a decent tracking system. You can expect a DBA to make loud noises about them being so different, but if you take a step back… it’s just another type of review that can stay on the board without adding complexity to the board.

Further, differentiating that from the other reviews almost always assures that the code review and the review of the SQL related code is done separately – and since they will go into Production together, it would make sense that the reviews be synergistic. The Software Engineer and the DBA should review together, not separately, so that there are no assumptions made. The short term ‘gain’ of doing them separately results in a potential loss of quality.

How could it be done? Sure, the DBA needs to know to do the review, but that can be done by assigning two people to the review (a DBA and an Engineer) or creating two linked tickets for the same issue and making sure that the review is done at the same time. Simplify, simplify, simplify.

Simplify. It will take a little more time, but it will avoid quality issues – and keep your Agile process more simple.

 

 

Advertisements

What Society Wants.

Digital Divide; Society Divide.Since I’m writing about technology related things, it makes sense that I talk a little about society. After all, technology is a tool that society uses for a variety of things – from million dollar lawsuits over flatulence based applications to ‘sex beds’ in Second Life having copyright issues to… oh, things that very few people see as meaningful. As a society, we’re kind of like kids and we want to play, eat sweet things and have everything catered to us. No, maybe not you. After all, you’re reading this… but take a look around at what is popular. Take a look at

That’s all open to argument, I suppose – I’m a bit cynical of late – but the point is that as a general rule, society pretty much tells us what it wants from technology. It wants stuff that is easy, that is fun to use, allows us to be healthy while tasting perfect, that boosts our sex appeal even when everyone else has it, and so on. This is a bridge a bit far for us, so let’s keep it simple.

We want to have tools that allow us to do things with less effort. Plowing fields? Yeah, got a tool for that. Shoving metal pieces into wood, or even twisting them? We have tools for that. Boosting your social media presence? Well, we allegedly have tools for that.

So what is it, exactly, that society wants?

Stuff that makes doing things simpler. And the stuff that makes doing things simpler should be simple.

And that requires a fairly high level of complexity to create it.

Behold, the cognitive dissonance of humanity.