While it is easy to read and read about certain theories, it is important to apply the learnings to a tangible output. For programming, the best way is to make a project, be it a mobile app, a website or a patch to an open source project, which leads to the next step.
By Michelle Sun (Recent Graduate, Hackbright Academy)

After a summer of intense, guided learning, I feel empowered and very blessed to be equipped with the right skills to pick up new skills along the way. Learning to program is a continuous process, and it is very exciting for me to feel the possibilities.

The best way to learn and work toward mastery of any skill is to find a job in the area or work on your own startup. But I would argue, even with a job or own company, it is important to work hard at our skills at the same time.

My post is inspired by an article “Learning to Learn” by John Sonmez, who detailed a systematic approach to take control of one’s own education. Below is a synthesis of my own thoughts and John Sonmez’s points.

#1 – Find a topic you’re insanely interested in

Before devising a ‘lesson plan’, it is important to define a topic that you are passionate about. The breadth of the topic is key; the topic can be as broad as computer science, or more specific such as machine learning and data mining. The broader the subject, the less ‘deep’ you should target to go into.

If you are generally new to the subject, it might be worth shooting for a broad topic with the goal to gain a general understanding of different aspects of topic (eg, ‘learn to program in Python’ can provide an overview of many topics in programming including data-structure, time/space complexity and different algorithms). After learning about the general topic, pick a topic that interests you and start to go deeper.

#2 – Scope out the topic

Once you have chosen the topic, now comes the trickiest part in self-learning: defining the scope. At school, the curriculum is carefully designed and reviewed over many classes of students. While self learning gives us the opportunity to define the speed of learning and the depth and breadth of knowledge we want to pursue, it is important to avoid certain pitfalls when designing our own learning.

  • Avoid being overly ambitious: if you are reading this article, chances are you are intellectually curious and care about your own education. It is tempting to sign up for too many Coursera courses (I am a big fan of the site), or define an overly ambitious plan for learning.Psychologists found that our brains function the best with a certain level of stress (eustress), which is a delicate point between too much stress and boredom.

    When defining the scope, budget some margin of error and flexibility so that we can reap the reward of achieving a goal, instead of feeling frustrated from reaching way beyond our own abilities.

  • Learning for learning’s sake: While it is easy to read and read about certain theories, it is important to apply the learnings to a tangible output. For programming, the best way is to make a project, be it a mobile app, a website or a patch to an open source project, which leads to the next step. Other ways to apply knowledge include teaching a class, or writing a blog post.

#3 – Create a project and define a problem to be solved with a clear timeframe

A project is a great platform in applying learning of whatever topic you are reading about. It can be a series of mini projects, or off shoots of an existing application that you’ve built. It is best to separate coding projects with ‘startup ideas’, as startup ideas are concerned with ‘feature creep’, product-market fit etc and undermine the primary goal of coding projects which is to experiment and learn new technologies.

#4 – Schedule a chunk of time everyday for learning

Finding a fixed time to work on something not only creates space for our learning but also helps the brain anticipate a repeated action and increase the ability to concentrate. When budgeting the time, think about your peak performance time. Everyone is different; instead of following the morning regime strictly, or staying up late like during our college years, listen to your own rhythm. Once you identify the peak performance time, safeguard it as if it was a business meeting – block the calendar, work around other engagements to ensure you have that period of time free everyday.

#5 – Find support and accountability

One important aspect of learning independently is to build accountability. The tech community is great and responsive in various platforms like Hacker News, StackOverflow.

When starting a project, announce to a few friends and along the way, get feedback from people who have learned or worked in similar areas. When hitting a milestone, share with a larger community by “Show HN”, or posting on your twitter stream or a blog post. I am especially a fan of writing in a blog, as writing helps organize thoughts and solidify learnings.

This post was originally posted at Hungry For Life.

Women 2.0 readers: What are the different ways that you have take ownership of your own education? What are the roadblocks you have experienced, and any tricks that have helped you overcome those roadblocks successfully?

About the guest blogger: Michelle Sun is a recent graduate of Hackbright Academy. Prior to Hackbright, she worked at mobile startups as product marketing manager and founded a mobile loyalty startup. She began her career as an investment research analyst on the technology sector. When she is not busy coding away these days, she enjoys practicing vinyasa yoga and reading about psychology. She blogs at Hungry For Life. Follow her on Twitter at @michellelsun.