I recently returned from a short sabbatical, the purpose of which was to recharge my batteries, refresh my mind, and ponder my goals. Some of my friends asked me if the sabbatical was the first step toward retirement. I told them that I wasn’t going to retire until I was done meeting my goal of improving the profession of software development.
We live in a complex society where software is increasingly used to improve efficiency and create connectivity. Thanks to built-in software, John Deere tractors, that iconic symbol of the working farm, don’t need a farmer in them anymore. Software, as the last scalable solution to many complex problems, holds great promise—as long as it works.
After my return, I was at a meeting with fifteen of the most skilled software developers I know. At one point in the discussions the developers were disagreeing about the definition of a unit test. Opinions of exactly what a unit test is ranged from a test of a unit of code, to tests of functionality. As I listened to the discussion I thought, if these people can’t agree on what a unit test is, how can other developers know what to do? As I got on my plane to return home to Boston from this meeting, I overheard the pilot telling the copilot to “just reboot it.”
One of the most rigorous approaches to building quality software is the software product line methodology (http://www.sei.cmu.edu/productlines/). Continental, an international automotive parts supplier, develops subsystems using this methodology. I recently bought a Volvo XC70, one of the first vehicles with Continental’s safety software.
I was particularly looking forward to being able to test the collision warning subsystem, part of the overall safety system. Potential hazards or obstacles are identified by the subsystem through cameras mounted on the front of the car. The cameras provide views at cross-traffic at intersections. I live in Boston, where in the wintertime mounds of snow often block visibility. I confidently pulled up to one such blind intersection. The cameras correctly displayed cross traffic … until a message was unexpectedly displayed, blocking out all video. The message stated, “Difficulty Connecting with Cell Phone … OK or Cancel.”
Sitting in the car and looking at the message blocking the screen, I was reminded of my friends’ question regarding my retirement, and my goal to improve software development. Even with as far as we have come and the advances such as the software product line methodology, I don’t think we are “done” yet with perfecting software, and that I have a long time before retirement.