Programmers Putting Other Software Personnel Out of Work

by Krishna on May 13, 2011

One software development trend that seems to picking up more steam year after year is the mainstreaming of technologies that aid the software programmer, but also encroaches on the territory of other software personnel. I view this as a good trend because it allows programmers to be more productive and deliver more quality out of the box instead of waiting for other people to complete their work and then having to integrate them.

Some examples:

Database developer/administrator: No more waiting for the DBA to write stored procedures. You can use your favorite ORM and access your data without knowing much SQL. With NoSQL, you don’t even need to worry (much) about table schema. Of course, if you have an established DBA in your company, this is an uphill climb. DBA want to write stored procedures because it provides “a layer of abstraction and more control over performance and security” (valid, but not insurmountable concerns). If you are starting a product / company from scratch, the need for a database developer is very low. And now, there are tools that reduce the need for many admins.

Graphics designers: With increasing functionality in CSS, powerful JavaScript frameworks and improved browsers, you can get a lot more done in code. For example, sometime back, you couldn’t get rounded corners without messing around with image editors. Now you apply a CSS property. Packages such as JQuery UI Themes, Yahoo! UI Library, etc. reduce need for designer time. A quality graphic designer can help you at the high-level, but you don’t need to go back repeatedly for simple stuff. Take a look at all the goodies here you can use to spice up your application with JavaScript.

Testers: Unit testing, which has probably displayed a few testers, has been around for sometime. But testing web UIs has traditionally been the domain of manual testers or automated testing tools. But now with programmer-friendly tools such as Selenium RC, within a few minutes, you can create an application in Java, Ruby, Python, Perl or C# to automate a web application and test its functionality on different browsers (IE, Chrome, FF, Safari, etc).

Most of the tasks shifting to developers are the low-hanging fruit that was labor-intensive rather than mind-intensive. By removing the easy stuff, the other software people are forced to improve their skills at the higher end.

For example, instead of wasting a DBA’s time programming stored procedures, the DBA could be more specialized in the specific database server technology and looking at ways of improving performance and security. We have heard nightmare stories of missing or corrupted backups even at large companies who can afford more and expensive admins. I suppose part of the problem is that the admins are pulled in directions that they don’t need to be. They should be left alone to be more involved in the critical tasks of server management, not distracted by the needs of some programmers.

Similarly, testers can spend time trying to devise ways of bringing down the system, instead of wasting time testing the regular flow of the application. Coming up with good test cases that can uncover bugs is an art. Also, testers can spend more time on tasks that really need manual effort, such as user interface testing. For example, are elements laid out in an aesthetic manner? Are they intuitive? There is a whole area of research in good user interfaces and reports that is only being exploited by highly paid consultants such as Jakob Nielsen and Edward Tufte. We need to bring some of that expertise to the average tester so that common issues can be captured.

All this is simply to say that like programmers, other people working in the production and maintenance of software applications also need to improve their technical skills so that they are not caught blind-sided by technological improvements that make them obsolete.

I agree partially with you.
It's true that a programmer, like a dba, must always improve his skills.
I don't think it's always true that a stored procedure, to use your example, can be replaced by a piece of software. The software is on a higher level respect to the database, and if you need to have extreme performances or have a complex logic the best place to put things is in the database.
As usual I think that one has to find the best solution for his problem, and he must be sure to have very expert collegues that can help him in all the aspects of the development and manteinance of his software.