Productivity through simplicity: How to be productive as programmer

Preface

Since I started programming, I have changed my setup many times. I began with Windows and Visual Studio. I have since then switched to Linux.

This post will explore my productivity journey and why I believe I’m in a good spot.

Monitors

I wanted to get a second monitor when I first got into coding. I figured I could use it to have both Unreal Engine and Visual Studio open simultaneously. I could even watch a tutorial at the same time!

In reality, this monitor predominantly spent its days displaying Discord.

Down the line, I replaced my primary monitor while keeping the old one. Now I had three monitors: one for Discord, music/docs/browsing, and my main work.

Eventually, I changed direction. I now only have a single monitor.

Two features made me change my mind: workspaces and tiling window managers.

Workspaces

Instead of having tabs and minimizing windows, workspaces allow you to separate and sort windows manually.

Most operating systems and window managers have workspace support. I prefer systems where switching between workspaces is a single keypress, which is one of the reasons I use DWM. Simple key binds make switching between workspaces nearly instant. It’s almost faster than rotating your neck to look at a different monitor.

Usually, I have a debugger and target program on workspace 1, an editor on workspace 2, a web browser on workspace 3, and Discord on workspace 4. The rest don’t follow a convention.

Tiling window managers

Tiling window managers are over-hyped, and many people will preach about them for no reason. I’m not here to do that. On a small screen, I sometimes find tiling window managers cumbersome.

I use a tiling WM because they make the good aspect of managing windows easier while making the bad ones harder. Floating WMs make it easy to hide away your window mess. Meanwhile, tiling WMs force you to move windows to a different workspace to prevent cluttering.

I usually favor having one window per workspace, so it wouldn’t be that different if I didn’t use a tiling WM. The cases where I fully appreciate applications automatically showing up side by side are rare, but they do happen.

Tabs are less helpful than you think

Don’t get me wrong. Tabs are occasionally pleasant to work with. However, they often do more harm than you realize.

Editors

The standard workflow for text editors is to have a tab for each open buffer at the top and a tree view on the side. I have found this inefficient. It is much better to be able to search for files with an arbitrary query.

Browsing through the folder tree or tab bar for the correct file wastes time. I would rather input any substring of a document path and have my editor search all files in my current project. Numerous editors can also list and search through open buffers, removing the need for the tab bar entirely.

Web browser

On my desktop, I use the I hate tabs extension in Firefox. It helps me stay focused and organized. When a tab has accomplished its task, I close it. If I need a tab for later, it will take up space as a reminder.

Some tasks become slightly bothersome, like browsing electronics distributors, which often requires many tabs. Splitting away tabs doesn’t work well on my laptop, as it doesn’t have such a large screen.

Become fluent in your editor

I use Vim key binds. Vim works well, but I see others shooting away with other setups. If you have yet to learn how to do everyday operations fast in your editor, you should. Whether it’s auto-complete, auto-indent, cutting a line, grepping, or navigating quickly with just your keyboard, it’s all worth it.

However, don’t waste your life trying to become a “Vim enthusiast.” Yes, learning key bindings takes time. Some people are rightfully daunted by switching to something like Vim, but you don’t have to go that far. Learning to be fast in a more typical editor like VS Code will go a long way.

Conclusion

Find tools that suit you, and learn them well. I highly recommend exploring workspaces. Become as fluent as you can in the tools you end up using. Be self-conscious, and have a mindset where you strive toward higher efficiency.

Simplicity over complexity. Tabs are less advantageous than you think, so don’t overuse them. Opt for keyboard actions over mouse actions when it makes sense, but don’t let that mindset extremeify you.

Keep yourself level-headed. Make thoughtful decisions. You will eventually find out what works for you.

Oh, and also, use a debugger. Stop writing print statements everywhere.

· writing, programming