... and why it's important to have the right tool for the right job
This is going to be a short story focusing on a point in my career that many developers have experienced and many more are going to experience sooner or later.
Let me start with a bit of context. I started my career in one of the biggest companies for 3rd party components for the .NET world. My role was as a software developer in the WPF (desktop) and Silverlight (web plug-in) division. I spent nearly 5 years in the same team, being witness to the fall of Silverlight, and the rise of all the cool web technologies, that now dominate the industry. Being oblivious to the world full of possibilities, that the web development offers, I used what I know for pretty much anything.
Unfortunately, if I put enough effort in the task at hand, my hammer always worked, even with screws. This meant that I didn't deem it necessary to learn something new or "acquire a screwdriver".
Fast forward a couple years. I take a project for developing and designing a scoring system, thinking: "Well, my hammer never failed me, I don't think this will be an exception...". This thought was very quickly proven wrong after I started working with a good friend of mine on the project as it was a bit too big to handle by myself alone. This was actually the beginning of SourceWeave, but that's a topic for another blog post. As I and Bozhidar started in the same company, but in different divisions, we both had a favourite tool that we used. I had a hammer (Desktop development skills), he had the Screwdriver (Web development skills). Turns out, we complemented each other skill-set pretty good and formed a team that could tackle almost anything.
Starting the project it became crystal clear, pretty quickly that just a hammer or a screwdriver, wouldn't be sufficient for the task. So we designed the whole system using our tool-set in the best possible way we were able. At every single turn, I was amazed by the easiness and fluidity that the web toolkit was offering for certain tasks. Sure, there were some that were far better off with a desktop implementation, but the most dynamic parts of the system were all done with Web. Why? Well for every single line of code written for a component in Web in this particular system, I would have had to write ten in order to accomplish the same result.
Even better. After hosting the app, every change was just a matter of a single page refresh.
This enabled us to be able to adapt to any change or requirement that was demanded either on-site or shortly after a competition.
This project was a pivotal point in my career as it opened my eyes to a wider world, which has since enabled me to learn how and when numerous other technologies and platform. This, in turn, has made me a far more valuable team member and professional. Plus... it was the start of SourceWeave as a company, which is an exciting ride of its own... Again a topic for another blog post.
Have you had an experience like that in your career? You can share it in the comment below. I am sure it will be an exciting read ;)