Tip #1 for Young Programmers: Specialize in Something

Over the years, I’ve toyed with the idea of writing a series of posts aimed at young programmers. [1]

My advice will be aimed at aspiring programmers, students, and programmers who are just starting out.[2]

I’m going to skip the part in which I motivate you by telling you why learning to code is a great idea and akin to acquiring a super power.

In this series, I’m just going to assume that you’re interested and highly motivated in becoming a programmer. If you’re not, find your “why” first. The why is more important than the how and you’re going to need both in order to succeed.

My tips are going to be presented in a more or less random fashion, as I don’t have a pre-arranged list that I’m working from. I’m certain that I’ll come up with more as we go along.

I’m going to number them here nevertheless so that it’s easier to reference them in discussions.

Tip #1: Specialize in something

Last year I interviewed over 100 candidates for IBM.[3] Most candidates were students from elite universities and were by all accounts, impressive young people.

University had opened them up to a wide variety of topics in computer science. The logic behind such an approach is sound. Syllabuses are intentionally designed to prepare students to think like a computer scientist, and to expose them to as much computer science as they can cram into four years.

The idea is to show students what’s out there so that they can then decide what interests them so that they might pursue further specialization academically or on the job.

The downside of this approach is that unless you do independent work in your spare time, you might graduate with very little code under your belt.

More importantly, you’ll simply be a bundle of potential.[4] You could specialize in anything you want to. You could become a good programmer, but you haven’t likely reached that point in either case yet.

There are certainly companies willing to hire you on the basis of that potential. I mean, you graduate from an ivy league school, with top grades, and naturally there will be big companies who are interested in you.

To widen your job prospectives, however, I suggest that you specialize on your own.

The market will pay you for the value you bring to it.[5] This is true whether you are an employee, freelancer, or opt to launch your own startup.

This is why I fully respected, appreciated, and even hired candidates with plenty of potential and not much experience. My favorite candidates, though, remained those who independently developed a keen interest in a particular area of the information technology world, and learned as much as they could in parallel to their more formal studies.

This tip could very be easily phrased as, “Be useful at something”. If I hire you to do something, it really helps if, on top of having the potential, you also have a degree of experience and expertise in that something, that will aid us in developing your skills further.

To date, there are still students around the world who graduate and come to the market with very little knowledge regarding things like the command line, any editor that isn’t an IDE, who have no idea what git is, and whose memories of subjects (e.g., web development) they touched upon a couple of years back are often hazy at best.

Whether you’re a student or not, my first tip is, therefore, to become useful at the creation of a particular type of product.

Here are some examples of “stacks” you can specialize in:

  • Learn how to develop Android apps
  • Learn how to develop iOS apps
  • Learn how to develop web applications with Rails
  • Learn how to do data science with Python (or R)
  • Learn how to hack hardware

No matter what you choose, try to become experienced enough so that you have an essential understanding of the lingo, best practices, and challenges of that particular type of development.

Once you’ve determined the type of software you want to build, it becomes much easier to focus your efforts towards what needs to be learned, what books should be read, and what code you need to write.

Want to become a web app developer? Learn HTML, CSS, JavaScript, Ruby, and the Ruby on Rails web framework, for example. Then start creating projects by first following along with tutorials, then on your own.

Want to become an Android developer? Learn Java, then how Android apps are built (you’ll have to become well acquainted with Android Studio and the SDK).

Speaking of Android, I’m particularly reminded of one of the best performing students from my LEADing to Africa summer internship in San Francisco.

My L2A summer interns

My L2A summer interns

Not only he had a comparable foundation in computer science to that of other students I’ve interviewed, but he had also taken the time to independently learn enough Android to be “useful” (or dangerous, depending on who you ask :)) on that front.

You could ask him to create a fairly complex Android app, and he’d know how to approach it and make it happen in a reasonable timeframe. That’s adding value to the market.

Be like that student. Be a mile wide, and an inch deep, but specialize enough in something to be useful.


  1. I’m not sure why I didn’t commit to it before now. Perhaps, it was because I expected the subjective nature of my advice to elicit the wrong kind of response among fellow programmers (we are after all an unabashedly opinionated bunch). I realized however that there is more value in providing the advice, even if some will disagree with it, then provide no guidance at all. Yes, others have written about this topic. Entire books in fact. But this is my take on it, and it has served me (and those who I mentor) well so far.  ^
  2. It’s more about experience than age. If you are 60 and only now getting started with programming, this series should help. It’s never too late.  ^
  3. We ended up hiring a couple of dozens of them (the majority, as interns).  ^
  4. Hopefully, you learned how to learn; that’s an invaluable skill.  ^
  5. Money is really a score of the value you’ve created and captured.  ^

Get more stuff like this

Subscribe to my mailing list to receive similar updates about programming.

Thank you for subscribing. Please check your email to confirm your subscription.

Something went wrong.

5 Comments

  1. Ivan Savelyev May 8, 2016
    • Antonio Cangiano May 8, 2016
      • Ivan Savelyev May 9, 2016
        • Antonio Cangiano May 9, 2016
          • Ivan Savelyev May 9, 2016

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.