DEV Community

Cover image for How to not be a dinosaur.
Johan van Tongeren for MyOnlineStore

Posted on

How to not be a dinosaur.

This is the story of how I became an experienced senior frontend developer and how I had to start all over again. How it felt like I had to start all over. How to learn. 

This story is mostly about learning React, but might apply to other frameworks as well. Heck, it might even apply to completely different areas of expertise.

What happened?

It is 2019 now and I am 37 years old. I have been working for 15+ years professionally as a web developer and web designer. After high school I went to design school and learned to be a designer. But I have also always been interested in coding. In the early 90's I was already writing code in GW-Basic. I can recall writing my first lines of code in the last grade of primary school. Later I learned HTML and even a little PHP 3. In design school I also learned Flash and OOP in Lingo. When my class got the task to code a simple dice-rolling program, I wrote the complete Monopoly game. Just because writing code was a never-ending path of discovery, wonder and dopamine.


This is not me. But it could have been if I had such an awesome mustache at the age of ten

In the years working as a developer I have seen the landscape around me change drastically. When I started designing and coding in the early 2000s, CSS, some javascript and later jQuery was all I needed to master being a frontender. I also added some backend code (PHP and even Coldfusion in a dark era) to be able to integrate the frontend code with the backend. So for years I could design a project, code it and integrate it. At one point I was named a full stack developer. Life was simple. Even simpler when post-processors like SCSS came to life. I was like "I got this, bro!"


Also not me.

So what changed?

So I was happily writing SCSS, JS and some PHP, but then around 2012 the world started to change around me. I saw more and more articles about fancy frameworks like AngularJS on Twitter. At some point it seemed like new frameworks were being released every day. I was naturally drawn to this, but couldn't keep up and got a little overwhelmed by the seeming complexity of some of these frameworks. And I also suffered a bit of metathesiophobia.

Still not me.

Then one day I attended a meetup where some guy enthusiastically demonstrated AngularJS. He made a list of hospital employees which could be clicked to unfold a list of their certifications and skills. A very simple page. And the amount of code that was shipped to make this simple page work was over 1mb.

So that was it for me. This new stuff was overly complex, scary and most of all: I could write this accordion list in less than 1kb of vanilla JS. Or maybe even without JS in CSS and HTML only… My common sense said: "Why the **** would you use something so complex for something so simple?!"

At that time I was the only frontend developer at MyOnlineStore. And I have always been the only frontend developer for all my previous employers. So there was nobody to convince me that it would be wise to embrace these new techniques.

Why I stood still for so long

In late 2015, when I was already late to the party I got sick. A severe burnout followed by a big relapse one year later while I was still recovering. When I felt a bit better after a while and came back to the MyOnlineStore offices everything had changed. There were two new frontend developers. With new repos, new code, new words, new everything!

It was 2017 already. I did not know where to start. I didn't dare to ask for help, because of my misplaced pride. I was writing code before some of my new colleagues were even born… and now I should go to these guys and admit I had no clue what I was doing?

But I tried… I tried to keep up with it for a few months and then I was like: "I don't get it! fuck this shit!" 

"I have been doing design and development 50/50 for all of my career, so now it's time to say goodbye to one of these and focus on the other." And since I got so scared of The New Frontend World, I fled to the design department of MyOnlineStore. This was in early 2018.

Yes, this is me doing design

Unfortunately, after a year of doing (UX) design, I found out this was the wrong choice. After years of intensive therapy and running straight into a black hole that was another potential burnout, I came to the conclusion that design was not for me. I am able to design, but I can't handle the stress that goes with it. I felt like I had to answer and fight for all the design choices I made. And since my UX designing was mostly driven by instinct, this was really hard for me. On top of that, it all felt very personal. Maybe I can handle it today or in the near future, with all the things I have learned since, but not then. It fueled my insecurity enormously.

And then in late 2018, I decided to go back to frontend development. There I was, a frontend dinosaur in a modern world.

Yes this is me.

How to get up to speed? 

Now I faced a big challenge. I didn't want to go extinct like a real dinosaur and stick to my old habits, so how do you get up to speed after being paused for a few years in a world that changed (and is still changing) so rapidly? The first thing to overcome was my aversion for The New Frontend World™️. I tried to look at React and all other new tools with a fresh and unbiased view.

While I was away in design world a lot has changed within our codebase, but also in The New Frontend World™️. The tools we used improved or were replaced with better alternatives. The tools and codebase became more solid and mature.

Then there was news: React Hooks was about to be released in React 16.8. This made code so much more readable that I started thinking "Hmm, maybe I can do this".

I don't want to go all geeky on the differences between hooks and classes and why hooks are so awesome, especially since there are many excellent articles written on this subject. If you would like to learn more about this, you should check them out.

For me personally the biggest thing was the improved simplicity of using hooks in function components compared to using class components. Where it felt like class components made me jump through hoops to keep track of state, hooks just let me use useState().

For example, in oldskool classes, I used to write this to increment a counter:

this.setState({ count: this.state.count + 1 })
Enter fullscreen mode Exit fullscreen mode

Where hooks let me do this:

setCount(count + 1)
Enter fullscreen mode Exit fullscreen mode

I bet that if you are reading this you'll feel that the second version is simpler even if you have little (react) programming experience.

After this "challenge accepted!" point the hardest obstacle had to be overcame: how to handle the "I have to start all over again" feeling. I felt like I knew nothing. I was Jon Snow.

Dealin' with dem feelins...

Who had I been kidding all these years calling myself a senior developer? How embarrassing was it that I had to ask my 12 years younger colleague for help over and over again...

Some people will think "what's the big deal?", and I am happy for you if you do, but you have to understand that asking for help was a big issue for me. And a major cause for my burn out and the personality disorder that came with it.

So I did two things: I decided to start learning all these new tools and frameworks and more importantly I started to ask for help. But the most important thing I did: I told my colleagues how I was feeling and how insecure I was about everything. They were very supportive and this gave me the confidence to go for it.

One of the most supportive things they did is showing me that I did make progress. A lot, actually. They also showed me that not knowing everything is not the end of the world. As long as you keep trying and learning, things will work out in the end.

Soon, I also realized I did not have to start all over again at all. It might have felt like it, but I still had a big headstart with my years of experience in programming overall. It was just a new framework and new tools that I needed to learn, not learning how to speak and not the first tool I ever used.

It will take some time to learn all these new things. And that's okay. Good things take time. I should have realized this earlier since it's literally written on my body, but sadly it's not that obvious sometimes.

Yes, this is also me.

Okay great, challenge accepted! Where to begin?

First I made a list of all the tools we use. There were quite a few things for me to learn: Typescript, Babel, Webpack, React, Apollo, Redux, GraphQL, Yarn and many more. This list was somewhat overwhelming until I started to put them into two groups: things I needed to learn right from the start and things I could figure out later. It turned out the first list is not that big and a lot more do-able.

For example, I now know how to set up a project using Babel, although I have no idea about the inner workings. And that's okay, I will learn it someday. Until then it's perfectly fine to ask a colleague who does get it.

Bottom line is that it is okay to not know things. It's not the number of things you know that makes you a senior developer, it's the way you handle things that make you a senior. In my opinion.

I have always tried to take some time for personal growth once in a while, but this was only a few spare hours every now and then. However, for a few months our company MyOnlineStore is doing so-called Ship-it days where we developers can do whatever we want as long as it's somehow work-related. This is a great way for me to learn stuff I might not naturally learn during everyday work. When I work in our normal codebase I just run yarn dev, storybook starts and that's it. But on these ship-it days I create new repo's, install packages and configure everything myself. That is a great way to learn new things.

Conclusion

Take your time: good things take time.

Be yourself. 

Be awesome. 


If you liked this blog, please let us know by giving us some claps, retweets or likes.

If you think working at MyOnlineStore would be something for you, here are our job openings (NL).

If you have questions about this blog check out what I do in my spare time or just want to get in touch, you can find me at Bad Decision Works Instagram

You can find more of our blogs on Medium

Cheers 👋

Latest comments (67)

Collapse
 
tkmanga profile image
Tkmanga

Great post! your history was inspiring, thanks you.

Collapse
 
pyr02k1 profile image
John • Edited

Just want to say thank you! I started my tech career entirely in the sysadmin and netadmin side of things and mostly plugged away at code in my free time. Enough that back when I did it, I was competent enough and comfortable enough to not be worried. Since then I've spent 7 years doing field service work for tech adjacent industries and one very tech related industry. It left me feeling really out of the loop over the years, but I tried to track enough to at least know the current terminology, even without an understanding of it.

With that said, I've been left feeling rather helpless these past weeks as I watched the company change hands, the lead developer for the every codebase for everything leave, new guy come in for one small part of it. It's been a very unique few weeks to say the least. I ended up inheriting AWS in it's entirety (serverless is a thing as I've learned), the API as it stands, a project to localize the API with a backend and frontend entirely for locations without internet, and then the project to move all of the previous to the web in whatever fashion I see fit. A lot to be given after years of inactivity.

I can say that the number of times I had more than 20 tabs open in any browser was measured under 50 in the last 15 years, but these past 3 weeks I've had upwards of 30 in 2 separate windows just for questions and manuals, github repos and gists, and a ton of dev.to posts. Finally tonight, I hit a milestone. At last I pushed my 5th or 6th rev of the api where I'm mostly satisfied with the base it's at now (minimum viable instead of complete at their request, but with a completed db since I don't want to revisit that).

As I was closing out tabs I came across this post, finally reading it after who knows how long since I'd sent it from my phone to my PC. It just reminded me that admitting I'm outdated and asking questions is not bad in our world. It may be in the grand, commercialized, top tier exec side, but not in the dev world. It's something I had entirely forgotten and I'm tremendously thankful that you posted about your experience here. After reading this I forwarded off some questions to the only other devs within the company to ask their opinions, thoughts, and ideas on how to proceed for a couple of things. It felt good to finally ask for help instead of slogging through tab after tab with search after search in hopes of finding the answer eventually.

Thanks again for your post,
John

Collapse
 
dreamdealer profile image
Johan van Tongeren MyOnlineStore

Hi John! It makes me very happy to read that my blog helped you conquer this hurdle in these difficult times. I can imagine the load you must feel on your shoulders now. But it's indeed a very good thing you reached out to your fellow devs and asked them for help.

I do think tho, that this should not only be normal in our dev world, but also in all other fields.

Collapse
 
fly profile image
joon

I really enjoyed reading this, and the happy ending felt heart-warming. Thank you. I wish my superior reads this though there is no chance whatsoever :)

Collapse
 
sebbdk profile image
Sebastian Vargr

I feel ya, sometimes, doing FE development feels like a never ending black hole of WTF.

That is, until you caught up in the light of something new and shiny and the cycles starts over.

Collapse
 
dreamdealer profile image
Johan van Tongeren MyOnlineStore

I think this WTF-feeling applies to a lot of development groups, but I wouldn't de surprised if FE leads the list 😝

Collapse
 
ambroselittle profile image
Ambrose Little

Thanks for sharing. I feel ya. I took a dev hiatus into design and management for some years, and I felt largely the same when I came back to full-time dev initially.

I still often ask myself why we've made all this so complicated. Why do we keep reinventing things that (probably) don't need to be reinvented. But it keeps things interesting and keeps food on the table. 😂

Collapse
 
dreamdealer profile image
Johan van Tongeren MyOnlineStore

Back in the days the complexity/layering (like jQuery) had two major advantages (for me):

  1. easy of coding. $('#id') instead of document.getElementById('id').
  2. cross-browser compatibility. Not having to care about all the quirks.
Collapse
 
benhosk profile image
Ben Hosking

The technology environment changes all the time, don't fear it, embrace it.

in a few years time it will be something else new

Collapse
 
dreamdealer profile image
Johan van Tongeren MyOnlineStore

There is nothing that changes so rapidly as technology. And especially (web) development. But that's not a show-stopper if you can keep yourself eager to learn and if you don't forget you don't have to do it all alone.

Collapse
 
mcrivers profile image
Mike McKenna

Johan, this hit home for me in many ways. I'm at the same point of my life and feeling a bit stuck (I have you by 5 years). I keep trying to push through the learning, but keep stumbling to stay motivated to learn the latest frameworks/technologies and not become overwhelmed. This helped me understand these feelings are not mine alone, and I'm not the only one going through this. Strength in numbers, right? ;)

Appreciate you sharing your experience.

Collapse
 
dreamdealer profile image
Johan van Tongeren MyOnlineStore

I am very happy to be able to help in this way ☺️

Collapse
 
falces profile image
Javi R. Falces

Great!

After many years without learning new things I've decided to change myself and this 2019 is being my learning year... and it's awesome. Also, I try to learn and follow all new and youngers developers, they're amazing!

Collapse
 
dreamdealer profile image
Johan van Tongeren MyOnlineStore

Their enthusiasm is contagious. It reminds me of myself when I was twenty years younger. And it makes me think like that again.

Collapse
 
lauriy profile image
Lauri Elias

"Be yourself."

But you weren't : ) You went with HipsterJS 9.

Collapse
 
sapegin profile image
Artem Sapegin

The difference between setState and hooks is actually even bigger because your example is incorrect and may lead to using a stale state and saving an incorrect value, so you need to use a functional form of setState:

this.setState(prevState => ({ count: prevState.count + 1 }))

This is hard to understand and remember, and Hooks have no such problem at all.

Collapse
 
dreamdealer profile image
Johan van Tongeren MyOnlineStore

I think this illustrates how happy I was with hooks very well 😊