If it has no function, why should we implement it?
<rant>
Recently I had a debate over the term non functionals and said that I would much prefer if we used quality attributes instead. There was some information about non functionals written up and when reviewing I gave the feedback that it had missed a lot of points, like accessibility, supportability and others. Sometimes I take a step back with these things and think how much energy am I willing to give to fight a battle. In this instance, we decided to keep the terminology non functionals as the ball had already been rolling in terms of discussing this.
From my point of view, the discussion was the most important point. Non functionals or quality attributes… They are basically the same thing, however, what I feel the problem is, is that non functionals gives the impression that it’s the functional or the non functional. The problem here is that to others in the business, it comes off as we do the functional side and then add on the non functional later. Sometimes due to delivery constraints, the non functionals are left out and considered to be done later….and often that consideration is totally forgotten about.
Instead what I think we should do, if we’re starting from scratch *and* we have the energy to. Throw out the term non functionals. Call it quality attributes or maybe as someone said to me cross functionals….anything that would promote the holistic view of what we’re doing. To stop the tunnel vision. To think more broadly about what we need to consider here to deliver a product that is not only functional, yet is secure, speedy and responsive, scalable, testable, usable, accessible, compatible, appealing and reliable.
So, back to the question — if it has no function, why should we implement it? When someone asks a question like this, flip the question completely around and ask from a different angle. What would happen if we don’t do this? How likely will it be to introduce a problem? What impact will it have on our customers? I find flipping the question and most importantly, finding the answer together. It’s a bit like mentoring where you are guiding them to find the answer for themselves, but also adding some coaching in where you’re sitting with them and teaching them what you know.
</rant>