DEV Community

Cover image for Focus on the product, not the tech stack
Chirag Aggarwal
Chirag Aggarwal Subscriber

Posted on

Focus on the product, not the tech stack

Recently I got this DM,

Twitter DM

“Which tech stack should I learn?”

“Should I use Next.js or Svelte?”

“Is Python better for the backend than node?”

I am sure we have asked or been asked questions like this several times in our tech journeys. As someone who is just starting out, I think it seems like a very important thing to ask. You don’t wanna waste your time learning a technology that might become worthless soon? Or isn’t fast enough? or isn’t the “industry standard”… right?

Or should it matter?

Languages are just tools

Back in 2003 when Facebook was originally founded, its backend was written in PHP. Was it the lack of options? You can say so. Back then they certainly didn’t have a plethora of frameworks or hell even languages to choose from. But what about now? Realistically PHP should be dead by now…

Right?

But if you look at the statistics by Kinsta, around 79.2% of the internet still relies on PHP to some degree. Okay, but that number has to be declining for sure!

But wait...

PHP Trend Chart

Nope, it has been on a steady increase since 2011, peaking at 80.6% in 2015, and maintaining a steady line.

But how?

It’s because language is just a tool. It does not matter how many new bleeding edge languages enter the market increasing the performance metrics by some fractions of seconds, as long as a tool language sufficiently fulfills its job, it will stay relevant. PHP has done a great job at that. It’s constantly evolving as well, something which is direly required to stay alive in the software world.

So next time if someone asks you “Which language should I choose?”, ask them two things:

  1. Which language are you more comfortable with?
  2. Do the other languages provide a set of features more beneficial for your use case? Even if so are they worth the effort to learn? (arguments like uh it's 0.001sec faster should not be relevant)

It’s OK to not upgrade

Updating dependencies meme


Image from: https://foreverealize.me/posts/how-to-update-dependencies/

I was once asked, “Why is your website still at Next version 13 when 15 has arrived?”

To which I ask, why does it matter? Sure software is meant to be ever-evolving, but that doesn’t necessarily mean it's a good idea to always hop on the upgrade bandwagon without looking at the consequences.

This in this case will be a complete re-write since Next 15 introduces a ton of breaking changes.

And it's OK not to upgrade every time.

Judge a product by its usefulness, not complexity

A lot of people especially those building projects just for improving their resume will try to make them extremely complex. It will be a wobbly mess of high-end sounding technologies like SSR, TRPC, GraphQL, Kubernetes, Redis, etc.

Sure I do understand the thinking behind this, it does show your ability to work with complex technologies.

But in the age of AI and the really fast-moving pace of technology, it's pretty trivial for someone to learn technologies on the go and incorporate them into their project. Real engineering will always be that “solves a problem, not create one”. Solving problems always requires asking questions first:

  1. Does your project really need TRPC or GraphQL? Why not just use REST like everyone does bruh?
  2. Do I really need Kubernetes for those 5 concurrent connections?
  3. Does my really interactive website need SSR where then each button click will be a server action and take ages to process any action?

Tutorial hell meme

And please, stop building clones. It does not matter:

  • how many services you use in it
  • how much knowledge you gained from creating it
  • how complex the project was to make

The YouTube clone you made by following a random Youtuber’s 8-hour-long guide is not going to help you in any way.

Quoting Theo (idk where he said tho):

To build a great product, you need to first be a customer

If you want project ideas, look around you. Try to solve problems you face every day. If you just try looking, you WILL find many.

Final words

This blog is a summary of my (I admit very short-lived) experience of working in tech till now. I always tried not to treat tech as something I specialize in, but as a tool that helps me solve problems.

I started off my journey in web with a simple problem, I just wanted a website of my own because it would be cool :D

Then a simple problem gave birth to more problems with a chain reaction ongoing, to me finding myself working with PHP, something I would have never imagined doing in a million years before.

So…. that’s it. Keep building and showcasing your work, and most importantly, have fun at it!

Top comments (20)

Collapse
 
ben profile image
Ben Halpern

Absolutely

Collapse
 
nicoestevez profile image
Nicolas Estevez

I’ve seen some super technical teams with a lot of frameworks, good practices and time wasted in code reviews and so, deliver nothing, only wasting company money playing to be good engineers!! I totally agree with you ! Thanks for the post!

Collapse
 
mohammedahmed profile image
Mohammed Ahmed Hussien • Edited

Do you think the technical temes has a responsibility to delivering the product?

Collapse
 
braska profile image
Niklas Ekman

Great post.

Some feedback: You need to differentiate hobby and professional software. This post needs more nuance. In certain contexts, I absolutely agree with it and others not.

If you keep asking the question "what tech stack should I use?" then you're in the phase of your learning that should probably just do something. Don't get stuck, just do something. Same goes for being a junior developer in a team. It's better to produce then to get stuck.

Creating clones and trying out tech stacks is exactly what hobby projects are for. Once you work professionally or you do something with the purpose of actually making money, go with what you know.

You don't need to upgrade every time but staying up-to-date with security patches is a must in a professional context.

Collapse
 
rohan_sharma profile image
Rohan Sharma

Great insights!

Collapse
 
k0msenapati profile image
K Om Senapati

Cool

Collapse
 
dotallio profile image
Dotallio

Couldn't agree more, solving real problems instead of chasing the latest stack has always pushed me further - and honestly, it's way more fun that way. What's the most unexpected tech/tool you've ended up loving just because it solved a problem for you?

Collapse
 
sinni800 profile image
sinni800 • Edited

Still maintain a web app that runs 4000 requests a second (with mysql, solr and memcached) using a single server, on php.

The single server (which is mirrored and backed up, btw, so it has failover) is a 64 core ryzen. Using cloud, serving literally millions of requests in minutes would cost us so much that it would be bankrupt in a month. But this way, we pay a few thousand per month in server charges for probably 10 local content servers (that are synced using rsync) scattered over the world. Global traffic rank btw around place 500-600.

By now the single server is backed up by a second server that does some additional tasks, but the brunt is still covered by that one server.

Use what works.

But that said, you sometimes need to be able to anticipate. Do your best, don't take "it'll be fine" sort of shortcuts. Try to understand your stack, and that's easier when your stack isn't tall.

I had to write a lot of libraries myself, but now I understand them. This is good. They also only do exactly what is needed and nothing more.

Collapse
 
nevodavid profile image
Nevo David

Yeah Ive wasted way too much time stressing over tools before actually making anything. This hits hard.

Collapse
 
chiragagg5k profile image
Chirag Aggarwal

Thanks! 😄

Collapse
 
k0msenapati profile image
K Om Senapati

fr

Collapse
 
md-abid-hussain profile image
Md Abid Hussain

True

Collapse
 
urbanisierung profile image
Adam

Fullack

Some comments may only be visible to logged-in visitors. Sign in to view all comments.