Every line of code that you write is important. Even the ugliest line of code that you'll ever write with the worst complexity, is important. It's an opportunity to get better, it's a lesson, like any other failure in life. It teaches you something.
That said, the approach towards creating products, writing scripts or learning programming should be a simple battle-tested strategy
- Make it work
- Make it fast
- Make it pretty
regardless of the tools you use, this is a framework used most commonly across the industry.
I was in the 2nd year of Engineering when I gained some interest in Frontend development. It was fascinating as the output was instant along with the dopamine rush. I loved it, I went to a classmate who had way more experience in programming than I did. I asked him about Frontend web development and the scope of getting a job/relevancy in the future. He scared the living shit out of me that day, saying stuff like websites like WordPress and Wix will take over all this, no point in learning it. To me, he was the source of truth, I never questioned what he said, as he was way more experienced than in this field. I took his advice without cross-verifying it on google and jumped on the hype trains that he mentioned.
That particular day taught me a few things in retrospect
- Hype Sells
- First Principle Thinking is everything
- Listen to all the advice but do as you want
Hype Sells
Let's be honest, people are scared. People are scared of becoming irrelevant, people are scared of losing the rat race, and people are scared of missing out on trends. I am people. Doesn't matter how contrarian you are, if you are reading this you are in some sort of rat race or another. A rat race does not have to be something looked down upon, there is not one single rat race, there are multiple. Going by the very definition of a rat race — a way of life in which people are caught up in a fiercely competitive struggle for wealth or power. Every "Profession" comes under this category. I don't know how much and how many of you do it for the PASSION but tomorrow if someone stopped paying you for it, would you?
Coming back to people being scared, people on the internet sell courses hyping the tech stacks, inviting gullible grads to take up a course promising the cushy high-paying tech job. One of the courses that sell like hotcakes is "Web Development with React". The barrier of entry is really low for this, you need HTML, CSS and good control of JS, that's it. React is a beautiful piece of work. It's elegant, I love it, I use it very often, and I love the control I get while coding the logic along with the HTML (I know it's called a JSX file). It is famous for a very good reason, it is adopted by a lot of companies, it is battle tested to an extent, and there are other frameworks, but React has stayed relevant in all these times.
Since it's this popular, it's fine for people to sell their React courses, no issues there. However, this is causing an influx of a lot of "React Developers", which is fine, but working in tech, shouldn't they be a Software Developer instead of a React Developer? The most obvious reaction to this take would be "If someone is a React Developer they are a Software Developer too, duh." Valid response, but hear me out. We have been trying to hire a FrontEnd Developer for a while now, we got 2 interns, both did some React courses on the web, and were excited. We discussed the company's tech stack in the Interview where we mentioned, our main e-commerce website is built on Shopify, hence we use their templating language Liquid. We mentioned the internal apps which are built using Next.js and some of the apps built using Django.
Shopify has a mature ecosystem, a powerful templating language, and a codebase flexible enough to support npm packages, custom logic and editing of existing files. It is easy to follow tutorials and also integrate React/Vue etc in the Shopify codebase for a website.
However, since hype sells, people are hyped up about learning a particular tool/stack and making that their whole personality. They would not even consider researching the compatibility of different systems. A lot of emphasis on React and very less on Development. What good is a person's knowledge of the framework, if they are not flexible with business needs, do they pivot to freelancing then? Some people come out of those courses and expect to work on the same thing at work as well, and even if there is a small difference in concepts compared to the framework they learnt, things start feeling overwhelming.
First Principle Thinking is everything
One thing which can be used to get rid of all this mess is to get strong with your basics, which is obvious advice. When things start to feel overwhelming, you can spend time finding patterns in the problems you face, rather than chugging on stack overflow answers to make stuff work.
In this great conversation between Dr. Kailash Nadh and Arnav Gupta they talk a lot about first principles and how it shapes you and your work as a developer.
Dr K mentioned some great points there about first-principle thinking. When you get stuck on a problem, your approach to solving it is decided based on your self-awareness as a developer. If you are a web developer who learnt the syntaxes of JS and decided to learn React without even knowing how to manipulate the DOM, you are going to have a tough time when someone throws a Jquery codebase at you. And there are high chances that your organization uses JQ for some tool, as it is still a large part of the internet.
Dr K explains why having a hands-on experience on a wide variety of tools and technology helps you to understand things that you don't know.
You will probably not be able to make decisions regarding tech stacks if you have already married a framework, getting outside the mindset of being Developer to a Software developer who dabbles in different stuff concurrently will help you from all directions in your career.
Listen to all the advice but do as you want
Now as a fresher, dabbling with a lot of technologies sound overwhelming, calm down, and take a deep breath. This is why I mentioned — get done with your first principles first!
However, you need advice, everyone needs advice, even Vito Corleone wanted some good advice, hence he had Tom Hagen. In tech, you can have multiple Tom Hagens. The problem is, some of them are just pretending to be Tom Hagen. It's your job to find those and ignore their advice, they might fill your brain with crap, find someone you know personally, and start from there, no need to shout at 1000 people on Reddit for advice, you'll get some good advice from the people you know personally, even if you don't get, you have at least started the journey, it'll lead you to the right people. The good thing about getting advice from a large set of people is the data set you have, if you have data from a small set of people, make sure you trust them. Finally, you can do as you wish, because even Tom Hagen's advice sometimes can't be good, if you are Michael Corleone.
This mini-rant in the face of a blog was because of the attitude towards development I saw in many Developers. Hopefully, they dabble more and understand when to bring a knife, gun and a bazooka to a fight. Here I am nowhere trying to prove I am a perfect developer who has everything sorted, I am really bad at development, to be honest, you'll vomit if you look at my GitHub, but that's fine because the first sentence of this blog is a self consolation. Hopefully, this brings some change in the attitude of the people who follow a course and make it their whole personality towards development in teams where people are working on multiple services in different stacks.