Why do software engineers like C++

Generally speaking, if you can learn and master C++, you can learn and master pretty much any other language out there. The reason it's disliked is because, in order to be proficient in it and have a fast release time, you need to be very familiar with the language and it's standard library.

However, in a language such as Java, you can have a fast deployment time with only some advanced knowledge of the ins and outs of the language/standard library. Hell, I only know like five things from the Java standard library by heart (asides from the basic stuff like collections of course).

That being said, C++ is still a widely used language because of it's great combination of speed and object-oriented methodologies. While many people believe it's not full OOP, I believe it gives you most of OOP's flexibility without forcing you to be a total fanatic. Most compilers even allow you to write pure C.

If I had the choice, I'd take C++ over Java any day, but that's just me being a fanboy. Generally speaking, Java is useful because it will run on pretty much any architecture that has a Java interpreter built for it. So for client applications that need to be supported on multiple platforms, it's considered the best tool for the job and most new applications written are web based anyways.