4 ms·
I'm not sure this has anything to do with "competency". When I was in high school, I implemented a kd-tree for a ray tracer using photon mapping. I knew that
by Xcelerate 14y ago
I'm not sure this has anything to do with "competency". When I was in high school, I implemented a kd-tree for a ray tracer using photon mapping. I knew that my n^2 algorithm was slow and that there was probably a better way, so I Googled and figured out how to write code for such a structure.
Since I'm not a programmer (I'm a chemical engineer), I don't instantly know all of the orders of various algorithms (which according to this article makes me "incompetent"). But you can bet that when it comes to implementing something, I'll research and figure out the most efficient algorithm available and use it.
I'm not sure being good at programming has much to do with having a whole bunch of CS knowledge; rather, it's being able to figure out what knowledge you need to know -- when you need to know it.
- krosaen 14y agoI agree with this - e.g not being able to bust out a dynamic programming implementation perfectly on a whiteboard doesn't make you a bad programmer - more important is to understand, "hey, looks like when I divide this problem up it has overlapping subproblems - let me research using memoization or dynamic programming". But that still assumes you have the right terms in your head to be able to do the research - and to me that's where some fundamental knowledge of algorithms and data structures comes in handy.
- cwp 14y agoTrue. But note that the matrix isn't a binary "good/bad". If you know the concepts that underly dynamic programming and can look it up when needed, great. If you have used it before and can bang out an implementation without looking it up, well, that's even better.
- pilgrim689 14y agoto be fair: It's both. You need knowledge and smarts. If you know everything but you don't know how to apply anything to new problems, you're screwed. If you're a genius but you know nothing about computers, you're effectively incompetent at that point, and it'll take you a while to learn everything you need to know to solve the problem.
- dotborg2 14y agoso programming is your hobby, have some fun while researching and solving some problem using some random solution found on the internet which might work or not professional coding is about something different
- Xcelerate 14y agoIt may be a "hobby" but I've been doing it for 12 years, made money off of it, and would argue that I probably know more (theoretical and practical) than your average bachelor's grad in CS. And I don't know where this "random info on the internet" came from. My knowledge comes from algorithm textbooks or papers from university websites. Why the vitriol?
- dotborg 14y agothere are few more levels of knowledge and experience to achieve in order to improve overall quality of your work and that's the point of this article, you can ALWAYS achieve your target in a better way
- jebblue 14y agoYou still seem to be advancing your original point that hobby programming or side projects is an inferior pursuit relative to professional programming. McAfee was a shareware project, eBay was written by Pierre in a matter of days. I've seen many projects that were of much higher quality than many professional enterprise and startup projects.
- YokoZar 14y agoIndeed, one does not need a CS degree to be a good programmer. This makes sense, cause somehow good CS degrees still seem to produce some people who can't program.
- AlisdairO 14y ago> I'm not sure being good at programming has much to do with having a whole bunch of CS knowledge; rather, it's being able to figure out what knowledge you need to know -- when you need to know it. What I often tend to find valuable is not so much knowing what I need to know (although that's good too), but knowing what's possible. For example, there's really little need for me to be able to rattle off the code for a splay tree off the top of my head, but knowing its characteristics (and those of other data structures) is very useful - it allows me to match potential solutions to problems. All I then need to do is read up a bit more on the specific solution I have in mind. I've found that this approach stops me reinventing the wheel too much, although it has also given me a slightly depressed view on many innovations within the computing world :-).