
STOP Learning Programming Until You Learned These 3 Things
Are you in the process of learning to become a programmer?
If so, then you must be familiar with all the coding tutorials out there telling you that it’s critical to learn about this language or that framework NOW.
You must have dealt with those “object is undefined” errors that you couldn’t seem to get rid of.
You must have experienced the hostility and unhelpfulness from some community Q&A and support sites towards your “stupid” or “lazy” questions.
You must have beaten yourself up over those unfinished side projects which supposedly will make your portfolio that much more attractive to potential employers.
What went wrong?
You spent countless days and weeks and months learning how to program to become a “real” programmer.
But why is the journey so difficult, confusing, doubtful, frustrating, overwhelming, humiliating, and… exhausting??
If what I described above resonates with you at all, then you might want to consider taking a break from the actual programming/coding part of becoming a programmer.
Stop learning about that language you absolutely need to learn in 2017.
Stop reading about that framework every employer is hiring for.
Stop tweaking pixels in CSS and refactoring application code in your Awesome Side Project.
Stop learning about technical stuff until you realize this:
Programming and all the technical skills are just one part of what a programmer does. Which means if you devote all your time only on learning how to write code and nothing else, you will inevitably have a hard time in the process.
Based on my own experience since I first started learning how to program some 10 years, here are 3 things I learned that are equally, if not more, important to a programmer than writing code:
1. How to prioritize
As you might have learned by now, programming is not just about learning one language and making things with it. It’s about learning a million languages and frameworks written on top of them and making sure different parts work together seamlessly.
(Front-end web development is the worst, lol, but I love it for that reason)
New languages, frameworks, libraries, and buzzwords come out every week.
- How do you know which ones to learn first?
- How do you know if you should even bother learning any of those?
This is where you need to ruthlessly prioritize.
In order to do that, you need to figure out what your goal is.
- Is your goal to automate repetitive tasks?
- Is your goal to build a top-selling app in the App Store?
- Is your goal to find a better job that uncovers more of your potentials and pays you more?
Clarifying on your goal early on. And prioritize like there’s no tomorrow.
Seriously, imagine you have no “tomorrow.” No more fucking around and learning things that don’t necessarily help you achieve your goals and make you happy.
2. How to ask questions
As humans, when we learn something new, it’s inevitable for us to encounter obstacles and ideas that we simply cannot grasp because of our limited knowledge.
We don’t know what we don’t know.
So, naturally, we ask others who are more experienced for help.
Now, if you are like me when I first started, you know that asking questions really isn’t as straightforward as you think.
The first question I asked on StackExchange was so bad that it got downvoted to hell, closed, and later deleted.
I wasn’t trolling; I wasn’t being cocky; and I wasn’t trying to get people to google the answer for me — I tried to do my own research which didn’t help at all.
I genuinely, politely, and humbly asked the question: “How does SaaS products work?”
I was like, “I’m just so confused… how do they work? How do sites like Shopify that offer different plans and pricing manage to do it?”
At the time I wholeheartedly believed a SaaS product that has different pricing tiers requires different modified copies of the same software.
So if you were on the Premium plan, you get the app as is. But if you were on the Basic plan, you’d need a copy of the app that has fewer features supposedly running on a different server; I was REALLY ignorant.
But because I didn’t know what I didn’t know, I couldn’t articulate my question so that it’s coherent and comprehensive for others reading my question.
Contrast that to today where I’ve learned how to ask questions the right way, my questions are almost always answered, upvoted, and actually helpful in solving my problems.
(I’m a proud owner of Famous Question badges on several of my questions on StackExchange, haha)
It’s not even just limited to programming questions on StackOverflow. My questions in music, photography, and other StackExchange sites were also well-received.
Instead of asking vague and general questions that lack details, my questions are clear, detailed, and mostly importantly, others could better understand my questions and be more willing to help.
Your questions should help others help you.
Understanding the right way to ask questions tremendously helped me grow as a programmer/software developer.
3. How to manage expectations
OK, this one is yuuuuuge. But what do I mean by managing expectations?
If you are working on your own side projects, then you have expectations of yourself in terms of how long it will take to complete the project, how many features you should include, how you should structure the project, etc.
Since you have control over pretty much everything, you run the risk of setting high and unrealistic expectations for yourself.
Typically this comes in the form of perfectionism and overestimates of your time, resource, and skill level. For example, you set out to build a full-blown SaaS product in 3 months when you only just started learning about JavaScript.
Such expectations are unrealistic and overwhelming. There is a high chance that you will not accomplish it, which in turn negatively impact your self-confidence and drive to continue learning.
Now, if you are working on someone else’s project (a.k.a. an employment), working with your project manager and colleagues, you will have expectations from others in terms of how you work, how long it takes, and how well your job is done.
Managing others’ expectations then becomes crucial because they directly affect your stress level and reputation.
Imagine, if John from sales asks you to fix a minor bug in the app you help maintain, what would you do?
When I first worked in an office setting, I was saying “yes” left and right to these requests.
They are usually quite simple, and quick to fix. And they help me build relationship with other colleagues, so I thought “why not?”
As time passes, problem arose :(
Because I was accepting all these requests without much consideration, people started to not respect my time as much as before. It had become normal for people to just throw requests at me and I was expected to just put my own tasks aside and start working on helping them.
Not only that, people also expected that I would fulfil their requests quickly because I had always been really efficient in helping them solve their problems.
Can I blame them for asking for help? No.
Should I blame myself for helping people and building relationships? No.
The lesson that I learned the hard way was to manage expectations, both from myself and from other people.
Instead of always accepting the requests and working on them ASAP, what I should’ve done was leave some buffer room for myself in case anything goes wrong, and at the same time explain to others that I have my tasks, so I can help them when my work is done.
The phrase that illustrates this point the best is the famous
“Under promise, over deliver”
So that’s that for managing expectations.
Whew, this article has gotten longer than expected. So if you stuck through it and found it helpful, then thank you and congrats!
In summary
Being a programmer is often more than just writing code, regardless of which level you are currently at (beginner, junior, intermediate, or senior).
While it is important to sharpen your skills and perfect your craft, there are other things that are crucial to becoming a successful programmer.
Prioritizing ruthlessly, asking questions clearly, and managing expectations intelligently will potentially help make your life 10x easier.
Thank you for reading :)
If you wish to read more about programming, learning, or other random stuff I write about, check out my site http://ilovecomputering.com.
