A common trap for people entering programming jobs

In my first programming job, I was given The C Programming Language and told to study it. So when I got my second programming job, I figured out what language I'd be coding in and started studying up.

This was a mistake. Supposing you want to study for a job before you start the job, language study is almost always the wrong place to put your hours:

  1. If it's not a company-specific language, its range of use and ecosystem are probably so big that you can't know which parts of it will be used on the job.
  2. And there will likely be specific libraries or tools that make using the language very different inside the company than outside of it.
  3. There will often also be rules about which parts of the language you're allowed to use, and how. At my first BigCo job, I quickly realized that using C++ inside the company was more similar to using Java inside the company than it was to using C++ outside of the company.
  4. With all respect: If you learn modern, beautiful, idiomatic use of some programming language, you're probably not going to see it on the job. It's good to know how the language is written under ideal conditions, but you'll still need to work with the code base you've got.

Meanwhile, there is a likely source of confusion you can often address in advance: tooling. Ask about what the team uses for:

  1. Version control;
  2. Testing;
  3. Deployment / continuous integration;
  4. Databases; and
  5. Log management and search.
  6. Metrics (thanks, dukodk!).

Sometimes these will be proprietary, and sometimes they will not exist. But often they will (exist and) be things you can read about and even practice with. I have always found this sort of thing much harder to pick up than a new language.

If you have only ever worked on small- to medium-sized projects and are about to join a company, consider reading Software Engineering at Google. Whether or not you're going to work at huge scale, and whether or not you like all the recommendations in the book, it's a wonderful menu of the problems that arise from any kind of real scale. Any chapter of that book would have been more valuable to me than all the C++ prep I did back in the day.

P.S.: This post is about what to do if you want to study for a job before you start it. I'm ignoring the question of whether such study is good, bad, appropriate, or whatever else.

P.P.S.: Follow-up here.


More posts about programming


Home page