There are many ways in which you can improve your efficiency and effectiveness as a software engineer. I will provide you a list of tools that will help you to become more productive.
Before I get to the list, allow me to get philosophical for just a moment. Tools are great, but they are merely tools. If you can’t focus and prioritize properly, then tools won’t do you much good. I used to believe that I was good at that. After all, successfully ignoring the noisy man calling his mother at the table next to you in the already noisy coffee house and still delivering kick ass results, wouldn’t you agree that is quite impressive? But then, during the many months this post has been lingering as a draft, I started reading books about startups and entrepreneurship. Popular books like the Four Hour Work Week and the 100$ Startup have quite interesting so far. I expected nothing but buzzwords and obvious advice but I was pleasantly surprised by the useful information they contain. Of course, you need to take such books with a pinch of salt but if you gloss over the big promises and exaggerations, the authors make some good points.
One of the things I learned that a sense of urgency makes you stick to the essentials, or that outsourcing is not just for big multinational corporations. Let others – like a graphical designer or a (virtual) assistant – help you so you can work on what you are supposed to be working on. Especially for software developers, it is easy to get lost in the little details (a superb example is the ongoing debate ‘tabs vs spaces’). Being perfectionists we tend to leave no stone unturned until we have found the ideal solution to a problem. Although that is certainly a good characteristic, sometimes it’s better just to build something quickly and see what happens from there. Besides my freelance gigs I have also founded my own software company. At first I maintained my own quality standards when I wrote my applications. I was happy about the quality but it took ages to deliver something worthy for production. In fact, it took so long that I ultimately dropped the project.
After reading the books I mentioned before, I decided to have another go at it but this time with a slightly different approach. This time I would give myself a ridiculous deadline – one that any IT manager would ironically deem ‘appropriate’. It was remarkable how this urgency kept me working exclusively on the essentials. I had a working product running in weeks rather months or years. The code was a mess but at least I got the job done. This may not be such a great idea in the corporate world with established systems and processes but for your own startup this makes good sense.
Besides having the right attitude and mindset, a good part of becoming more productive is to use the right set of tools. Even though it is perfectly possible to write your entire application in Notepad and without the help of Google or Stack Overflow, it may not be the best tool for the job. In what follows is a list of tools and utilities that I use on a day-to-day basis.
I hope your first response was “well duh” when you read this. Don’t go away, I’ll explain.
There are many IDEs in the world and many of them are great, but for me the king of kings is Visual Studio. It has a tremendous amount of features but it also fully embraces the community’s contributions. Having such an enormous community, you would expect there to be many tools and extensions. You would be right, here are some of my favorite extensions:
- Resharper is one of those premium products that will make you wonder how you survived without it all these years.
- CodeMaid is another tool that keeps your code clean and uniform.
- GhostPro is cool because it will generate a documentation file of your source code.
- File Nesting: Made by community celebrity Mads Kristensen, this is a small utility that does exactly what it says. Useful when you want to group files (such as minified files and source maps)
- Image optimizer: Compresses your images to the smallest size possible.
The cool new kid on the block has received incredible support from the community and not just the developers in the Microsoft ecosystem. All my client-side development nowadays is done in VS Code. It’s simple and fast and yet it’s extremely powerful. And it has thousands of extensions, anything you would possibly need, there’s an extension for it.
Another one that should be obvious and make you wonder if I’m new to the world of programming. As with Visual Studio, it’s the plugins I am interested in:
- JSON Viewer formats a JSON document with indenting
- XML Tools does the same thing but for XML documents
- NppExport exports to HTML or PDF
Another classic. Essential when you want to monitor web traffic and your web apis. Easy to use and it has some nice features such as (host) filtering. The company that makes Fiddler is of course also known for its excellent web components.
I talked about this tool already extensively. If you missed it, you can check it out here. It is essentially a text manipulation tool that reduces the need of manual copy pasting.
A simple and free tool that allows you to record your screen and save it as a GIF. Perfect for documentation or providing feedback or reporting bugs.
Remote Desktop Connection Manager
Essential when you have multiple clients and multiple servers to manage. It allows you to group remote desktops and safely stores your credentials.
FileZilla is a popular application for managing your FTP connections. Just like RDCM, FileZilla can store your FTP connections and makes the management of those remote folders much easier.
As the good old cliché goes, “time is money”. I have seen people use Excel sheets or even worse, their e-mail history to keep track of their time. Admitted, I was one of those guys in the early days of my career. Since I discovered Toggl, I stuck with it ever since. It has a simple timer desktop application that synchronizes automatically to Toggl’s data center. The reporting feature is a great help for invoicing.
Music Streaming Services
Spotify or other streaming services are an excellent companion for those blissful late night coding sessions or simply to distract you from the typical office noises.
If you are traveling a lot and need to access content from your country that is geoblocked, then ExpressVPN is what you need. It comes at a cost but I think it is totally worth it.
Browsers, browsers, browsers
With so many different browsers and even more devices, web development is not for the faint of heart. I feel bad for the chaps who still have to support IE6 while others can use the joyous ES9 syntax. At the moment I have more than ten browsers installed on my Windows computer and even though that might be overkill for most situations, I suggest you install the major browsers: Google Chrome (and Canary), Mozilla Firefox, Opera, Edge, Internet Explorer 11, Safari.
Get acquainted with every browser’s developer tools as each one is slightly different (except the Chromium based browsers which are roughly the same).
Speaking about browsers, there are heaps of plugins that can help you develop web applications. Here are a few extensions I have installed on Google Chrome:
- React Developer Tools
- Redux DevTools
- Browser Calories
- Eye Dropper
Excellent program for testing your APIs. Easy to use and facilitates collaboration with your colleagues. Data-driven applications that expose their data through web apis are very common so Postman should really be in your tool set.
Screen sharing apps
From time to time your clients will need your help and will want to show you what they are struggling with. If you are not on site you will need some software. One of the oldest programs is Teamviewer but there are many other excellent programs on the market such as join.me, GoToMeeting and Skype.
If you are working with a team, chances are you will use Slack or Teams. Both are excellent and they make team work so much easier. If you are like me and work remotely most of the time, this is a good place to be ‘vocal’ to let everybody know you are available and at work – and not out for some post- scuba dive breakfast and/or decompression beers for instance.
There are heaps of bloggers like me and they all have their own channel on the world wide web. To follow them, you could do it the old fashioned way and save them in your favorites so you can visit those sites from time to time. Or if you’re normal, you’ll want something like Feedly. With Feedly you’ll have access to all of your favorite bloggers in one place.
This is another obvious one but there are still organizations who consider version control as putting source code on a shared drive.
As a developer in the world of Microsoft, it makes much sense to use Team Foundation Version Control. Services like Azure DevOps (formerly known as VSTS or TFS) make it easy to manage your source code and indeed the project you are working on. But since Satya Nadella took over from Ballmer, Microsoft fully embraced open source and began to use git as their main version control system. If you haven’t worked with git, go to Github or BitBucket and make yourself a free account and start learning the technology. If you don’t like the command-line, you can always resort to GitHub Desktop and SourceTree.
Useful for consultants and functional analysts. It is an excellent tool for creating wireframes. I usually resort to Balsamiq at the beginning of a project when there is no user interface yet. Many people are visual people so they need to see before they can understand.
For the night birds this is a godsend. It adjusts the color of your computer’s display according to the time of day. When it is getting dark it will reduce blue light so you get you a better sleep. Windows 10 also has such a feature (Night light) but f.lux seems to be more powerful. For instance you can disable f.lux when you are focusing on a specific application (when watching a movie or editing your photos in Adobe Lightroom, you’ll want to see the original colors and not just a bunch of golden hues).
Useful online tools
Temporary e-mail address
I am happy I discovered nada. Every time I sign up for a product trial, I get bugged with heaps of e-mails from the vendor for all sorts of things. Most of the time I won’t buy the product but the e-mails will keep on coming until the end of time. To prevent this from happening I started to use nada. It creates a temporary inbox which you usually need to confirm your e-mail address. Without nada, you would have to use your own e-mail address (or a fake real one). Nada serves only one goal and does it brilliantly.
CSS to LESS
When refactoring CSS code, this tool could save you heaps of time. Just paste your CSS code and it will generate LESS code for you. I recommend you review this code and merge it into your existing LESS code as there will be overlaps (especially variables).
This is something you could achieve with NimbleText but this website only has one purpose: to sort text. This site in particular has a few sorting options such as alphabetical or by length.
One of my favorites. Partly because it’s got pandas and partly because it’s good at compressing images. It’s also got an API and even better, there’s a NuGet package.
Fiddle sites have been a very useful addition to my core tool set. Excellent for playing around and validating StackOverflow answers before risking it to use it in your code base.
There is a whole bunch of fiddle sites that allow on the fly coding. This blog post has a lot. From this list I often use the following:
- .NET fiddle
- JS fiddle or CodePen
- Python Fiddle
- SQL Fiddle
Any decent IDE has this feature out of the box, but it may not always support code formatting for the language you are interested in. If you don’t want to open your IDE when you are writing a blog post or documenting your solution, that’s when online formatters come in handy.
Encoding and decoding
Meyerweb’s encoding and decoding page must have been visited millions of times. Not much else to say about this feature. There is a text area and two buttons, it doesn’t take a rocket scientist to understand the purpose of this page.
You could easily talk about computer specs for hours and every person will have his own preferences. A widely unpopular answer to the question ‘Which computer should I buy’ is ‘it depends’. If you are at the same office every day and work as a game developer or graphical designer, you will have other requirements than the traveling front-end developer or photographer.
I am a full-stack developer and I travel a lot. A good computer would have to be sturdy, powerful, fairly compact and light. My previous laptop was a 4kg 17.3 inch ASUS monster. Now I have a 15.6 inch ASUS ROG Strix which is just as powerful (maybe even more so) and half as light. Sadly it comes with the ridiculous feature of turning the keyboard into a Christmas tree (I would love to have been a fly on the wall during that meeting where the makers decided this was a good idea) but if you turn it off it is quite discreet for what is essentially a gaming computer.
Roost laptop stand
Now you may be wondering what a darn laptop stand is doing in this list. One word comes to mind: posture. Chances are you are now leaning forwards on your desk, your chin is resting on your left hand while your right hand is resting comfortably on your mouse. I’ll give you one tip: buy the Roost laptop stand. Your later you will thank your current you for using a laptop stand. Even though I travel the world with a carry-on backpack this one always goes with me.
Just like a woman can never have enough shoes or handbags and a man can never enough things that have buttons or screens, a developer can never have enough monitors. At times I use four or five monitors and somehow I could still use some more space on your screen(s). When you are on the road, taking your television-sized monitors can be a bit of a hassle. A clever alternative is the USB monitor. I have the ASUS MB169B+ and it has been with me for years, it’s an absolute gem. At the time when I bought it, it was pretty much the only one on the market but since then there have been a few worthy contenders such as the AOC 16 inch screen.
If you have a laptop stand then you will also want to use a (wireless) keyboard. There have been many studies about which keyboard is ergonomically better, which one crunches out the most words per minute in French and which one in German, etc. For me, all of that is irrelevant. Weight and compactness are the number one requirement when looking for a keyboard. I find Microsoft’s universal keyboard a pretty good one because it’s so light and it is foldable. It took me a while to get used to this keyboard (there is a significant gap in the middle) and I still type faster and better with other keyboards, but in combination with the laptop stand it is acceptable.
I have had the Logitech corded mouse for years and I am not planning on changing. Everything about this mouse is excellent. Depending on your Airbnb where you are staying or co-working space are working at, it’s safest to bring a mouse pad such as the Fellowes Microban pad.
Noise canceling headphones
Noise canceling headphones like the excellent Bose QuietComfort 35 will allow you to work from anywhere. And it also helps to deter co-workers from disturbing you. Play some soothing music or white noise from Spotify or any other streaming service through your headphones and you’re isolated from the world, allowing you to focus on what you need to be focusing on.
To my surprise, the Bose QuietComfort 20 also works brilliantly. They’re less conspicuous and you can use it to go running or use it in bed.
Keeps all your cables in one place. Over time you tend to gather cables and even when the device it came with has long gone, it will still somehow find its way in your backpack.
With organizers such as Grid-IT and the limited space they have, you can easily manage your set of cables and cords so you only take what you actually need – which is a rule of thumb in minimalist packing: ‘when in doubt, leave it’.
- Stack Overflow: a hostile community of people who collect points by answering questions. This is a cruel place where unclear questions or incomplete answers are punished by taking points away from you. In all seriousness, it is a fantastic platform and is impressive how people help each other out.
- Pluralsight, Udemy, Channel 9: Courses and videos made by professionals. A welcome change from all the dusty and lengthy books.
- SimpleNote: small Electron app for making notes. Good for making temporary private notes in ad-hoc meetings or calls with clients.
- QueueExplorer: makes your life easier when working with MSMQ queues.
- RescueTime: for when you have troubles focusing and staying off Facebook.
- SQL Server Management studio: the Visual Studio for database development.
- LINQPad: originally created for creating and testing your LINQ queries, now you can use LINQPad as a replacement for a simple console application to play around with.
Did I miss any useful tools? Please let them know in the comments!