Use the right tool for the job
That is a quote I’ve heard all too many times during my career. In fact, I’ve been a strong proponent of it for a long time and with caveats, I still am. But, as with all things, it ignores the nuance of the world we find ourselves in.
At some point the term “sociotechnical systems” entered my orbit, I think from Charity Majors of Honeycomb. If you’re interested on reading more about sociotechnical systems, Paul Osman wrote a great piece on it. The simplest definition of sociotechnical systems I can think of is: people + technology. People build technology, it is an inherently social endeavour.
People are the reason why “use the right tool for the job” is great theoretical advice but poor practical advice. If using the right tool for the job was simple, we’d all be doing just that. Instead, companies (made up of people, for now) have to take into consideration their context. They have to consider a range of annoying questions like, “do we have the right institutional knowledge to use this technology”, “do we rewrite legacy systems in OCaml or only use OCaml for new software”, “can we afford to rearchitect this systems around this new paradigm”. At the individual level, you also have to ask yourself similar questions, even fun ones like “will this get me a promotion”.
People are hard. We all have different priorities, goals and incentives. Companies are harder. Over time they have built processes, they have good institutional knowledge of their domain and they have their own priorities. Sometimes, these priorities come with deadlines and deadlines come with their own set of trade-offs. All of this amounts to a context in which “right tool for the job” is often impractical. If you have a dev team with strong experience in Python and a 3 month deadline, you can’t just use another language, especially ones with steep(er) learning curves. You just use Python — it’s the best you can do given the constraints and environment.
Technology does not exist in a vacuum, we have to keep in mind the people who are building it, the environments they find themselves in and the constraints placed upon them. “Use the right tool for the job” dismisses this completely. If we rephrased it, I think we arrive at something practically useful
Use the right tool for you to do the job