Something I was told the other day at work, blew my mind. "Don't use new modern web technology because it'll be too difficult to support."
— Chris D @ #KCDC2024 (@saltnburnem) October 19, 2016
Chris has a pretty good point. When you sign up to be a developer, you are signing up to never stop learning. That is true no matter what you do in life, but doubly true in computers, and triply so in 2016 putting things on the web.
The fatigue is real. And the meta-fatigue. But each complication that we add to our toolbox needs to justify its existence. Especially new tools. Are we adding them because we need them or because we want an excuse to try them out?
When talking about “modern web technology” you could easily be talking about React, Angular, Angular 2, TypeScript, elm, async/await, Web Sockets, Web Workers, microservices, GraphQL. I can come up with some pretty good reasons for not using them.
When you find out what technologies Chris is trying to use–
https://twitter.com/saltnburnem/status/788755118191677445
–you may get a little more sympathy for his predicament. I did.
What can you do in a situation like this? Part of the job of a software engineer is to be able to justify your decisions. That means being able to point out the benefits that outweigh the costs, and being cognizant of both. The reason the build chain is so complicated is because each link in that chain adds value. If you want to use it you need to be able to explain the problems it solves.
That said, sometimes you just have to recognize when you’re in an environment that doesn’t want to change. Given that your career hinges on changing and learning, you should give a good hard look as to whether your current environment is long-term beneficial for your career.
One last thing on the subject of using work projects to try out new technologies – I kind of like the Choose Boring Technology camp. It’s may actually be better stated as “Choose Mostly Boring Technology” since it’s about limiting yourself to a one or few new technologies. But it’s critical to always be trying out new things. It’s critical that companies need to ensure that people have space to try new things. It’s critical to your career to have that space to try new things.
Photo credit Ashim D’Silva
Great article, George! Any feedback on what you think companies can do to allow their people to have that space they need?
That’s definitely a tough balance – as a leader you have a tension between providing that safe space to experiment and at the same time fight against chaos. Depending on your project cycle the Choose Boring Technology method of only trying one or two new technologies per project may make sense. If it’s more of a maintenance project, you can still build regular stack upgrades into your dev cycle.
For larger organizations I like the philosophy of Let a 1,000 flowers bloom. Then rip 999 of them out by the roots. That way each team can find stuff that works for them, and then (where you need organizational cohesion) technical leadership can enforce standards. Of course, this assumes that there is technical leadership, and goes against the idea that a good leader can lead any team.
Ultimately it comes down to trust, as cliche as that sounds. If the company and team have built up that trust then the team will feel free to try new things, and fail, because they trust that it won’t hurt their standing at the company.