When we choose a language/framework/platform to start a new project we usually think that we'll have all the tools that we need. False. Doesn't matter what we do, we'll always need a new tool that doesn't exist in the market to solve some problem.
Ten years ago I was working in a company using C/C++ in a cross-platform product (Windows, Solaris and Linux). I though that I would find absolutely anything I would need "I'm working with C, everything is available" And I was almost right, I found almost anything I needed, but almost none of them were cross-platform. At the end of the day I needed to create my own cross-platform API.
Six years ago I worked for another company where we worked mainly with Java. Then I though "Great, Java is cross-platform I will have no problems" you know what? I was wrong. We were mainly working with code stored in an Oracle Database Server, together with thousand of string literals for the User Interface in multiple languages (Spanish, English, French, German, ....) And we also wanted to move from Java 1.3 to Java 1.4 (I know, but was an enterprise system) On top of that there was no way of compiling everything, since the code of every single operation was stored in the Database, so no real source files were available.
So at the end of the day I needed to create a data mining tool to spell check all the strings from the Database, also was capable of retrieving and compile the code of every operation to check if it could compile properly and detect deprecated code (so I could simulate the migration to Java 1.4) and also look for other potential problems merging my tool with FindBugs and CheckStyle.
Four years ago I started to work for my actual company. There I was expecting anything. The main language was Tcl/Tk. I was wrong again, now was a matter of creating almost any tool that I would need, since Tcl is one of the less used languages in the world and I'm working in what's probably the biggest application wrote with it.
What have I learned from all these cases? Doesn't matter which technology do you use, at the end of the day you'll need to write some tools to solve unexpected problems/situations.
And don't be lazy about it. These tailored tools will always help you, so don't leave them for later.
See you soon.