viphat / til

Today I Learned
http://notes.viphat.work
0 stars 1 forks source link

Self-doubting Developers #270

Open viphat opened 6 years ago

viphat commented 6 years ago

For a period of time, I also experienced intense self-doubt, wondering if I would ever make it.

Intense - Extreme and forceful or (of a feeling) very strong:

Intense cold/heat/hatred. An intense flavor/color He suddenly felt an intense pain in his back.

It happened in college when I was practicing and preparing for job interviews. Each day, those algorithm problems made me feel like a complete failure. I was stressed and worried, as much as you might be now.

Eventually, my practice paid off and I received multiple job offers from prestigious tech companies. Along the way, I learnt two important lessons that changed my view of programming and eliminated my self-doubting thoughts. I'm sharing them with you now. Hopefully, they help.

Learning Programming is exactly the same as building muscles.

To learn programming, you need to sit down and code.

When stuck on a programming problem, your brain will (literally) hurt and you will get frustrated.

You won't give up working out simply because of feeling sore. You know it's part of the process. But when you get stuck while programming, you might start doubting yourself, wondering if you are talented enough. Because: (1) you think getting stuck is your fault, (2) others make it seemed effortless.

1. Getting Stuck is Part of the Process.

Maybe no one has told you that, but it's absolutely normal to get stuck during programming. It happens even to senior developers. A big part of programming is about figuring out why what you expected to happen didn't happen. If you agree that expecting a child to be able to walk the first time he or she stands up is absurd, why would you expect the first draft of your code to run perfectly without any bugs?

I remember times when I got stuck for so long that I wanted to bang my head against the wall. I know it's hard and frustrating (especially when dealing with issues related to dev environments). But hang in there. Dig into the issue. Ask Google. Ask a friend. Take a walk. You will eventually solve it and move on. And as you gain more experience, you will gradually get stuck less.

Next time you get stuck, don't give yourself a hard time. Remind yourself it's not your fault. It's normal. It's part of the process.

2. We confuse genetically smart with appeared smart because the person has spent tons of time on related subjects.

I had spent countless hours practicing coding challenges. It appeared effortless only because I had already been through these struggles.

When I first self-taught these concepts, I would spend hours taking at a problem and couldn't figure it out. When I gave up and looked up solutions online, I struggled to understand them. When I finally did, I felt even more frustrated because I doubted I would ever be smart enough to come up with such a solution myself.

Sometimes even when I encountered the exact same problem again, I might've still had no clue on how to approach it. I would get so stressed that I had to take long hot showers to calm myself down.

So believe me when I say that I know how it feels to doubt yourself and worry that you can't make it. I have been there before. And I can assure you that you are not alone. Many great developers have been through the same thing.

Next time you are struggling while people around you are excelling, don't think it's because you are not talented enough. Most likely, they just have more exposure to the subject, or similar subjects, than you. Their brains have built up the muscles to handle this type of subject. After you get through your current struggles, you will appear smart and effortless as well.

The more effort you put in, the longer you train, the stronger you become. Learning programming has the exact same process. The more time you spend coding, the more proficient you will be. You reap what you sow.

Focus on your craft, not you.

Stop thinking about how good or how bad of a programmer you are. If you are in the bottom 5% of your team, you want to get better. If you are in the top 5%, you still want to get better. No matter how good or bad you are, there are always people in front of you and people behind you. So why waste time thinking about it?

Instead, focus on your craft. Stop asking how good you are. Ask how good your code is. How can you make it better, faster, more readable? Surround yourself with engineers you admire. Read their code. How is it different than yours? What are the trade-offs they are making?

If you already work as a software engineer, someone is paying you to write code. You should pause and reflect on it, as it means a lot: someone either believes in your coding skill or sees your potential. The only way to live up to that potential is to focus on your craft and improve it relentlessly.

Relentless - continuing in a severe or extreme way.

Action Item: Start keeping track of small wins

Use the doc to keep track of challenging problems you overcame and what you learned from them. Always, always celebrate these small wins.

Prestigious - Very much respected and admired, usually because of being important