So, you want to become a ninja in the art and science of programming, but you are worried that you don’t have much background experience in this area, and certainly no formal schooling in computer science. That’s OK! In order to become ‘fluent’ in a completely new area like programming, there are a few great tried-and-true approaches that many professional developers follow.
This guidance falls into two categories. First, establish the right mental framework for success; second, execute on specific actions that build long-term mastery.
Without the right approach, spending excessive hours still won’t yield the results you want, as your efforts are less likely to be fully productive (and might even be misdirected). This in turn makes it harder to remain encouraged and high-energy in your quest. So today’s blog (part 1 of a 2-part series) describes techniques that create the best possible mindset to teach yourself programming
1. Think long–term, stay positive
You’ve likely seen perfectly capable people convince themselves that they are not up to a task ahead of them. Don’t fall into this trap! First, put yourself in the right frame of mind with the right expectations. Going ‘from n00b to ninja’ requires a lot of energy, applied consistently over a considerable period of time. Like drips of water that eventually drill through a slab of granite that seemed indestructible, your everyday efforts will move you toward your goal, as long as you dedicate yourself to the long-term outcome.
Maintaining a positive attitude over the long-term is crucial. Don’t kid yourself – mastery won’t happen overnight. That said, each day brings you closer to success, so look for small victories along the way, and use them as encouragement to keep pushing forward.
2. Respect the power of focus
What if you had a “high gear” enabling you to work 3x as fast? We do! It is that state we feel when we focus uninterrupted on a single challenge. Find that zone, and stay there, to stretch time and multiply your progress.
Texting and social media may seem harmless to your focus, but studies show that even tiny interruptions may cost 25 minutes of productive work. Just as you acknowledged that this journey will take time, you should also acknowledge that you have a fixed amount of attention – so be intentional about where you spend it.
Set aside a few times each day to reconnect (perhaps around meals; these are interruptions anyway). Otherwise, unplug from social media; disable email notifications; mute your phone and put it out of view; close other apps and browser tabs.
Apply “distraction-free mode” elsewhere as well. Keep your computer desktop spare and distraction-free, reflecting your new focus. Empty your email inbox before bed, allowing your mind to dream of other things. In your physical workspace, move distractions out of view.
Being intentional about ‘defending your focus’ is particularly important during your quest to conquer a new area.
3. Develop and keep good habits
Developing good work habits early on will serve you throughout your career, so why not start now and make your journey toward mastery as efficient as possible.
Whether a star programmer or a superstar athlete (or both!), you need to keep yourself healthy. If your body hurts after a long computer session, fix your configuration (raise the monitor, lower your keyboard, get a better chair…whatever it takes). During your regularly-scheduled breaks, get some exercise to keep your body moving and your blood flowing. Try not to eat too much junk food (this can be hard; many programmers are consummate snack-junkies). In the end, your body dictates your energy level, so treat it well!
Software engineers create value by making intelligent analysis and wise choices. Your value springs from your mind, so be intentional about staying sharp. Even as you work harder than ever, make sure to get enough sleep! Resist the urge to trade away an hour of sleep for an additional hour of late-night work – focus on quality, not quantity. Give your mind and body the rest they need, so that each hour of work is maximally productive.
4. Find a coach you trust
To get in physical shape, you could just get a gym membership – but your efforts might be unfocused or even counter-productive. A better approach, one that makes best use of your time and effort, would be to work with an expert that keeps you challenged and focused on the right things.
The same is true as you work toward programming mastery. With so many technologies and resources out there, how do you know where to start and what to prioritize? You need a guide to point you in the right direction and keep you working on the right activities. Find a coach who will challenge and accelerate you, someone that understands your situation, commits to your goal and knows how to take you there.
To maximize these benefits, you need to trust and follow the plan. Sometimes it might be a very specific set of focused coding exercises to follow without deviation; other times, it could be “build it again, faster”; sometimes it might be “You already know all the basic ideas; show me how you put them together”. Regardless, the point is this: commit ahead of time to follow where the coach leads you. It shouldn’t be difficult. If your instructor has become a trusted coach, by completely buying in you avoid a lot of potentially wasted energy and time.
5. Love what you do! Do what you love!
We’ve discussed how to prepare yourself for a sustained stretch of hard work. Imagine how great it would feel, if the ‘work’ didn’t seem like work at all? If the target of your ‘quest’ is something that engages your brain and feeds your heart, a positive reinforcement cycle kicks in. Challenges will be less frustrating, and more interesting.
As you become absorbed by your work, even off-hours result in unexpected insights. A level of comfort and second-level understanding naturally develops, fueling your confidence and your ability to integrate new ideas. You will have reached the optimum mental state for moving rapidly toward fluency – effective action and communication without thinking.
Becoming an expert in an entirely new area is achievable. Commitment, focus and enthusiasm, applied consistently over time, will make your efforts as fruitful as possible.
In the next blog post we will be more concrete, discussing specific activities that can accelerate your learning and deepen your understanding during this journey from n00b to ninja.