People have one of 2 reasons for getting into the software industry:
- They have the hacker mentality and have been building things and learning to code was just a natural next step in their journey
- They want to make money Neither is a wrong reason. I believe people from both groups are fully capable of being successful in this industry. But the path might look a bit different for both. One of my biggest mistake was thinking category (1) is the only way to succeed in this industry because I went through this route. That lead to me giving category (1) advice to people who fit into category (2). But typically they have a different personality with deriving dopamine from different set of actions and thus should follow a different path to success.
Advice for Category 1
For people who fall into category (1), it’s pretty simple and straight forward. Just keep exploring. You don’t need structure because your curiosity will drive you to newer experience. Some will delve deep into competitive programming, some will end up exploring the art of building good software, some will delve into a very niche subfield (like audio programming). The hardest challenge for people who fall in this category is to pack all their experience into a coherent story. This is especially true for people who want to go for roles where they have to gain other’s validation for success e.g. getting a job etc. However, for people who can figure out a truly permission-less pathway to success e.g. starting a startup, just exploring things should more or less put you on the right path. But even then, if you’re too messy, there might be value in sitting down and figuring out what your story is. Rule of thumb is, once every 6 months, write down everything you’ve done in the last 6 months, figure out why you did the things you did and what goals/metrics you want to achieve in the future, and which tasks you’d have to do to achieve those. That way you ensure:
- You have a coherent story to tell others about yourself. This is very helpful in scenarios where you have to sell your strengths.
- You get the opportunity to introspect about your priorities and stop being all over the place. This helps increase your focus.
Advice for Category 2
For people who fall into category (2), it’s likely that you don’t have the right motivation to stick to coding just for the sake of building something. You might see it as a chore, a means to an end. Even if you don’t have the same motivation to stick to it, you need something else to push you, be it- the ability to be diligent and get work done, an irrational desire to do exceptional in academics etc. In order to level the playing field you have to figure out a way to artificially create an environment where your desires/personality is pushing you to write as much as code as someone from category (1). The typical ways of doing this are:
- Competitive Programming (*)
- Hackathons
- University Courses (sometimes)
Both of these sports recreate an environment where you’re forced to solve problems or build things and are rewarded based on how well you perform. The reward is more instant and objective instead of being the “thrill of creating something”. If you’re someone who thrives in academic environment, this should mimic some of that. If you’re diligent about getting work done, set goals about finishing n number of challenges on Leetcode, HackerRank etc. If you’re in category (2), you need to start setting goals like:
- I want to take part in 5 hackathons this year
- I want to solve 14 problems every week
Setting action based goals instead of trying to measure how much you’ve learned might be easier to get yourself moving because the only goal is here to code as much as the people in category (1), the learning should happen automatically if you do that. With goals like this, you will feel validated once you finish the tasks. You’re essentially artificially creating environments that allow you to do get as much practice as the category (1) people.
The 3rd Category
However, there’s a 3rd category. I truly believe some people are not made for this field. I’ve seen many people fall into this category but deny it for a long time. How do you know you’re in this category? Try as many different forms of “software engineering” as you can for 2 years. If you still feel like you suck at it, maybe consider switching into a different industry. Some reasons why I see people be in denial about this:
-
“If I give up my hopes of being a software engineer, I’m dumb” -this is not necessarily true. What it does mean is you don’t have the right set of motivations to get you far in this industry. You should always try to do something that comes easier to you despite others finding it difficult. That way, you’re much more likely to stick to it for longer and get more competent at it. There are lots of extremely intelligent people in the world who don’t know how to code.
-
“Software industry has more money” - yes but only for the ones that end up becoming competent enough. For the rest, you might make have a terrible work-life balance while still making peanuts. Think about this, if you’re not motivated to stick to it for long hours, you won’t be as good as someone else who might stick to it for long hours. So, statistically speaking, it’s much more likely that if you’re in this industry, there’ll be way more competent people than you. How do you solve it? Find an industry/ job/ skill where you will be successful.
Skilled worker at a different industry VS. Terrible worker at a software industry
These are your options. By choosing to become a skilled worker at a different industry, you increase your chances of success (which also means making more money)
-
“I want the prestige that comes with being a software engineering” - Do you value prestige more than making enough money to lead a comfortable life? If yes, this is a valid cause. But for the vast majority of people, they just need a wake up call. Sticking to this industry after you realized that it’s not a good fit for you simply to please your parents or others in the society means you’re increasing your likelihood of being stuck at the bottom.
-
“I’ve spent so much time into this already” - This is called the sunk cost fallacy. Just because you’ve spent 3 years into this doesn’t mean you should spend 10 more (after you have solid proof that this industry isn’t made for you). Make the decision and switch to a different industry.
So what do you do if you’re in this category? Try out more things. Use chatgpt to find out more skills to try out. Use youtube to learn those skills. Find people who are actually doing things, and ask them if you can help them out for free using your newly obtained skill. If they’re a small business they’ll almost always agree to it. For example, if you love people and are good at empathising with them, understanding their deep emotions, try marketing maybe? You could also try doing some sort of HR role. If you have a good eye for good aesthetics, try becoming a designer? Or maybe ask someone if you can do photography for their tiny event for free? The point is to not be passive about this and actively take action. If you try enough things, you’ll eventually figure what you’re good at, or at least what you hate the least. Sometimes that thing you’re good at won’t be a single skill, but rather an intersection of a few different skills where you’re the top 1% in the whole world only at this very niche combination of skills.
Summary
There are 3 types of people who are preparing to get into the software industry.
- People who are extremely curious about different things, who should continue to let their curiosity drive themselves. They should put active effort into creating a coherent story about themselves.
- People who just want to make money and have the personality to stick to it by artifically creating an environment that rewards them, should create goals that promote writing more code.
- People who are not fit for this industry, should accept it and try out as many things as possible to find out what they’re truly good at and do those.