10 ms·
I always see people gush over this book, but is it still worth reading for someone that already has a ton of experience programming?
by zeroCalories 2y ago
I always see people gush over this book, but is it still worth reading for someone that already has a ton of experience programming?
- lisper 2y agoYes. But instead of taking my word for it why don’t you just start reading it and decide for yourself?
- vsuperpower2020 2y agoDo you really need this explained? It's a 600 page technical book and people have a limited amount of time to sort through everything that exists.
- lopatin 2y agoAgree but you are replying to a user named "lisper".
- CoastalCoder 2y agoMaybe he struggles with a speech impediment, you insensitive clod! </Slashdot_nostalgia>
- exe34 2y ago> It's a 600 page technical book > why don’t you just start reading it and decide for yourself? A journey of a thousand miles....
- Turing_Machine 2y ago> It's a 600 page technical book You do understand that you don't have to read an entire book before forming an opinion, right? > sort through everything that exists "Book that has been considered a classic for forty years and was used as the intro text at MIT for decades" is a long, long way from "everything that exists".
- vsuperpower2020 2y agoWeasel words. Considered a classic by who? And why would being an "intro text at MIT" mean it's good for someone who is already experienced? If anything, that should show it's not worth his time.
- Turing_Machine 2y ago> Considered a classic by who? By just about everyone who's ever compiled a list of the greatest CS books of all time? Here you go: https://duckduckgo.com/?q=classic+computer+science+books&t=brave&ia=web https://duckduckgo.com/?q=classic+computer+science+books&t=b... Count how many of those have SICP on their list (hint: most of them, excluding the ones that aren't actually lists of CS books -- e.g. the ones that have Jobs and Gates biographies, etc.) I didn't just make that up, dude. And this isn't Wikipedia, either.
- zeroCalories 2y agoI did begin reading it a few years ago, and it seemed like a lisp flavored intro CS book. Why do I want to read an intro CS book? I've read those before. Yet people promise me that this one is different, while giving me nothing but condescending promises of enlightenment.
- ozim 2y agoMaybe not for you, but there is bunch of expert beginners out there that would benefit from reading up intro CS stuff.
- BoiledCabbage 2y agoI guess the honest question is "what are you looking for in a response to your question?" You asked if you should read it, and almost everyone who bothered to reply has said yes. Each time this topic comes up and people ask if they should read it the majority of responses are 'yes'. And I presume if you've been around software for that long, you've seen all of those threads and previous questions and answers like I have - meaning you likely knew what people would say when they responded. So, in the end, it's up to you to decide if you'll read it or not. I don't know you personally, but from my life experience it sounds to me like something I've seen in other circumstances. You've more or less decided that you're not going to read it, but feel like you're missing out and you want someone who as read it to say "it's ok to not read it". So you can resolve both the feelings of the decision to not read it, and the uncomfortableness of feeling like you're missing out. It's possible I'm way off the mark on the above, but I mean it to be helpful - as I can say I've seen what looks to be this same pattern many times in life. or what you're likely looking for: In the end, there are only so many hours in the day. You gave it a fair shot and it wasn't your vibe. It doesn't say anything about your strength as an engineer, it just has a specific approach and it's not a match for everyone. That doesn't make it a bad thing, it just means you'd rather spend your time learning and exploring in other ways. And it probably would've had more impact earlier in your career than at the level of experience you have now. But of course before wrapping up I do need to undo my comment: I think you should give it another go. Maybe skim past the early part if it feels a bit to introductory and come back to it later. But it's a book that continues to grows on you the more time it's been since you read it. The concepts it presents are subtle but impactful in changing how you think about software. You don't fully grasp it when you read it. It's just that afterwards you just start seeing things through its lens often. I haven't read any other book like it.
- BodyCulture 2y agoDo not waste your time and energy relying on the opinion of others. Always check yourself.
- hackernoteng 2y agothis book is at the top of the list of near every list of best programming books of all time. its worth reading. is it an easy read? no. its sort of like the Illiad. Not an easy read. But worth it for anyone who wants to be considered well read.
- PheonixPharts 2y agoHave you never been to a book store? You don't have to read every word of a book to understand if it's interesting to you. I purchased a bunch of technical books the other day that I had never heard of based on opening them up, reading a bit of the intro and flipping through the examples. Relatively few of my favorite books have come through recommendations compared to those that I have come across through serendipitous discovery. For anyone who has no time to browse books, then most of the best books in existence would be of little interest to that person.
- bowsamic 2y agoNo
- theshaper 2y agoBecause...
- Maxatar 2y agoExperience in software development isn't linear so depending on which path your experience has taken it could be very insightful and useful, or it could be stuff you already know. I'd say for the vast majority of developers, experienced or otherwise, it's a good read.
- CuriousSkeptic 2y agoHaven't actually done the book. Can vouch for the lectures[1] though. Very much worth it to get a different perspective on various language structures I had just taken for granted. Watching 2-3 of these will probably answer your question. [1] https://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/ https://groups.csail.mit.edu/mac/classes/6.001/abelson-sussm...
- kikimora 2y agoYes, I bet it will give you new perspective on a number of things.
- omnicognate 2y agoWhether it's worth reading isn't a question others can answer for you, but "a ton of experience programming" definitely doesn't imply it isn't worth reading as it's perfectly possible to get through an entire programming career without encountering the ideas and ways of thinking that you'll find in it.
- sakras 2y agoI started reading it around a year ago with the personal goal of doing every exercise. I'm not done yet (almost done with chapter 4). It has definitely taken a lot of my time, but it really has changed my thinking about a lot of language constructs I find in other languages. For instance, the part about tagging objects with their type reshaped my thinking about static type systems in general. Static typing, for example in C, is essentially just moving the location of the type tag from existing at runtime within the struct, to the "analysis" phase of the compiler. It's a pretty simple idea, but it made the "degree of dynamism" tradeoff click in my head. All the information _has_ to exist somewhere, and the only question is where. And Scheme is just at an extreme where the _everything_ is stored dynamically.
- dataflow 2y ago> Static typing, for example in C, is essentially just moving the location of the type tag from existing at runtime within the struct, to the "analysis" phase of the compiler. See also "shift left" > All the information _has_ to exist somewhere, and the only question is where. Not entirely sure what you mean about this, but not all type information has to exist somewhere. Sometimes things get encoded into a type that might never be represented otherwise -- like whether an integer is a width or a height, or whether a string is a name or an address.
- dehrmann 2y agoThat just means it exists in your head.
- dataflow 2y agoNot really. Whether an integer represents a width or a height won't even exist in your head if you're implementing a function like max(a, b).
- chii 2y ago> exist in your head if you're implementing a function like max(a, b) surely, you have an idea of what you're using that function for, while you're writing it. The compiler is doing a check to see if the function makes some minimal logical sense (ala, a typecheck), but it cannot read your mind. But this implies the types are actually an actualization of the thoughts in your head, in a formal manner.
- PheonixPharts 2y ago"Don't cast your pearls before swine". When I was younger I used to passionately defend those things I've seen as beautiful, but after years experience talking with people passionate about their fields and learning and those who never will be: If you lack the innate curiosity to explore those things others have declared marvelous, then this book will offer you no value. Every time I crack this book open I get excited and I've read it multiple time and one most of the exercises. I can think of few other books that really expose the beauty and simultaneously strong engineering foundations of software. You have "tons of experience programming" and sound like you've already decided you know what needs to be known (otherwise why even ask rather than just read it free online), I doubt this will offer you anything you haven't already seen before.
- daggerdrone 2y ago| I can think of few other books I’m interested to know which books …
- shagie 2y ago> If you lack the innate curiosity to explore those things others have declared marvelous, then this book will offer you no value. > Every time I crack this book open I get excited and I've read it multiple time and one most of the exercises. I can think of few other books that really expose the beauty and simultaneously strong engineering foundations of software. --- https://www.stilldrinking.org/programming-sucks https://www.stilldrinking.org/programming-sucks ( https://news.ycombinator.com/item?id=7667825 https://news.ycombinator.com/item?id=7667825 and others) > Every programmer occasionally, when nobody’s home, turns off the lights, pours a glass of scotch, puts on some light German electronica, and opens up a file on their computer. It’s a different file for every programmer. Sometimes they wrote it, sometimes they found it and knew they had to save it. They read over the lines, and weep at their beauty, then the tears turn bitter as they remember the rest of the files and the inevitable collapse of all that is good and true in the world. I recommend (not ironically) Double Binded Sax by the group named Software.
- ramenbytes 2y ago
- dswilkerson 2y agoNo. If you want a deeper understanding of programming, write your own static analysis / theorem prover.
- egl2021 2y agoDepends on what you learned during that "ton of experience programming." My only regret was that I had, but stupidly ignored, the MIT course notes that preceded publication of SICP. I didn't realize what I had missed until many years later when I sat down to work my way through SICP. I coulda been a contender.
- barrell 2y agoOnly if you’re comfortable being converted to lisp
- bazoom42 2y agoDepends on the kinds of experience. If you have experience writing compilers and interpreters - probably not a lot. If your experience is in application development you might learn a lot. I worked through it after years of practical experience as a self-thought programmer, and I learnt a lot (and found it quite challenging, especially the mathy parts).
- zelphirkalt 2y agoThat depends entirely on what kind of a ton of experience you have. If you have written Java/PHP/Python/JS for 20 years, SICP might teach you lots of new tricks. If you have worked a lot with functional languages, probably fewer, but still probably some in later parts of the book.
- llm_trw 2y agoI'd worked exclusively with functional languages and assignment operators implemented as lambdas blew my mind more so than all the monads in Haskell.
- ryukafalz 2y agoI'm still working through chapter 1 and, despite having some previous Scheme experience, let being syntactic sugar for lambdas just blew my mind the other day.
- runlaszlorun 2y agoI’d personally say especially so. I’m guessing those taking it as freshman are missing out on 75% of the good stuff. It’s free online. And YouTube has lectures from the authors- presented in all their early 80’s glory.
- constantcrying 2y agoIt definitely is a "classic" book for a good reason. I think it really depends on your actual formal education, how valuable this book will be to you. If you have a CS degree basically everything in there should have been covered during your studies, you already know how to operate on trees, recursive algorithms and how to build an interpreter. The main value to you would have been seeing it all come together in one place. If you don't have that kind of education I believe it is extremely valuable to see programming from a theoretical perspective. The book is very good at laying out a cohesive narrative of how you go from very basic structures to complex programs and how these programs can be executed by a computer. The highlight definitely is the implementation of lisp in lisp. There were also chapters, mostly towards the end, which I think aged quite poorly and seemed mostly irrelevant. I don't think there is much lost by skipping them.
- ookdatnog 2y agoI think it is, and if you don't want to take my word for it, John Carmack thinks the same :) There's an old video [0] where he talks in-depth about his explorations of functional programming. It's perhaps a bit more about Haskell than about SICP, but in it he's also quite enthusiastic about what a veteran programmer can still learn from this book. [0] https://youtu.be/1PhArSujR_A?si=OD8pGYsoGC7RXPVG&t=125 https://youtu.be/1PhArSujR_A?si=OD8pGYsoGC7RXPVG&t=125
- deleted 2y ago[deleted]
- ricksunny 2y agoDid he study it before or after Doom?
- mpalmer 2y agoThis question is answered immediately in the linked video.
- replygirl 2y agothis takes a lot longer to type than before or after
- vitus 2y ago11 minutes in, he mentions SICP as a book that he ended up working through exercises "in the past year" (so 2012 timeframe, well after the original Doom but before the reboot).
- ricksunny 2y agoThank you! :) Provides helpful context vis-a-vis evaluating possible critical-path enabling / contributing factors to achieving a key milestone.
- 2y ago
- QuesnayJr 2y agoI would say yes. I read it when I was already an experienced programmer and I still found it worth it. Scheme is one extreme in terms of styles of programming languages, and it allows the authors to present a certain way of thinking about programming that was still new to me that is natural in Scheme.
- deleted 2y ago[deleted]
- hackernoteng 2y agowell worth reading even for veteran senior engineers. worth re-reading every few years too.
- jnordwick 2y agoThat book was my first programming class and programming ever: CS61A at Berkeley. When I started taking it, one of the TAs said that the ideas in the class were wasted on us - they seemed simple but we wouldn't grasp the fullness of the ideas until we had more experience. He said the class should be required to take twice: your first and last class. It gives you basics of things like recursion and message passing that are easy to use immediately (well, once you figure them out -- it took me two weeks to be able to write even the simplest recursive function), but there are large conceptual things you won't really see the depth in until you have more experience. The last project is the meta-circular evaluator - writing a scheme program to interpret scheme programs. It is difficult to understand that without having a lot of other background. Even then along the way learning things like exceptions as implemented through call/cc might be a little too much for a beginner programming. The book is in some ways talks about concepts way outside of a beginner's comfort zone.
- aardvark179 2y agoI used it as a teaching aid to help colleagues from our application teams get the background and skills to work on our core platform. I certainly got a lot out of it because I had to do all the exercises, and I think if i hadn’t had to prepare like that I would have skimmed more and gained less. But I already had a background that covered a lot of the same areas. So it is going to depend a lot on your background and the effort you put in. It may be better done as part of a reading group where you can discuss the exercises than on your own as some are meant to highlight why certain approaches are hard and are not commonly used.
- BeetleB 2y agoReading that book made me good at recursive programming :-)
- hulkmusic 2y agoWhich made me good at recursive programming, which made me good at recursive programming.
- Nekorosu 2y agoI'd say it is less about your experience with programming and more about your interest in it. SICP has quite a profound style that's in between academic and poetic. For me, it was both fundamentally informative and inspirational. So, if you feel like structuring your computer science foundation and like an imaginative approach to programming and math that favors aesthetics, give it a try.
- gen220 2y agoI’d say read the first chapter. If it doesn’t excite you at this point in your career it might not be for you and that’s ok. I’d say it’s actually more valuable to people with programming experience. It gave me a greater appreciation for solving complicated problems in elegant ways. And perhaps ambition to solve other more practical but still complex problems in similarly elegant ways.