Matt Trask

Should I bank my career on a specific tech?

November 13, 2018 | 5 Minute Read

A question came up today in a local Slack channel called #beginners_and_mentors. This channel is fun cause it’s a good place for people to ask all kinds of questions. Now, some of the questions are clearly of the “do my homework for me please” variety and they are easy to sniff, but some are legitimate questions. One question that popped up today was an interesting one and caused some head scratching for some. The general idea was “I love writing GraphQL, would I be doing a bad by moving strictly in that direction and spending all my time learning the ins and outs of GraphQL?”.

So ok. Now to be fair, GraphQL to this person is lit. So lit they want to invest their career in it. Who knows? Maybe in ten years, we will all be writing only GraphQL over HTTP/6. But for now, we are not. REST is still very much prevalent, HTTP/3 is just now being talked about and HTTP/2 isn’t widely adopted.

That shining light in the corner of your eye.

Yes, it’s cool to use new tech. I do it a lot in side projects. I was an early adopter of Tailwind CSS, a utilitarian CSS framework that gave me the relief from Bootstrap I wanted. I usually keep my Laravel installs up to date with the current release, as well as packages I use. I have adopted the OpenAPI in projects that require an API (most of mine do) and I use Vue which while not very new it’s still new-ish. But I also am hesitant to rush out to the super shiny.

At work we use Symfony and Doctrine. These are two of the oldest PHP projects still in use. And they work great. We handle thousands of requests a day with no problem because we (mostly everyone but me) write clean code. We write code that’s maintainable, extensible and easy to read. We don’t chase the newest and greatest. We still have jQuery in a prominent role in our application. Same with Backbone, an MVC framework in JS. These are old ass technologies. Backbone fell out of favor pre Angular days. Shit’s old. But we use it because it works. If Laravel or Symfony died tomorrow, could I pick up Zend? Or move to a no framework style application? Yes. And that is something I keep working on. I think the developer experience of Laravel is awesome. But I know that it wont be around forever.

What people don’t realize is that the majority of the web is written with boring tech. Docker, Terraform and CI/CD pipelines are awesome, but a good chunk of web projects are still Filezilla and a sole Apache server in someone’s basement. What is crazier is that not every company works on a “move fast and break things” pace. A lot of companies require changes to go up the ladder to legal and back down. A framework change is a years long project. Hence why jQuery is still around and same with old versions of PHP.

The maturity level of chasing shiny

To spend all of your time chasing the new and shiny shows a lack of maturity, and also confidence, in your skills. If you chase the latest framework or tooling rather than building up tools you trust, this can cause friction. This friction can rear its head when you least want it: interviews. Cause relying on a tool to solve your problems rather than understanding the underlying issue shows a weakness. This is super correctable but problematic. If GraphQL is your jam, enjoy it. But if you think GraphQL is your way to riches, you are going to be stuck when you interview for a job that doesn’t know or care about GraphQL. If you require some obscure JS build tool, you are going to be in for a hard time when a job doesn’t want or need to use it. Hitting a maturity point in development is knowing when the shiny is fun to play with, but also knowing when its time to understand a language versus a language.

I should reiterate its absolutely fine to play with new things. New things lead to new ideas lead to new projects lead to (hopefully) new revenue streams. But be pragmatic about it. Understand that while GraphQL is awesome (debatable), it is not something every company is rushing to invest it. React may be awesome, but like everything else in the JS world, all is takes is a tweet or commit to a project to change that.

What can you do instead?

As new developers arrive on the scene, it’s our job as older developers to tell a cautionary tale of chasing the shining object at the end of the tunnel. Could you make some money only writing GraphQL? Yes. But what happens when GraphQL stops being cool? Can you transition fast enough to stay relevant or are you ok working on some legacy code? To be fair, working on legacy code is not bad at all. It’s good money, good work, and a fun challenge. However, you don’t get that shiny object to play with.

The culture we have developed, especially in the JS world of chasing the shiny leaves a trail of developers who are stuck on one type of technology. Let me ask you this.. if React vanished tomorow, what would you do? Could you transition easily to a vanilla javascript role? What about a role where jQuery was the prominent player? What if JS jobs dried up in your area and you needed to go to Ruby which doesnt seem to feature GraphQL so prominently. Are you willing to put all your ducks in a corner in a tech that’s still learning how to walk and talk?

My Advice

If a junior developer today asked me what path to follow I would tell them this: follow SOLID, read books and blogs about writing clean code and understanding things like refactoring and architecture. Following these steps will guide you for years. And when you have some time, pick up something shiny but remember to put it down when it comes time to work on the features at work that you need to have for profitability.

Til next time!

If you liked this post, you can share it with your followers or follow me on Twitter!