Although vendor prefixes are irritating, they’re only temporary and harmless

Vendor prefixes can by no means referred to as a hack
When you talk about a CSS hack, it exploits the flaws present in the implementation of a property or an element, so as to make another property work correctly. For instance, let’s talk about the ‘box model’ hack which exploits the flaws present in the voice-family property’s parsing, or the way in which different web browsers parse the backslashes (\). However, all these hacks are only used for fixing the problem of the way in which box model used to be handled by Internet Explorer 5.5 and the way in which it used to be interpreted by the Netscape. These hacks had nothing to do when it comes to the voice family style.
A browser or a vendor prefix cannot be considered a hack as it allows for the specification of the rules in which a property will get implemented, at the same time enabling the makers of web browsers to implement the properties in a distinct manner, without breaking everything.
These prefixes also make it possible for the web browser makers to produce new features before the specifications are caught up. They can employ such prefixes for stating that all such properties are only “in progress” as of now.
Rather than functioning as a hack, these vendor browser prefixes provide for a proactive approach for prevention of problems, prior to their actual occurrence.

Vendor browser prefixes are irritating, but only temporary
When you make use of the browser prefixes along with the standard ones, you’re actually making your webpages or applications future proof. Web browsers that employ prefixes will be able to use them and disregard the properties that can’t be understood by them. Furthermore, web browsers which have the ability of supporting the standard properties may continue to implement them as it is, as you list them in the end, inside your style sheet.
Although it may seem that these prefixes are repetitive and annoying, as you may need to write them quite a few times to make your style sheet compatible with all the browsers, please remember that it is only temporary. With the browsers continuously improving and getting updated, they make it a point that support for standard versions of the properties is duly added over a period of time. Once that happens, you can easily get rid of the prefixed version of your style sheet. For instance, if you were creating a prefixed style sheet a few years ago and were setting a rounded corner onto a box, you had to mention:
-webkit-border-top-right-radius: 5px;
-webkit-border-bottom-left-radius: 5px;
-webkit-border-top-left-radius: 10px;
-webkit-border-bottom-right-radius: 10px;
-moz-border-radius: 10px 5px;
border-radius: 10px 5px;

However, today you only need to write the standard version as follows:
border-radius: 10px 5px;

Google Chrome has been supporting the CSS 3 properties ever since its version 5.0 became available. Mozilla Firefox added this ability from version 4.0 onwards. IOS added in version 4.0, Safari in 5.0, Android in 2.1 and Opera in 10.5. Even the Internet Explorer version 9.0 onwards supports this property without the need of a prefix.
Please keep in mind that the web browsers will continue changing and evolving over a period of time. It is inevitable that you’ll require some type of hack unless you’re keen on building web applications or webpages which are years behind than the ones created with modern methods. What more, writing web browser or vendor prefixes is far easier than having to find and fix the errors, which are most likely to get fixed on their own in their future versions. Unless you use prefixes, you’ll be continuously finding and fixing different errors from time to time. Quite obviously, you wouldn’t want that!
What more, you can easily use an automatic tool like Prefixr for adding these vendor prefixes to your style sheet. This tool can even be accessed from within the popular code editors (through its API).