24 ms·
Alan Kay's answer to ‘what are some forgotten books programmers should read?’
- ericmcer 7y agoDoes anyone else get scared that too much breadth will stifle them? CS is a massive field these days and you could easily sink all your time into a small area without fully mastering it. I have had coworkers before and who could speak at length about different Linux distros, networking, web dev, dbs etc. but then were not great at the meat and potatos of the job.
- ohaideredevs 7y agoIt's a legitimate concern. I spent 4 months of evenings and weekends(could have been one or two to be honest) to prep for the Google Cloud Architect exam. I have used NONE of this knowledge (past what I already knew - load balancing and spinning up VMs/containers...I think I used Dataprep instead of a Excel once too for shits and giggles). I am looking to spend another 4 months learning ML, which I likely won't apply in any way. That's a year down the drain with ONE cloud provider and ONE way of doing ML. It's easy to completely waste your life like this WITHOUT getting better at your job. Carry-over is far more limited than people make it out to be, unless you REALLY know a lot, but those people are rare.
- Ascetik 7y ago100% agree. Being 35 and having worked in IT for 15 years now and seeing the rapid acceleration into DevOps/Cloud/nix/Programming/Stacks I fear for my future. I want to learn a ton of stuff, but the vast amount of stuff needed to learn in order for me to move up in my salary bracket is stifling. AWS/Azure/+ the former I mentioned, then Python, YAML, Cloud networking. I'm good at some stuff, but the industry is just moving so ultra fast now it's hard to keep up. I've been contemplating getting out of IT altogether because I'm not fully confident in career growth at this point unless I murder myself with study and ignore my family. I've been a MS SysAdmin for 15 years, moving into nix devops (the new way of sysadminning) isn't easy.
- amboo7 7y agoYou seem to need to study programming before being able to do real DevOps. nix is kinda advanced in this sense even if it is has a small language. In my experience, very few ops are able coders.
- dillonmckay 7y agoI agree with this. Interestingly, earlier in my career, most of the developers I worked with were also capable at system administration, and could easily fill that role if needed. The sysadmins during that time were quite capable, but had no desire, or an admitted lack of ability for a development role. It is an interesting phenomena to observe.
- ndarwincorn 7y agoGiven their background I think they meant nix as Linux/Unix and not Nix the programming language/package manager. Despite its clear fit with the current hotness of immutable systems and functional programming, I don't think I've seen anyone in for-profit industry on a Nix/NixOps stack.
- Ascetik 7y agoYeah I meant Linux/Unix. The asterisk turned everything italic so I just left it out.
- ohaideredevs 7y ago"unless I murder myself with study and ignore my family" I think this is completely true as well. To move past senior developer, you fall into one of these camps: 1. Very bright. 2. Spent a LOT of time studying or messing around with the right tech on your own. 3. Sell your soul, i.e. ignore (or not have) family/kids. A lot of people from camp #1/2 don't understand that for most, #3 is the only option (in the short term). There is also the very real tradeoff of not going with #3 and risking declining job prospects/salary. I think this is doubly painful for devs, because they are generally used to quick career progression / salary bumps, and then it stalls hard at senior dev.
- krastanov 7y agoI would suggest attempting to learn the general principles behind the one way to do ML/cloud/whatever you have studied. That type of breadth of knowledge is the useful one. It lets you gain further knowledge much more efficiently. As I mentioned above, to great extent breadth of knowledge is about learning how to be an efficient learner.
- heavenlyblue 7y agoI would say the most important knowledge is the one that allows you to ask the questions of "why is it still not done?" or stating "well, they did it, but it won't work well in situation X" and then either finding the products that do exactly that, or knowing that in a few years there will be an industry providing exactly that kind of service. Saying that you can't move between cloud providers because you need to learn something new probably implies you don't understand the fundamentals constraining the design of e.g. databases provided by cloud.
- Something1234 7y agoDefine the meat and potatoes of their job. They could just be branching into /r/iamverysmart territory and just parroting omgubuntu.
- zzzcpan 7y agoI have a feeling that in CS you need a decade of experience, a wide range of experience, before you can even get on the path of mastering something.
- neilv 7y agoReconcile that value of experience... with commonplace startup hiring age biases, and dotcom interview processes biased towards someone with CS101 fresh in mind and who perhaps just spent months practicing leetcode whiteboarding. :)
- deleted 7y ago[deleted]
- krastanov 7y agoI disagree with the premise itself. Breadth of knowledge is not obtained because you will use every single piece of it, rather because you will be able to make connections between disparate topics. When you have breadth of knowledge you know which reference to pick up for help with your new exciting problem. (I am assuming it is a given that breadth of knowledge does not imply only superficial knowledge). Lastly, having breadth of knowledge means you have learned how to learn efficiently. This is a significant force multiplayer.
- zwkrt 7y agoI would even go so far as to disagree with one of your sibling comments in saying that this reading list is important because it isn’t about “arcana”. Arcana is what usually gets you the last 10%* of the way to a working solution, even if your high level approach is beautiful and pure. An old-style hacker reads man pages, RFCs, specs, and programming books not to immediately know how to solve problems at hand, but to know what solutions are possible for future problems. It isn’t useful to know that the HTTP spec doesn’t specify a max header length or that the default setting on Apache is to only accept 8kb of headers, until it is suddenly extremely useful to know both things at once :) * some would say “the other 90%”
- acqq 7y ago> reads man pages Good luck with that, especially, but not only, with git man pages. I tend to avoid reading these “just to know” but only when I need something specific. They are mostly torture. They could have been more useful to read but they presently aren’t.
- dllthomas 7y agoI read through the bash man page in a reading group with some co-workers. Good times.
- alephnil 7y agoThe git man pages is famously inaccessible if you don't already know the concepts and jargon of git. The following auto generated satire is both hilarious and sad if you have read the actual git man pages: https://git-man-page-generator.lokaltog.net/ https://git-man-page-generator.lokaltog.net/
- xwdv 7y agoIt has been widely confirmed that going for a wide breadth only makes you good at architectural type jobs where you orchestrate multiple separate silos of knowledge coming together, without actually knowing the details too deeply but instead simply trusting that they will interface correctly. If you try to have a wide breadth and a deep knowledge simultaneously, you will pay a heavy price. You will not have much of a family, you will not have other hobbies, you will not know much beyond CS, you will not even have time to use the vast majority of your knowledge to its full depth. There simply isn’t enough time. You will likely die as you lived, at a keyboard with your head weighing down on keys spamming them infinitely in a code editor, or slumped in a chair or bed with a technical book resting on your chest. Very few people will notice your passing, and the world will be no different for whatever knowledge you gained. What we should strive for instead is “Just-in-time knowledge”, where the goal is to quickly become an expert on a topic you know nothing about right when you need to be. Many people first learn to do this when they get into debates on the internet, and then extend it into their professional careers.
- krastanov 7y agoI would agree that work-life or study-life balance is important, but your comment is way over the top. One can definitely "have it all, just not at the same time"^1. "All" it requires is spending time and tought on each piece and having a support group for when you feel you are too tired. 1: Admittedly, the lottery of birth can make that more difficult.
- ps101 7y ago> quickly become an expert on a topic you know nothing about right when you need to be This simply doesn't happen for anyone.
- nine_k 7y agoIt's usually the lack of breadth that hurts you. IT is a fast-moving field. Solving business problems takes understanding which good ways to do that are currently available, what limitations and dangers each approach brings, how would it interact with other things, etc. You still need deep knowledge, but the most efficient knowledge is that of key principles, general approaches and ideas. A specific technology does not matter much, and can be mastered quickly enough, if you already are acquainted with the principles behind it. E.g. learn about FRP, and you will see how React, Elm, and Excel all work along the same lines. What you end up with after some time is like a normal distribution: deeper knowledge around some area and various levels of acquaintance with a wide range of other things. There are still areas where you can polish the mastery of one narrow thing to utter perfection: making pizza or coffee, sports like running or weightlifting, etc. You can keep practicing them to counterweight the feeling from the view of the sheer and constantly moving IT landscape.
- Rerarom 7y agoWhat would be a good example of a slow-moving field?
- amelius 7y agoPhysics.
- kps 7y agoManagement. Kay's list includes The Mythical Man Month, which, except for the technical details, could have been written yesterday.
- pjmlp 7y agoI feel that if there is a millennia old book or tablet from early days of mankind regarding management, many advices would still apply.
- ghaff 7y agoIt is very waterfall-y as someone I know said in a talk and therefore you probably need to be a little careful what "rules" you take away from it. That said, the "mythical man month" discussion itself as well as the idea of a 9x difference in effort between a program and a programming system product are worth the price of admission. The latter arguably runs somewhat counter to a lot of MVP, etc. approaches but recognizing the difference is still useful.
- emeraldd 7y agoHere's my approach. Do your best to aware of as many tools/techniques as possible, know where to look for information on the ones that look/become promising or useful, and build deep knowledge on the ones you wind up regularly using. It's very useful to have enough exposure to things to be able to tell generally what's going on and to know what you need to look up.
- bamboozled 7y agoHere is the interesting thing about reading books, I once thought reading books and remembering everything about the text is the goal; However over time I’ve learned there is value in having read the book, understanding the material and then you know where to reference the information should you need it in the future.
- nine_k 7y agoOften reading good books is less helpful than it could be because the books answer questions you don't yet have. Reading and practicing is key.
- jimbokun 7y agoThe books recommended by Kay here are very much about DEPTH, not BREADTH. The majority of programming books are just ephemera and arcana and details that will be irrelevant in a year, or next month when the new version of the framework comes out. Kay points to books, like the original Lisp Programming Manual, that will help you understand deep core concepts about computing itself, that will remain applicable no matter what framework or library you need to use tomorrow. Take an Alan Kay, a McCarthy, Norvig, Abelson, Sussman, Armstrong, Steele, etc. from their prime and drop them into a software company where they have zero familiarity with the programming languages or tools currently being used, and within days or weeks they will be the most productive developer at that company by far. They will come up with simple, elegant, high performance and correct solutions to problems none of the other developers would have even considered. Those are the kinds of thinkers you want to emulate, if you really want to write excellent software solving real problems in the shortest amount of time.
- neilv 7y agoIt doesn't even have to be "from their prime" (and I don't like to encourage that ageism concept, now that we have hiring managers fresh out of school). I'm comfortable asserting that, at any age, they will probably be high-value, having enough background to have insights and see connections that others cannot yet, now with a lot of general wisdom besides. See Danny Hillis's writeup on Feynman at Thinking Machines. You'd just need to offer them a compelling work situation, with problems that interest them.
- jimbokun 7y agoHeh, true, I just added "from their prime" because I know not all of them are still alive so would not add much to a development team in their current state.
- deleted 7y ago[deleted]
- yitianjian 7y agoYou never know, something like "The Hand of Alan Turing" might be a fairly decent draw for hiring
- enkiv2 7y agoDepth cannot be gained without breadth & vice versa. Knowledge isn't tree-shaped but web-shaped.
- ps101 7y agoBut the first 10-100 hours of learning and using a new language feel so good.
- ken 7y agoYes -- which is why you'd do better to read these books than 95% of the links on HN. These are books about how objects work and how EVAL is defined. These are the meat-and-potatoes of computer science. There's no "Linux distros, networking, web dev, dbs etc" here.
- Quarrelsome 7y agonot really, like if you're broad then it means you get muscle memory for "any old shit". Like I'll happily blunder into language or tech stack because the implementation patterns overlap so much after you've juggled a few things. > oh its one of these sort of things like xyz I did four years ago. Of course the specifics are different but the muscle memory can get you through. I'd say the worst bit about it is that you often feel impostor syndrome pretty bad because in many cases you're never 100% sure about stuff like you might be in a speciality.
- rohan1024 7y agoI believe any team needs a combination of both types i.e. people with breadth and others with depth. Some people are just good at seeing the top view and how all of it will fit in most optimal way possible. I am saying this because I can see abstract patterns from the top and what's wrong with entire project. But entire IT industry is looking for people with depth. So sometimes I wonder if there is need for people like me in IT but then again when I see a vast system I can immediately discern what could go wrong, possible bottlenecks or come up with better solution. This gives me little bit of hope.
- koonsolo 7y agoNothing beats T-shaped skills :) https://en.wikipedia.org/wiki/T-shaped_skills https://en.wikipedia.org/wiki/T-shaped_skills
- JustSomeNobody 7y agoToo much of anything is not good. I do tend to focus more on breadth, but I do go deeper on some subjects. However, I never give up breadth for the sake of going _Jon Skeet on C#_ level of depth. That, for me, is a waste of time[0]. I don't need to know a language or tool quite that deep. I can be very productive with a certain depth without touching bottom. [0] Note: I'm not saying Skeet is wasting his time.
- ghaff 7y agoThe other thing you need to be careful in with focusing solely on going deep on one topic is that that one topic can go by the wayside. I've known people who were, in one example, arguably the world expert in performance on a long ago computer architecture. There came a point where no one cared any longer and I'm not sure to what degree he successfully moved on to other pursuits. Another example is Y2K. A lot of consultants ended up defined as being Y2K guys and they didn't necessarily successfully transition to something new. Not arguing that going deep is necessarily wrong but, if you do, you need to keep your eye on emerging areas that could benefit from your existing skills.
- catwell 7y agoYou can focus on breadth or depth depending on what kind of programmer (generalist or specialist) you want to be. Matt Klein (of Envoy) had a good thread about that on Twitter [1]. He focuses on depth whereas I tend to focus on breadth. Of course I have areas and technologies I know better because I have worked in / with them (computer vision, filesystem / DB replication algorithms, Lua, etc) but I try to expand my areas of knowledge so I can understand whole systems rather than become an expert at a specific thing. For instance, right now, I'm doing mostly Web front-end stuff, which is the part of the Web stack I know the least. [1] https://twitter.com/mattklein123/status/1130206792175169536 https://twitter.com/mattklein123/status/1130206792175169536
- khazhou 7y agoMost people lack both breadth and depth. So don't worry about going too broad... you probably won't get there.
- NegatioN 7y agoComing from Alan Kay i definitely need to check these out. If I'd read this post a year ago I would have known almost none of the authors, but after reading "Hackers: the heroes of the computer revolution" earlier, these are all names that stood out right away. Both Minsky and McCarthy seem like almost mythical figures in the book, and I don't think I could ever hold aa candle to them, but the next best thing is probably to understand their thinking. I think it's a bit easy for us to get caught up in the medium blog posts detailing a small segment of a new framework, when what we really ought to do to grow, is go back to the basics and understand them in-depth.
- mikekchar 7y agoAnother great book by Minsky is Perceptrons. It's really short to boot, IIRC. It is an especially good book for those interested in ML. In it Minsky shows that single layer neural nets can not compute all problems. I remember that he has a caveat somewhere that he hasn't thought about multi-layer neural nets and they they may still be interesting. So great was the impact of this that hardly anyone worked on neural nets for something like a decade afterwards. But it's a brilliant book presented in a really simple style. It's a piece of history, I think.
- DonHopkins 7y agoAlso Marvin Minsky's hilarious paper: Jokes and their Relation to the Cognitive Unconscious. More fun than a barrel of an infinite number of monkeys. https://web.media.mit.edu/~minsky/papers/jokes.cognitive.txt https://web.media.mit.edu/~minsky/papers/jokes.cognitive.txt Abstract: Freud's theory of jokes explains how they overcome the mental "censors" that make it hard for us to think "forbidden" thoughts. But his theory did not work so well for humorous nonsense as for other comical subjects. In this essay I argue that the different forms of humor can be seen as much more similar, once we recognize the importance of knowledge about knowledge and, particularly, aspects of thinking concerned with recognizing and suppressing bugs -- ineffective or destructive thought processes. When seen in this light, much humor that at first seems pointless, or mysterious, becomes more understandable. A gentleman entered a pastry-cook's shop and ordered a cake; but he soon brought it back and asked for a glass of liqueur instead. He drank it and began to leave without having paid. The proprietor detained him. "You've not paid for the liqueur." "But I gave you the cake in exchange for it." "You didn't pay for that either." "But I hadn't eaten it". --- from Freud (1905). "Yields truth when appended to its own quotation" yields truth when appended to its own quotation. --W. V. Quine A man at the dinner table dipped his hands in the mayonnaise and then ran them through his hair. When his neighbor looked astonished, the man apologized: "I'm so sorry. I thought it was spinach." [Note 11] Spinach. A reader mentioned that she heard this joke about brocolli, not mayonnaise. This is funnier, because it transfers a plausible mistake into an implausible context. In Freud's version the mistake is already too silly: one could mistake spinach for broccoli, but not for mayonnaise. I suspect that Freud transposed the wrong absurdity when he determined to tell it himself later on. Indeed, he (p.139) seems particularly annoyed at this joke -- and well he might be if, indeed, he himself damaged it by spoiling the elegance of the frame-shift. I would not mention this were it not for the established tradition of advancing psychiatry by analyzing Freud's own writings.
- deleted 7y ago[deleted]
- AlexeyBrin 7y agoA PDF version of the first recommended book Lisp 1.5 Programmer's Manual: http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf http://www.softwarepreservation.org/projects/LISP/book/LISP%...
- criddell 7y agoThanks for posting this link. I'd never heard of softwarepreservation.org before and now I can see I'm not going to get a lot done today.
- jimbokun 7y agoOf course you will get a lot done, just none of what you intended to do! :)
- efreak 7y agoThere's also a bunch of stuff at oldlinux.org though (obviously) all Linux-related. "A Heavily Commented Linux Kernel Source Code" is also available in English now (scroll down to the top of the change log).
- lepasana 7y agoThanks for sharing! Now I've something to read in the evenings
- numbsafari 7y agoI love that Joe Armstrong's PhD thesis is on this list. I have it on my reading list for junior engineers. It's incredibly accessible and the mental model is very powerful.
- criddell 7y agohttp://erlang.org/download/armstrong_thesis_2003.pdf http://erlang.org/download/armstrong_thesis_2003.pdf
- privong 7y agoHere's a link for those who are interested in reading it: https://web.archive.org/web/20041204143417/http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf https://web.archive.org/web/20041204143417/http://www.sics.s... This was archived from http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf http://www.sics.se/~joe/thesis/armstrong_thesis_2003.pdf which now returns a 404 Error.
- saberience 7y agoYeah, how accessible is a 295 page PhD thesis where half of it is Erlang specific for junior engineers? Unless you want them to quit their jobs, or complain to their friends what a crap manager they have.
- numbsafari 7y agoRelax. Nobody said it was a mandatory reading list. There are no tests. It's a suggested reading list that I pull from depending on context. Joe's thesis is incredibly accessible. At least two of my items were on Alan Kay's list. The other being "The Mythical Man Month", especially the edition with the "No Silver Bullet" article, which a depressing number of people in our industry seem to not have read. So I don't feel like I'm too far off the mark.
- tseabra 7y agoWould you mind sharing that list? :)
- nabla9 7y agoI have read "Lisp 1.5 Programmers Manual”, “The Mythical Man-Month” and “The Meta-Object Protocol” by Kiczales. These all are definitely timeless classics. These quotes about Gregor Kiczales and AspectJ https://en.wikipedia.org/wiki/AspectJ https://en.wikipedia.org/wiki/AspectJ are good intro to MOP: "In Lisp, if you want to do aspect-oriented programming, you just do a bunch of macros and you're there. In Java, you have to get Gregor Kiczales to go out and start a new company, taking months and years and try to get that to work. Lisp still has the advantage there, it's just a question of people wanting that." -- Peter Norvig "I am reminded of Gregor Kiczales at ILC 2003 displaying some AspectJ to a silent crowd, pausing, then plaintively adding, "When I show that to Java programmers they stand up and cheer." -- Kenny Tilton
- jimbokun 7y agoAgreed, and I also think "annotation oriented programming" has become the bane of Java programmers everywhere. Seems simple when you first slap an annotation onto a class or method. But God help you when it stops working and you actually have to debug what it's doing. Figuring out what code is actually executing and what it's doing seems nigh impossible. (Which is all to say, Lisp is still far superior, because there is a straightforward process for figuring out what kind of code a macro will generate, or to run a macro and look at its output. Macros can become complex and convoluted, but that's still nothing to the mess that annotations in modern Java frameworks create.)
- therealdrag0 7y agoYou can debug an aspect too eh? Throw a breakpoint before a method call, step into it, "oh I'm in a proxy now" step step "oh I'm in this forgotten point cut I made 6 months ago, okay now I know." I have no exp with Lisp so not arguing just observing the one side of exp I have.
- jimbokun 7y agoBut you inadvertently reinforce the point I am trying to make. There is no way to reason about the code without actually running it. You can not read the code and understand what it's going to do.
- Allower 7y agoThe problem with this recommendation is the complete obliviousness Alan has to the difference between the context HE brought when reading these texts to the context NEW developers bring. NEW developers (e.g. learned how to program after ~2005) will find very little to take away from such papers sadly.
- DonHopkins 7y agoProbably not on Alan Kay's list, but Leo Brodie's Thinking Forth was mind blowing and game changing! http://thinking-forth.sourceforge.net/ http://thinking-forth.sourceforge.net/
- protomyth 7y agoHe did use a stack machine at one point - B5000 https://queue.acm.org/detail.cfm?id=1039523 https://queue.acm.org/detail.cfm?id=1039523
- emmanueloga_ 7y agoWhat is a good Forth implementation to follow along with this book?
- jonsen 7y agoTake the book as a specification, then make your own Forth implementation. Edit: Starting Forth also by Brodie would probably be a better “spec” for implementing a Forth.
- emmanueloga_ 7y agoCool, "Starting Forth" is available for free on forth.com! Makes me curious about SwiftForth [1]. I saw a bunch of other commercially available forth implementations in the past ([2] ?), but since Forth looks so niche I never got motivated enough to try Forth more seriously. 1: https://www.forth.com/swiftforth/ https://www.forth.com/swiftforth/ 2: https://8th-dev.com https://8th-dev.com
- EdwardCoffin 7y agoHis longer reading list: http://www.squeakland.org/resources/books/readingList.jsp http://www.squeakland.org/resources/books/readingList.jsp
- everybodyknows 7y agoNot a superset of OP -- only five titles under "Computing".
- mcaruso 7y ago> The way to grow from this book is to deeply learn what they did and how they did it, and then try to rewrite page 13 in a number of ways. How nicely can this be written in “a lisp” using recursion. How nicely can this be written without recursion? (In both cases, look ahead in the book to see that Lisp 1.5 had gotten to the idea of EXPRs and FEXPRs (functions which don’t eval their arguments before the call — thus they can be used to replace all the “special forms” — do a Lisp made from FEXPRs and get the rest by definition, etc.). Found it ironic that in a comment about Lisp, Kay forgot to balance his parens. :)
- kgwxd 7y agoHe knew someone would comment on it and use a smiley emoji.
- minsight 7y agoMeta II by Dewey Schorre http://www.ibm-1401.info/Meta-II-schorre.pdf http://www.ibm-1401.info/Meta-II-schorre.pdf
- carapace 7y ago> How could you combine this with Val Shorre’s “Meta II” programmatic parser to make a really extensible language? At VPRI (Kay's research institute) they did this: COLA. (See also STEPS.) http://www.vpri.org/ http://www.vpri.org/ https://en.wikipedia.org/wiki/COLA_(software_architecture) https://en.wikipedia.org/wiki/COLA_(software_architecture) http://www.vpri.org/pdf/tr2012001_steps.pdf http://www.vpri.org/pdf/tr2012001_steps.pdf "STEPS Toward the Reinvention ofProgramming, 2012 Final Report"
- namelosw 7y agoJoe Amstrong had a related talk 'A Guide for the Perplexed'[0] last year. He mentioned several 'forgotten great ideas' such as Linda Tuple Spaces, Flow-based programming, Xanadu and Unix pipes. [0] https://youtu.be/rmueBVrLKcY?t=1949 https://youtu.be/rmueBVrLKcY?t=1949
- decebalus1 7y agoHah.. My BSc thesis (>15 yrs ago) was around Linda Tuple Spaces... Good times.
- turk73 7y agoMythical Man Month Especially if you are in any kind of project management role. There is simply no excuse.
- carapace 7y agoTed Nelson "Dream Machines"
- aj7 7y agoFisher's thesis here: https://pdfs.semanticscholar.org/237f/33308e8e9dc794e56307649155e6aa7a5882.pdf https://pdfs.semanticscholar.org/237f/33308e8e9dc794e5630764...
- deepaksurti 7y agoThe Lisp 1.5 Programmer's Manual listed by Kay is available for download from the Computer Museum archives [1]. More Lisp fun [2]. [1] http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf http://www.softwarepreservation.org/projects/LISP/book/LISP%... [2] http://www.softwarepreservation.org/projects/LISP http://www.softwarepreservation.org/projects/LISP
- justinmeiners 7y agoComputation: Finite and Infinite is one of my favorite books. It's fascinating to see computation built up from the theory of neural networks. Marvin Minsky is just such a deep thinker and writer. For those who are interested I made the neural net system into a simulator: https://justinmeiners.github.io/neural-nets-sim/ https://justinmeiners.github.io/neural-nets-sim/
- steveeq1 7y agoArrggh, I don't think it's published anymore. And used ones are over $100 on amazon.
- justinmeiners 7y agoyeah its out of print. find it online or get it from a library
- yesenadam 7y agoDownload links here: http://gen.lib.rus.ec/search.php?req=Computation+Finite+and+Infinite http://gen.lib.rus.ec/search.php?req=Computation+Finite+and+...
- jonsen 7y agoI actually got it in my mail today. $30 plus shipping. Keep an eye on price fluctuations.
- wenham 7y agoThe Mythical Man-Month is a classic, not just for CS.
- steveeq1 7y agoSomewhat unrelated but here is Bret Victor's reading list for anyone that's interested: https://gist.github.com/nickloewen/10565777 https://gist.github.com/nickloewen/10565777 alan kay is a big fan of his. The depressing things about reading lists is that it's hard to go through all of them. Many of the books list (SICP) take a long time to wade through, read, and program the examples. They are not "light reading".
- HiroshiSan 7y agoSICP also requires a fair bit of Mathematical maturity which threw me off when I tried to go through it.
- munificent 7y agoOnly at the beginning. I found the first couple of chapters around algebra to be a turn off. But once I got past that, I found it a lot more engaging. (Not that there's anything wrong with those chapters. If someone happens to like them, great. It's your time. Read the book the way that works best for you.)
- dmix 7y agoThat’s not quite true, I remember going through SICP easily before I learned post-high school math (which included relearning some basic algebra) when I went on my own self guided CS course. The lectures on YouTube are particularly accessible to newbies too with basic math and programming knowledge.
- steveeq1 7y agoDid you do the problem sets? The book makes a lot of references to make theorems and number theory that the average laymen wouldn't understand.
- arthev 7y agoIt doesn't. There's a few math heavy exercises in the first chapter, and the math is generally explained as it goes along too. Except for the first chapter, it's pretty math-free.
- dmix 7y ago> It starts with a version of John’s first papers about Lisp, and develops the ideas in a few pages of examples to culminate on page 13 with Lisp eval and apply defined in itself. There are many other thought provoking ideas and examples throughout the rest of the book. Sounds like the MIT SICP course from the 1980s using scheme!
- steveeq1 7y agoNot a book, but I encourage people to read Douglas Engelbart's paper on Augmenting Human Intellect: http://dougengelbart.org/content/view/138 http://dougengelbart.org/content/view/138 Alan kay is a big of Engelbart and I'm surprised it wasn't listed in his answer. Also, for anyone that's interested, a windows clone of NLS is available here for windows: http://www.ndma.com/resources/ndm8543.htm http://www.ndma.com/resources/ndm8543.htm Minus the "journal", many of the multi-user capabilities, and the "compiler compiler" programming system of NLS. still, it's interesting to play with.
- neilwilson 7y agoNow I've been at this game several decades I've probably got just about enough experience to really get some value out of Lisp.
- nickdothutton 7y agoSoftware Creativity 1st Edition (1995) by Robert L. Glass.
- caiocaiocaio 7y agoWhy on Earth is Alan Kay on Quora?
- krapp 7y agoWhy on Earth is Alan Kay on Hacker News?
- goatlover 7y agoWhy on Earth not?
- caiocaiocaio 7y agoIt feels like a worse and more ridiculous version of Yahoo Answers. Half the answerers don't know what they're talking about and half are marketing departments.
- steveeq1 7y agoI think he's a fan of collective intelligence. Maybe he feels quora is a good implementation of this concept.
- pchristensen 7y agoHe is very accessible, concerned about preserving knowledge from a previous generation of computing, and not worried about his brand of self promotion. So he goes where interesting discussions are happening - he has been on HN a number of times (user https://news.ycombinator.com/user?id=alankay1 https://news.ycombinator.com/user?id=alankay1, AMA - https://news.ycombinator.com/item?id=11939851 https://news.ycombinator.com/item?id=11939851) I met him at a conference 10 years ago - I basically blew off the whole conference to sit at his feet in the lobby while he told stories and shared pearls. There were 3-4 of us, probably 30-40 years younger than him, and we were all nobodies, but he didn't care. One of my favorite experiences ever.
- steveeq1 7y ago
- doc_gunthrop 7y agoI've been meaning to read The Mythical Man-Month and found it's freely available online: https://archive.org/details/mythicalmanmonth00fred https://archive.org/details/mythicalmanmonth00fred
- teachrdan 7y agoThis is a great companion to "The Goal" and "The Phoenix Project," both of which use fictional narratives to illustrate best engineering practices in the context of saving a (fictional) business. https://www.amazon.com/Goal-Process-Ongoing-Improvement/dp/0884271951/ https://www.amazon.com/Goal-Process-Ongoing-Improvement/dp/0... https://www.amazon.com/Phoenix-Project-DevOps-Helping-Business/dp/1942788290 https://www.amazon.com/Phoenix-Project-DevOps-Helping-Busine...
- ozychhi 7y agoProbably controversial, but eelco dolstra's PhD thesis was eye opening for me.
- sedachv 7y agoAgreed. IMO the most significant work in system administration in the past 20 years. https://nixos.org/~eelco/pubs/phd-thesis.pdf https://nixos.org/~eelco/pubs/phd-thesis.pdf
- enriquto 7y agoIt is not exactly a "book", but I have found HAKMEM to be an invaluable source of knowledge.
- khazhou 7y agoThese reading lists are lovely and promise a Better You, but I'll propose the following challenge: * If you're at home, turn around and look at the bookshelf you've already accumulated. Did you really read all those books you so looked forward to when you first bought them? Or do you remember all the best bits from your favorite ones? Be honest now... the unbroken spine on your Godel Escher Bach suggests otherwise. Read what you have, before stressing on Kay's or others' lists! * If you're at work, have you read all the wiki/docs/etc created by your team and neighboring teams? Do you understand the full architecture and implementation of the system you work with every day? Go read that, level up and become the most knowledgeable person on your team.
- pvg 7y agothe unbroken spine on your Godel Escher Bach suggests otherwise. Read what you have, before stressing on Kay's or others' lists! Read what you like. You're describing someone who's clearly been 'stressing lists' so much they've got books they're not interested in and are never going to read. If you've made the mistake of accumulating a bunch of books as props, well, it happens - there's no need to compound this further by guilt-tripping yourself to read them before reading something you might actually want to read.
- khazhou 7y agoI'm describing the problem of already owning books you'd like (love!) to read, but don't make time for them. I'm also describing that most of us (I posit) already have a great collection of great books, which aren't fully tapped. Honestly, even re-reading your college textbooks will up your level significantly. You don't usually need to seek out the "best of the best" book, unless you're really going deep or want to learn a specific topic in a very particular way.
- pvg 7y agoIf you say so, fair enough. The image you've picked seems like a perfect encapsulation of a different problem. I want to help the person with the smooth-spined G.E.B whose third monitor is not quite at the right height. Go right ahead and slip it under there.
- postit 7y agoGrab programming pearls, read it cover-to-cover (and try the exercises please), collect all the references, read it all.
- kazinator 7y agoI wouldn't recommend the Lisp 1.5 manual, other than for historic reference in the context of learning about Lisp as it exists today. If that is too new, then, for pete's sake, at least study 1986 Lisp; no need to go back to 1962. Books from the mid to late 80's, like Wilensky's Common LISPCraft are decently useful. Just like I wouldn't tell someone to read the 1978 first edition of the Kernighan and Ritchie C book.
- robomartin 7y agoThreaded Interpretive Languages: Their Design and Implementation https://www.amazon.com/Threaded-Interpretive-Languages-Design-Implementation/dp/007038360X https://www.amazon.com/Threaded-Interpretive-Languages-Desig...
- sg0 7y agoMy adviser had suggested me a fantastic book for bedside reading - "Algorithmics: The Spirit of Computing" by David Harel (https://www.amazon.com/Algorithmics-Spirit-Computing-David-Harel/dp/0321117840 https://www.amazon.com/Algorithmics-Spirit-Computing-David-H...).
- emmanueloga_ 7y agoI discovered this book by looking for more information on state charts vs state machines. Harel writing also got me interested in Topology: "Topological features are a lot more fundamental than geometric ones, in that topology is a more basic branch of mathematics than geometry in terms of symmetries and mappings. One thing being inside another is more basic than it being smaller or larger than the other, or than one being a rectangle and the other a circle. Being connected to something is more basic than being green or yellow or being drawn with a thick line or with a thin line." [1] 1: http://lambda-the-ultimate.org/node/2342 http://lambda-the-ultimate.org/node/2342
- jshowa3 7y agoPeople don't read books anyways anymore. It's all audio books and videos now. However, people like to claim that what I said above is reading a book.
- Animats 7y agoAn old comment on McCarthy's LISP 1.5 manual: "This is the source of the opinion that LISP is hard."
- kthejoker2 7y agoMy own humble suggestions - although the books are hardly forgotten. But I think people focus a lot on technical / engineering books, and very little on design / user experience / human behavior, which arguably contribute much more to the overall impressions end users have of programmers' work. First, the greatest book of all time, The Autobiography of Benjamin Franklin - an amazingly introspective and insightful look into how to live an examined life and improve oneself. And then if you want to learn lower-case "design thinking", my top 10 books * Design for Everyday Things - duh. I re-read chunks of it all the time. * Tufte - hard to pick one, I might actually be iconoclastic and go with Visual Explanations which I think has more to offer programmers over pure data visualization. Again, just grab one every day, flip through 3-4 pages, rinse, repeat. * User Story Mapping - Extremely memorable book - it gives you a pretty clear field guide on prioritization, empathy, communication ... just a great book. * Badass by Kathy Sierra - I flip through this book again and again. It is gospel truth about what motivates humans. * The Field Guide to Human-Centered Design - IDEO's most practical book. (Close second: Designing Interactions.) * Universal Methods of Design - another deeply practical book, lots of good tips and examples. * Universal Principles of Design - Sister book to the Universal Methods. Again, straightforward, flip to any page and get an idea when you're brainstorming. * Thinking in Systems - I recommend you skim this book through, but come back to it a lot, it grows with you. * Inspired by Marty Cagan - again, love nuts and bolts process books. * Don't Make Me Think! - still a classic, still see these mistakes being made all the time in modern app dev.
- shmulkey18 7y ago> Design for Everyday Things Do you mean "The Design of Everyday Things" by Don Norman? If so, I agree that it is a great book.
- verisimilitudes 7y agoI can see the n-gate.com entry now: Alan Kay recommends some books. The Hacker News spend most of the thread recommending books they like, instead. Anyway, this is a nice list filled with works I've not read, so I'll make certain to give them some attention next time I'm at a book store and ask them to order some things, since they only carry magazines and other drivel in-store.
- deleted 7y ago[deleted]
- higherkinded 7y agoI'd also like to point out that the majority of software engineers nowadays lacks the mathematical background, so it's probably worth including theoretical books like Abstract Algebra by Dummit and Foote on the 'must read' list.
- dustfinger 7y agoAssembly Language Step-by-Step second edition Programming with DOS and Linux Copyright © 2000 by Jeff Duntemann Rev. ed. of: Assembly language, © 1992 ISBN 0-471-37523-3
- zanethomas 7y agoComputation: Finite And Infinite Machines was my first introduction to computing. It is the only book I still have.
- Ericson2314 7y agoGlad to see him mention Peter Landin (https://en.m.wikipedia.org/wiki/Peter_Landin https://en.m.wikipedia.org/wiki/Peter_Landin). As a user and developer of functional programming languages, https://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf https://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf is my favorite paper of all time.
- senorflor 7y agoFound a great set of slides about early practice vs theory disputes (and their resolution via the mathematical study of PLs, programs, and their semantics) that I found ~looking for pdfs of one of the books Kay mentions: Advances in Programming and Non-Numerical Computation~ I mean searching the internet: https://www.cs.ox.ac.uk/strachey100/slides/2-JS.pdf https://www.cs.ox.ac.uk/strachey100/slides/2-JS.pdf