What does it take to be an expert in computer programming?
quora.com
quora.com
https://www.quora.com/Computer-Programming/What-does-it-take...
The problem is that in the body of the Quora question, which is omitted in the Forbes transplantation, the asker elaborates that he wants to master C++. Without knowing that, the immediate reference to C++ makes no sense, nor does step #1 saying to "become an expert in computer programming" when that sounds like the exact question itself.
It's usually better to post the original article rather than a wrapper article, especially when the wrapper contributes nothing and even confuses matters.
Edit: BTW, answerer takes the notion of the value of being full stack and blows it out to include all of computer science, computer engineering, anthropology, sociology, psychology, literature, and poetry. Cute, and maybe entertaining to some, but probably less than truly helpful. Become a Renaissance man as a prerequisite? Sure, and pick up deity status too, ya know, just in case.
But hey, it's Forbes. (aka hardly authoritative on software mastery)
what makes great programmers different: http://www.drdobbs.com/architecture-and-design/what-makes-gr...
2. Understand computer science.
3. Understand computer engineering and architecture.
4. Understand people.
5. Understand bullshit.
Then, try programming a game from 20 years ago.
sure you profile and go for hotspots but still it is very hard to actually understand full impact and CS algorithms are done in ideal conditions so they don't address complexity of executing environment and might be misleading path for optimization.
So when I ask "if that method were performing too slowly, what would you do in order to make it faster?" I'm often met with answers-phrased-as-questions like "use Vector instead of ArrayList?" Or often the confident statement "use HashMap" because apparently HashMap magically makes things faster... Except we ask this question about a range query (aka checking "if x < y" instead of "if x == y").
But yeah, I wouldn't be insistent about that on a job interview.
The industry should be paying the experts at least double what they are currently making.
The industry -- all industries, in fact -- should be paying employees commensurate with their contribution to the success of the firm. Explain how to do that well and I'll nominate you to the Nobel Committee. In the meantime, we have startups for realizing returns from out-sized contributions.
I don't think they solve the problem anymore. The VC-funded ecosystem is just another shitty corporate ladder (engineer => eng. manager => founder => angel investor (i.e. rich) => VC). It's now a reputation economy that depends more on pleasing the right people than on engineering excellence. Hot off the press: http://michaelochurch.wordpress.com/2013/07/09/three-capital...
Most of how the current crop of startups defines engineering excellence is not talent or CS expertise but "track record", especially if it involves "scaling" (that's a business anti-intellectual's nomenclature for "hard stuff I don't understand"). That has more to do with careerist maneuvering than any real drive to understand the fundamentals of computer science, software engineering, or anything else that's truly important.
I think that game's done. Yes, there are outsized returns due to the fact that the real value potential of a talented software engineer is $500k-5M, but engineers aren't going to capture the next 10 years of surplus in VC-istan. Management will.
The opportunities are somewhere else. I'd like to see more action in the mid-risk/mid-growth space that's currently underserved (too risky for bank loans, not risky enough for VC): http://michaelochurch.wordpress.com/2013/03/26/gervais-macle...
Star city (NYC/SV) non-experts: $120k
Star city (NYC/SV) experts: $150k
Emerging (ATX) or second-tier tech-hub non-experts: $80k
Emerging or second-tier tech-hub experts: $140k
Hinterland non-experts: $50k
Hinterland experts: ??? ($100k++ if they can consult and work remotely; no work for them otherwise)
Some people are making $180k at a given time, but even great programmers don't have long-term reliable $180k salaries (except as consultants). Right now, your specialty has to be hot (e.g. low-latency C++ in finance) for that.The star cities have a relatively small premium for strong programming skills, for a number of reasons. The cost of living forces up the low end, but there's also a glut of programming talent which leaves it with surprisingly low leverage. Even though talent is still hard to find and rare in the Bay Area (because it's rare everywhere, just less rare there) those companies think they have a lot of talent, because software managers are too unskilled to detect high talent. So that holds the high end back.
If VC weren't propping up the Bay Area and the job market weren't so flaccid outside of the VC-funded ecosystem and finance, we'd see a lot of the best programmers leaving for the #3-6 tech hubs and the excellence premium would be more ($60k by the number above, but in a low-COL area and with high autonomy).
Outside of Silicon Valley, salaries tend not to climb up toward $200K/yr as well (but it doesn't cost $800K to buy a 3 bedroom house).
Since it is mechanisable (several compilers exist), surely it is "mathematically" possible to formalise the semantics. The question is maybe rather whether there exists a mathematically _elegant_ formalisation? Glancing at the formalisation of C in the K framework [1], I'm not sure the answer to this question is positive.
Or if that's too nebulous, remember that knowledge is a hierarchy and mastery is a perception. In order for someone to perceive you as a master at a particular skill, you must also be highly competent in a number of other tangentially related skills.
Looks like Quora is a contributor to Forbes[1], but that no one gets paid[2]. At least that's what the answer that I can read without signing up for Quora says...
[1] - http://www.forbes.com/sites/quora/2013/07/08/what-does-it-ta...
[2] - http://www.quora.com/Quora/When-a-Quora-users-content-is-rep...