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

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

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

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

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

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

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

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

Collapse
 
popoo profile image
popo • Edited

Well, you're never alone.
My first job was at a big bank as a front-end developer.
My co-workers were: two older and one younger developer. They were all dinosaurs.
The stupid thing was, they knew it and stopped even coding realizing it was "too late for them".
I think this is bullshit because challenge is what pushes us to learn new things, beyond our confort zone.

It was crazy because they "worked" there since 10 years (or more).

So it's better to say 'oh, I might be a dinosaur.. what can I do to change this ? ' than ' oh, I might be a dinosaur.. don't care anymore. '

And yeah, I also have the feeling I'm lost in the tech that is changing very fast. Being a developer means working on it every day and getting out of your confort zone. I found 'frontendmasters' really helpful to keep myself on the best road (for now... I hope).

Collapse
 
dreamdealer profile image
Johan van Tongeren

I think that if you stop caring about what you do, you should find something else to do. I can't imagine these guys at your first job leaving home satisfied and happy after a day's work.

Being challenged and building cool things is what motivates me and makes me leave the office happy. It does not matter if this is React, C++ or HipsterJS 9, embracing something new and building awesomeness with it is what matters.

Collapse
 
salvan13 profile image
Antonio Salvati 🦊 • Edited

My common sense said: "Why the **** would you use something so complex for something so simple?!"

Like me everyday in the past 2 years at work.

I never stopped learning new frontend tools, but just for work, when I can I still make web apps like a dinosaur doing simple things.

I am happy to be a dinosaur 🦕 :D

Collapse
 
dreamdealer profile image
Johan van Tongeren

There's a lot to say for sticking with plain JS and whatnot, but that is another discussion. The point is that it can be hard to get back on the horse after falling off.

Collapse
 
spettifer profile image
Steve Pettifer

I know someone else mentioned impostor syndrome, and I do agree with them that you certainly displayed elements of that. I've been there too. I suppose I'm what you'd call a backend dev, C# and Azure development mainly. I'm 44 and coming up on 19 years as a dev (I had toyed with a bit of HTML and JavaScript at uni in my spare time but nothing significant, so I started as a graduate trainee). A few years ago I was struggling to keep up with a few key concepts and patterns that had passed me by thanks to some of the places I worked being pretty backwards in some ways (and actually React and modern js development was one of those topics). Luckily at the time I was working with some awesome people who are now good friends and one in particular just encouraged me to take things one bit at a time and explained anything I didn't understand that he could and if not, he'd know someone who could. I owe him a lot (and Pluralsight!). I was really struggling with depression and anxiety back then in part caused by this sense that I wasn't good enough. I still occasionally worry about it but all I have to do is have a word with my mate or one of the great folks I now work with and I'm back on the right track. I think as you get older it becomes easier to feel that it's a youngsters game and get yourself tied up in knots, but as you or someone said, what makes a senior is how you approach problems and progress work, not how many frameworks you can use off the top of your head. If you can recognise the need for one and can evaluate which is the right one to use (maybe by asking the right questions of someone who knows that framework) then that's how to be a senior. Good article!

Collapse
 
dreamdealer profile image
Johan van Tongeren

Thanks for that comment, Steve! I really recognize myself in it. It is só good to have people around you like that and I am very happy for you ☺️

Collapse
 
danielvbienne profile image
Daniel Vasile

Thank you Johan for this article who's falling right at the good moment for me. I'm 32 years old and I've been working for 4 years as an Interactive Media Designer (Design, animation,film, code...)... But I was "specialized" writing code. Doing multiple things like animation, design or film was submitting me to a permanent stress. When I suddenly know that I had to choose one thing and make it good.

I found a job as a frontend dev last month and I learn a lot of new thing in a short amount of time.

With your article you make me feel confident with my choice.

So, thank you for your post and let stay in contact to share what we learned and what we are learning.

Best regards
Dan

Collapse
 
dreamdealer profile image
Johan van Tongeren

It makes me really proud and happy that my humble blog post makes you feel confident and helps you with your new endeavors. Keep it up, Dan!

Collapse
 
galdamez profile image
Jose Galdamez

I feel as if our careers parallel each other's in age, years spent in the industry, and technology stacks encountered along the way. My journey pretty much went through the same milestones at around the same time: CF to PHP to jQuery to AngularJS to React. It has been overwhelming at different points, but definitely fun to see how technologies have evolved. I'm fortunate in that I'm at a point where I can occasionally choose the front end stacks so long as the customer's problem is being solved. This allows time to dabble in new libraries even if the occasional fragmentation gets introduced. The major hurdle for me is being diligent about starting and ending online trainings. My next major thing to learn is the JAMStack and Gatsby.

Collapse
 
dreamdealer profile image
Johan van Tongeren

Thanks for the reply, Jose!

(Online) Training is also something that keeps me thinking. At MyOnlineStore each of the developers has a budget allocated for personal development. My manager often asks me how I want to use it.

My colleagues and I have subscribed to Egghead.io and we're going to visit a conference early next year, but I can't honestly think of something else I can spend that money on 🤷‍♂️

Collapse
 
galdamez profile image
Jose Galdamez

Believe it or not but I have subscriptions to O'Reilly Online Learning, Sitepoint Premium, Egghead, Packt Premium, Tuts+, Pluralsight, and a list of Udemy courses. It's certainly too much content for any one person to go through. Here's my breakdown for what I think of each.

Egghead: Out of all them, the one with the most up-to-date tutorials on open source libraries would be Egghead. Their tutorials tend to run a bit fast so I usually have to go through a lesson a couple of times before the concepts sink in.

Pluralsight: Pluralsight would be the most polished in terms of presentation and the top choice for industry certification—if that is the end goal. They have quizzes you can take to prove what you learned.

O'Reilly: O'Reilly is probably the largest library since it combines a long list of publishers (O'Reilly, Apress, Wrox, Packt) into one site. O'Reilly has just released an interactive learning feature which apparently allows one to get hands-on within a browser. I have yet to use it though.

Sitepoint Premium: Sitepoint produces lots of original content—books, videos, articles—for open source. Some of the video tutorials are letdowns. The books have gotten more numerous in quantity and shorter in length. Sitepoint will also aggregate books from other publishers like Packt so it's kind of a 3-for-1 deal. They are now pushing an offline reading app that is 100% Web-based. This came after they decided to move away from downloadable e-book formats. Personally, I find it kind of annoying.

Packt: Packt books are too all over the place; some are okay and some are duds. I probably have over 100 Packt e-books and am in no rush to read any of them. Most of the authors do not seem to be well known.

Tuts+: Tuts+ has a lot of information for both popular and obscure open source libraries. You'll also find more UX and design-focused content here than most of the other platforms.

Udemy: Some top, work-from-home teachers can certainly be found here. I find most of the courses are catered towards beginners and can be rather long-winded. It's the cheapest if all you need is a couple of courses throughout the year. The lowest price is $9.99 a course.

Free ones: You want to know what's the crazy part? Chances are most developers don't have to pay for online tutorials. My public library provides free access to LinkedIn Learning (formerly Lynda.com) in addition to a few other IT training sites. That's not even counting the other free resources on YouTube, Microsoft's Website, freeCodeCamp, Medium, Dev.to, and Adobe TV.

Bottom line: The biggest challenge for me is winnowing down to the sites that make the most sense for the skills I'm trying to learn.

My recommendation: For the front-end space, I doubt anything beats Egghead. My 2nd top choice for training, in general, would be Pluralsight.

Thread Thread
 
dreamdealer profile image
Johan van Tongeren

Thanks for the extensive reply, Jose! 😇

Pluralsight is new for me and I've immediately opened the site and I'm going to look into it right away. Certification is a nice bonus 🙃

Thread Thread
 
galdamez profile image
Jose Galdamez

My pleasure! I would only add that Pluralsight seems to only offer the certification practice exams for CCNA, CISSP, VmWare, Azure Admin, PMP, etc. if a user is on the business plan, not the individual plan. That could be a good motivation to have your employer sponsor a monthly or annual subscription. Either way, have fun learning! We got this 🧠👍