DEV Community

Cover image for I Regret Being a Hipster in Tech
Khalil Najjar
Khalil Najjar

Posted on • Edited on

I Regret Being a Hipster in Tech

The Problem

For the last five or more years I've been doing it all wrong. I thought that learning the newest, trendiest, and hippest library, framework or language out there was the way to go. I've curated a list of some of the technologies I've learned thought-out the years:

Docker, Kubernetes, Terraform, Rancher, Helm, Angular, React, Vue, Adonis.js, Prisma, Gatsby, GraphQL, Postgres, MongoDB, Cassandra, Socket.io, Webpack, SASS, Gulp, Next.js, Nuxt.js, Meteor, Express, Koa, Elastic, Algolia, jQuery, TypeScript, Node.js, Deno.js, Go, Python, Ruby, PHP, Java, among many more.

What is the problem with this list? Well if you look closely, I learned many tools that solve similar problems, I am getting ahead of my self but pro-tip: you don't have to learn every single one out there 😉.

Also, there's been a lot of software architecture changes during this time, we've had the monolithic approach, then client-service came along, need I remind you of the complicated microservices architecture? and now we have serverless.

Look, I could keep going on... As you can see (and probably you've been in a similar situation) I've invested a lot of my free time learning different tools that achieve similar results.

Like so many developers out there, I started to burn out.

Long story short, I took some vacations and went to the German Alps 🏔 to contemplate about life and find what was I doing wrong. During my mountain retreat, Apple had the WWDC﹡, and of course, me being a nerd, I just couldn't miss the event therefore I joined.

And all of a sudden it was clear to me what do I needed... it was stability in my day-to-day as a developer. Something Apple offers with their WWDC.

Allow me to explain...

The beauty of this is that it gives guidance to the Apple developers, there are no new disruptive technologies that pop out of nowhere, it's a clear and predictable roadmap, which allows the developers to follow this guided path, and simply focus on getting better at what they do and very occasionally learn the new way of doing things.

Now... I love the web, I was not going to change my career and become a mobile developer overnight. So naturally, I started looking for alternatives in my domain. That's when I crossed paths with the well-known and battle-tested MVC frameworks 🐍 💎.

A New Hope

Luke Skywalker - A New Hope

I've worked with different MVC frameworks in the past, like Django, but they were more like stepping stones towards my career as a wheel-reinventor engineer.

I tried Adonis.js, which is a very good JavaScript MVC framework, I truly enjoyed working with it, although at the time it had a small community and many new breaking-changes were being introduced to the framework as it was being actively developed.

That's when I decided to go with something more mature, hence boring, and what is more boring than Rails?
I immediately fell in love with the framework and the community behind it.

After a few months of learning the Rails way, I started to realize something... I felt lazy, before I used to learn new skills for at least 4 hours/day (after working 8 hours). Now, all of a sudden I was finally using my free time in a different and healthier way, but why was I feeling lazy?

Throughout the years I got used to the idea that I had to be studying every single day, like if I had some sort of homework because you know - that's the life that I chose by becoming a software engineer (although it's true to some extent).

Don't get me wrong, learning new skills during your free time is important, but it's also important to enjoy other aspects of life, while still learning occasionally in your free time or during work.

This is what I did, instead of using most of my free time to keep up to date with tools I probably will never use. I leveraged my job to introduce new technologies (when the need arises). This way I can stay relevant and scratch my itch for learning new stuff.

Nonetheless, it took me some time to stop feeling guilty and start appreciating the stability that I was looking for, and let me tell you something, it is well worth it ✌️.

Now after work, I don't open Udemy or Hacker News, I'd rather go for a stroll 🚶‍♂️, bike 🚵‍♂️, cook for my girlfriend 🧑‍🍳, do some yoga 🧘‍♂️ - you get the point. I am no longer a prisoner of tech and guess what? I enjoy my work, coding and life more now than ever.

Learnings

There will always be something new to learn, you can try and stay up-to-date, get burned out, take some vacations and repeat this never-ending cycle.

It's okay (and encouraged) to learn new and hipster tech every once in a while, I certainly still do it occasionally for fun, but it's not longer (and thankfully) part of my day-to-day life.

If you feel that you are in a similar situation don't wait to get burned out, act - make a change. I did it and it has improved my life drastically.

Being a good, happy and healthy developer it's not knowing everything, but rather understanding what you need to know.

"Life is really simple, but we insist on making it complicated."
~ Confucius

Appendix

WWDC
It is a yearly event where Apple presents to their community of developers the improvements coming to the Swift language as well as new features arriving to their operating systems.

Oldest comments (43)

Collapse
 
booyouon profile image
Vince Abuyuan

This reminds me of a quote from the dead poet society “ medicine, law, business, engineering, these are noble pursuits and necessary to sustain life. But poetry, beauty, romance, love, these are what we stay alive for. ” :)

Collapse
 
knajjars profile image
Khalil Najjar

It's true, thanks for sharing!

Collapse
 
ben profile image
Ben Halpern

I've worked with different MVC frameworks in the past, like Django, but they were more like stepping stones towards my career as a wheel-reinventor engineer

😂😂😂

Collapse
 
sixman9 profile image
Richard Joseph

The "homework everyday" REALLY resonates with me, I was doing that for YEARS, I read about a LOT of technologies over the last decade, problem is, I wasn't in a position to introduce any of them into my everyday work, I feel like I've become a jack of all trades but wish I'd just focused on a core set of skills.

Great Post, thank you.

Collapse
 
wotzhs profile image
Sean Wong

I see myself in you, maybe not as experienced, despite not being in a position to introduce, I set up technical/knowledge sharing session with the fellow software engineers of all levels, explaining & demonstrating how the company / engineers can benefit from XYZ technologies that we could be using, and manage to exert a tiny bit of influence to see some of them being adopted gradually.

Collapse
 
tfantina profile image
Travis Fantina

Fantastic post, very easy to fall into the trap of always learning and never doing.
One of the greatest things I've read on this subject actually comes from the Quickstart in the StimulusReflex docs:

We are only alive for a short while and learning any new technology is a sacrifice of time spent with those you love, creating art or walking in the woods. 👨‍👨‍👧‍👧🎨🌲
Every framework you learn is a lost opportunity to build something that could really matter to the world. Please choose responsibly. ⏳

Collapse
 
leastbad profile image
leastbad

The joke here is that there are few things in tech less boring than StimulusReflex and CableReady.

Come on in, the water is warm!

Collapse
 
tfantina profile image
Travis Fantina

Yeah, I will for sure. I was starting to investigate StimulusReflex when HOTWire dropped, so I played with that and frankly it just didn't sit well with me. In my day job I do a lot of Elixir, so maybe I'm just looking for something more inspired by LiveView (which I know you were with StimulusReflex).

Thread Thread
 
leastbad profile image
leastbad

Speaking only for myself, Hotwire sucks. I know that I am probably not supposed to say that as an adult who is involved with building a technically competing tool... but it's just true. It's not good.

Thread Thread
 
tfantina profile image
Travis Fantina • Edited

Haha, I know you built StimulusReflex but for some reason hearing that is very validating. You've sold me this weekend I will spin up a greenfield Rails project and play with StimulusReflex!

Thread Thread
 
leastbad profile image
leastbad

Ha! That's me at my tired and grumpiest! :)

FWIW, I'm only one of an extended family of awesome folks who build SR and CableReady together. It's a labour of love and hopefully bigger than the mere sum of its parts.

When you're ready to get started, definitely drop by discord.gg/stimulus-reflex and we'll help however we can.

Thread Thread
 
tfantina profile image
Travis Fantina

Been doing this for 20 minutes and I already love it, everything seems to just work and the docs are way better than HOTWire.

Collapse
 
jankapunkt profile image
Jan Küster 🔥

I think the biggest problem is that hype-driven development easily creates viral posts on social media. In addition, newsletters also often report about the latest hot stuff, giving devs the Impression to follow or become outdated.

The best way to me is still to choose the right tech and concepts for the right scenario.

Collapse
 
lollyyy profile image
Jaakko Ihanamäki

So obviously I don't know what kind of environment you work in but this entire post screams some sort of fundamental lack of understanding in what you are doing and what you think you should be doing. Tools are tools and you really just pick the best one for each project and the criteria for every tool depends on the nature of the project.

I learned most of my development practices in MERN stack but jumped into Vue and serverless/cloud native out of the blue for my work project partly because of what tech is used in my company and partly because I wanted to try out Vue. If you have your fundamentals down it shouldn't really be an issue to be truly tech agnostic and jump into different frameworks and tools whenever needed.

Constantly learning new tools to the point of burning out feels really weird and to the point where the issue isn't in the tooling but in your own approach to development.

Collapse
 
xji profile image
Xiang Ji • Edited

The problem does not lie with "spending 4 hours per day for 5 years". It lies with the way you had been spending them. I mean, with so much time investment, you could have easily aced the whole Leetcode and landed a job at FAANG if you wanted to lol, or you could have built several awesome products or open-source libraries by yourself, all the while having a reasonable work-life-balance and hobbies. Learning things from various step-by-step guides could feel exciting and fun, but it ultimately produces limited value, since you were consuming things from the others, not creating on your own, which is ultimately how value is created.

Of course, focused and purposeful learning in order to be a better creator or to expose yourself to new ideas and fields is totally fine and should be encouraged. However, learning a lot of similar languages and frameworks which don't fundamentally introduce new ideas or thought patterns is a shallow form of learning, and guess what, you feel safe and happy because you encounter little resistance just trying to follow the instructions in the guide and seeing shiny things work exactly as described, but not trying to hack at actual new problems or new products.

I also fell into a similar pitfall during my undergraduate days. If I could give myself back then some advice, I would have said "quit dispersing your attention at various things and actually build and finish what you started, or at least heed the conventional wisdom a bit more and prepare for coding interviews" 😄.

I still think that reading HN etc. is helpful though. It's not necessary to put it into the same basket as reading similar tutorials over and over again. You could come across some really unique piece of thought that opens your eyes. You just need to strike a balance and make sure that you're not reading HN for 4 hours every day and end up not building :)

Collapse
 
briantopping profile image
Brian Topping

I remember when Rails was the hot new thing, I stuck with Java. Same with Groovy. Same with a bunch of things. When you feel like the world is passing you by, take a breath and look for language or platform usage statistics on Github or StackExchange.

As it turned out, there's still a lot of work in Java and it's kept me fed for over twenty years now. I built a killer app in Scala after discovering Akka, then did some more work in Java. Learned Kubernetes and it required Go, but Java paid more bills. It's a bit long in the tooth, but then they introduce something like WebFlux and you realize it's not dead, not by a longshot. Spring is a foundation that a lot of companies depend on every day and something like WebFlux allows developers to do a better job and have more fun.

Substitute your own languages here, but stay true to your roots. Great to hear you found this.

Collapse
 
caelumf profile image
CaelumF

Whenever I hear of a new technology I will search "Criticisms of X" and "X vs" (intentionally blank to see what it competes with) and pay very close attention to the flaws of the technology.

This process eliminates many new technologies, and makes you an early adopter for the few that are left. For e.g. I skipped Scala and Groovy and fully embraced Kotlin. Not to say Groovy and Scala is not worth learning, but for my use cases were not (and to be 100% honest with you, Kotlin is a superior general purpose language and also superior in most niches).

I want to share some thoughts on it not being so bad to follow the tech trends though

There's certainly a lot of value to the hype languages. The longer established projects and languages are repeatedly taking the best parts from hype languages. Go has some painful flaws and limitations, but I think it popularised some concurrency ideas that have made their way into Kotlin. And when you "fall" for the hype and learn all of these new concepts, and eventually learn with the rest of the community about the flaws, you'll have a big head start at whatever more practical approach you move on to.

I've had to use some older frameworks for a while, and after long enough my approach to solving problems tends to stop changing. Then I'll be forced to use a trendy framework or language, and later come back to the older tech and I'll have new ideas just from being forced into a different perspective. I think this is a nice thing about the trendy techs

Btw, I recommend checking out "Quarkus vs" and "Kotlin vs" if you haven't already 😄

Collapse
 
briantopping profile image
Brian Topping

The ask in my post was to "substitute your own languages", which is to say the language wars have no end and there's no interest in engaging in them. I was just trying to illustrate that one's own path is the best path, really don't care for anyone else's opinion on language choices. I also do the " vs." trick, it's great. Thanks for sharing that!

Thread Thread
 
caelumf profile image
CaelumF

I reckon language discussions can be more productive than they seem when people are just shy to concede at first and secretly come around later 😜 but yeah I should try not to bait anyone

Collapse
 
differentsmoke profile image
Pablo Barría Urenda

If you learned jQuery in the last five years thinking you were getting into the trendiest new thing then yes, you were definitely doing it wrong...🙄

Collapse
 
saulburgos profile image
Saul Burgos Davila

I were in your position. My advices for anyone in the same position will be:

  • Learn the basic of programming: Naming, OOP, algoritm, etc, concepts, standars, how to write good code, good documentation, etc.
  • Every year a new framework is created....so forget it. Learning it when you need it.
  • Learn to lean faster.... on interviews I said: "I don't know that framework but I know language so...it will be easy to me learing it "
  • Be the person that your team need at the moment. Don't try to learn things that your team will never use