A Live Developer Journal

What Should I Focus On?

Table of Contents


Back when I was at Uni studying for my undergraduate degree in Criminology, we often had to write long essays about topics we were researching for the first time.

Our time was limited, so we had to quickly identify who the main authorities were, what they thought and who held different opinions to them, so that we would have enough time to weigh up all of that evidence and come to our own conclusions.

I didn't realise how much of a skill this was, until I started mentoring developers who regularly asked me what resources were best to focus on for learning a specific programming language, framework or set of principles that they were interested in.

However, this skill means nothing if you don't know how to use the resources you've identified effectively. You could spend months reading programming books (or other resources) from cover to cover and still be at square one in terms of your practical skills.

Throughout this article, you'll learn how to identify some of the key programming resources for your topic, how to set specific programming goals, and how to convert those goal statements into examples that demonstrate your new skills.

What Are Authoritative Sources

There are two main indicators of authority when it comes to programming sources.

It's important to keep in mind that just because someone invented a topic, or is considered to be an industry expert, doesn't mean that they're the best source on the topic.Never take anything you read for granted as being the right, or only right way. Question everything and come to your own conclusions, and always be open to having your mind changed.

How To Find Authoritative Resources

The first place to start when looking for authoritative sources from is the Recognized Industry Experts, starting with the original inventor/s. A quick internet search will tell you who invented something. When I typed in 'Who invented Ruby' in Google, Yukihiro Matsumoto was returned as a result along with the books he has published:

The Ruby Programming language book above was published by Yukihiro Matsumoto and his co-author, David Flanagan. David's author biography indicates that he spends most of his time writing about Java and JavaScript, though any content he has published on Ruby can be considered written by an industry expert.

The next step is to find peer reviewed sources. If the inventor has published a book, I'll go to their publishers site and use the search bar to search for the same topic (in this case, Ruby). Publishers usually attract writers who specialize in the same kind of content they publish.

The O'reilly site search for Ruby resulted in 105 books, 18 conferences, 13 videos, 8 webcasts and 1 report, along with a long list of authors and speakers on the subject.

If every single one of these resources are directly relevant to your experience level and goals, add them to your list. Chances are, many of them won't be what you are looking for, of the 107 books listed, only 14 were relevant to me:

Now that we have our list of resources, it's time to identify the most important sub-topics, yayy!

How To Identify Important Sub-Topics

There's a really easy technique for identifying the most important sub-topics for a list of resources: Tallying the topics that appear in the table of contents for each source (if there is one). The table of contents is usually freely available on the publishers page for books, or on course outlines etc.

Start by getting a blank note page and list the topics that appear in the first table of contents. Then move onto the second table of contents and either add a tally mark next to topics that have already appeared in your list, or extend your current list with any unique topics that appear.

Core topics are likely to have a much higher number of appearances than more niche or advanced sub-topics in your chosen area. By the time you are done with the last table of contents, you'll be able to see at a glance what the most common and least common topics are.

How To Set Specific Programming Goals

Now that we know that the most and least common topics are in our chosen area, it's time to create a priority plan for what to learn first.

Why are you trying to learn this specific language, tool, framework, set of principles etc? What exactly are you trying to acheive, and how will you know when you've acheived it?

Filling in the blanks in this sentence can help you answer this. The more specific you are, the more effective your resulting plan'll be: I'm trying to ______ so that I can ______. I'll know I have acheived this when ______. Some examples:

Once you have a very specific goal, you can then choose which resources are most appropriate for helping you acheive that goal. Or, you might find that a quick Google search might be enough to help you reach your goal.

Converting Your Goals Into Skill Examples

There are two huge advantages to writing your goals using the approach outlined in the previous section. Firstly, they'll be specific enough that it won't take you long to acheive.

Secondly, they can easily be converted into specific examples of skills you have obtained (including why and how) - perfect for CVs and interviews etc. Here's how you can convert your goals into skill demonstrations:

You can convert I'm trying to ______ so that I can ______. I'll know I have acheived this when ______ to:

I have _____, which means I can ______. I did this by ______. Some examples:

Over time, you'll end up with a long and impressive list of the skills you have obtained in each of your chosen languages, tools, frameworks and principles etc. Whenever you apply for a new job, you can quickly copy these examples in, so you'll always be able to create tailored CVs with minimum effort.

Next Steps challenge time

Your challenge for this article is to write a specific goal for whatever it is you're trying to learn, by filling in the blanks in the following sentence:

I'm trying to ______ so that I can ______. I'll know I have acheived this when ______.

Once you have acheived this goal, convert it into an example of a skill you have aquired by rephrasing it by filling in the blanks in the following sentence:

I have _____, which means I can ______. I did this by ______. Some examples:

If you completed the challenge, high five for taking action! Bonus points if you leave a comment with an example of your newly aquired skill!