Robert 的个人资料Rob Keiser照片日志列表更多 工具 帮助
9月6日

Software Development Failure

Software development is a combination of science and art. You have to create something out of nothing while keeping it within the confines of a platform or language. It is a process that is a lot like traversing a maze or herding cats. You have to take an idea and turn it into something real. Sometimes the process flows like a river from beginning to end seemingly willing itself to be. Other times its like climbing a mountain, you know it can be done, you just have to find the right path.

In almost every case you will have a constant companion, failure. Not the complete breakdown type, but the little blind alleys or rabbit holes that you go down trying to solve a problem. An idea that doesn't pan out or a process that is simply misconceived.

These failures are helpful on two fronts. First, they allow you to understand and better define the problem you are trying to solve. Second, they help you to understand more completely the nuances of the framework/language you are working with. It helps you avoid the same mistakes on the next project and makes you a better developer.

The real problem with failure are the managers who do not understand the positive benefits of failure. I'm not laying this all on mangers, we setup a confrontation by being overly optimistic about our own capabilities. But failures are a part of the process that managers just don't understand. They don't get the spectrum of failure possible - for them life is a pass/fail black/white proposition, if you fail you cannot pass/succeed. Managers live in a mostly static world; little if any change occurs. For them, you either know how to do something or you don't.

A developers world is more like riding a surf board. You can see the people ahead of you and you can learn from their mistakes and successes, but your wave will have it's own hazards that you have to conquer. You may make it to shore, but you will probably fail. So embrace your failures and do something that all good developers do, learn.