There is a recurrent theme that I see in blogs and books where it is stated that programmers have to open up, broaden their horizons and become more interested in the business perspective of software. Kent Beck dedicating Extreme Programming Explained goes: "Without you, this book would still be about programmers hiding in a corner. Without you, I would still be one of those programmers."
Dave Thomas, with usually very utilitarian views on our careers as software developers, also consistently encourages his audience to take into account the big picture and invest in our personal education and knowledge.
I'm sure this trend is nothing new but it's been very visible recently in the agile movement in general. A recent book along this trend is Chad Fowler's My Job Went To India. Its second chapter bears the title "Coding Don't Cut It Anymore". This idea of opening up is a good one and is usually well received. However, I feel that the direction in which we need to open up is often implicit in most texts. This is unfortunate as I believe this direction should be the result of a conscious decision.
There is no question that we need to be more than programmers. The mere will to write useful software needs us to be more than coders. However, I need more than the proposed, and dare I say obvious, solution. I would paraphrase this solution like so: we need to build a bigger role for ourselves by learning a few things from the way our organizations work and pay more attention to the customer's needs and the business value of our product: software.
Chad Fowler wants us to ask ourselves these questions:
"How much value did you produce last year? What was your positive impact on the company's bottom line? What did you give back? How much money did you cause the company to save? How much more in revenues did you contribute?"
or to follow the wave in search of the next big thing:
"Ten years ago, you would have been surprised to find out just how big object-oriented languages with garbage collection would become. But, there were definitely signs if you were watching. Ten years from now, who knows what the Next Big Thing will be? You've got to keep your eyes and ears open."
The shortcoming of these propositions is that their benefits are not distributed equally. Really, those solutions turn out to be very good for your company and your personal gain is only marginal. How to align the employees' incentives so that their actions benefit the company is a special case of the principal-agent problem. This is the one big problem we should be working on inside our organizations. Here is the spoiler though: this problem is only truly solved if you start your own company.
Short of doing that, there are lots of ways to pick up the slack and "open up" outside of our organizations. Open-source projects are an easy solution, you're not an "agent" when you labor out of love. This point is actually discussed in Chad's book so I will skip it. Community-oriented services are another solution: projects like the OLPC are using technology to respond to social problems and engaging programmers in their communities. Other than that, lots of issues are being publicly debated and it is our duty to understand them, if not take part in them. The copyright laws are completely out of touch with our everyday behaviors, how can we convince the politicians to work with us? The creative commons and copyleft licenses are trying to address problems with the usual licenses, how are they succeeding? How are they failing? Network neutrality boosts each citizen's right to unbiased and unrestricted information, that's a good thing but how do we do that without stifling investment and availability? Kiva.com offers microfinanced loans to people in need, how else can we harness massive audiences for the good of the poorest?
Another way to open things up and become more well-rounded is to mix disciplines. Common sense and general resourcefulness dramatically increases with the number of fields we can master or even just be interested in. This approach has known a lot of successes and will know many more. For instance, applying concepts from biology to programming problems led to genetic algorithms, ant colony optimization, agent-based modeling, etc. What else can we mix and match to increase the value of the whole?
If we do value individuals over processes and collaboration over contracts, I believe we should pay more attention to how software affects our communities. I believe we should pay more attention to how we can transform our organizations to the employee's benefits, not the other way around. Over the span of our careers, we will have many jobs and many employers. I'm only 25 and I've had 5 employers -- double that number if we are counting jobs outside the IT industry. This kind of track record is now the norm. As software experts and citizens, the only innate responsibility we have is to people and software.