What's Wrong With Software Development
One of my co-workers on the OptimalJ side of the company (I won't hold that against him) posted a few questions about why software development is so hard and what is wrong with software development today (here)
His premise, which I agree with, is that most software problems are actually rather easy, so why is it so hard to develop good, maintainable, quality software?
I've had this discussion a number of times with coworkers. In my experience there are two very divergent views:
- Software is easy
- Software is hard
Pretty cut and dry huh?
I think your point of view has a lot to do with your background; what challenges have you faced, what were your successes, and what were your failures. The people who say software is easy are those who tend to have a deeper background and more years in the industry. They understand that any individual problem isn't all that difficult. The software is hard group tends to be people who either don't have a lot of experience in different environments, with different problems, or simply don't have the skills/knowledge they need.
So what do I think is wrong with software development
No two developers have the same skills
This seems like another one of those obvious things, but time and again I see/hear about managers assigning tasks to developers who simply don't have the experience/skills necessary to adequately complete the job. Developers have a very hard time admitting they are over their head. After all, if you were hired to do a job and you feel like you aren't doing what was asked, why would the company keep you around?
Some developers are just in it for the paycheck. Let's face it; software development is a demanding profession. You have to be willing to dedicate time and energy to continuing education. Some people either can't or won't make that commitment. They just take their set of skills and just make do as long as possible until the company "retrains" them or lets them go.Skills/Education
I think too few companies pay enough attention to the continuous learning that is necessary to keep your development team up to date with changing technology. The assumption that informally exists is that developers are required to handle upgrading their skills on their own time. I've been in jobs where I was given the freedom to constantly upgrade my skills, investigate new technology and in general keep up. I've also been in the exact opposite jobs as well. According to my wife I spent far too much time on the computer (at home) keeping up to date. I think I don't spend enough, because I'm constantly reminded about how much I don't know, or don't know well enough. I've met people who dedicate every waking hour to their skills. I have a family, kids, a wife, and 'a life'. I'm not going to sacrifice being there to throw the ball with my son just because I need to learn about Master Pages in VS 2005. I've seen people who have put their job ahead of their family and I think it very negatively impacted their relationship with their wife and children. I won't do that. I think companies must dedicate time/resources [e.g. money] to ensuring their developers remain competent. The problems to be solved tend to stay the same, but the tools are constantly changing. If you can't adjust your approach to these problems to take advantage of the newest tools/technology, eventually you are going to pay a heavy price.
Management
Jon asks if the problem is that too few managers truly understand software development. I think there are certainly a fair number of managers that fall into this category, but I also think that is the easy answer. A more common occurrence seems to be that the front line managers understand the issues involved, but they are pressured by their managers to "make it happen". I believe it was Harry Truman who had a sign on his desk saying 'The Buck Stops Here' with the implication being that all decisions, good and bad, are his responsibility. Today, I think, too few businesses are run that way. If you fail at a software project you are in jeopardy of losing your job. In that kind of environment, no one wants to take the responsibility. If software projects were "owned" by the company officers (the VPs and SVPs, etc.) then I think they would take a more active role in understanding why things go wrong and work towards correcting the problem at the company level. Line managers wouldn't feel the immense pressure to get the job done no matter what and better quality software could be written.
Does this apply to Compuware? My honest answer is I don't know. I haven't been with the company long enough to form a solid opinion. No company is without its problems/issues. I think the more important question is: does the company know there are issues? In the case of Compware I would say yes. There are some very positive things going on to help promote better software development and there is recognition that everything isn't perfect. In my experience that makes a great place to work.
Jon posted a few other points, which I encourage you to read and think about. What are your opinions on the matter?