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 👋

Top comments (67)

Collapse
 
dreamdealer profile image
Johan van Tongeren

Hi Desiré, thanks for your response!

I am also a complete auto-didactic person. My way is just to start doing something and let my curiosity lead me. Not only professionally, but also in my spare time I taught myself to weld, use a lathe, do bodywork, build engines, etc.

Big downside of being self-taught is the terminology. I often hear my colleagues say stuff that I have no clue about, but when I ask them to explain I often also find that I perfectly know what they are talking about, but don't know the theory and words for it.

Also, having colleagues to talk to, discuss with and learn from is so valuable! But if you don't have the luxury of having them, it's very good to engage in communities like this one :)

Collapse
 
eaich profile image
Eddie

Your story resonates with me. While I did take some time to learn the hottest frameworks, it turns out that sticking with PureJS and mastering Design Patterns has paid off in the long run. ES6+ really solved a lot of the problems that brought on these frameworks in the first place. And now with the next wave of trends coming in (Web Components, WebAssembly and their accompanying frameworks), we're left with a choice. Follow the shiny object or stick with PureJS, standards, proven design patterns.

Collapse
 
dreamdealer profile image
Johan van Tongeren

Hi Eddie! Pure/vanilla JS is always a good thing to master. It's the base of "our world".

But what you say about the next wave of trends is actually a hot topic with me too. I have been, and still am, working very hard to catch up with the previous trends and I also feel this new wave coming. But what I find hard is: how to keep up with all the news and filter out what's a fluke or what's the next Angular/React/whatever.

Collapse
 
eaich profile image
Eddie • Edited

I have a few perspectives on your great questions.

Separate the core concepts in order to learn more efficiently
Try to separate frameworks into two categories: Design Patterns and Syntax. The Syntax is the easy part and just requires time to commit to memory. The Design Patterns is the one that is the most challenging to overcome, because it requires you to set aside any notion you may have on how to structure and architect an application. If you can understand the underlying Design Patterns of a particular framework, this will actually help you learn the next wave of frameworks much quicker. This is tough because you have to open yourself up to understanding someone else's opinions.

Frameworks are just that - someone else's opinions
If you keep this in the back of your mind, then it will allow you to approach your learning with healthy skepticism. If you feel that the prescribed approach of a framework is cumbersome compared to your prior experiences, then that is a valid point and you're probably not the only one who feels this way.

On keeping up with trends
Your question about keeping up reminded me of this great video from the creator of Django - A Framework Author's Case Against Frameworks.
I do advise you to stay up-to-date on incoming trends just to see what's coming, but I don't think that you should be stressing about mastering every single one. If you're constantly following the shiny object, you're not making yourself resilient to the ever changing dev industry. Here is a great article on this topic The Brutal Lifecycle of JavaScript Frameworks.

Thread Thread
 
dreamdealer profile image
Johan van Tongeren

Thanks Eddie, that are some great insights. I'll check out your links/videos asap :-)

Collapse
 
tsirolnik profile image
Yehonatan Tsirolnik • Edited

I'm young, 23 years old, but I've been developing for the past 10 years.

The world of development went from a 2D puzzle into a 5D holographic puzzle.
The simplest of projects is now using hundreds if not thousands of packages, we went from separation of concerns to a mixture of everything.

I'm a non-conformist, but sadly, not conforming to the modern, backwarded, standards of web will leave you out of the field.
That's why I love backend the most. A place where logic reigns and frameworks aren't introduced every two weeks.

Collapse
 
dreamdealer profile image
Johan van Tongeren

"The world of development went from a 2D puzzle into a 5D holographic puzzle."

That is a great analogy that describes the feeling for me very good! :)

I am a non-conformist in a lot of ways too, but indeed, sometimes you're left with no choice. If three of your colleagues want to go one direction and that direction actually offers a lot of benefits, why would I not conform to that?

Collapse
 
vgrovestine profile image
Vincent Grovestine • Edited

As a recovering Cretacious-era developer, thanks! I needed to read this today.

...Although I do take exception with your "...and even Coldfusion in a dark era..." remark--I have fond memories of the Allaire/Macromedia ColdFusion days! :)

My career dates back to the dot-com bust period, working as a back-end developer when vanilla code was king, a basic RDBMS was enough, and tables were still an acceptable layout method.

Along the way, I got further and further away from the code, delving more into consulting and support. And just like a frog in a pot on the stove, I boiled without hardly noticing.

Now, after many years in an "applied IT" capacity, I have the itch to get back to my roots. ...Holy crap, is that prospect ever overwhelming!

So today, I went into the basement in search of knowledge. (I work in an academic library; however, just as in the "real world", all things IT are relegated to a dark, window-less room. :P)

My reading material for the coming weeks:

books: "Programming Ruby", "Don't Make Me Think!", "Why Software Sucks..."

One step at a time, right? One step at a time...

Collapse
 
dreamdealer profile image
Johan van Tongeren

Hi vincent! First off; I have good memories of my Coldfusion time too. But CF got a bit of a meme status in our office, so the "dark era" remark was more of an inside joke. No hard feelings ;-)

If you feel like moving back to your roots I can only support that choice! You've got to do what makes you happy. But since it's so overwhelming sometimes it's good to take baby steps and also: focus on one aspect. Don't try to master all the frameworks and tools at the same time. Just start with a simple Hello World and expand from that.

And by the way: I am very lucky not to work in a dark windowless basement. Instead of that me and my colleagues work in one of the prettiest old buildings in our city with an awesome view of a park and some monumental buildings.

my office

Collapse
 
workingwebsites profile image
Lisa Armstrong

Wow! Nailed it!

I went through a similar situation of waking up one day and realizing the whole industry had changed. I call it my Rip Van Winkle moment.

It's daunting thinking you know the business, and feeling like you know nothing. That a-hole self doubt tells you that everyone else is smarter, younger, gets it better than you, who are you kidding? ... you know the speech.

I had to give my head a shake. Remind myself that I do know things, and I learned them by investing the time and energy to learn it. And if it takes longer for me to get my head around it, so what? I did it before, I can do it again.

Like you, since then, I've gotten my hands around the new stuff. There are moments when I feel like I know what I'm doing ;-)

Change is a constant in IT, and you can't get too comfortable.
Everything you know today, is worthless tomorrow.

If you've been around long enough, you've seen enough trends come and go. Cold Fusion was a good idea at the time.

IMHO,a good team is one that blends youthful enthusiasm with experience to find the best solution.

Collapse
 
dreamdealer profile image
Johan van Tongeren

That's a great conclusion! A blend of young and enthusiastic people together with senior citizens like us makes a great team.

Collapse
 
conorluddy profile image
Conor • Edited

Great post man. 35 years here and 13 working in dev, so I know the feels. Keep writing!

Collapse
 
dreamdealer profile image
Johan van Tongeren

Hi Conor, thanks for your comment and the encouragement! Maybe I might be able to help people by writing more about the struggles and feels that come with the dev jobs.

Collapse
 
yokowasis profile image
Wasis Haryo Sasoko

I am a dinosaur myself. You have got to be careful. I trust people and they stab me in the back.

You can do it yourself without the help of others. Experience. You learn something complex without any resource back in the stone age. Imagine what you can do at the modern age.

You got YouTube, stack overflow, online documentation, communities. Use it to your advantage. You can triumph without them back in the day, imagine what you could do with their helps.

I am a php developer, and not using a single frame work (except WordPress), and have no idea about mvc. Like you said, WTF I need to create 3 files, when I can do the job with only 1 files 😂. But 1 day, I need to edit a Code Igniter Project, I got confused as hell. Then I decided, it's time. I watch YouTube and learn Code Igniter and Laravel in 1 fricking day. Even I surprised about my capability. It's about finding the right YouTube channel.

Collapse
 
dreamdealer profile image
Johan van Tongeren

It's awefull to hear that people have betrayed you in the past. I have had some negative experience with that too. But thinking about that period; these people were not "my kind of people". I know it's sometimes hard to distinguish, but try to surround yourself with only the right kind of people. Trust them with something small and see what happens. If they handle it right you'll know they are good.

And yes, you can learn from youtube, stack overflow and all these great communities, but sometimes you are left with no choice and have to work with others. And you might as well let them help you and learn from them.

I have learned a ton from youtube (welding, machining, etc), but my experience is that having you explain something in person and being able to ask your own questions is so much efficient.

But then again; learning is something very personal and you'll have to figure out what suits you best :)

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 🧠👍

Collapse
 
jagmeethanspal profile image
JSH

Great post, suggestions and conclusion. I am not even from the Web Dev vertical, and thus the amount of choices and frameworks just boggles me to even start somewhere, coming from the Linux/C programming land (maybe the big-bang era). Just few months ago I was thinking getting towards jQuery would be cool, lol.

Collapse
 
dreamdealer profile image
Johan van Tongeren

Haha! Learning jQuery can still be fun and there might be a lot of applications for that, but I think there are better things to learn these days 😉

Collapse
 
jagmeethanspal profile image
JSH

Ok, and will the "better" things have a dependency on understanding jQuery or just the Javascript basics etc. Is there a generation map you can point me to?

Thread Thread
 
dreamdealer profile image
Johan van Tongeren

It wouldn't be bad to understand some basic jQuery, since there is a big chance you'll run into it somewhere, but if I were you I'd probably focus on JS and ES (ecmascript) since these are the basics of all other frameworks and compilers.

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.