Programming as a Craft

Posted on Sun 25 June 2023 in general

Many of my students ask questions like:

  • How long does it take to get your first job?
  • How do I know I'm ready to apply for jobs?
  • What do I need to know to get my first programming job?

They are often frustrated when I say "it depends". But this is the only honest answer. You need to know the basics: variables, functions, control flow, etc. Different roles need different technologies. But there's no fixed set of knowledge that will get you a job. This is because programming is not a profession, but a craft.

What is a profession? Think about traditional middle-class jobs: a doctor, a teacher, an accountant. What these roles share is the need for certification and examination. To be a doctor you need a medical license; to be a lawyer you must pass the bar. Normally these certificates are awarded by institutions like the state, a college, or a medical board. To become a professional is to professionalise: to pass exams, earn certain skills and receive recognition from your peers. If you have a license you can practice the profession: if you don't, you can't.

A craft is different. Traditional crafts are blue-collar or mercantile: carpentry, interior decorating, tailoring. It might help, but you don't need a license to paint a house. Your work speaks for itself. Crafts do not come from the academy, but the guild system. In a guild, a master craftsman would employ a number of journeymen and apprentices. Journeymen would be paid a fair wage for their labor, while apprentices would be paid just enough to live on, with the understanding they were there to learn. The guild system is still alive in Europe today: often tradesmen work in pairs of a master and an apprentice.

Programming is a craft more than it is a profession. You don't need to pass an exam to be a programmer. You don't need a Computer Science degree, or even a 12-hour certificate. All you need are skills and the ability to market yourself.

For most new programmers, this means that:

  • You can get your first job very early if you'll settle for low pay.
  • If you can create useful output, you are ready to apply for jobs.
  • You only need to know the basics to apply.

If you only have basic skills, you can only find basic roles: you're an apprentice. Given you're getting paid to learn, this is an okay deal. The bigger problem is many developers want the same entry-level roles as you. Some are more qualified than you, and some are the hiring manager's cousin. Unless you're a luminous personality your odds are slim. You should still apply. If your odds of success are 0.1%, then if you apply to 700 jobs, you have a greater than 50% chance of success.

You probably don't want to apply for hundreds of jobs before success. That's okay. A much more relaxed strategy is to increase your odds of success with each application. If you increase your odds to 1% for a role, you only need to apply to 70 before you break even. There are two ways you can do this: improve your skills, or improve your marketing.

To improve your skills, you need to know which skills to focus on. Most developers choose web development because there are so many roles out there. In 2023 this is the path most taken. If you're passionate about something else, like making games, building robots, or trading, then do that. There are fewer jobs in those fields, but there are also fewer people to compete with.

The skill level you want to reach in any of these areas is one where you can demonstrate understanding. Just like a traditional craft, producing work is the simplest way to do this. In web development, you can make a portfolio website. In games, you should make some playable demos. In robotics, you can make a turtle and blog about it. Like any craft, your work should speak for itself.

The other key factor in finding a job is marketing. Finding a job is about sales: you are selling yourself. Part of this is showing your skills, the other is networking. You can do this in person, online, or both. By networking with other developers you:

  • Hear about new opportunities. In sales this is called 'finding leads'.
  • Have people to discuss technical issues with.
  • Gain a greater understanding of your skills and where you can improve.
  • Make friends and connections for the future.

Stepping away from the computer and into developer meetups is usually worth it. I found several jobs through meetups and social media. My students usually find their first roles through networking rather than by sending off CVs online. Like a medieval guild, the best way to succeed in the craft of programming is to share with your peers and learn from masters of the craft.

You can improve your skills and network while applying for roles. If you apply all through the apprenticeship process, your odds are higher than if you wait until you feel ready.

The three questions I asked at the top of this article were:

  • How long does it take to get your first job?
  • How do I know I'm ready to apply for jobs?
  • What do I need to know to get my first programming job?

Here are my answers:

  • You can find your first job in a few months if you're willing to be an apprentice. To become a journeyman will take a year or so of study and practice.
  • You should apply for entry-level jobs as soon as you have a basic grasp of programming.
  • There is no fixed set of skills needed for a programming job, but demonstrating your knowledge in your chosen field is helpful when selling yourself.

Good luck out there! Frank