trev's website

Home Posts About

A Late Start in Computer Programming

Recently I've been giving advice (sometimes unsolicited) to people who want to shift into computer programming as a career.

Being a late bloomer in programming is definitely manageable, but I believe it requires careful planning and a specific behavior.

Overview

This has been beaten like a dead horse by #learn2code tweets and Youtube videos, but these are the main goals to become a general application programmer:

  1. Learn the fundamentals of programming and the basics of how a computer works
  2. Learn one programming language and write programs in it
  3. Contribute to open source projects and/or have a personal project

Behavior

The most difficult undertaking and, what I think, is the most important factor for learning programming is the obsession needed to succeed. Unless you are a gifted individual, you will need to really buckle down and grind. You don't necessarily need to pull all-nighters like a college kid, but you need to have a constant motivation to explore and learn about computers and programming. Of course, this behavior is relative to how quickly you expect to get a programming career. Less obsessed -> longer until you secure a job.

Don't just click around the computer like an idiot, become a power user and start using Linux and crafting your own development environment. Start living as a computer nerd even if your hobby is cooking breakfast foods and grilling meats or something, forget it for a while. You have to adopt the hacker culture.

Fundamentals

This is the stuff that people spend an undergrad in computer science learning: data structures, algorithms, databases, operating systems, computer architecture, etc. Unless you are going to actually get a degree and take these courses, you will need to use free and open courses to gather this knowledge.

Stay away from too many video tutorials. Read through course material and do the homework and projects as if you were in a class. People love to skip over all this "boring" stuff because it doesn't yield immediate results and, well, feels like school. This will establish confidence and adaptability.

Writing Programs

Nowadays it's trendy to obsess over which programming language to learn and get good at, but this is not something a noob dev needs to think about. The most important thing is picking one programming language and writing programs in it (obvious?). If you are concerned about the job hunt, it may be useful to go to a job site and see what languages are being used at companies in your area.

  1. Pick a language
  2. Read the official docs (or an esteemed textbook)
  3. Use the language for the courses mentioned above (basics, data structures, algorithms)
  4. Solve coding challenges
  5. Write small programs (simple games, scripts, utilities, etc)

Open Source

The single most important factor to securing a job, in my opinion, is having open source contributions. For an employer, nothing screams "I CAN CODE AND I LIKE IT!" louder than seeing evidence of you doing it for free and for your own leisure. They must envision Jira tickets being closed faster than they can can be created (with zero details or requirements).

After you've gotten comfortable in a programming language, you MUST find a project written in that language and start diving into the code. Find software that is useful to you, or something you find interesting. Read the CONTRIBUTING.md and start tinkering or looking at issues and seeing if you can be mentored into fixing or adding something. This will also teach the soft skills of collaborating on software.

Personal Project

It's pretty obvious that you need a portfolio to look employable nowadays. There's nothing better than having an open source project that you maintain and improve. It's a plus if other people use it or contribute to it.

The End