You decided to learn Python, and you bought a couple of books and courses. You’re super motivated. Finally, you’ll be able to build something all by yourself in a few weeks. The books and courses too make it look utterly simple. What could go wrong?
And then it happens. For some reason, it takes hours trying to install packages with no success. Sometimes, you’re working on a project, but it has a bug that you have no idea how to fix. You could spend days fixing a problem that’s so small that you regret spending so much time on it. Moreover, you feel so bad about not making progress. Your anxiety rises. Your motivation goes down. You’re this close to giving up, for good.
What would I say to you If I were sitting next to you?
First… don’t get frustrated. Programming, or anything else worth doing in the world, is not supposed to be easy. You need to have fun learning as you do building. Don’t just get excited about arriving, but also about the traveling. Remember the last time you achieved something by putting in exorbitant amount of work? Didn’t it feel good once it was done? Whatever it is, you’ve got to learn how to solve it. Search the internet, ask questions, ferret out details, but don’t give up.
I spent my first year trying to learn C++, which was much much worse than trying to learn Python. As a kid, you don’t give up. As adults, we stop at the first sign of any resistance. I really don’t know why this changes as we grow up. It took me 1 year of constant hard work (as a kid, I didn’t know it was called “hard work” at the time) to understand and build my first project. In the early 2000s, there were no Udemy, Coursera, or Udacity. Even having an internet connection was a luxury. Since then, I’ve had a lot of success, and so will you.
Second… Don’t think of this as wasting time on one thing. It’s never one thing. Does your computer simply work on one thing? To do anything useful in the world, you need to use several tools and concepts in tandem. When you get stuck trying to install a package, and finally do it, you would know more about the whole package management ecosystem than any of your peers.
Your biggest enemies are the things that you don’t even know that you’re supposed to know. This is what hits you as a “simple problem.” Once you start digging in, you realize that it was never a “simple problem” to begin with. You really had to broaden your horizon to solve it.
Third… Knowledge is not as valuable as people would have you think. A few years back, people were learning libraries like Theano for deep learning. Today, they’re more into PyTorch. The libraries changed, but the underlying concepts didn’t. If all you know is an old library that isn’t relevant today, you’d become obsolete. If you understand the underlying concepts, however, you’re evergreen. There is a difference between a person who just knows that he has to write
pip install pandas, and a person who knows what’s really happening underneath when you do that. Always prefer understanding over brute knowledge.
Fourth… Companies value problem solvers more than anything else. When you get interviewed for higher level positions, you’re often asked to describe times when something went wrong. You can get frustrated over “simple things” today. But what if you face a problem tomorrow that no one else knows how to fix? Can you rely on your “knowledge?” No. Can you rely on your understanding? Yes, but only if you gained it by solving problems through tough times.
Software engineering has a lot to do with problem solving. Many a times, these problems might not even be technical in nature. What if your business partner comes to you one day and says, “We’ve got to launch this in 2 weeks. We have no other choice. Or else, we’ll lose the deal.” What if that thing usually takes 2 months to build? This happens so often in the software world that it’s not even considered abnormal. How would you build the software, leaving out unimportant parts, such that it gets done in 2 weeks? That’s a problem a lot of people are NOT able to solve.
Fifth and final… The only way to solve your problems are to… well… solve it. They’re not going to get fixed on their own, right? If they were going to get fixed on their own, then you’re not needed. Don’t you want to be useful?
Opportunity is not a road paved with gold. An opportunity is as mess that no one else is willing to touch, but whoever fixes it has all the gold for the taking. What do Sherlock Holmes, Iron Man, <your favorite superhero> have in common? They can do things that others can’t.
Don’t beat yourself up, and be proud of facing problems and challenges that other’s might not be prepared to.