📓 Cabinet of Ideas

Programmer Skills That Make a Difference

Programmer Skills That Make a Difference #

Excerpt #

Recently, I’ve had several opportunities to mentor high school to college-aged aspiring programmers. Here are the skills that really matter.


Recently, I’ve had several opportunities to work with and mentor high school to college-aged aspiring programmers. Those conversations generally start with the student listing as many programming languages as they can — even if they have only remotely interacted with them. The conversation around their skills then inevitably turns to questions like:

  • “What programming language will get me a job at X company?”
  • “Which language will help me earn the most money?”
  • “What languages do I need to do video game development?”
  • “What programming language should I learn next?”

The answer to those questions goes something like, “Well…it depends.” I think your number one priority should be building proficiency in a single language. The vast majority of those skills will be transferrable to any other programming language.

So, what if you are already proficient in the language you were taught in your programming tutorials? Below are skills I’d recommend you try to master. These skills will apply in basically any software development class, project, or career.

Operate the terminal. #

Whether you’re in Windows’ PowerShell, MacOS’ Terminal, or one of the many Linux options, the terminal is an essential tool in a software developer’s tool belt. Moving away from GUI-based programs is intimidating at first, but as you get more comfortable in the terminal you’ll quickly recognize the benefits. It is often faster, more powerful, and allows for customizations like composing actions together.

  • Can you navigate between different directories?
  • Do you know how to view the contents of a file from the terminal?
  • Can you copy and move files to a new directory?
  • Are you comfortable working with command line tools?

Master your tools. #

As a software developer, you’ll spend a lot of time in a code editor. The faster you can move through your editor, the less that it will get in your way. Determine your favorite editor and customize it to optimize your workflows with extensions and appropriate settings. It doesn’t matter if you’re in Eclipse, VSCode, NotePad, or Vim, you should be able to easily perform the actions below.

  • Jump to a file without hunting through the directory explorer.
  • Find references or definitions of functions and classes that you encounter.
  • Refactor the name of a symbol throughout the entire codebase in one action.

Know Git concepts. #

Version control is an essential tool in software development and Git is the ubiquitous solution today. I’d recommend being familiar with the Git command line, but using a Git GUI client is fine when you start out. The important part is understanding the basic concepts and some common practices. This will allow you to hit the ground running on day one of your first job.

  • Can you commit changes to files?
  • Do you know the difference between your local repository and the remote?
  • Can you push and pull commits to and from the remote?
  • Do you understand common branching strategies?

Master essential soft skills. #

These soft skills are hard to master, but they will give you a leg up on your peers if you practice them early and often.

  • Being good at finding answers with Google and ChatGPT (or the LLM of your choice).
  • Breaking down big tasks into small, manageable pieces.
  • Knowing the right questions to ask when presented with incomplete information.

In summary, becoming a proficient developer is less about collecting programming languages and more about mastering essential tools, processes, and soft skills. Dive deeper into the terminal, your code editor, git, and essential soft skills before chasing the next language. It’s your adaptability and mastery of these foundations that will prepare you for the tech world’s challenges and opportunities.