If you’re embarking on the journey to becoming a software engineer, then this is for you. The insights from this story are drawn from my own personal journey and struggles while studying at Microverse, an online coding school.
As someone who is also relatively new to the world of programming - I jumped in about a year ago - I’ve collated a list of skills I believe are essential for any aspiring programer.
The Art of Googling
Googling is an art, you say? While it may seem trivial, this is actually the first skill every beginner needs to master. Trust me.
Without knowing how to Google effectively, it will be nearly impossible to navigate through the vast ocean of information on the internet that you will need to comb through, to find your answer.
To Google effectively requires 3 things:
1) Understanding what fundamental questions to ask to solve your problem
2) Knowing how to ask/phrase key questions and searches
3) Being able to carefully assess and select which sources to consult
This means being able to quickly navigate through the most visited sites and forums where programmers confer; Stack Overflow, Reddit threads, Dev.to, and Hacker News, to name a few. As well, as being able to read and plow through hours and hours of documentation to understand how languages and frameworks actually work.
And it doesn't end there . Using Google to get unstuck will be a regular occurrence. So, what's the secret?
Make Google your new best friend.
As the popular saying goes:
"If you don't know something, Google it!" - Ancient Proverb
The Art of Patiently Sitting Down
How is sitting down related to programming, you may ask? Well, my friend, being able to sit down (or stand up for those who prefer standing desks) for uninterrupted periods of time on your laptop is a requirement if you want to learn how to code.
Without this skill, it will be nearly impossible to become a programmer. Programming is not for the faint of heart, or those who cannot fathom being glued to a chair, while feeling helpless, as their mind races for solutions.
In fact, the TechLead, Patrick Shyu, says that those who cannot transform this skill into a habit will most likely end up quitting. The upside is that this skill can be learned with conscious effort and daily practice. And, once mastered, it will be the quickest and easiest way to learn how to code!
The reason this skill is so crucial to master is that it unlocks the ability to be able to get into the zone. This is when programmers are able to figure out how to make that one thing work and make the magic happen.
This phenomenon is also known as deep work, which is such a fundamental skill for learning and doing anything hard.
“Deep work is the ability to focus without distraction on a cognitively demanding task. It’s a skill that allows you to quickly master complicated information and produce better results in less time.” — Cal Newport
Get in the zone in 3 simple steps:
1) Block out chunks of time to deliberately focus on one thing via tools like Flow (I personally use and love this!), a Pomodoro timer that helps you focus and be more productive.
3) Resist the urge to multi-task and jump from one thing to another.
Once these conditions are met, it will definitely be easier to get in the zone.
Breaking Things Down Into Smaller Pieces
I learned the importance of this skill firsthand from three of my rockstar mentors, Damien Kan, Albert Padin, and Paolo Samontanez. They all taught me this lesson — being able to break things down into smaller, more manageable chunks, is essentially what programming is about.
More often than not, there will come a time when you get stuck. Honestly, it’s an extremely crappy feeling. No, you are not a special unicorn, all developers go through this. In fact, if you really want to become a programmer, then you will have to embrace this feeling, as it will never go away. Even the most senior programmers get stuck very often.
It was precisely this moment when I felt that all was lost, that I remembered my mentors words and advice.
An easy process to keep in mind when breaking things down:
1) Zoom out and realize that if you look at the project as one gigantic problem, then, of course, you’ll feel overwhelmed. Instead, reframe that one big problem into little pieces that you can actually work through.
2) From here, identify what the goal is and ask yourself, “What’s the simplest and fastest way I can get this done?” With this in mind, you can now map out the path of least resistance, knowing what needs to be prioritized.
3) Now that you have a map to build the skeleton project, assess the tools you have in your toolbox. Look at the current skills you have, and go with the simplest approach to tackle each problem, step by step using those.
By following this process, you avoid adding unnecessary complexity, and will learn the crucial skill of knowing how to organize, map out, and structure your thoughts into a clear and straightforward action plan.
As I learned from my mentors, at the end of the day, knowing how to break things down, is what programming is about. Projects don’t just magically come to life on their own, in one go.
Like with buildings, actual construction only happens after there’s a blueprint. And even then, things still happen sequentially, with each brick laid carefully and thoughtfully, one instance at a time.
What’s amazing is that this doesn’t just apply to programming. Will Smith adopts this principle, which he attributes as one of the reasons he can overcome seemingly impossible obstacles that block his path to success.
“You don’t try to build a wall. You don’t set out to build a wall. You don’t say ‘I’m going to build the biggest, baddest, greatest wall that’s ever been built. … You say ‘I’m gonna lay this brick as perfectly as a brick can be laid,’ and you do that every single day, and soon you have a wall.” — Will Smith
Embracing Struggle & Putting In The Hours
Above all, the most important skill is being able to grind it out. The truth is — if you’re new to coding, then you will really need to embrace the struggle. There’s just no way to go around it. Without putting in the hours, there’s no way a person can learn and process the sheer mass of information that one gets bombarded with.
As you struggle to learn, you will likely feel like quitting. Not once, but multiple times. It will feel as though you are stuck inside this deep pit where you have no choice but to climb up if you want freedom. As an aspiring software engineer myself, this is how I feel at times.
Learning to code means getting used to feeling uncomfortable, unintelligent, and lost at times. And you shouldn’t beat yourself up about it.
You’re in charge of your own education. If you want to learn anything, then you just need to practice. This is the same as when you learn guitar, or anything for that matter.
You try, then fail. Try, then fail. Repeat.
You try again and again until eventually, it sticks. This cycle, although unavoidable and painful, will definitely be worth it. What matters is that you’re putting in the reps and sticking to it every day.
The simple fact is that if you don’t put in the hours and the effort to struggle and grind through it all, then you won’t learn, or go anywhere for that matter.
It’s precisely by embracing the struggle and putting in the hours, that one learns how to code, make sense of data, and build meaningful products — apps, systems, and solutions that touch and influence millions, impacting the very fiber of our lives.
To put it simply, I believe these words tell the whole story:
“There are no shortcuts to learning how to code. I fully believe that anyone can learn to code. It may not be easy, but it’s definitely doable. The people I saw who became the best were the ones who put in the most hours. Put in more time, then you are bound to be better. Period.” — Damien Kan
And that’s exactly what it takes to become a full-fledged software engineer, and why it’s crucial to master these skills.