Skip to main content Link Menu Expand (external link) Document Search Copy Copied

Something I always had drummed into me when studying computer science was to always use the right tool for job. To back that up we used different toolkits in different programming languages, some of which used different paradims, on different operating systems within different methodologies… You get the picture.

Since then, the reality of corporate funding and deadlines kicked in. This means that you can’t always spend the time to analyse and choose the best tool for a particular problem let alone actually spend the time to get back up to speed with it if you’re a bit rusty or actually learn it from scratch if its new to you. All too often a solution is chosen because its what we’re most familiar with. Now I know this is done for good reasons like the following:

  • Keeping training costs down.
  • Using the team's strongest skills.
  • Ease of recruitment using a short list of required skills.
  • Using proven technologies that aren't just a fad at risk of fizzling out.

But, even though there’s no denying that the .NET platform is extremely powerful, I can’t help thinking that C# and SQL Server have become my hammer and every problem my nail. So, I’ve felt better recently that I’ve been able to change this both personally and to a small degree in my professional work with the following changes:

  • A custom C# software build tool is in the process of being replaced by MSBuild scripts.
  • A custom C# install tool is in the process of being replaced by Powershell scripts.
  • Some custom binary protocols are in the process of being replaced with standard ones like HTTP and JSON based web services.
  • I'm learning Python, PHP and Sqlite (possibly moving to MySql later) for use with a Raspberry Pi running Linux.

If nothing else, its good to continue to learn new things and move out of your comfort zone so at some point I’d also like to find the time to throw in a couple of paradigm changes too like functional programming, NoSql databases or possibly even try out some cloud technologies.