What should you learn when you are starting out as a software developer?

Was I Expecting Too Much?

Recently I participated in interviewing several candidates for a position at my client’s company. As a contractor, I was humbled that they asked me to participate so I wanted to do the best I could at evaluating the candidates. A few of these candidates were just starting their careers as software developers. I found them all had a solid background in computer science theory and their resumes indicated 2-5 years of practical experience. They were all good potential candidates to call back for a second interview focusing on their technical skills.

The interviews were conducted and I asked my questions to each of them. Some answers were good and others not so good. The client took the feedback from the interview team and made their decisions on which candidates to extend offers to.

A few days after the interviews were over I was still thinking about them. It had been some time since I had interviewed people early in their career. I wondered if the questions I had for the candidates made sense? Was I expecting too much from them? What skills should they have learned in the first couple of years as software developers? I decided (with some encouragement from my wife) to write down some of my thoughts.

If I Were Starting My Career Today

On YouTube you can find hundreds of videos giving advice to young programmers. They typically will have titles like “Learning to Code in 2024” or “Tips for Junior Developers”. I have watched quite a few of them. Most of the videos have good advice and are probably worth watching if you are looking for advice early in your career. They talk about learning HTML, CSS and JavaScript. That’s pretty universal these days. A lot would focus on how to gain knowledge and how to have the right attitude for learning quickly and efficiently. Many also focused on a particular technology, like React, or Node JS.

My take away from watching all these videos was that there is a lot to learn. Early in your career it must seem pretty overwhelming. And the industry changes so fast that you can easily spend time learning something that may not be used a lot in a few years. It is important then to focus on some fundamental skills that will serve you far into your career.

Things I Feel are Important

Okay, so what do I feel are important skills to learn early in your career? Ones that will be useful regardless of how the industry changes? I think, for now, I’ll limit my scope to the skills that make you more efficient when creating computer programs (aka coding skills). I think these skills are the ones that you are most likely to need early in your career. If you can learn these skills well, it can make learning other aspects of software development easier.

Today, my list would include the following skills:

  • Master how to edit text
  • Know how to use the command line
  • Learn a scripting language to automate tasks
  • Have a very good understanding of git
  • Navigate through the IDE effortlessly
  • Organize your file system

Master How to Edit Text

Most computer programs are stored as text files. You will spend a lot of time looking at code files and creating/modifying new ones. I think that the ability to edit text files is one of the most important skills to have. I have seen many developers that struggle to complete tasks because they lack the skills to manipulate the code they are working on. Take the time to master how to edit text files (without using a mouse!) and you will use this skill the rest of your career.

Know How to Use the Command Line

The command line allows developers to perform task more quickly than using a graphical user interface (GUI) and a mouse. You can use it to navigate your file system, edit files, run scripts and automate just about anything. Using the command line gives you a deeper understanding of how the operating system works. Whether you are using bash on a Linux platform, or PowerShell on Windows, learn how to use the command line instead of clicking around with a mouse in a window. You will find that your productivity will improve dramatically.

Learn a Scripting Language to Automate Tasks

Nothing can be more boring than to perform the same task over and over every day. As a developer you should always ask yourself if a repeated task can be automated in some way. Scripting languages are a powerful tool to automate things you do every day. I have learned a few over the years and they all made it possible for me to get things done much faster. On Windows I learned DOS Batch Files, Windows Scripting Host, and PowerShell. Whatever the operating system, find out what scripting languages are available and learn to use them.

Have a Very Good Understanding of Git

Version control in general is a crucial concept to understand. It is the foundation that all software projects are built on. The git version control system is the de facto standard these days and for good reason. It is the most powerful tool you can use to safely make changes to a code base. A lot of IDEs provide integration with git. I’d encourage all developers to break free from the IDE and learn git from the command line. The concepts and operations to maintain the history of changes to the code are fundamental concepts to master.

Regardless of the programming language, you will be much more productive using an Integrated Development Environment or IDE. If you use an IDE every day you should learn how to use it to the fullest. Memorize the important shortcuts to quickly navigate the code files in your application. Learn how to use the debugger to step through the code and inspect the running application. Learn how to customize the settings to make it more suited to the way you work. You should get so good at using the IDE that you can do things without even thinking.

Always Be Coding

I think the skills listed above are important. I hope some or all of them resonate with other developers. If I was to give one piece of advice to any software developer, it would be to always be coding. Writing computer programs is a perishable skill. It is a skill that diminishes or degrades over time if it is not regularly practiced or used. Spend time each day, if you can, to keep the skills that you learned sharp. Practice as much as you can. Always Be Coding.