commentary In the ever-changing world of software, developers can ill afford to get stuck on one particular set of tools.

It takes many skills to become a good developer. On an individual level there are skills like debugging, fixing performance issues, motivation, stress testing, and so on. At a team level, a good developer will have documentation skills, be able to manage development time, unit test, and communicate well. At a judgement level, successful developers need to have the skills to determine how they talk to non-engineers, make the buy vs. build decision, trade off quality against development time, and decide when software is too immature.

While the above are just the tip of the iceberg for skills required for a software development professional, what is probably e en more important is a developer’s approach to solving tasks and projects.

I’m suspicious when talking to some developers in the community who say -language, tool, or platform X, Y or Z is the greatest”. It’s not because their personal opinion differs from mine, diversity is a good thing, but it’s more the particular approach to software development that worries me.

For example, if a developer was only to program in Java or C#, I’d say they’re making a horrible mistake. These programming languages might be very powerful (and similar) but neither are going to be the best fit for all projects; it could be simpler to do scripts in PHP, Perl, or JavaScript, than a full blown-language.

What has the potential to cause problems is that many developers get attached to solutions they have already developed, and like to work with the tools they already know and are comfortable with. As a developer becomes more experienced, they will start recognising common problems, and without thinking use the tool they already know to fix them. Following this pattern might make life convenient and lead to more work getting done with less thinking but is it the best problem solving method?

The dilemma with this approach is that it gets developers addicted to one set of tools. If the same toolset is used to fix every problem that crops up, it is easy to lose sight of what the real problem is and fixing it correctly.

If the IT world was a fixed environment, there would be little or no problem with this method. However, for better or for worse, the IT environment is dynamic and different problems arise and improved solutions to problems are always surfacing.

I’m not saying that every new tool, platform, or methodology is going to be useful, but the job of being a good developer is to take a look and evaluate new opportunities as they arise, not instantly dismiss them.

Learning new skills and techniques in software development is not an easy thing, in fact it is downright difficult, there is no denying that; it takes time, money, and patience. However, it’s restrictive to be too fixated on one bit of code, methodology, programming language, platform or thinking the world is static.

To put it simply, a good developer needs to be flexible with their tools, and ready to throw out old ideas for new ones. It will involve coming out of your comfort zone and out of the idea of being an expert that uses tools to solve problems to an expert that solves problems and then uses the best tools available for a superior result.