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.
Source Control
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.
Editors
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.
Sublime
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.
Atom
IDEs
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.
Eclipse IDE
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
UI Kits
When starting a new Web project, you will need to use a UI Kit to speed up your development process. Bootstrap is one of the most popular, and one that has predefined CSS, with a grid layout, form elements and custom buttons. It also has custom JavaScript controls such as modal windows, tooltips and carousel. You can find free themes online for Bootstrap at Bootswatch, while WrapBootstrap offers more themes that you can pay for.
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.
Last but not least, I wanted to present to you the Material UI kit, which implements Google’s Material Design using JavaScript and React.js. I strongly recommend that you download and try it out.
Testing Libraries
When developing Web applications, testing the code is one of the hardest parts. Here are a couple of really great testing JavaScript libraries that can help you create applications that are more robust. The first is Mocha.js, this runs on Node.js and the browser. Jasmine is a BDD testing framework and is widely adopted by the community. The jQuery library has a nice testing framework called QUnit, which is more a library for traditional TDD development with JavaScript.
UI Frameworks
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.
React.js is getting more and more attention from the Web developer community and full stack JavaScript coders. React was created by Facebook and they actively develop it, plus they hold a conference for it called React.js Conf. Telerik’s Kendo UI could be added here too, because they have a large variety of JavaScript tools, an MVC architecture, support for the binding concept the same way Angular does.
Developer Support
FireBug is the developer tool of Firefox, while Chrome has the Chrome Developer Tools, which is an awesome tool too. Each of these offer JavaScript debugging, HTML element search, live CSS updates and instant website refresh, Network monitoring, and HTTP request inspection.
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!