5 ms·
What does it take to be an expert in computer programming?
- benbruscella 13y ago1. Become an expert in computer programming. 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.
- ExpiredLink 13y agoTruth is 2 is not important, 4 and 5 are most important.
- wiremine 13y agoI don't think you can achieve #1 without a bit of #2 and #3. Milage varies depending on what you're programming, but I think people are too quick to dismiss CS.
- sjtgraham 13y agoTruth 2 is important. Formal academic training in it might not be.
- gngeal 13y agoIf you're, for example, rewriting an obviously correct but slow piece of code X into a faster but not obvious code Y, how do you know if the two are functionally identical without at least some knowledge of program algebra?
- cunac 13y agoby testing and measuring performance ? In real world it is rare that you have easy way to guess actual overall impact of your optimization. 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.
- jiggy2011 13y agoI think the question is how can you be confident that the optimised code does exactly the same thing as the non-optimised code.
- benjamincburns 13y ago#2 is very important, and sadly very under valued. You'd be surprised how many candidates I interview who don't understand the basic concepts behind time complexity. I'm not even talking about big-O. I'm talking about the idea that simple algorithms are dominated by a fundamental operation, and that in order to make said algorithm faster you must reduce the number of times you perform that fundamental operation. 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").
- super_mario 13y agoI don't know why is it so hard for people to understand that you can not make computers run faster, you can only make them do less.
- gizmo686 13y agoBecause for a long time we have been able to make computers run faster. Also, with all of the levels of abstraction in programming, making the computer do less could be using a more efficient implementation of something three layers deep, which looks a lot like making the computer run faster.
- ajuc 13y agoIMHO the correct answer should be "I'd profile it and then we can talk about what to optimize".
- benjamincburns 13y agoAnd if you were insistent on that answer you wouldn't be doing very well. Profiling a complex system to find bottlenecks is quite helpful. Profiling an implementation of an O(n) algorithm isn't going to tell you how to make it O(log(n)).
- kjhughes 13y agoThis is a transplanted answer to a Quora question: https://www.quora.com/Computer-Programming/What-does-it-take-to-be-an-expert-in-computer-programming 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.
- benjamincburns 13y agoAh... thanks. I was about to post "why does being good at a particular language have anything to do with mastering computer programming?" Admittedly C++ is a language with enough historical significance that any "master programmer" should at least have passing familiarity, but the article seemed to make "programming C++" synonymous with programming as a whole. But hey, it's Forbes. (aka hardly authoritative on software mastery)
- maaaats 13y agoBut Quora is often behind a login-wall. So linking there renders the link unusable for many (including me).
- ishansharma 13y agoWhy is Forbes discussing this? Amd even when it is, it seems like a link baiting headline!
- throwaway1979 13y agoSadly, this is a classic sign of a bubble :(
- sjtgraham 13y agoForbes has the feel of a place where a loosely knit group of people have been given the keys to post whatever their whims desire.
- mahmud 13y agoForbes licensed Quora content to boost its SEO?
- sanukcm 13y agoSeems like some kind of mutually beneficial relationship. 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-take-to-be-an-expert-in-computer-programming/ 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-reproduced-on-Slate-or-Forbes-or-any-partner-for-that-matter-is-the-user-compensated http://www.quora.com/Quora/When-a-Quora-users-content-is-rep...
- McUsr 13y agoHello. I am glad this thread showed up, so I can post my all time favourite link (so far) on the subject: what makes great programmers different: http://www.drdobbs.com/architecture-and-design/what-makes-great-programmers-different/240001472 http://www.drdobbs.com/architecture-and-design/what-makes-gr...
- ap22213 13y agoAn expert in computer programming might make ~$180,000. But, a non-expert with basic skills might make up to $120,000. Seems like a lot of work to get that extra $60,000. The industry should be paying the experts at least double what they are currently making.
- netcan 13y agoMaybe it should be paying non experts les :)
- esalman 13y agoIsn't it about supply/demand?
- PanickedOmlette 13y agoSure, but I think experts have way more opportunities and can easily get more. Maybe as contractors? Of course what an expert is is highly subjective.
- kjhughes 13y agoOr quadruple or more... 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.
- michaelochurch 13y agoIn 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-capitalisms-yeoman-corporate-and-supercapitalism/ 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-macleod-17-building-the-future-and-financing-lifestyle-businesses/ http://michaelochurch.wordpress.com/2013/03/26/gervais-macle...
- abeh 13y agoexpert in computer programming == expert in computer programming + 4 other things?!? This doesn't make sense.
- benjamincburns 13y ago"You have to walk before you can run." 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.
- derekp7 13y agoBut with this article (and I somewhat agree with programming in general), you have to become an expert at running before you can get really good at walking. Then you can start to learn about the finer points of the crawling maneuver, and when to apply it.
- eclecnant 13y ago"There are even serious discussions about whether C++ semantics can be formalized, that is, whether it is mathematically possible." 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. [1] https://code.google.com/p/c-semantics/ https://code.google.com/p/c-semantics/
- esolyt 13y agoWhy do I need to click the "Continue to Site" link to view the article? Is there something wrong with my browser or that's the way the website is?
- Mc_Big_G 13y agoAccording to Toptal and Codility, if you want to be regarded as a top web developer, you need to be able to complete 3 exercises similar to calculating the area of the intersection of two rectangles, that may or may not intersect, in 90 minutes . So, you should tailor your learning around that.
- jello4pres 13y agoI stopped reading when I saw that the first step to becoming an expert programmer was to become an expert programmer.
- bamurph 13y agoRecursion brah.
- sengstrom 13y agoFirst prong of becoming an expert in computer programming is "becoming an expert in computer programming"? How can I read this when there is a syntax error in the third paragraph?
- felipesabino 13y agoAccording to Peter Norvig, it takes time http://norvig.com/21-days.html http://norvig.com/21-days.html