An Overview of Developer Tools for Windows
An overview of tools that will help you program faster and become a code summoning wizard
The links and comments sections of this article are an integral part of it. If you have anything to add, please leave a comment.
A long and steady procrastination led me to program without using any special tools- I used the WebStorm IDE, with the terminal and source control tools it comes with, and Notepad++ to keep passwords, commonly used commands, a TODO list, and a list of random data I needed.
A while ago, I saw some tools my friends are using and decided to go for a quest. A quest to become a code summoning wizard. I wrote this overview to summarize my findings.
Most of the topics we will be discussing are highly open to modifications and personal preferences, so I will try to mostly provide you with the latest features and tools that are available in the market and add links for more info so you can read in depth about whatever you find interesting.
Oh… and the comments. Don’t forget to look at the comments. People will probably add a lot of interesting info there.
Save Your Settings
A real wizard keeps his crafts in a safe place. (OK, I’ll stop doing the whole wizard thingie.) Because what’s more devastating than recreating your environment after an unexpected hard disk format?
Most of the programs we will discuss in this guide have an option to export user settings to a file. DO IT.
Save all these files in a safe place of your choice. Don’t be lazy to rename them after the program they keep settings for.
This way, your next format will be all sweet, fun and fresh instead of a hellish burden.
This part can probably save you more time than anything in this guide.
I’ll use WebStorm as my favorite IDE to example some things it can do, but most IDEs has equivalent features. There’s even a course (not a free one) in udamy about productivity in WebStorm.
We will start with the following cool feature- Create your own templates that include indents and a list of places to place your mouse in after pasting.
Live templates can be found under preferences > editor > live templates.
There are also some ready-made live templates on the internet, for example.
WebStorm also supports Emmet abbreviations for HTML and CSS. You can also expand them with
lh, for example, will become
line-height:; and place your cursor before the
; in css-like files, for example.
Chunks of code can easily be moved around the code with
Ctrl + Shift + Arrows:
I took this GIF from this great guide, that examples more of WebStorm shortcuts, tips, and tricks.
You can move back and forth between files and lines you worked on with
Ctrl + Alt + Arrows.
Try navigating in your code with Ctrl + Arrows and Alt + Arrows (both left, right, top, and down).
Pressing Shift Twice will open file searching by name.
Make sure to visit WebStorms shortcuts cheat sheet for a full list of shortcuts.
Here is one more useful guide about them.
Plugins in IDEs can make your life much easier. From easily integrating services like docker, node, and jest, to adding highlight support to languages, and to linting and testing your code in real time just beside the code itself.
Here is a list of most popular WebStorm plugins, for example.
If you find yourself doing something over and over again out of the context of the IDE, check if a plugin is available to do it alongside the code or consider writing your own plugin.
I strongly encourage everybody to consider writing IDE plugins. It takes some afford but in some cases, it could be beneficial in the long run.
Making them open source would also be useful for receiving feedback and contributions from the community and making our world a better place :)
The right term is actually “Command-line interpreter” but I’ll use the term “Terminal” for simplicity.
Let’s first discuss the features you will get if you would choose to invest in improving your terminal.
- Colors- coloring commands, arguments and various information, can prevent you from making stupid mistakes and be much more productive.
- Autocomplete- auto complete git, cd commands and many more.
The following GIF is from the great article mentioned before that shows how to improve your git integration in PowerShell.
Think how much time git branch auto completion can save you.
Fish auto-completes can be very useful as well. It remembers previous commands and allows completing to the nearest using tab.
Also Smart navigation commands, auto-completion, and glob support. (This screenshot was made using babun)
This screen is also from babun. Here you can see a list auto completion when pressing tab twice that allows you to navigate through completions with arrows.
- Alias- Lunch common commands with shortening.
Here is launching
git push by executing the alias
gp. More complex commands can easily be aliased. For example:
gfdd can run
git fetch origin develop:develop
Babun and many terminals come with a huge list of ready-to-use aliases.
Here is an article about advanced git alias.
More zsh features can be found in this blog post and google :)
Now let’s discuss the various terminals you can use to achieve these goals.
Also known as cmd (after its executable file name, cmd.exe) is the default windows terminal. cmd is a simple command line interpreter with rudimentary scripting capabilities bolted on.
In short, cmd’s philosophy is borrowed from DOS where you’d initially just use the command line to do very, very basic file management and to launch applications to do the real work. In Unix, on the other hand, the shell was an integral part of doing the actual work from the beginning.
The Command Prompt is not very strong, and it’s strongly suggested to choose any other terminal.
Many will be surprised by how good the PowerShell is. In last years, Microsoft understood the potential of appealing to sysadmins that are used to work with “bash” that will be discussed later and created this great tool.
Since it’s open-source now, it can be endlessly modified and adjusted.
In short, the PowerShell is a good substitution to the cmd.
As said before, since the shell is an integral part of UNIX systems, UNIX terminals evolved to be traditionally considered better than in Windows.
Lately, Microsoft decided to provide its users with an environment in which they can run most Linux command-line tools, directly on Windows, unmodified, without an entire Linux virtual machine.
This tool is mostly useful for running UNIX tools that cannot be easily run on Windows.
Regular developers should probably use one of the other tools suggested in this guide because this tool is still relatively fresh and its installation is not trivial.
A guide on installing and using it can be found here.
Third Party Applications
Both emulators of famous UNIX shells and custom written command lines offer endless modification options and opportunities. Some of them are open source and can be modified for specific needs as well.
If you become obsessed with improving your terminal, check out the other once.
There are plenty of clipboard management tools out there. They usually allow you to inspect and modify your clipboards’s history.
But these tools tend to be even more useful.
ClipboardFusion, for example, allows you to smartly paste HTML as text, to preview copied images, to create hot keys, and to run macros on texts.
It even allows you to download macros from a bank of pre-made macros that you can run on your test! See more of it’s features here.
ClipboardFusion also features clipboard syncing that allows you to keep one clipboard between devices. For example, you can copy a customer’s address on your desktop computer, turn around and paste it on your mobile phone.
There’s also PhraseExpress.
It offers smart auto-completion anywhere on Windows in case you have phrases you often use as well as clipboard management.
Its functions can even be activated in the middle of writing.
Simply write “__PS” to open PowerShell, for example. (It will be deleted from the document you wrote it on)
Another clipboard manager you should check out is Ditto.
(On windows 10,) Please press on Windows Key + Tab (twice).
You probably already understand the potential of this feature. It allows, for example, working on different projects, or just multiple maximized windows.
Other keys that will help you are:
Win Key + Ctrl + D — Add a desktop.
Win Key + D — Show desktop.
Win Key + Ctrl + Arrows — Navigate through desktops.
Win Key + Ctrl + F4 — Close the current desktop.
Here is Microsoft’s blog post about it.
If you like this feature, you can also google for tools to enhance it.
Mouse And Keyboard Sharing
These tools allows you to control several computers with even different operation systems, including copy and paste text and files between them.
Windows 10 offers an improvement to touch pad gestures- Three fingers swipe left and right, for example, can navigate back and forward in the browser.
Three fingers swipe to top will show applications and desktops
(like Win Key + Tab).
Three fingers swipe to bottom will show the desktop (like Win Key + D).
If you use the touch-pad a lot, it is probably worth looking for programs that add features to it.
If you are tired of password recovery, consider using password management tools. These tools allow you to only remember one master password and some of them can also verify they are pasted to the right site and this way prevent phishing. Some also offer password sharing between devices.
Remember that there are dangers in using these kind of tools. For example:
- If someone finds out your master password it could be dangerous- You don’t want to put all your eggs in one basket.
- If your password manager saves your passwords on the internet and also features syncing between devices, there are more points where an attacker can interfere and hack you.
So make your considerations carefully.
TODO Lists, Task Tracking, Temporary Storage
Here is a good guide about the best TODO lists.
Here is a good guide about note taking tools.
A convenient work station can make you (or your workers) happier and more focused.
First of all- The bigger the project, the longer it compiles. A strong computer with an SSD can save you a lot of time.
Other things I recommend you to consider upgrading:
- Multiple screens with large resolutions.
- A convenient keyboard, mouse, and touch pad.
- Your table and chair, light in the room, air conditioning, and noise.
use sites like Speed Typing Online to increase your typing speed. There are plenty of sites that offer all kinds of typing speed training.
Don’t waste time programming (or doing anything really) inconveniently. Make your environment convenient and your work will be more pleasent and productive.
I hope I saved some of your very very precious time :)
Thanks for reading and happy hacking :P