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.

Latest comments (43)

Collapse
 
sesay profile image
sesay

i used to be in this state of limbo, but am glad i took myself out of it

Collapse
 
omril321 profile image
Omri Lavi

Hi Khalil, thank you for this post! I feel very relatable to this - I've had a similar process in the last year. Sometimes it felt like I have to learn the new things, so I won't miss out. At some point you realize you'll always miss out something, and that you just have to accept it :)

Collapse
 
nathanmp profile image
Nathan McKinley-Pace

I really love your point! I'm still in school, but my relative "outsider" impression is that a lot of changes in the tools developers use seem to be more out of some desire to change things than out of a need to change things.
For instance, there are a ton of JavaScript frameworks out there, but how many have made a noticeable impact since their release? What changes in the quality of production webapps and websites are attributable to a given framework? Given all the effort people put into making and learning to use new frameworks, I feel like there should have been some massive changes in the quality of websites over the past, say, 5 years, but it doesn't seem like the changes in that time have been proportional to the amount of work developers have put into learning and making frameworks in that time.

Collapse
 
phantas0s profile image
Matthieu Cneude

There are 1087870432 tools out there which solve more or less the same problems. In other words, the set of problems is way smaller than the set of tools to solve them.

For example, high level languages can solve the same problem. What differentiate them is often their ecosystem, like their build tools or their libraries.

In short: learning the big ideas and the common problems in a general way is better than learning all the tools.

If somebody is interested, I've a blog where I try to write about these general problems and about mature and timeless tools which don't change much anymore: thevaluable.dev

Collapse
 
shivenigma profile image
Vignesh M

I'm stuck with Just Angular and Laravel mainly for this reason. I'm not going to learn something new unless I'm paid to do it, at least for a couple of years.

The tech industry expects continuous learning, but those who do it are not compensated well for that (only burned out). The compensation is actually tied to shipping stuff. So we should focus more on shipping stuff with what we already know.

Great article, thanks for sharing.

Collapse
 
spirosmakris profile image
Spiros Makris

Hey, great post and I couldn't agree more!

Same thing happened to me, learning a new technology every 1-3 weeks or so, for about 6 years and the burn out was real (and recurring).

Finally settled on a "boring" stack (PETAL) that feels good for me and I actually started being WAY more productive on actually getting things done in very little time.

It's good to study up on fundamentals (knowledge that is generally applicable and NOT tied to a specific framework/library) but "boring" & stability are great productivity multipliers!

Remember these are merely tools. Spending 90% of your time learning how to use them will not really help you finish any actual work or solve actual problems(IMHO)

Cheers

Collapse
 
iaauteco profile image
IA_AU_ECO

Hello, I totally understand, it reminds me of me some time ago, I have the excuse of doing machine learning, or there is a three-way waltz with scikit learn, tensorflow and pytorch. Fortunately, I love python. I also swung between Javascript and these various frameworks, then I rediscovered PHP, but I still have to do NodeJs because of tensorflow.js.

Yes, the 2010s were the festival of the framework and the microservice. Docker / Kubernetes are good technologies

Collapse
 
dastasoft profile image
dastasoft

I had a similar conversation with my work colleagues the other day and in a way it reminds me of what you are saying.

I think that wanting to use the latest technology is also driven by the community. I mean when you look for new opportunities or read success stories, you tend to think that the newest is the best and the old is the worst without checking what problem the new solves, and this is the fault of the developers but also of the companies, who adopt the new technology just for the sake of the trendy thing.

I think the industry put a lot of effort into praising people who are into the trendy technologies, but much less into people who had a lot of experience in maintaining a great legacy technology, the trend now is to change jobs every 2 years or so, but people who maintain a product for several years has a value that a person who is jumping every 2 years MAYBE not.

The point I'm trying to make is that maybe being a hipster in tech is not just your fault, we as an industry have a small part of the blame too.

Collapse
 
phongduong profile image
Phong Duong

It is exhausted to learn new tools every day. So that being lazy sometimes is a privilege for developer. Do nothing or something you love after work will benifit you in long term

Collapse
 
golfman484 profile image
Driving change

There was once a book written in the 1990s which promoted the idea of the "Lazy programmer".

The book argued that lazy programmers wrote the best code because they would do things like 'reuse' rather than 'copy paste' and write 'high quality, well modularized' code instead of 'crappy spaghetti' code.

They did this because they knew they would have to maintain the code and, being lazy, they wanted the smallest possible code base (via reuse) and the easiest to maintain (high quality, no crap code).

Lazy programmers are too lazy to maintain crappy bloatware so they do their best to avoid creating it in the first place - hire a lazy programmer today! :)

Collapse
 
eekee profile image
Ethan Azariah

And then code reuse and laziness became Ultimate Virtues, package managers were invented to facilitate it, and maintenance became a nightmare as many devs used other peoples' code with little care. Rather than write the smallest possible code base, easy reuse facilitated bloat and many devs freely indulged in it. I was there at the time. I built my own Linux From Scratch, then I got involved with a distro. I burned out hard.

I think the lesson here is that soundbites out of context get far more traction than actual sense. It's always been a problem. Don Knuth's Goto Considered Harmful was a well-reasoned and balanced paper, but it triggered a fanatical purge of goto which Knuth found disturbing. I think there are other examples, but I just got up and I don't like recalling the bad stuff.

It feels like the problem was worse in the era before most programmers were on social media. There have been "electronic bulletin boards" since the 60s, but I suspect the demographics were heavily skewed towards students. Probably, 90% of mature programmers didn't have access. Then came "eternal September". In 1993, half the kids in America got online and started plaguing the Internet with things they were enthusiastic about but didn't understand. Prior to 1993, September was always like that as new kids got into universities, but the professors had a chance to calm them down. From 1993 on, the hype just never stopped. But now, reading dev.to, I see matur*ing* programmers exerting some influence for good. It might just be my limited perspective, I don't know.

Thread Thread
 
golfman484 profile image
Driving change • Edited

I think the book's author was being rather "tongue in cheek" or maybe even ironic with the term "lazy programmer". The term was probably just click bait in an era before the term "click bait" existed ;)

What I believe he was really promoting was "work smarter, not harder" but that mantra was well established, even back in those days, so would not have had the same eye catching effect on a Borders bookshelf as the concept of an IT author "promoting" laziness.

Everyone knows that the most laziest of programmers are too lazy to spend the time to refactor code to effect code reuse and thus a smaller, more maintainable code base. Truly lazy programmers will copy/paste themselves and the companies they work for into a code bloated, unmaintainable, spaghetti oblivion. I know this because I've seen them in action in various companies for multiple decades. It never ends well. Even if the company survives the bloatification and duplication of their code base their profitability is usually severely constrained.

I remember one project I was brought in to "fix" at the 11th hour. Customer complained about a particular issue in one of the pages and I worked out the cause and fixed it only to get a call from the customer to say the exact same issue happened on another page which I thought was odd ... until I worked out that this other page used virtually the same code (with the same bug) just copy/pasted. I thought, maybe I should search for other occurrences of this code and associated bug ... O_M_G the original developer had FIVE instances of this exact code in the code base when a simple refactor could have seen it done in one method that was called from the 5 places that needed it. Fix the code in that one place and the bug disappears in all 5 pages!

Radical reuse? No, it's just what a half decent developer should have done in the first place.

I remember the Don Knuth's "Goto" experience. Certain types of parsers are much harder to write without using goto but there was the potential for overuse in C, especially by self taught hobbyist programmers coming from BASIC where 'goto' ruled the seas.

Thread Thread
 
eekee profile image
Ethan Azariah • Edited

I used to read Coding Horror, I do enjoy reading experiences like that. I'm glad I don't have to experience them myself! ;) But no matter how much we explain what the authors of this book and this paper meant, their titles have absolutely been taken out of context. I saw more of it in Linux in the '00s, I think. Perhaps it was the same self-taught hobbyist programmers coming from BASIC who took them out of context, but I think many of them were too young to have experienced that sort of BASIC.

Collapse
 
phongduong profile image
Phong Duong

Lazy devs are the best

Collapse
 
alexjohnsuarez profile image
ASuarez

Nice one!