My Google search endeavours show that C++ developers are not paid much more than any other set of developers, despite the fact that C++ is much harder to learn and less likely to be digested by the general software development community. |
It isn't the complexity of the language that determines the payroll, it is the complexity of the job you do with it, and the importance of that job is to the business that makes the money from which to allocate that payroll. I would say complexity of C++ is nothing compared to the complexity of many of the systems programmed with it.
I use C++ because it's the only language that works (for the jobs I consider worth doing), not because it's intellectually stimulating per se. If you really want your mind to "get a rush", check out Haskell and APL. C++ is all about getting the job done, every part of it is there to solve a problem, not to be abstract or complex for its own sake.
And, for what it's worth (I am just one programmer, not a statistic), I am not aware of java jobs that pay half as much as the C++ jobs I normally see here in NYC. It doesn't mean they pay for knowing C++ (except maybe Bjarne Stroustrup's job at Morgan Stanley): they pay for making software that works and does what is asked of it.
Will I be worse off if I focus my time exclusively to writing my projects in C++ as opposed to say, Python? |
Not "as opposed to", make it "at the same time as". As Stroustrup likes to say, you need to know 5 programming languages to be a good programmer. Here in finance it's common to do exploratory work in python and then when you have something that works, deploy it for real in C++. Or even interop between python model and C++ engine.
Should I shift my focus to trying to solve real-world problems with more simple and abstract syntax as opposed to fiddling with the intrinsics of C++? |
Again, not "as opposed to": leverage your understanding of those intrinsics to make the programs simple.
It sounds like you're in college, in your place I'd use the college to learn computer science - data structures, algorithms, type theory if you're lucky - and spend your own time learning software engineering. If your server is not responsive, how do you find out why? If it's because one thread is run bound, how do you find out what line of code caused that? How do you redesign it to be tolerant of similar errors in future? Contributing to open source projects can help with engineering skills.
As for negativity you may find on the internet, see Stroustrup's famous one-liner "There are only two kinds of languages: the ones people complain about and the ones nobody uses" -
http://www.stroustrup.com/bs_faq.html#really-say-that