On the other hand, though, I’m not sure truly slowing down is even possible anymore. There is so much that comes out on a daily basis now that makes our lives better. So you have to be able to see change and adapt quickly. To say, “Wow I can see if I adopt this now, it going to save me a lot of time down the road” and just go ahead and do it.
Because there is a risk in resisting change. I was very slow to come to React, and it’s cost me a lot. When I first saw, from my lofty position as an experienced engineer, the munging of concepts, the integration of presentation and logic — I thought, this is the worst thing ever. I had a 24-year-old engineer on my team who was like, “Oh no man, React is really cool, you should give it a shot” and I was like, “No, this is going to blow over.” It was kind of my calcified experience that kept me from seeing that this was really big, and really good. I fell right into the old dog trap. And it cost my company a lot of money because we spent a year using competing technologies that felt more comfortable to me. But eventually we got there, and fortunately this developer still looks up to me as a mentor, despite the fact that I was so so wrong.
So therefore it only makes sense that if this is the environment we are in, then the language and ecosystem evolve continuously the same way. At the same time, I’m still waiting for the Hindenburg moment.
The Hindenburg moment?
That said, it seems to be working, and we are certainly developing techniques to deal with the rapid evolution. The TC39 committee is doing a great job adding language features in a backward compatible, non-impactful way. And, even back five years ago, people were polyfilling shit, before we use this feature we need to detect if it’s even available in the browser. We are already comfortable with runtime decisions about what language features are available to us, and it’s not as if this all happened over night. So maybe my nervousness is just more old dog syndrome.
What is your advice to new developers trying to figure out what to learn in order to land their first job in 2018?
So if you are a job seeker, I would say as much as possible be a very surface generalist. Have run through a Vue tutorial, a React, an Angular — pick a weekend for each and do one. Focus on the big technology. If you’re looking to do cloud infrastructure, deploy something on AWS or Heroku. Whatever your space, pick the biggest piece and get some initial experience playing with it.
Then, when you see a job you are really interested in, you will have time to dive a little deeper. Go back, redo that Angular tutorial, then go a little deeper, read some blog posts. You don’t need to know everything in great depth all the time — just the ability to in the space for a few days, focus your skills and prep to talk to a company. Do your homework! It makes me insane when someone applies at my company and it’s obvious they have not done at least even five minutes of homework about our company and the tech we are using. I know instantly I will not be hiring them.
What are some areas of interest you see for 2018?
I think 2018 will be the year of functional programming and higher-level abstractions. There’s already a lot of momentum there, and I think it’s really going to grow in the new year. Maybe we’ll see a surge in the popularity of Elm, which I would welcome. Maybe the TC39 committee will start talking about adding more sophisticated immutable data structures to the language?
On a personal note, 2018 is the year I’m really going to adopt Flow, and integrate it into my work (ahem) flow.