Awesome software

This is supposed to be the first post of a longer series that will cover software that I like very much. They will share the awesome software tag.

Which are the important points for me to consider a piece of software to be awesome?

Functionality
Above all, awesome software should do its job well. Usually this job is prettly clearly and narrowly defined, a jack-of-all-trades tool tends to do none of its tasks very well, in my experience.
Simplicity
Awesome software is usually simple to use. This does not mean that its job is a simple task, and it does not mean that it works out of the box. Rather, it menas that, it is straighforward to use when it is properly set up.
Speed
Awesome software should be fast. It’s just much more fun this way.
Bug-free
For a piece of software to be awesome, it should just work.
Concept
Usually, an awesome piece of software has very well thought-out concept both of the problem it is trying to solve and of its approach to address it.

In the end, this is very subjective, of course. In this series, I will just try to provide you with a list of interesting software you might try to look at. Just look at awesome software.