In most corporate technology organizations, there are three basic groups: desktop support and help desk; networks and systems administration; and software development. Most staff in a company understand what the help desk does -- they fix your desktop machine when it crashes. The same goes for the networks and systems people -- they make sure that your connection to servers and the Internet stays solid.
But when you get to software development, the business people in your organization start wondering, "What in the world are these people doing?" You can see the help desk fixing desktop machines and you can watch the networks and systems staff work with servers and switches, but how do you observe the building of software? As a manager, how do you make sure that your software developers get the real recognition they deserve when all of their work is virtual? In many projects that involve building substantial back-end "plumbing," it's nearly impossible to demonstrate the scope and detail of the work to a nontechnical business person. This is the world in which developers operate every day.
From where I sit, the software developers in any organization are often the true technology heroes and the people who face the longest odds in almost any project. In his book, Dynamics of Software Development, Steve McConnell writes that "more people have ascended bodily into heaven than have shipped great software on time." Fundamentally, the software developers in your organization do what they do because the solutions your organization needs do not exist in the commercial world. Software development in the corporate environment is a constant battle to build something out of nothing. Minute details in business requirements are glossed over during the early stages of software development projects, and the developer charged with building a product must fill in all the blanks to create a working product. As a former developer myself, I know that the computer will only do what you tell it to do and nothing more. In her book, Close to the Machine, Ellen Ullman describes the developer dilemma with such clarity that I'm compelled to quote it at length here:
"Human thinking can skip over a great deal, leap over small misunderstandings, can contain ifs and buts in untroubled corners of the mind. But the machine has no corners. Despite all the attempts to see the computer as a brain, the machine has no foreground or background. It can be programmed to behave as if it were working with uncertainty, but -- underneath, at the code, at the circuits -- it cannot simultaneously do something and withhold for later something that remains unknown. In the painstaking working out of the specification, line by code line, the programmer confronts an awful, inevitable truth: The ways of human and machine understanding are disjunct."
If art is making order out of chaos, then software developers are artists at the highest level. Sure, you will hear about advances that promise to make the life of the software developer easier -- object-oriented programming, integrated development environments, and now Web services -- but walk into any development shop and the developers stare intently into their monitors, facing conundrum after conundrum, but still fighting the machine and bending it to their will. Developers know that no technology will take them to the promised land that has been promised many times, but faith in his or her ability to conquer the machine drives the sometimes Sisyphean task.
Thank you, developers, for pressing technology forward in the face of constant change. You're the heroes of technology.