Programming requires intense levels of focus for hours on end. Even the slightest distraction or annoyance can break that flow and stop you from getting in the zone.
It is important to set up your workspace and computer so that you have everything you need to focus on the job at hand.
There are quite a few tools aimed at software developers on the market, and not all of them are that great. These are the tools that I have used over the years that have really helped me become a productive programmer.
I do most of my development on a Mac, so some of these tools are Mac only, but some of them do have Windows versions as well.
As a programmer I find myself using Google for a lot of mini tools that I use on a day-to-day basis, whether it be generating a GUID, converting something to base64 or testing a regular expression.
If you have to fire up a browser to do something, it is easy to get distracted, not to mention the time wasted to find the tool you need.
There is a great application called DevUtils (Mac only, I am afraid) that has all these useful mini tools in one place. It also works with Alfred and Raycast (see #3) which makes it really quick to use without disrupting your flow.
On top of that, it is made by a solo indie developer, Tony Dinh so you are supporting a fellow developer too.
When making changes to my website, I often forget to see how it will look on my mobile. It isn’t until I have deployed it that I remember to check and find that something doesn’t look right.
This is where ngrok comes in. For example, if your web application is running locally on
localhost:3000 you can run the command
ngrok http 3000 and it will give you a URL you can use on your phone to access your local website.
I discovered Raycast recently, and it has changed the way that I interact with my Mac.
Raycast is Spotlight on steroids. It has a large extension library, and it is easy as a developer to write your own extensions too.
Instead of having to switch between lots of different applications, you control them all from Raycast, so you can quickly get back to writing code.
Whether it be controlling Spotify, searching through your notes or finding a file, you can do it all with Raycast.
If you don’t like Raycast another popular option is Alfred. Both applications are similar in functionality, but I personally prefer the UI of Raycast.
We are constantly learning all the time as developers. If you actually want to remember what you are learning now in a few months time, it is important to keep notes.
There are quite a few note-taking applications available. Personally, I like Obsidian. All my notes in Obsidian are stored in Markdown, locally on your machine.
Unlike other applications such as Notion, you don’t need to worry what might happen if they shut down one day. If I am going to be investing a lot of time in writing notes, then I need to know that I am always going to be able to have access to them.
You can do pretty much everything you can do in Notion in Obsidian too with the help of all the community plugins.
If you are struggling to keep your notes organised I wrote an article on how I take and organise notes that you might want to read.
How much time do you actually spend coding compared to searching for solutions on Stack Overflow or attending a never ending array of Zoom meetings?
This is where Rize comes in. For the data obsessed developer, Rize will give you a breakdown of where you are spending your time and will even give you little prompts when it thinks you are getting distracted.
AI seems to be everywhere at the moment, and people are already saying that AI could replace programmers soon. If you can’t beat them, join them.
The tools available aren’t good enough yet to replace programmers, but they do make good assistants.
You can use GitHub Copilot to help you fill out boilerplate code or write functions on areas you aren’t familiar with. I would still recommend checking everything it suggests, but it can really speed up your development flow.
If you get stuck and need to debug some code you ChatGPT can help. If you feed it the code and the errors you are getting, it can tell you what is wrong with it and suggest fixes. It can even write code for you as well, like GitHub Copilot. Again, it is not 100% accurate, so you need to check what it gives you.
ChatGPT is currently free, but I suspect they will go paid soon and GitHub Copilot costs $10 a month.
I often have a never ending to-do list that keeps growing every day, and it can be difficult to keep track of it all.
One way is to keep a running to-do list in your notebook. Although, the Tweek calendar is a lot nicer. It works in the browser as well as having an iPhone and Android app.
I really like the clean UI, which makes it easy to see what you have on this week. All it is lacking is a dark mode.
Do you find yourself getting distracted by your phone when you are supposed to be working?
Forest aims to stop that. As you focus on your work and not stop getting distracted by your phone, a tree starts growing. If you succumb to temptation, then the tree dies. Each tree then gets added to a forest on your phone.
Some of the proceeds from the app go to the charity Trees for the future, so not only are you getting work done, you are helping the planet too.
Did you think I forgot about VS Code? What list would be complete without it.
I have used VS Code exclusively as my IDE for 5 years now. It is lightweight compared to Visual Studio and allows me to use the same editor for multiple programming languages.
The best part about VS Code is all the extensions, that is what makes it really powerful. Let me know in the comments what extensions you use.
Some of my colleagues prefer the JetBrains IDEs. They have multiple IDEs depending on the language you use. Personally I prefer VS Code not only is it free (JetBrains is really expensive) but I don’t need to have multiple IDEs installed.
Of course, the true hardcore developers use VIM….
I use the terminal a lot as developer, but it can look pretty boring as standard.
Oh My Posh aims to change that by adding a bit of colour and UI flair to bring the terminal into the 21st century.
There are quite a few themes and customisations to make your terminal suit you. I find the git integration really useful, so I can quickly see what branch I am on.
Do you have any other developer tools that you would recommend? Let everyone know in the comments.