Software and software development are pervasive and omni-present today – across domains, technologies, geographies. A lot of role change has been happening in software teams including tighter collaboration amongst developers and testers. However, one question that lingers, as millions of lines of software code gets churned is “Are developers able to do justice across all attributes of product development?”. Software development is not just about core functionality of what the software is to deliver on, but increasingly other aspects including performance, security, usability, accessibility, linguistic aspects etc. Ignoring some of these early on in development can turn out to be very expensive if not impossible to achieve with existing architecture down the line, potentially impacting product acceptance not just overall development costs. When it comes to product architects as well as software testers, we often see both generalists as well as specialists – for example, you have core functional testers and ones that specialize in automation, performance, security, accessibility testing etc. Similarly you have security architects, performance architects who focus on those aspects of the product.
Often times a developer assignment is more module centric – you have developers tagged to specific features rather than attributes. For example, we recently did an accessibility test pass for a client which was a 10 day assignment. They were very happy with our outcomes and are working on fixing the defects we reported – they mentioned it would take them about a couple of months to get them fixed and turn in for a round of regression testing. If you closely look at why it takes so long, multiple reasons show up – it is not just the nature of software development where defect fixes touch upon several areas of the product and need to be carefully done, but also the fact that the team has to now circle back to the entire product team including its design team – herein the question of specialization amongst developers does re-surface given the categories of specialization both amongst designers/architects and software testers.
There are of-course certain areas of specialization such as backend developers, front end developers, database developers but not so much at an attribute level such as security and performance developers. While one may ask if they are able to do justice as generalists, I believe this is where a couple of things become note-worthy. Traditionally, the developers are adequately being supported by the specialization that architects and testers bring in, making their job more implementation in nature especially for these non-functional areas. Secondly, closely collaboration amongst these other functions, and a constant awareness of these areas, makes developers more capable of developing robust code that focuses not just on functionality. Gradually security, performance, accessibility testers are also increasingly offerings suggestions on fixes, making the job of the developer more straightforward. While these do not dismiss the need for developers to focus on these attributes, it makes it a more just and team driven exercise rather than having a heavy weight to be borne by just the developers.