原文链接：The best approach to software development
Dogmatism, religion, context, curiosity, inquiring mind and pragmatism
My main criticism here is about how the vast majority of developers react to all these things. It is not just because someone, somewhere wrote a book, recorded a video or gave a talk in a conference about something that it will make that thing right, in all contexts. Quite often, we fail to question things just because the people promoting it are relatively well known. We fail to understand the context where a methodology, technology or technique should be best suitable for. We fail, quite often, to use our own judgement because of the fear to be ridiculed by our colleagues. We should stop being dogmatic and religious about things. This just leads to stupid decisions. Doing things for the sake of doing or because someone else said so is just plain wrong and stupid.
Being a good developer means to be inquisitive, curious and pragmatic. Never religious. Never dogmatic. Curious means that we should be eager to learn about all the things mentioned above and many many more. Inquisitive means that we should investigate and question all the things we learn. Pragmatic means that we should choose the right tools, being technologies, methodologies or techniques, for the job.
一个好的开发者意味着喜欢提问、有好奇心并且务实。从不虔诚、从不教条。有好奇心意味着我们应该渴望学习上面提到的所有东西，以及更多其它的东西。喜欢追问意味着我们应该调查和质疑所有我们学习的东西。务实意味着我们应该为了工作选择正确的工具 —— 技术、方法学或技巧。
Whenever you see people saying that we should or shouldn’t do something, ask them why. Ask them about the context where they tried to do (or not to do) what they are saying.
Software development is not the same thing of producing cars. Once the car is ready, you don’t go back to the manufacturer and ask them to add another wheel or put the engine somewhere else. Developing software for expensive hardware is not the same thing as developing a simple web application with two pages. Hardware has an specification that you need to code against. Quite often, you don’t even have access to the hardware because it is just not built yet. The cost of a bug in production is not the same for all applications. The cost of a few bugs in a social networking or cooking website can be very different from the cost of a few bugs in a trading or financial system processing millions of transactions per day. Working with a small team, every one co-located and with easy access to customers is very different from working on a project with 10+ teams spread in 5 countries and different timezones.
Read and learn as much as you can. However, don’t assume that everything you read or watch applies in every context. Make informed decisions and trust your instincts.
The bad news is that there is no best approach to software development. Maximum we could say is that there are certain technologies, methodologies and techniques that are more suitable to a specific context.