The software world is changing. Different skills are required. Different opportunities are now available for software professionals. To get a handle on the changes, it helps to consider the dimensions that are critical in the design, development, testing and implementation of software. A simple two-dimensional picture was at one time adequate.
Impact can be viewed as a measure of the value of the software. The cost of failure, seen in loss of dollars or even lives, would be one measure of impact. The software professional’s job became more difficult and challenging as constraints or the impact of the software increased.
The ideal for many years was that any system, which met all of the constraints, should be fully acceptable. We struggled to get all of the requirements and specifications down on paper.
Our objective was to describe the constraints with sufficient rigor, precision and completeness that there would be no doubt or question about exactly what was required.
Considerable progress has been made, but the results have not always been positive for software professionals, or for those using the software produced. The first problem is that any competent programming professional should be able to produce acceptable software when provided with complete requirements and specifications. There should be no negatives to outsourcing to a low-cost supplier, specifically one that employs competent professionals in countries with considerably lower salaries.
That kind of outsourcing does not always go down well with Canadian software professionals who, as a result, find themselves without a job. It’s actually not all that bad. This form of outsourcing is really only a short step away from full automation. If there really is no doubt or question about exactly what’s required, then it should be possible to automate all of the required work. That’s begun to happen. Many of the outsourced jobs were due to disappear anyway.
The big problem with this picture is that it ignores the subjective, intuitive and creative requirements that are increasingly important to the success of software development. It’s not just a question of whether the software does the job, but whether it does the job in a way that is pleasing and attracts new users. It’s not just a question of whether it is possible to correctly use the software, but whether users will be encouraged and guided by the software to proper use.
One suggestive way to represent these new concerns is to divide “constraints” into the old “hard Constraints” and new “soft constraints.” This parallels the distinction that author Dan Pink made between left and right brain activities in his book: A Whole New Mind. Indeed, the software professional now faces a dual challenge. He or she is expected to use established best practices to meet the hard constraints imposed on new software.
But real success requires that both the hard and soft constraints be met.
The good news, for Canadian software professionals, is that it’s practically impossible for a remote software professional to understand enough about the context of use to meet these new soft constraints. It’s quite difficult and dangerous to outsource development when soft constraints are recognized as critical to success. Some Canadian software jobs will be secure, but the nature of those jobs will change.
How should software professionals prepare for this new world? Read about creativity. Read about psychology. Study marketing. Study user-interface design. Study what is required for product success. Cultivate your right brain and it can be your ticket to continued employment as a software professional.