13 ms·
The one difference I see is that CS Educated Programmers that went to good schools took a lot of math. I have met very few self-taught programmers that also ha
by pkaler 16y ago
The one difference I see is that CS Educated Programmers that went to good schools took a lot of math.
I have met very few self-taught programmers that also happen to be self-taught mathematicians. This limits the type of code you can write.
Linear algebra is required to deeply understand computer graphics.
Calculus is required anywhere you have signal processing. This means audio and video editing.
Physics is required for simulation software and video games.
Discrete and combinatorial math is required in systems software like databases.
You're just not going to hit these issues if what you do all day is glue Javascript and Ruby together.
- smanek 16y agoshrugs I don't have a degree and I'm fairly comfortable with all those topics (and quite a few more - including abstract algebra, real analysis, numerical methods, tiny bits and pieces of category theory, etc). I like to read journal articles, and when I stumble onto something I don't know, I go learn about it. Just in the last year or so, I've taught myself stochastic calculus (I was doing HFT and wanted to learn more about the greeks) and the basic typed lambda calculus (was into haskell and wanted to learn more type theory). These days I'm doing distributed systems, so I'm brushing up on the process calculi.
- bostonpete 16y agoThe fact that you have a degree and are comfortable with math doesn't refute any of what pkaler said. I assume pkaler (and probably many others) would claim that you're the exception to the rule.
- girasquid 16y agoTypo? Pretty sure GP said he didn't have a degree.
- natural219 16y agoHe never claimed to refute pkaler's argument, he just added his relevant viewpoint. I personally have taught myself plenty of math, although I agree that my college classes have provided a solid context for me to explore many math concepts.
- deleted 16y ago[deleted]
- deleted 16y ago[deleted]
- loboman 16y agoHe said "I don't have a degree"
- jksmith 16y agoThat last sentence as summary has been 100% true so far in my experience working with self-taught or minimally educated programmers.
- klochner 16y agoAnd related to combinatorial math - probability is usually a required course in CS, very helpful for tons of tech jobs (e.g., quant jobs). You can actually make a decent living as a programmer by just gluing js/ruby together, since that constitutes the bulk of most programming jobs. I guess the point is that formal eduction forces you to learn advanced math, whereas only the motivated self-taught programmers learn it.
- rdouble 16y agoThis is a point that seems obvious but I'm not sure it is actually true. I majored in math and took a number of computer science courses and have a hard time figuring out where to begin when it comes to signal processing and videogame code. In contrast, I know a number of guys who make video games and audio software and they are almost all college dropouts or have completely unrelated degrees. In fact, in my limited experience it seems like games and audio software are two parts of the software industry where not having a CS degrees is the norm.
- bhousel 16y agoI can somewhat agree with this. I used to do a lot of computer graphics work professionally. My degree was in electrical engineering, and it was the controls and robotics classes that taught me the necessary math background to work with computer graphics. Related rant: Many university educated computer scientists think that all the math that they learned was 'invented' specifically for computer science, when in fact it existed long before computers were around. I once got into a heated argument at a Siggraph party with a guy who actually claimed to be the 'inventor' of quaternions.
- Derbasti 16y agoThis is my experience, too. I'd even wager that most audio engineers who program learned something like, you know, Audio Engineering and just kind of slipped into programming along the way. This maybe makes them a worse programmer than a CS grad, but a heck of a lot better audio algorithm designer. Many algorithmical problems can be solved in code, but they require specific knowledge about the problem space, which CS grads lack. This is not to say that CS grads are bad at maths, it's just that audio engineers spent years learning about hearing, acoustics and audio analysis and audio algorithm design is more than just some linear algebra.
- wazoox 16y agoI'll make the obligatory mention of countless audio programs with linear volume control (Grrrrrrr). Probably NOT made by former sound engineers.
- rickdale 16y agoWith sites like khan academy the expectations for self taught programmers can be much higher now than before. If someone isn't a mathematician I think they can still do better than gluing Javascript and Ruby together.
- gte910h 16y agoThe physics, linear algebra and calculus portions of my degree were less than 9 months of study, and I went to a very good school for computer science. I think you're overvaluing those if you think someone cannot learn those topics if it's apropos to the thing they're doing. Signal processing is a considerably bigger chunk of schooling though. I don't disagree with your opinion, I prefer school credentialed programmers, however I don't think your line of reasoning works.
- tjr 16y agoI don't think he's claiming that someone can't learn those topics, but rather, that most self-taught programmers don't learn them, whereas those in university are more likely to end up in math classes.
- gaius 16y agoAny sort of maths, really. When my cow-orkers want to look for correlations in graphs they quite literally print them all, lay them out on a meeting room table and stare at them. I just run Spearman and Pearson coefficients on every possible combination, then I look. I look for regular patterns using Fourier. I optimize systems using Linear Programming. My self-taught colleagues are good at their jobs day-to-day but seriously, I am being driven up the wall by alerts and reports that trigger on some dumb threshold (e.g. loadavg 10) and not on some change in the behavior or response of the system...
- awj 16y agoAll that, and yet you refer to the people you work with as "cow-orkers". At least in that one narrow respect you could stand to be more clever, if not more polite.
- onan_barbarian 16y agoI'm not sure that I would brag about running statistical methods on data before I looked at a plot of the data; especially not multiple ones. Aside from the tree-murdering, your cow-orkers (nice reference) are doing the right thing, at least initially. You should always eyeball things before going to statistical tests.
- gaius 16y agoWe're talking 30-40 sheets of A4 at a time here...
- xiaoma 16y agoAll of the mathematics listed above is on the short list of what anybody following the Khan academy or the MIT open courseware would teach themselves. It's already been shared and organized into a curriculum, for free, by a number of different sources. In fact, I'd say the process of learning the software would be the bigger challenge for an independent learner. But even before the availability of those sorts of really convenient tools a lot of people have self-taught themselves past that level. In fact, I remember my abstract algebra prof telling us an anecdote to illustrate the importance of working through things on our own instead of waiting to see what was presented to us in our courses. He talked about a grad level course that he had been teaching for the past 10 years. Clearly, he knew the material inside and out, but the interesting thing is that he had never taken it himself as a student. How did he do it? He read a couple of books about the topic! It's a time-tested method. I'd say if people aren't learning the math it's because they underestimate its importance. Either that, or people like me (and maybe you) overestimate its importance.
- 9oliYQjP 16y agoI'm a university dropout, but the level of linear algebra, multivariable calculus, and discrete math that I did take before leaving school is so far above and beyond what Khan academy currently offers. With the exception of Calculus, Khan academy is up to about where my public high school curriculum left me. Its calculus offerings are impressive and definitely cover my first year calculus courses. I've never been able to make much use of OpenCourseware because it doesn't fit my learning style. Don't get me wrong, I'm not holding anything against Khan academy. But it's quite impressive that it will eventually cover all the material in university that I had to pay to learn. There is a huge collision that's about to happen: increasing costs for post-secondary education; a middle class that will no longer be able to afford said post-secondary education for their kids; and free, quality, ubiquitous educational content like Khan academy. I'm not quite sure how things will play out. But things like Khan academy could pop the educational industry bubble, at best forcing lost cost quality formal education, and at worst, resulting in ubiquitous access to informal education to those that put in the effort.
- neovive 16y ago
- DanielRibeiro 16y ago... and lots of Abstract Algebra (and some Category Theory if you go deep into Hyperelliptic curves) if you do Cryptography.
- jawngee 16y agoHuh? I'm self taught, the last math class I took was 9th grade Algebra. I wrote one of the first vector based, anti-aliased, alpha channeled UI frameworks for Windows 95 (16 bit!). I wrote a DSP processing engine for a telemedical application to monitor heart rate and blood pressure in 1997. I've written control software for elevators. I've written contract after effects plugins for post fx shops. I've written audio and midi sequencers. My video editing app, Shave, is the only other useful editor in the Mac App Store other than iMovie. I've never cracked a math book. Am I the exception that proves the rule? I'm not saying I could write Maya, but I think you are overvaluing your opinion a little.
- klochner 16y agoyou might want to revisit http://en.wikipedia.org/wiki/Exception_that_proves_the_rule http://en.wikipedia.org/wiki/Exception_that_proves_the_rule but yes, I think you are the exception
- Jupe 16y agoSimilar story here - I taught myself 68000 assembly by hex-dumping the opcodes out of the only compiler I could afford (i.e. free), and then taught myself calculus to find the tangents along a bezier-curve for my flagship product at the time (a 3D editor/converter, which eventually sold quite well) I've also had the severe displeasure of working with CS grads who couldn't figure out why a 54MB file wouldn't fit on a floppy disk, or asked "where is the .EXE" when working on a windows web site. I'd take a motivated "self-learner" over a paper-backed "scientist" any day.
- sliverstorm 16y agoThis article combined with your commend tangentially brings up an interesting point in my mind. What does it mean to be a computer scientist? Are you just a programmer with more background? When/where does deep math and CS knowledge really become important? I honestly think "programmer" and "computer scientist" are slowly being conflated, and the distinction is important to understanding this sort of issue. Is this Granny Smith vs. Fuji, or Fuji vs. Florida Navel?
- Silhouette 16y agoI think the maths-in-programming topic is a bit of a distraction. To be blunt, general programming doesn't need any university-level mathematics at all, assuming a decent pre-university maths education. On the other hand, specialist programming in mathematical fields typically needs specialist mathematics of at least masters level, which surely no CS undergrad course is going to cover because not even good maths undergrad courses do.
- antiterra 16y agoYou might argue that they don't fit your definition of "good schools," but plenty of schools let you skim by with only the lightest introduction into things like set theory, probability, Turing machines, and automata. The math requirements are also pretty shallow, usually only requiring you to take some level of calculus, but not requiring linear algebra or analysis. Theory courses that scratch the surface a bit deeper are often electives. Some schools force you on tracks, but others let you choose and you can basically glue javascript and ruby together for the rest of your degree. The tracks allow a similar siloing. If you take an applications track, it's likely you won't be learning fourier transforms that you'd get in the graphics and vision track. In either of those cases, you may not get the functional programming experience that you would get in the AI or theory tracks. Those two wouldn't require you to take the database courses you'd need for info science. There's only so much that classes can cover in the course of an undergraduate education. Teaching yourself advanced topics is likely essential in taking on a project of a different nature than what you learned in school.
- pippy 16y agoSadly in the real world 90% of IT jobs can be winged by googling snippets and reworking them. Even worse people judge what's on the outside. I worked with a web dev that didn't even know js and didn't have highschool degree, he got the job because he "looked nerdy". Think about how many times you've worked on a unique and perfect piece of code, only to realize someone's already made it. Usually with clever optimisations you never thought of. So it might be in a different language or framework, but porting it would have been easier than understanding the issue and reworking it. A good code monkey understands the problem, a good businessman doesn't bother and repackages other people's stuff at a price. I myself have a compsci degree and upvoted you, but the people in charge often don't get this.
- algoshift 16y agoI couldn't find a way to agree with this. The difference between mediocrity and brilliance --in ANY field-- lies in something that has nothing whatsoever to do with a formal education. I have met so many people with impressive pedigree's that are clueless to not need further proof. I have also met a good number of people with what I would call "interrupted educations" that focused so intensely on a particular field of study that they truly became masters within that field. In engineering or cs there's also what happens before university. In my particular case, I built my first computer way before I saw my first college textbook on the subject. And, by "build my first computer" I mean that I wired the CPU and ALU from discrete components (Who knows how a diode matrix can be used as an instruction decoder?), created my own machine language and coded instructions bit-by-bit into memory. After that came wire-wrapping 6502, 8080, 8085 and 68000 computers, again, before seeing my first college textbook. And so, it only stands to reason that the focus and drive once in college and out of college was very, very different from that of someone who never had any such experiences and came to college with a blank stare waiting to be taught something they knew nothing about.
- vorg 16y agoThere seem to be a fair number of programmers who are BOTH college/uni-educated AND learnt it all on their own. What I mean is one of their previous employers/clients (perhaps their first) have them on file as having some CS/SE credential, while others (including their current one) have them listed as self-educated. Perhaps they told one employer their major was computing, but their current client thinks their major was business. One way to recognize these frauds is whether they list their credentials online. They may write online that you don't need qualifications to be a good programmer, which is true, but they won't actually say they don't have any credentials because that's not what they've told their previous employers and they don't want to be exposed. When there's 2 people giving presentations, one lists their PhD from a certain university and the other only lists some IT groups they run, I know which one I'll pay more attention to.
- logic_magic 16y agoHmm.. This is depressing. I am thinking of learning to program, just to make interesting(perhaps sell-able) iOS/Android applications. Any good math books you can recommend, for people who are genuinely scared of complicated equations? And without losing my day job(graphics designer).
- reedF211 16y agoAs a current college student I can tell you that what you are saying is an exaggeration. A small subset of Linear Algebra is required for graphics . I took linear algebra in first year of college and forgot almost all of it by the time I took a second year graphics, needless to say I had no problem picking up the concepts in a weekend from scratch. The amount of LA required is a very very small subset compared to all the crap you do in a full blown LA course. Most students in the CS program hate math and CS theory courses. Subjects like Algorithm Analysis, Discrete Math, Automata Theory which often get cited as examples of stuff that self-taught programmers might not know are boring and annoying. Almost every student in the department dreads these courses but has to hold his/her nose and take them to fulfill the degree requirement and most people promptly forget these courses after passing the exam unless they have real interest in the topic and are taking fourth year electives in the subject. To be honest I don't think the self-taught programmers are missing anything. And congratulations for digging up a use case for Calculus in CS. I can site examples of CS fields where say Cognitive Psychology has huge influence. The fact still remains that it is completely irrelevant to most of CS unless you are interesting in that one obscure area (in which case more power to you).
- mattdeboard 16y agoYour reply comes across as extremely bitter. I could definitely understand being pissed about taking an American History or Anthropology prereq or something, but are you seriously saying that algorithms are "boring and annoying"? As a self-taught programmer who is just wrapping up pre-program requisites for the CS program at a decent school, I am drooling to get some formal instruction in algorithms and FSAs. And I'm sorry but I've even gleaned some good understanding of time complexity notation from my pre-calc/trig class. I just don't get this, I guess. I'm dying to get some formal education on the more scientific and heavier math subjects. These are things I wouldn't ever teach myself because I am so task-oriented when I program. Why "waste time" mastering the concepts of FSAs when I've got a web application to build? I hope you learn to appreciate the potential for greater understanding that these boring and annoying classes give you. You have made the choice to discard their value on your own faulty assumption that your limited understanding of the world is a complete understanding of the world. It makes me kind of sad that all the liberal arts majors in the world are happy as pigs in shit to be studying Proust and how to make coffee, while here you are shitting all over a high quality education in a hard science/engineering that will undoubtedly provide you a lucrative, comfortable career if you choose to pursue such a thing. I can assure you, as a 31-year-old man who was self taught until last fall, I have definitely missed those topics.