In the last piece, we looked at what to expect on your journey in code. That taken care of, do you have what it takes to excel? I believe that, like any skill, anyone can taught how to code. Anyone. Being taught to code is basically a lesson in communication. When you strip it of all the buzz created around it, you are being taught to address a different audience-a dumb audience at that-one that only does what you tell it to. Just as you were taught that typing “lol” elicits a certain reaction from the person on the other end, you are being taught that typing println(“It is well”); makes your computer act a certain way. Communication skills 101.
As with any form of communication, there will be individuals that are masters of the art. You know English and string together phrases on Facebook every so often; Douglas Adams, Wole Soyinka & Toni Morrison use that same language and string together books that make your mind dance an do back-flips in a field of daisies. What separates the good users from the great? In programming, I believe it’s these 3 things
1. Problem-solving skills
Programmers are glorified problem solvers. Looking at the developers I admire, I see that in one way or another, they found a solution to a problem. Problems vary and more often than not, the ones you’ll be presented with as you start out will probably sound like;
I want a website that shows our company’s various offerings and hugs all our visitors
I’d like an app that shocks me every time I go 3 weeks without exercising
As your wins increase, and if the path of your career’s trajectory decides, they can become slightly bigger.
You found a box from an old game. The box contains a lot of sticks and a manual. Frustrated by the fact the manual was unreadable, you decided to invent your own game with the sticks. In your game, the goal is to use the sticks to build as many squares as possible. There are only two rules:
Each stick can only be used in one square.
Each square must consist of exactly 4 sticks. That is, you cannot combine two or more sticks to create one side of the square.
You are given a int sticks. The elements of sticks are the lengths of the sticks you have. Return the maximum number of squares you can make. ref: topcoder.com
Gurus in problem-solving techniques usually recommend that you first break the problem down into smaller tasks; get the requirement, cut it down to size and take it from there.
This skill is critical; I believe it’ll define, in many ways, how far you’ll progress. People good at Maths are usually one step ahead in this but anyone can grow in it. Start from a place of comfort [to give your ego some vegetables] and then deliberately take on bigger and more involving problems as you see fit [and aligned with your career goals].
Resource: Improve Problem solving
You’ve got to keep going. If the way you tried it didn’t work, try another one. It might help if you develop some troubleshooting techniques to be able to zero-in on exactly what’s not working. But you must keep going. The times when “Oh, I woke up and it just worked” happen every time the sun and moon meet at noon and hug-you can wait for that to happen or you can get back to the PC and try to figure things out.
Truth is, some problems take days. Others months. Others (gulp) years. If you’ve counted the cost, then keep going. Dogged-unguided persistence is useless though; you need to take breaks, use good troubleshooting techniques and ASK. Fellow developers. Stackoverflow. Ask. NO, IT IS NOT A DUMB QUESTION. Kill that thought. Ask
3. Read. REEAAADDDDDDD
You might be battling with something because your fundamentals are not right; you might be sweating with code because you skimmed through the tutorial. It’s 2 days of dogged-persistence vs 30 minutes of reading and understanding the tutorial. Don’t skim. Read. Understand. If it doesn’t make sense, find another version that does. The official resource may not make sense so go through blogs and find one that breaks down the fundamentals well. If you can, try video tutorials too. Sign-up for a course (there are lots of free courses and paid courses too). Getting the fundamentals right does some heavy-lifting for you. It’s critical that, as we pointed out here, you are aware of how you learn best. Use resources that communicate to you in a way you learn fastest
What do you think makes a great developer?
Next time, we’ll take this further and look at the tools of the trade