Programming seems so easy compared to some other jobs. You can pick it up in a couple of weeks by reading a book. If you want to program something more complex, give it another two weeks and another book or online tutorial.
I can't help thinking about medicine instead. Admittedly I haven't tried, but it seems unlikely that the same thing would work for medicine (studying books for a couple of weeks). Even learning medicine in isolation (as is common for programmers) seems like madness.
I will now go looking for tutorials on removing an appendix on YouTube, but I kind of hope that I won't find much...
Right, it's so easy (too easy, even). That's why Internet Protocol suite was programmed in two weeks in the 1970s after Vint Cerf and his team thumbed through a graph theory textbook on the shelf. And on that note, it's also why the MRI reconstruction algorithms were developed by a couple college dropouts who got their certification in Java from the local community college. So, I need to run now and read my new book "Learning Programming Human Models of Cognition in 24 Hours", then I'm going to produce some cutting-edge research after I hack up some DNA analysis code in Ruby or something (all i need to do is read a few blogz on this, right?). Pfft. lol @ the losers who get computer science degrees.
Not everybody who does programming does it on the level of creating the next Internet Protocol Suite.
Most applications that are being developed are 100% standard fare (CRUD).
Also a lot of programmers seem to get by just fine without a CS degree. (I've got a maths degree and minored in CS, but still, sometimes I feel I wasted my time). In fact I don't think I have ever been asked by an employer to code something complicated. If I were doing a startup it might be a different matter.
Are you saying that you shouldn't bother to read the PickAxe book or the PragProg Rails guide unless you have a CS degree?
Also, most code is probably crap but works anyway. I suspect the same can't be said for appendix removals.
I was pointing out that your statement "programming seems so easy compared to some other jobs" is incorrect. Programming (really, the whole pipeline of formal modeling, followed by algorithm and system devlepment) can get immensely difficult, and attracts some of the brightest minds on some of the most difficult problems that can be conceived. I couldn't let that statement go unchallenged.
If you have said something like "developing CRUD web apps is so easy compared to some other jobs", I would have had nothing to say to you, because you're probably right.
Maybe if you had gone to work at IBM on Watson, or for a NASA research center on spaceflight communication networks, or work for something like Certicom producing the next public key cryptosystem over elliptic curves, you'd really be flexing your math muscle and programming. I can imaging there are a small subset of startups as well that would extremely value your math capabilities. So you feel your degree was wasted modulo the way your career panned out.
And a final note about code being crap: Many dental and medical tourists come back to the US with extremely poor workmanship on their knee replacements, fillings, or root canals, and have to have much of it re-done here. Also, due to the nature of medicine and software development, the comparison isn't really apples-to-apples. An oral surgeon might do 10 wisdom-tooth removals a week, granted everyone's mouth is different and there are a huge number of complications, but many software developers are working on something entirely novel on each project. In my experience, crap code is a function of changing requirements + iterated attempts at refactoring.
True, I guess I am just floored by the fact that if I would fancy to start working on the next IBM Watson, I would actually now where to start. Whereas if I fancied trying to develop a new vaccine or other medical cure, I would probably have to study for several years first.
I would like to point you to two interesting things. The first is the case of Ferdinand Waldo Demara[1] (with whom an uncle of mine served aboard HMCS Cayuga during the Korean War). The second is The Daily WTF[2], wherein the inability of actual trained, working professionals in the programming field to come to grips with the very most basic aspects of their daily tasks is exposed for the edification of the unwary.
The basics of medicine (particularly of routine surgery) are not particularly hard to grasp; the hard part is learning to control the scalpel, and that's really not very different from learning how to cut a frisket mask for airbrushing. Sure, there are hard parts, but how many GPs ever have to delve into the deepest arcana? That's what specialists are for.
Programming is easy if you're already inclined to think that way, or once you've had the "aha!" moment. Getting there isn't universal, even among those who have chosen to pursue programming as a career. Pick a platform, visit a forum or newsgroup, and look for the "kindly do the needful" messages from people who are paid to do things that should be as simple as putting two Lego blocks together.
Even learning medicine in isolation (as is common for programmers) seems like madness.
Maybe it is because both of my parents work in the medical profession, but that sounds perfectly sane to me. Most of diagnosing a medical condition is applying Bayes theorem to symptoms. Have symptoms x, y, z? It indicates condition a, or b. Run a few standard, well known tests that lead you to believe that is a instead of b. Follow standard treatment for a. Say a is gal stones, a few weeks of reading would make you close to an expert on gal stones, treatment, causes, how to diagnose etc. Now sure if a is brain cancer then it is a little more involved but there are corners of CS I would say the same thing about.
It's not the programming is easy, it's that it has a low barrier to entry. Things like law and medicine have really high (one could say artificial) barriers to entry.
High school biology wasn't very hard, and I imagine you could be minimally useful after little more than that. But to actually become a doctor is a very different matter. Just like being a Java jockey is very different from working on high-performance distributed systems.
Even assuming it is hard (I don't know, haven't looked into it), it wouldn't disprove the point. Sure there are hard problems in programming. But normal programmers will never be exposed to them. There are also hard problems in medicine, like curing HIV, but most physicians will never attempt them.
The reason you can(maybe) pick programming up so fast, is because you re-use pre-built systems. given the best pre-built systems, how complex medicine is really ? In india you see shortly trained staff doing doctor's work, doing psychiatrist's work, doing an optician's work, etc.
Given pre built systems, everything is simple. And since "software is eating the world", maybe everything can be simple.
I can't help thinking about medicine instead. Admittedly I haven't tried, but it seems unlikely that the same thing would work for medicine (studying books for a couple of weeks). Even learning medicine in isolation (as is common for programmers) seems like madness.
I will now go looking for tutorials on removing an appendix on YouTube, but I kind of hope that I won't find much...