[Curiosity] What does the "average" C++ developer work on?
-
CListCtrl
.45 ACP - because shooting twice is just silly
-----
"Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass..." - Dale Earnhardt, 1997
-----
"The staggering layers of obscenity in your statement make it a work of art on so many levels." - J. Jystad, 2001 -
All in the title.. Never worked with MFC, read a book about it in 1998, tried it and couldn't get into it. Peruse a few C++ book, never found them that appealing. I did write a Uniscribe wrapper in ManagedC++, an ObjectiveC/GNUstep wrapper in ManagedC++ and some OpenGL setup code in C (tapped in with interop), that's about it for my native / C development. Neither did I work with C++ developers. So I wonder what does this strange beast do for a living?
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
"Average" C++ developers can no longer find employment -- you need to be a "rock-star" C++ developer nowadays. :cool:
-
By requiring years of experience, they can dictate what they are going to pay you. And most importantly the majority of applicants are kids who can barely write a 'Hello World' program. Talent is not so common these days and when a manager finds someone with talent, he tries to demean the person and assaults his experience and questions it. The Real ProgrammerTM fails while someone with a fast tongue gets the job.
NULL
Mechanical wrote:
By requiring years of experience, they can dictate what they are going to pay you.
No, by requiring years of experience they can dictate whether they are even going to hire you at all.
Mechanical wrote:
The Real ProgrammerTM fails while someone with a fast tongue gets the job.
Maybe that's why I'm unemployed? :laugh:
Kevin
-
Super Lloyd wrote:
So I wonder what does this strange beast do for a living?
Look at the job descriptions for C++ coders at any job site, or job postings of big software companies like Microsoft, Adobe or AutoDesk and you'll get a pretty good idea. Anyway, i don't know why you think C++ develpers are rare and strange creatures. Pretty much all the software you run on your computer is written in either C or C++.
Nemanja Trifunovic wrote:
Pretty much all the software you run on your computer is written in either C or C++
...including of course the higher level languages and runtimes that are currently in more demand than C++. :) C++ will always have a niche for certain problem domains. It covers the areas where "if you can't do it in anything else, you can do it in C++."
Kevin
-
All in the title.. Never worked with MFC, read a book about it in 1998, tried it and couldn't get into it. Peruse a few C++ book, never found them that appealing. I did write a Uniscribe wrapper in ManagedC++, an ObjectiveC/GNUstep wrapper in ManagedC++ and some OpenGL setup code in C (tapped in with interop), that's about it for my native / C development. Neither did I work with C++ developers. So I wonder what does this strange beast do for a living?
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
C, not C++. I work on an automated material handling system. On one end it controls conveyors, scanners, PLCs, stacker cranes, sortation systems and the occasional blinking light. On the other, user applications that allow receipt, selection and delivery of goods, stock inspection and workflow planning.
-
"Average" C++ developers can no longer find employment -- you need to be a "rock-star" C++ developer nowadays. :cool:
-
peterchen wrote:
so that the C# kids can do their magic
These days kids think that bringing data from a Database makes them "Programmers". And using an ActiveX control to do all the work makes them Magicians. A few years ago, displaying data wasn't "Programming". Now we have PHP Programmmers, ASP.NET Programmers, Javascript Programmers, Flash Programmers, Silverlight Wizards,...
NULL
This is not your first post praising C++ over other languages. Where does this attitude of superiority code from? Harder is better? I work with a compiler, an IDE, a source control system on an OS running on millions of transistors I couldn't build myself. Maybe I could one of these myself if I would spend a significant part of my life on it - but what would be gained? I do have a measure of better: Solving problems "they" can't solve. I do believe that is one of C++' strengths still. But it's not an accident that in C# displaying database results is easy: It's easy because these are the problems requiring a solution. In the end it's not the language. It's the programmers. The fundamental weakness of C++ is it's complexity and long learning curve before you can checkin non-pair-programmed non-test-driven non-code-reviewed production code. That means there won't be enough C++ programmers at all. (and the reason I am not afraid of my pension...)
Agh! Reality! My Archnemesis![^]
| FoldWithUs! | sighist | µLaunch - program launcher for server core and hyper-v server. -
This is not your first post praising C++ over other languages. Where does this attitude of superiority code from? Harder is better? I work with a compiler, an IDE, a source control system on an OS running on millions of transistors I couldn't build myself. Maybe I could one of these myself if I would spend a significant part of my life on it - but what would be gained? I do have a measure of better: Solving problems "they" can't solve. I do believe that is one of C++' strengths still. But it's not an accident that in C# displaying database results is easy: It's easy because these are the problems requiring a solution. In the end it's not the language. It's the programmers. The fundamental weakness of C++ is it's complexity and long learning curve before you can checkin non-pair-programmed non-test-driven non-code-reviewed production code. That means there won't be enough C++ programmers at all. (and the reason I am not afraid of my pension...)
Agh! Reality! My Archnemesis![^]
| FoldWithUs! | sighist | µLaunch - program launcher for server core and hyper-v server.peterchen wrote:
Where does this attitude of superiority code from?
I have no feeling of superiority. I am, however, sick of correcting and sometimes rewriting kids' code written in PHP, ASP, Flash, Javascript and I have seen that kids these days cannot code (or at least the ones I worked with).
peterchen wrote:
In the end it's not the language. It's the programmers. The fundamental weakness of C++ is it's complexity and long learning curve before you can checkin non-pair-programmed non-test-driven non-code-reviewed production code. That means there won't be enough C++ programmers at all.
Totally agree.
NULL
-
All in the title.. Never worked with MFC, read a book about it in 1998, tried it and couldn't get into it. Peruse a few C++ book, never found them that appealing. I did write a Uniscribe wrapper in ManagedC++, an ObjectiveC/GNUstep wrapper in ManagedC++ and some OpenGL setup code in C (tapped in with interop), that's about it for my native / C development. Neither did I work with C++ developers. So I wonder what does this strange beast do for a living?
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
Diplomatic answer: I'd suggest "average" is a meaningless concept in as diverse a profession as software development, and doubly so among developers using a language like C++. Honest answer: Quite frankly average implies, well, crap,* and that's not at all ideal, really. * That might be in part because I'm just coming down from #accu2010[^], which always reminds me what "Advanced" or "Expert" can really mean. Most of us have a long, long way to go to reach that level.
Anna :rose: Tech Blog | Visual Lint "Why would anyone prefer to wield a weapon that takes both hands at once, when they could use a lighter (and obviously superior) weapon that allows you to wield multiple ones at a time, and thus supports multi-paradigm carnage?"
-
By requiring years of experience, they can dictate what they are going to pay you. And most importantly the majority of applicants are kids who can barely write a 'Hello World' program. Talent is not so common these days and when a manager finds someone with talent, he tries to demean the person and assaults his experience and questions it. The Real ProgrammerTM fails while someone with a fast tongue gets the job.
NULL
Mechanical wrote:
someone with a fast tongue gets the job
Only if your prospective boss is a woman.
-
Diplomatic answer: I'd suggest "average" is a meaningless concept in as diverse a profession as software development, and doubly so among developers using a language like C++. Honest answer: Quite frankly average implies, well, crap,* and that's not at all ideal, really. * That might be in part because I'm just coming down from #accu2010[^], which always reminds me what "Advanced" or "Expert" can really mean. Most of us have a long, long way to go to reach that level.
Anna :rose: Tech Blog | Visual Lint "Why would anyone prefer to wield a weapon that takes both hands at once, when they could use a lighter (and obviously superior) weapon that allows you to wield multiple ones at a time, and thus supports multi-paradigm carnage?"
A bit touchy, are you?! ;) For the sake of your understanding, in this case, average means those who are NOT working on OS development or other marginal but necessary task that are most likely going to be a mixture of ASM, C, C++
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
-
A bit touchy, are you?! ;) For the sake of your understanding, in this case, average means those who are NOT working on OS development or other marginal but necessary task that are most likely going to be a mixture of ASM, C, C++
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
Not at all. Buzzing, in fact. :) My reference is merely to the fact that if you spend any time out there learning outside of the typical environments most of us only get a chance to experience, you very quickly realise that the "average" bar is pretty damn low. In an average environment, the devs don't even begin to fulfill their true potential because of corporate intertia, lack of awareness that "there may be a better way" and so on. The result is one we're all familiar with: far too much untestable, bug ridden, crappy code, and devs who are terrified of merging changes, let alone refactoring to patterns or learning how to use the Standard Library properly. It's a human problem rather than a technical one, which means far too many devs (and their managers, and the organisations employing both) run away from it. Those who do try to effect change to improve things are frequently shouted down or ignored. But then, having spent a week hanging around with leading developers at the Conference my perspective is somewhat different from the days before I started going and thought MFC was a good idea...
Anna :rose: Tech Blog | Visual Lint "Why would anyone prefer to wield a weapon that takes both hands at once, when they could use a lighter (and obviously superior) weapon that allows you to wield multiple ones at a time, and thus supports multi-paradigm carnage?"
-
A bit touchy, are you?! ;) For the sake of your understanding, in this case, average means those who are NOT working on OS development or other marginal but necessary task that are most likely going to be a mixture of ASM, C, C++
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
Not at all. Buzzing, in fact. :) I did write a long reply to this, but lost it. :doh: However, the gist was that if you get out there and learn from those who get the time to actually figure out what really works in our industry (reading lots of tech books is a start), you're well above average. Quite soon you'll realise that the "average" bar is set very low indeed. Most devs rarely learn anything they aren't told to, and that's just tragic. The result is crappy, untestable code, poorly designed UIs and a strong resistance to organisational change. Quite frankly the contents of a copy of "Modern C++" would terrify many of them. Templates? Well designed interfaces and APIs? Design by contract? Fat chance. I've been there, and I'm sure that in the past I've been as much part of the problem as anyone. Fortunately, we all have a choice, and I've chosen to actively work to change that. :rose: So, do you still want to do what "average" folks do, or do you want to do what exceptional folks do? It's what you make of it, not what you work on.
Anna :rose: Tech Blog | Visual Lint "Why would anyone prefer to wield a weapon that takes both hands at once, when they could use a lighter (and obviously superior) weapon that allows you to wield multiple ones at a time, and thus supports multi-paradigm carnage?"
-
Not at all. Buzzing, in fact. :) I did write a long reply to this, but lost it. :doh: However, the gist was that if you get out there and learn from those who get the time to actually figure out what really works in our industry (reading lots of tech books is a start), you're well above average. Quite soon you'll realise that the "average" bar is set very low indeed. Most devs rarely learn anything they aren't told to, and that's just tragic. The result is crappy, untestable code, poorly designed UIs and a strong resistance to organisational change. Quite frankly the contents of a copy of "Modern C++" would terrify many of them. Templates? Well designed interfaces and APIs? Design by contract? Fat chance. I've been there, and I'm sure that in the past I've been as much part of the problem as anyone. Fortunately, we all have a choice, and I've chosen to actively work to change that. :rose: So, do you still want to do what "average" folks do, or do you want to do what exceptional folks do? It's what you make of it, not what you work on.
Anna :rose: Tech Blog | Visual Lint "Why would anyone prefer to wield a weapon that takes both hands at once, when they could use a lighter (and obviously superior) weapon that allows you to wield multiple ones at a time, and thus supports multi-paradigm carnage?"
I guess I could simply look at Seek[^] to answer my own question! I am not really looking at excellence ... but just at the job market and if it was worth it.. Recently I stumbled upon a C++ article and I wondered, should I have a new go at C++? Would it help me find a job or do a "better" job at what I'm doing now.. (mostly C#/WPF/Silverlight/WCF dev)(as in same development productivity but more performant code) and as I am thinking that it would be just a bad idea to do what I do in C++ I am looking for proud C++ developer who can tell me why working in C++ was the best thing that happen to them! Incidentally that will give me an idea of what new opportunity C++ experience can open to me!
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
-
Not at all. Buzzing, in fact. :) I did write a long reply to this, but lost it. :doh: However, the gist was that if you get out there and learn from those who get the time to actually figure out what really works in our industry (reading lots of tech books is a start), you're well above average. Quite soon you'll realise that the "average" bar is set very low indeed. Most devs rarely learn anything they aren't told to, and that's just tragic. The result is crappy, untestable code, poorly designed UIs and a strong resistance to organisational change. Quite frankly the contents of a copy of "Modern C++" would terrify many of them. Templates? Well designed interfaces and APIs? Design by contract? Fat chance. I've been there, and I'm sure that in the past I've been as much part of the problem as anyone. Fortunately, we all have a choice, and I've chosen to actively work to change that. :rose: So, do you still want to do what "average" folks do, or do you want to do what exceptional folks do? It's what you make of it, not what you work on.
Anna :rose: Tech Blog | Visual Lint "Why would anyone prefer to wield a weapon that takes both hands at once, when they could use a lighter (and obviously superior) weapon that allows you to wield multiple ones at a time, and thus supports multi-paradigm carnage?"
Also.. I had a few poke at C++ many times in the past but it did not fit my idea of fun, which requires to be able to spin a nice GUI on top of whatever mad algorithm I'm playing with.
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
-
I guess I could simply look at Seek[^] to answer my own question! I am not really looking at excellence ... but just at the job market and if it was worth it.. Recently I stumbled upon a C++ article and I wondered, should I have a new go at C++? Would it help me find a job or do a "better" job at what I'm doing now.. (mostly C#/WPF/Silverlight/WCF dev)(as in same development productivity but more performant code) and as I am thinking that it would be just a bad idea to do what I do in C++ I am looking for proud C++ developer who can tell me why working in C++ was the best thing that happen to them! Incidentally that will give me an idea of what new opportunity C++ experience can open to me!
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
C++ is a deep and complex language, and more suited to some tasks than others. You can use it to develop UIs of course (just, please, not in MFC!) and to do all sorts of interesting stuff. It is, however, a language that allows you to hang yourself real quick. It's one you will never completely know (I'm more conscious now of how much I don't know than that I do), and one in which crappy code will be harder to fix than almost any other. C# it isn't. So yes, feel free to dive in and learn. Do understand however, that what you write will almost always be sub-optimal, and be prepared to learn and continuously self-improve accordingly. If you can do that and you have an interest in (e.g.) performance and complex systems, C++ is well worth investing time to learn. With C++ 0x just around the corner, the language is about to take a huge step forward, too. When I was learning I started with the Lippman's C++ Primer[^], but these days I'd suggest you also need a copy of Effective C++[^] or C++ Gotchas[^] to hand from day 1. A copy of 97 Things Every Programmer Should Know[^] never hurts too, of course. :)
Anna :rose: Tech Blog | Visual Lint "Why would anyone prefer to wield a weapon that takes both hands at once, when they could use a lighter (and obviously superior) weapon that allows you to wield multiple ones at a time, and thus supports multi-paradigm carnage?"
-
Also.. I had a few poke at C++ many times in the past but it did not fit my idea of fun, which requires to be able to spin a nice GUI on top of whatever mad algorithm I'm playing with.
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
C++ GUIs are pretty powerful if you use the right framework (we use WTL, as it's both lightweight and flexible, without the bloat and legacy baggage of MFC). If algorithms are your thing, take a look at the way STL (Standard Template Library) algorithms work. It's very powerful stuff, and easily parallelised (another area of big change at the moment) if you're doing number crunching. Be aware of the existance of the Boost library too. New candidates for the standard library often start off in Boost, and it's a good indicator of where the language is going.
Anna :rose: Tech Blog | Visual Lint "Why would anyone prefer to wield a weapon that takes both hands at once, when they could use a lighter (and obviously superior) weapon that allows you to wield multiple ones at a time, and thus supports multi-paradigm carnage?"
-
C++ is a deep and complex language, and more suited to some tasks than others. You can use it to develop UIs of course (just, please, not in MFC!) and to do all sorts of interesting stuff. It is, however, a language that allows you to hang yourself real quick. It's one you will never completely know (I'm more conscious now of how much I don't know than that I do), and one in which crappy code will be harder to fix than almost any other. C# it isn't. So yes, feel free to dive in and learn. Do understand however, that what you write will almost always be sub-optimal, and be prepared to learn and continuously self-improve accordingly. If you can do that and you have an interest in (e.g.) performance and complex systems, C++ is well worth investing time to learn. With C++ 0x just around the corner, the language is about to take a huge step forward, too. When I was learning I started with the Lippman's C++ Primer[^], but these days I'd suggest you also need a copy of Effective C++[^] or C++ Gotchas[^] to hand from day 1. A copy of 97 Things Every Programmer Should Know[^] never hurts too, of course. :)
Anna :rose: Tech Blog | Visual Lint "Why would anyone prefer to wield a weapon that takes both hands at once, when they could use a lighter (and obviously superior) weapon that allows you to wield multiple ones at a time, and thus supports multi-paradigm carnage?"
well... thanks for all those tips! :-)
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
-
All in the title.. Never worked with MFC, read a book about it in 1998, tried it and couldn't get into it. Peruse a few C++ book, never found them that appealing. I did write a Uniscribe wrapper in ManagedC++, an ObjectiveC/GNUstep wrapper in ManagedC++ and some OpenGL setup code in C (tapped in with interop), that's about it for my native / C development. Neither did I work with C++ developers. So I wonder what does this strange beast do for a living?
A train station is where the train stops. A bus station is where the bus stops. On my desk, I have a work station.... _________________________________________________________ My programs never have bugs, they just develop random features.
Right now an embedded GUI. Previously I did desktop applications in MFC. But my first love is embedded control, especially motion control in assembly and C. I never really got into the C++ thing either although I get paid to do it now. I like to make things move and my C productivity, in spite of the myths, is much greater.
-
There can be no "average" C++ developers. The "average" ones have long switched to .NET and apparently "like" it. :laugh: You could never like C++ unless you know what it can do, its limitations. Its only limit is the programmer using it.
Super Lloyd wrote:
So I wonder what does this strange beast do for a living?
I would imagine maintaining legacy applications, writing games, doing "Real" development, helping other html "programmers" do their jobs. And it is being killed. No more do you see jobs for C++. They all want PHP, ASP.NET, ...
NULL
I'm not sure it's accurate to say it is being "killed". Developers are being required to know many different technologies. IMO, C++ will be around for a very long time because it provides an excellent balance between high and low-level programming and because some of the most talented and experienced software engineers have a lot of C++ experience. It will probably continue being used whenever efficiency is important in a relatively large, complex system. (C is sufficient for smaller projects and probably will continue being used for low-level drivers, etc, but there aren't as many tools to limit complexity in C as in C++.) Despite what appears to be a common belief, C++ provides excellent facilities to limit complexity. In general, .NET-based/Java and all these other newer languages are probably more useful for typical GUI and web-based application development. But for more advanced development involving real-time systems, video processing, machine learning, etc. - research development kind of stuff, I suspect C++ is the language of choice for many.