4 ms·
I'm afraid there's a shortage of good programmers, with proper education in computer science, understanding of how the OS and programs interact, knowing how to
by lafar6502 12y ago
I'm afraid there's a shortage of good programmers, with proper education in computer science, understanding of how the OS and programs interact, knowing how to use at least one programming language proficiently, fluent in algorithms and data structures - i mean people who know their tools and know what they're doing. Instead we've got lots of excited, half-educated but enthusiastic ctrl-c/ctrl-v specialists, doing whatever they think is right/necessary and not even realizing how broken their products are (or how much better they could be if their authors were a bit more knowledgeable)
- andybak 12y agoThere's a wide spectrum between copy+paste no-hopers and people with a PhD from MIT who know Knuth and SICP backwards. I would rather employ a self-taught developer with some experience and pragmatism born out of real-world experience than I would someone with impeccable academic credentials. Forgive me if I sound touchy but I'm self-taught, my knowledge of algorithms is extremely patchy - but I think I'm a competent developer in the domains to which I apply myself.
- lafar6502 12y agoI never mentioned academic degree, just expect a person to have the right level of education/knowledge. For example, i'd expect a candidate to be able to explain to me how a hashtable works or what a page fault means. Also, i'm shocked when a person doing 'database stuff' has only a vague idea about what SQL is One (very recent) example of what i'm talking about: There was a system that crashed once or twice a day, running on EC2 instance. I discovered that the program crashes because it runs out of memory, and also that the system runs without a swap file. Then a guy responsible for that setup explained to me that it's a bad sign when a program uses a swap, therefore they disabled it altogether. Curiously, aftere enabling the swap the problem disappeared.
- dalke 12y agoI think you mean only impeccable academic credentials. Self-taught developers do enter MIT graduate school, including after several years of working in industry. For that matter, Chumby hired Andrew "bunnie" Huang as a freshly minted MIT PhD in EE. Or perhaps you mean that the types of problems you work on, like the vast majority of problems in the world, don't require knowing Knuth and "PCIS", or a PhD education? I develop algorithms as part of my work. For example, given 20 molecules, find the largest substructure which is in at least 15 of them. I opened up v3 of Knuth's "The Art of Computer Programming" last week because it has several pages about a topic that I don't understand. It would take a lot longer to train you to the point where you could be effective at the task, than a Knuth-knowing MIT grad. Which is quite reasonable - I'm in a rather obscure corner of the programming world. Though it's one where Knuth plays a much larger role than SICP. Forgive me if I sound touchy ;) but I'm self-taught, followed by education, followed by experience, and feel exactly the same as you.
- MichaelCrawford 12y agoAmong my gripes is that not only does no one care that I've studied Knuth, it is uncommon for those who might hire me, to have even heard of Knuth. Consider that Mark Zuckerberg dropped out of Harvard to start facebook. Now he has the idea that he knows more about computer programming than I do, despite the fact that I had been in the industry for six years before he was even born. I'm working on an iOS version of Conway's Game of Life. The vast majority of hiring managers I demonstrate my app to, not only have never heard of Conway's Life, they don't have a clue about cellular automata - nor do they see the point of my app. I find that hard to understand, as Conway's Life is a widely studied artificial intelligence research tool.
- dalke 12y agoIt's like this for every single subject. Griping about the ignorance of others is awfully hard to distinguish from boasting about your superiority. For the vast majority of problems, knowing Knuth is about as useful as being able to quote Tacitus, compose a Petrarchan sonnet, describe the Krebs cycle, or recount the details of Australia's 1882 victory at The Oval. You would have had the same blank look if you demonstrated your microkernel operating system, LALR parser, or Needleman–Wunsch-based sequence alignment tool. Why should they care? If you can't explain to them why it's important, then perhaps it actually isn't important for the job. My previous comment objected to the idea that people should be rejected solely because they know esoteric knowledge. Your gripe seems to be that uncommon knowledge makes someone somehow special. You'll get no empathy from me.
- MichaelCrawford 12y agoDamn near the very best computer programmer I have ever met, never even applied to college, let alone attended one. He used to write storage drivers for HP-UX. Now he's doing embedded systems development for the Keck Telescope on Mauna Kea. I asked him once how he learned to do all that. He just said that when he was a kid, he liked to tinker with gadgets.
- eli_gottlieb 12y ago>I'm afraid there's a shortage of good programmers, with proper education in computer science, understanding of how the OS and programs interact, knowing how to use at least one programming language proficiently, fluent in algorithms and data structures Well, I never geeked out about algorithms and data structures irrespective of application domain, but hey, what are you looking for?
- lafar6502 12y agoWell, what did you geek about then? Programming is all about algorithms and data structures, irrespective of application domain.
- eli_gottlieb 12y ago>Well, what did you geek about then? Parsers, grammars, computability and complexity, source-tree optimizations, intermediate representations, intuitionistic logic, type theory, PL design, microkernels, macrokernels, message-passing, locking and semaphores, scheduling algorithms, the x86 kernel-level instruction set, interactive theorem proving, functional programming, game-type vector graphics and raster graphics. Now working on gaining a better understanding of Bayesian statistics and probability theory, machine learning, probabilistic programming, computational cognitive science, and the foundations of logic. You know: actual domains in which one can solve real problems, rather than the kind of "algorithms and data structures" that are used for quiz-interviews.
- lafar6502 12y agoImpressive, but you probably see it as well as everyone else that every problem domain on your list is connected with particular set of well-known algorighms. There are no 'algorithms in the wild' - they always solve some problem.. So, i don't see any clear difference between geeking about a hashtable vs geeking about some compilation step. The key word here is 'geeking' vs 'not being interested at all how that stuff works'.
- 12y ago
- MichaelCrawford 12y agoMy observation is that quite a lot of folks know all about computer science, they might well know how operating systems work, but are clueless as to what happens when they combine the two. Consider that with certain exceptions, QuickSort is widely regarded as the very best way to sort. What happens when you sort a memory buffer on a Mac OS X box? Well that depends on a whole lot of things. How big is the buffer? If it's really large, you will cause paging no matter what you do to avoid it. However there are all kinds of things you can do to keep that paging to a minimum. Not only does that make your code faster, it saves on electrical power and reduces the heat produced by the box. That kind of thing is the main focus of my work these days - how to make existing code work better on modern computers. Have a look through the source of, say, glibc, while keeping in mind what code and data memory caches do, paging, context switching with other programs and so on. I expect that glibc would work really well on a box with no cache at all, and enough memory that it never has to page, and with only one executable running at any one time. But that no longer applies. Unfortunately I've never even heard of a school where they teach that kind of stuff. Many of my colleagues regard me as delusional for asserting that one can save energy by refactoring one's source code, yet they don't seem to clue in to the fact that a computer needs to have a battery or a power cord.