As a Computer Science college student, I’ve noticed that many students struggle including myself with the problem of “I don’t know what I don’t know”, or learning what is needed be adequate in a skill. This can be especially difficult when shaping your own learning path because there’s no one to tell you to learn about X & Y; you have to discover it on your own. As I’ve learned new skills, I’ve found some steps to help solve this problem. Here are a few steps that I have taken.

Step 1: Starting with The End-Result

First, it’s important to have a goal in mind(why do you need to learn X?). What is it that you want to do? Describe what it is and make a list: “I would love to be a Rails developer at Company A, a security analyst at Company B, or work at Company C.”

Take your list, and do a job search. When doing a job search, you get an idea of the platforms, ideologies, and skills that are relevant to your job market. From your list, look for job descriptions relevant to what you want to do and expand your search to jobs nationwide, statewide, and locally(each can differ widely). Take note of the skills and platforms that each job requires. In fact, I recommend making a spreadsheet of the keywords listed in job descriptions to see an analysis of the skills relevant to your future jobs. The more jobs that you add to the list, the more you’ll see common skills within the jobs that you are looking for. These are indicators of skills worth learning. Job Keywords Spreadsheet

Step 3: List out your current skills and the skills that you want to have in the future

This is where the Job Search comes in handy. Use the top results of your keyword list as a learning list. Include it with a list of your current skills and an honest assessment of where you’re at with those skills. A benefit to keeping a list of skills is that when it comes time to write/revise your resume, you can easily update the Skills section.

For keeping track of skills, I use Asana. It’s a great project management tool that allows me to create projects, tasks, and subtasks to tasks. It also allows me to share tasks among projects, which I use to track Quarterly Skills Goals(See Step 3.5). I have a Skills Builder project list broken down into the following:

  • Advanced - Skills that I have a great amount of experience on. Enough that I could be a consultant on these skills.
  • Intermediate - I know enough to handle my own here. I can build projects without constantly having to look at tutorials. I have a few substantial projects under my belt with the skill.
  • Basic - I have a small, general knowledge of the skills and I can do a few cool things. I have done some basic projects with the skill.
  • Ready to Learn - I have found several resources from the Explore stage(see step 4), and I’m “Ready to Learn”!
  • Someday - Someday I will focus on learning these, but they’re not realistic/within my knowledge range currently. These are usually higher end skills that I can’t apply yet or I need a stronger understanding of prerequisite skills.

Use Asana for tracking skills tasks

Step 4: Explore, Study, Apply

I consider there to be three stages of learning.


In this step, you explore for learning resources relevant to a specific skill. This is also the step where you may find new skills to add to your list. An example: In exploring Ruby on Rails, I found several great resources for learning(Prag Prog books, tutorials, exercises, etc.) as well as relevant skills that pertain to being a great Rails developer like SQL, Ruby Gems, RSpec & Cucumber, MVC Architecture, etc.


This is where you dig into the learning resources a specific skill. It can be reading a tutorial, book, or going through online lessons like Code School or Treehouse. This is valuable to learning new concepts.


I consider applying the most important stage of learning, but it’s often the hardest. While some applying happens during the studying stage, often it is guided and easier than applying it in real world situations. Applying new skills can take significant time, but you’ll gain a greater understanding and retain more of the information that you studied. Keep a list of project ideas that you can implement using your newly learned skills. This gives you experience as well as a portfolio for future job interviews.

Step 3 and a Half: Set Quarterly Goals & Review Them Often

Going back a step, I feel that setting goals on learning and applying new skills is important to keeping yourself on track. In trying different goal time spans, I have found that Quarterly(3 Month) Goals are just long enough to take on a large project, but not too long that I lose motivation. Feel free to try different time spans, you may find a different time span works for you, and that’s what matters.

At the end of a Goal span, review all that you’ve learned and document it. It can serve as your motivation to start a new Goal span, and you can track how far you have come in a short time. It also serves as a great time to update and clean your resume.

Shortcut: Find a Mentor

Having a mentor to guide you through learning can dramatically cut down the time you spend down the rabbit holes of learning. It’s to find a great mentor, but through patience, collaboration, and keeping an eye out for people to learn from, you will find many over time. Use learning communities like CodeNewbie, or blogs to find mentors online, and use Social Networking and your personal networks to find ones close to you. LinkedIn, if done correctly, can be a tremendously valuable resource to finding local people and setting yourself up for future job offers.