How I Learned Programming – And What I'd Do Differently

October 9, 2020 · 2 min read
Silver MacBook turned on
Photo by Fabian Grohs on Unsplash

I didn't learn programming during my CS degree at University.

Yes, we had programming courses.

But even though I learned a whole lot about computer science, I didn't get my programming skills (which now pay my bills) from University.

Here's how I learned programming, and what I'd do differently in retrospect.

How I learned programming

Programming is a craft, a science, and an art.

So, to get better you need to practice, learn, practice, improve your structured and logical thinking, practice, and be curious and open-minded.
Have I mentioned practice?

I learned programming in three ways:

  • Personal software projects (mostly web apps, some CLI stuff, and some Java)
  • Working as a programmer and having excellent senior programmers in my team
  • University courses (especially the practical exercises)

If I had to drop one of them, I'd drop the University courses. Exploring on your own is much more aligned with how you work later on, and you'll learn more that way. Access to great senior engineers together with your own curiosity and willingness to learn are one of the best ways to become a great software engineer.

You don't need a CS degree

Yes, you'll learn many interesting things that may or may not be useful for your career.

But for my career path (web app full stack, and backend IoT), you can learn 90% of the knowledge that I use from my degree by reading the things:

  • Book “Clean Code” (work through this book)
  • Book “Software Architecture Patterns” by O’Reilly (free)
  • Any good book on Java and Object-Oriented programming
  • Wikipedia article on databases (for history and overview)
  • Any free tutorial on SQL (e.g. PostgreSQL)

The rest is experience.
So practice, practice, and practice.

Identify your next step

Wherever you are on your journey to becoming a (better) software engineer, there is always an effective next step you can take:

  • If you don't know how to approach a particular project (like a web app), do a programming course in that area. As soon as you get an idea how to proceed with your project pause the course and move on with your project. Then continue to learn as you go, just enough for your next step.
  • If your personal project grows and you're unsure about your structure, you have two learning paths: start reading about best practices (clean code, naming, API design, ...) and looking at open source projects that have the same tech stack.
  • If you're at the point where you have a rough idea how to approach something, start applying to junior developer jobs while continuing to work on your personal projects.

Don't have an idea for a private project? Look at my list of 10 project ideas for developers.

One last thing: if you get your job, don't stop doing personal projects, at least for the first 2-3 years. This really boosts your learning rate. Trying out new technologies after work expands your skillset, and those learnings can massively improve your reputation in your day job.