Software developers are constantly pressured to keep up with the latest technologies, and as soon as something new appears, they tend to jump right on it. Although this sounds very interesting, it has some drawbacks, like the use of premature technology, using tools that don't match the use case for what they need, or cause more issues than they help.
In this article, I will present a couple of tools which are really good and are essential for a software developer. Some are generic tools, but some are pretty specific. These have been around for some years and are mature enough to use, plus a lot of them have community support, which is always a plus.
Every software developer should know what a source control system is, and what source control management means. There are many source control systems, starting from git, svn, TFS or perforce, and each of these can usually do the trick for simple cases. If you are in feature branching and you have a larger team, then git is what you will want to use. If you have a .NET ecosystem, then TFS is the right choice.
There are online service providers that can host your code for free, such as GitHub and BitBucket. For open source projects, GitHub is the one to use, but if you need to have a private repo for free and need some people to work on the project besides yourself, then BitBucket is better, since it offers free private repos for up to five developers.
Editors / IDEs
There is always a discrepancy between techie people about code editors and IDEs (Integrated Development Environments). I think that a software developer has to master at least one editor and one IDE.
I am sure that every programmer has at least heard about Sublime Text Editor. This editor has a lot of nice features, and it supports plugins. I think Sublime's most important factor for developers is that it's blazingly fast. Even if you have many files open it allows you to navigate between the files instantaneously. Source code highlighting also works very well. All the packages for Sublime can be found on Package Control website.
An alternative to Sublime is Atom. Atom is much newer than Sublime and is built on GitHub’s Electron cross-platform engine. Atom is as fast as Sublime, the only difference is that Atom is fully open source, meanwhile, Sublime requires you to pay a license fee if you use it for commercial use. Atom has a packaging system too, and the available packages are quite high. It became very popular mostly because of GitHub’s marketing campaigns, but I can assure you that if you try out Atom, then I am sure you are going to move over to Atom. The decision will be subjective since the two editors have similar feature sets, and have comparable performance.
Depending on the technology you use, an IDE can be a good idea. Eclipse or IntelliJ is a must if you're a Java developer, as these IDEs give you the ability to efficiently debug and profile your app, plus everything is installed with one shot. With the editors mentioned before, you always have to look for plugins and install them separately. That is not needed with IDEs.
Eclipse is free and is developed by the community. In the old days, Eclipse was buggy and very slow. Nowadays, it has improved a lot and the base Eclipse editor is the base of many other IDEs (like the one used to develop apps for Samsung SmartTVs). IntelliJ is much more modern, and in some cases is more feature-rich than Eclipse, but its has a price. For a standard home license, you will have to pay around 170EUR, while a pro developer license costs almost 500EUR.
In case you are a .NET developer, then Visual Studio is the best choice for you. The professional developer license is quite expensive, but there is a Community Edition which is free for non-commercial use. In case you are developing using .NET but not using Windows, then MonoDevelop is the best alternative for you.
Continuous Integration (CI)
Continuous Integration is about compiling, deploying and delivering software as often as possible so the feedback from the client comes as early as possible, allowing the development team to react to change requests. Jenkins is the leading open source CI engine.
Continuous delivery means that your source control system is hooked up to your Jenkins build server. When developers commit some changes, the Jenkins systems observes that and starts a new build process, compiles the project, and runs the unit and integration tests (if there are in your project). It will also create new artifacts (executables or build process outputs) and if it has a deployment job configured, it will deploy the new release. By making this whole workflow automatic and without human interaction, it saves a lot of time and money for a development team.
Source Code Merge Tool
If you are working within a team as a software developer, then the time will come when two or three of you might modify the same code file at the same time, which could cause conflicts. Small conflicts can be resolved without a merge tool, but if there are many conflicts within the same file then you will need a good tool. One of the tools you could use on OSX is DiffMerge. This tool offers a nice overview of changes in the files, and also has a nice pattern matching feature for comparing the files.
So far, we've covered some general tools which every Software Developer will need to use at some point in time. Now I will list some essential tools for Web developers.
Web Developer Toolkit
Foundation is an alternative to Bootstrap. While it isn't as widely-used as Bootstrap, it’s the second most popular for sure. This also has a grid structure and nice design. For those who want to learn how to use it, there are a lot of tutorials for Foundation on their website:
Kendo UI is the third on my UI Kit list. I’ve started to use this when it was still in beta, but it has evolved a lot since then. The whole UI Kit and the helper classes are very well-aligned and can be easily used together. This UI Kit isn’t free, but if you are building a project where good, robust HTML controls like Grids, Calendars, and Search fields are needed, then this could be a good choice for you.
Since SPAs (Single Page Applications) are very common nowadays, Angular.js should be the first you should turn to for Web UI Frameworks. The second version of Angular is expected to arrive in a couple of months, featuring a completely new design and improved performance. Angular is supported by Google.
The W3C website validator is a very good tool to test how the website or webpage you are building complies with the standards.
For cases that require you to find a certain color on a website, you can use a color picker. There is a Google Chrome extension for this called ColorPick EyeDropper. The reason I like this is that when you select a region on the website to pick a color from, it will create a zoomed picture of the area and it will mark the regions that have the same color so it's easier for you to select what you need.
Do you use other tools? Please leave a comment and share the top tools that you can't work without!