Advice for starting out in career programming

Petro Podrezo
5 min readNov 28, 2021

My first exposure to programming was when I was thirteen years old and started trying to build Flash games. By the time I was deciding on what program I was going to take in University I was already able to write working code in several programming languages which I had basically learned from a couple books and a lot of Google searches. I was what you would call a “self-taught” programmer. At the time, I felt like I already knew so much that doing a Computer Science degree and subsequently working as a programmer would be a breeze, but I was very wrong.

Now, I am well over a decade into being a professional software developer and looking back, if I could give my younger, cockier self some advice there’s definitely a few things I would mention. The following are things I wish I had known when making the leap from self-taught hobbyist programmer to being one professionally. I hope these words will be useful to people out there in a similar situation.

Photo by Lukas from Pexels

Try to understand how little you know

Compared to my high school peers, even ones that were technically-inclined like me, I felt like I was miles ahead. After all, I knew how to program (in the most basic sense) in multiple programming languages at that point in my life and I didn’t know a single other person my age who did any coding at all. I figured that when entering University I’d be a top student instantly and well ahead of the competition. However, during my first semester of Computer Science at the University of Toronto I encountered my first major “reality check” to dispel that illusion. I almost failed my first year, and not just because of non-technical courses like Calculus.

I took the “accelerated intro to computer science” as my first year computer science entry course. In this course it was assumed you could already code and most of the people there were coming straight out of high school. As such, you can imagine my surprise when coming to class on the first day I saw a fairly large and full lecture room. In my high school, which was not small, I was probably the only one in my “circle” who did any programming, and my circle was pretty nerdy! Yet here I was in a room of maybe 100 other similar individuals — I was not special.

The real difficulty in software development as it turns out is not a matter of just building out a website or building a game. That is, just being able to write working code does not mean you are a good software developer. There’s so much more you will need to learn like data structures, algorithms, optimization, writing maintainable code, and learning how to build complex software in a team rather than tiny side projects as a lone wolf. There was so much more to making software that had never occurred to me because it was a blind spot.

Even later, after graduating, I was constantly surprised at how much more other people knew compared to me. For some, this realization this can lead to imposter syndrome or just general feelings of inadequacy but if you’re able, then you can use it as a motivator: strive to be like those smart people and try to learn from them. The key is knowing that there’s something to learn in the first place.

Get good at tooling

Writing code is great but one thing that will really set you apart from other developers, especially as a junior, is a good understanding of tools like git which are basically assumed to be known by any professional developer today. I’m not talking about simply being able to check in code and push it up, that’s fairly easy to do. I’m talking about the various collaborative aspects of it like

  • Being able to deal with merge conflicts
  • Rebasing branches
  • Using git bisect to track down bugs
  • etc.

These are not really things you can learn in a ‘solo’ environment either because those things don’t matter as much for smaller projects. Trying find others to work with will go a long way.

Another great thing to learn is how to use a debugger. So many newbie programmers are content to just use “print” statements and leave it at that. While this can be good enough in a small project you’re doing by yourself, you will quickly run into limitations in more complicated code bases. It can save you occasionally, but being able to use a real debugger will save you many hours of time and set you up for success.

Being able to understand the need for and being able to write automated tests like unit tests is also a highly prized skill for most employers looking to hire developers.

Read books

I’m not talking about just reading those “learn java in 24 hours” type books that cover syntax and basic snippets but books like Sandi Metz’s “99 Bottles” that teach you refactoring. Books like “Clean Code” by Martin Fowler that teach what good code actually looks like. Books that teach you about working with legacy code, that sort of thing.

Build a portfolio

When you first try to get a job in the field you will have very little to back up your claim that you know how to actually do software development. One of the best ways for a junior developer to differentiate themselves from the competition (in my opinion anyway) is to provide code and demos for any pet projects they’ve done. To that end, it literally doesn’t matter what you write as long as it demonstrates your coding abilities. Keep in mind if your code is a nightmare to read (see “Read books” above) this may actually turn prospective employers off from hiring you. Obviously they will be aware you’re new to the field and should factor that into their decision, but having incredibly sloppy and hard to follow code may still be a red flag. It may be worth it to find someone with experience to review your code and offer suggestions on how to improve it before you show it off.

If you’re wondering what to build, there’s a myriad of possibilities out there. Googling around for “beginner programming projects” can give you some inspiration.

In conclusion, to become great at being a programmer you need to be aware that it it’s more than just being able to hammer out code. If you learn those additional skills I mentioned earlier, you will distinguish yourself from the massive amount of bad developers out there who make awful buggy software and instead set yourself up for a long and fulfilling career as a developer who writes great applications. Those additional skills are often blind spots that you can only find from others — whether that be books, mentors, or simply working with other people. Good luck!