Must know Developer skills
Tags: productivity, programming, career, development
Published: 2023-07-09 19:12:00

I have been working as a software developer for the past 2 years. I consider myself a mature newbie in this field. However, there are a few skills that I'm thankful for learning, as they have been a game changer in terms of productivity. Let me share a few of them with you.

### 1. Knowing your IDE

This is a very basic yet underrated skill. An IDE or code editor can offer numerous features that often go unused when not properly configured. And no, I'm not talking about themes and fancy ligatures – those are secondary. I'm referring to key bindings, built-in features, and extensions that can significantly improve productivity. Personally, I use VS Code and I absolutely love it. When properly configured, it can function as a full-blown IDE. VS Code offers killer features like the debugger, which can be configured using a `launch.json` file. Additionally, the **Attach to Node process** option allows you to attach the debugger to a running Node process. The Emmet integration in VS Code is excellent, and there are many prebuilt commands available that make my life easier. Extensions also play a crucial role in increasing productivity. For instance, the Prettier extension is essential in my daily developer workflow. Even for Go lang, a single extension (Official Go extension by Google) is sufficient to provide IntelliSense support, code formatting, and auto-import functionality (`gopls`). I will cover the extensions I use daily in a separate blog. In summary, getting to know your IDE or code editor is vital because it's the tool you'll be spending a significant amount of time with. Investing some time in learning the tool will yield a significant boost in productivity.

### 2. Living in the terminal

In my opinion, this skill is a must. While anyone can get by without it, I firmly believe that those who prefer to use the terminal are 10 times more productive than those who don't. I'm not suggesting you learn bash scripting to create automation scripts. Just basic navigation, deleting, copying, moving, piping, fuzzy finding, and using `grep`. These commands will make your life easier. Terminal skills truly complement your productivity as a developer and make you look like a true hacker (true story).

### 3. Vim motions

Knowing Vim motions may not be necessary since most code editors provide decent keybindings and keyboard shortcuts. However, familiarizing yourself with Vim motions can increase your productivity by 100 times. For those unfamiliar with Vim and Vim motions, Vim is a keyboard-based code editor that eliminates the need for a mouse. Basic navigation is done solely with the keyboard. Vim motions are commands that help developers move around and write code. This is just a brief introduction to Vim and Vim motions. Personally, I'm not a fan of "Vim, the editor." I understand the hype around it, and perhaps I'll adopt Neovim in the future, but for now, I'm content with VS Code. However, Vim motions are something I cannot live without. Trust me, if you invest the time, you will never regret it. It took me a month to get used to the workflow, and I'll never go back.

### 4. Reading documentation

When learning a new programming language or library/framework, I have always preferred video-based mediums, and that's perfectly fine. I enjoy curated content from instructors I like. However, I also make it a point to read the documentation. It's like combining the best of both worlds. Sure, you can learn the entire library or framework with either approach, but reading the documentation provides much more detail on specific concepts. The more you read, the fewer errors you'll encounter. I've noticed this phenomenon. Of course, the quality of the documentation plays a significant role. I particularly enjoyed reading documentation for React, Go lang, MDN docs, Docker, Nest.JS, and GitHub Actions. These documentations were well-written, and the reading experience itself was enjoyable. On the other hand, I've had poor experiences with some documentations, and in fact, there are legacy libraries that lack any documentation, which can be disastrous. Nonetheless, reading the documentation will greatly help in understanding the tool.

### 5. Openness to learning new things

You might wonder if this is a skill, but trust me, in my short career, I've seen people who are resistant to learning new technologies. They stick to their initial tagline, like being a Full Stack Java Developer or Full Stack .Net Developer. When a new technology emerges, some won't learn it, and others won't even know it exists. Some view it as a burden, and I've even witnessed people quitting because of this reason. The beauty of this industry is its constant evolution, particularly in JavaScript, where a new framework drops every single day. There's even a troll website for tracking this ([https://dayssincelastjavascriptframework.com/](https://dayssincelastjavascriptframework.com/)). For me, being open to learning new things opened the door to backend development and even DevOps. I started as a frontend developer, but the team expected me to become a full stack developer. Not only did I perform well in that role, but I also led teams of more than 10 people. It was a significant accomplishment considering my limited experience.

That's it, folks. These are the skills that I believe all developers must have in order to improve productivity and become better programmers.