Journal Archives About Books Talks

On keeping up

In tech, every day brings a new language, a new framework, a new architecture that promises to deliver on the failed promises of the current stack.

Our response to new technology shapes our work, our careers, and even ourselves. At 40, I've been building the web for roughly twenty years. Over that time, I've seen a pattern of enthusiasm, skepticism, cynicism, and growth emerge, sort of like my own personal Gartner cycle.


New developers often try to stay on the bleeding edge, for a number of reasons.

Curiosity. Engineering requires a desire to learn how things work and discover new ways to solve problems. Curious developers will be drawn to new tools, wanting to test them out for themselves and pick up a new skill or technique.

Excitement. There's a thrill in the "unboxing" of a new release and taking its features for a spin. You start to imagine the time saved on the next project and the code you won't have to write. If you're not careful this can lead to a form of software consumerism, thinking all solutions are available via a package manager or app store.

Fear. The FOMO factor. If you're hired for your proficiency in a language or framework, you may think the way to stay in demand is discovering and learning the next trend. Maybe you're more motivated by belonging to a community (or wanting influence within a community.) You fear getting left out or left behind.

Then you realize a couple of things.

Attention is scarce. The supply of new shiny will inevitably outpace your ability to consume it.

Novelty is an illusion. Hang around long enough and you'll observe not just the pace of change, but its waves and its rhythms. Take a look around. While your blue jeans morphed from straight leg to tapered to bootcut or back, your code went from thin client to rich client to isomorphic. Your JavaScript was extracted from your markup, only to have your markup infused in your JavaScript. Wait a little longer and it will all come full circle.


So at some point, you stop trying to follow the trends. You develop your own tastes, pick your favorite tools, and get to work. You receive new tech with an informed skepticism.

There will always be something new, and if it's indeed good, there will be time to learn it down the road. That "new framework smell" fades fast. True satisfaction comes from taking what you know and applying it to the problems in front of you. Instead of jumping on the next bandwagon, you're happy to wave at this one as it rolls on by.

You choose "boring" tech and get things done.


But therein lies another danger. Feeling justified by your newfound productivity, over time your skepticism of all things new mutates into something more malignant. Onset is gradual and detection is difficult, but you can watch for a few early symptoms.

Joylessness. You've seen it all. There is nothing new under the Hacker News logo. Nothing excites you anymore. The thrill is gone.

Curmudgeonry. In small doses this can be a healthy trait in an engineer. You have to be a little unhappy to find the unhappy path. But when your crankiness prevents you from fairly evaluating new ways of solving problems, your work suffers, your team suffers, and ultimately you suffer.

Feeling out of touch. You look up one day and don't recognize the landscape. Buzzwords and project names abound, but you only know them conceptually, if at all. Friends have technical discussions around you and you realize you're not following any of it. It's like your kids in the back seat singing along with a song you've never heard before. Then you learn it's "so old, Dad."


So how do you avoid becoming the crank in the corner cube?

Get a plan, set some goals. The range of of potential career paths narrows as we get older. Yet you know something more of yourself at age 35 than at 25. Take inventory. Develop a plan to pick up a new skill, or refine an underdeveloped talent. Consider other aspects of the field that would provide new ways to serve others with your experience and give you some new challenges. Try going deeper (or higher) in your technical stack. Or perhaps try your hand at leadership. (Humans are way more fun and way more buggy than computers anyway.)

Prioritize playtime. Build something in a new language or with a new framework just for fun. Ten years into my career I was a happy(ish) .NET developer when a fifteen minute screencast prompted me to kick the tires on something called Rails which led to a career pivot into Ruby and an entire world of open source.

Cultivate relationships, not just skills. Every bit of code we write will ultimately get refactored, replaced, or removed. Our GitHub contribution graphs will fade to white. But human relationships are lasting. Seek opportunities to work alongside someone who will stretch you. Invest what you've learned in others.

Mature, steady growth is the ultimate goal. I'm not sure how you get there without the peaks and the dips along the way. Without experiencing frenetic enthusiasm and cold cynicism I'm not sure we would know it if we saw it.

# Posted on