Choosing tools
There was a fun tweet circulating around yesterday:
You’re working on a frontend project. You can install max. 5 dependencies. Which ones do you pick?
— Kitze (@thekitze) July 19, 2019
Naturally, everyone weighed in with their tools of choice, and it’s of course fascinating to see what the frontend tooling zeitgeist is on July 19th, 2019.
Of course I was a bit cheeky with my response:
HTML, CSS, and JavaScript
— Brad Frost (@brad_frost) July 19, 2019
While it’s a bit cheeky, I also think there’s a deeper point to be made here. All that was given was “You’re working on a frontend project”, so all that can be assumed is that HTML, CSS, and likely JavaScript will be involved. This is a bit like asking:
You’re working on a home improvement project. You can choose max. 5 tools. Which ones do you pick?
Sort of depends on what the home improvement project is, yeah? If the gig is repairing the toilet tank gasket, I’m likely not going to need my circular saw. But what if I really love my circular saw?
Back to frontend project question that was posed, we don’t know:
- what type of frontend project this is. E-commerce? Blog? Brochure site for a pet shop? CRM? Social network? Banking software?
- who the users are. What are their goals? Where are they located? What language(s) do they speak? What browsers and devices do they use? Do they have access to 4G or 2G? What’s their digital literacy?
- what the environment is. Is this a brand-new concept being built from the ground up (I’m assuming that was the intention from the tweet)? Is it a big re-platforming project? Is it integrated with a company’s gigantic tech ecosystem? If so, what technologies are in play in that ecosystem?
- who the makers and maintainers are. Who’s building this? Just you? Or you and a team of other devs? Maybe an offshore team? Who’s maintaining this longterm? What’s their technical proficiency?
- and so on
This tweet highlights that the technology choices we choose are often based heavily on personal preference. “I like this”, “I’ve used this before”, “I’m good at this”, and even “This looks cool and I’d like to play with this thank you very much” play an important role in choosing technologies. These reasons aren’t often explicitly stated by the people in a position to make those choices, but that’s often what’s going on under the hood.
I’m not saying personal preference doesn’t matter. Having a good track record and proficiency with specific tools are important. But it’s also crucial to evaluate technology choices grounded in the context and realities of what your users need, the business goals, and what the realities are surrounding the project (existing tech stack, available resources, and so on). Personal preference matters, but shouldn’t be the only thing that drives these decisions.
Be sure to check out Jeremy Keith’s fantastic talk Evaluating Technology for more on this topic.