9 ms·
Ask HN: Books you should have read when you start a career in SE / CS?
- jrs235 8y agoThe Principles of Product Development Flow: Second Generation Lean Product Development It changed my understanding and thinking about how best to work flow development. I highly highly recommend this book to coders to managers.
- chollida1 8y agoThree boks I'll recommend you read as soon as possible. 1) The Mythical Man month 3) The Pragmatic Programmer 3) Code Complete. The thing about these books, well atleast 1 and 3 is that when they were written they broke new ground. Or if that phrase bother you, they were the first mainstream publications that brought their core ideas to developers. Reading these books early in your career will help cement these best practices. Reading these books after you've been a practicing programmer means,IMHO, that the return you get from reading them goes way way down. You'll find that you've already learned all/most? of what they are trying to teach. You'll find yourself getting frustrated that they are preaching what you already know as common sense and first principles. Or put another way, I'm not sure there is much that someone who has programmed for 5-10 years can get out of those books that they haven't picked up somewhere else already or learned the hard way.
- InterestBazinga 8y agoI always started and stopped reading Code complete book. The most recent strategy that really worked for me was. I googled summary notes for that book to recognize the topics that I wanted to learn and ditched the ones that are redundant. This rejuvinated my interest and productivity for reading that book.
- manaskarekar 8y agoA quick reference for the important points in Pragmatic Programmer :https://blog.codinghorror.com/a-pragmatic-quick-reference/ https://blog.codinghorror.com/a-pragmatic-quick-reference/ Code Complete: http://codecourse.sourceforge.net/materials/Code-Complete-A-Detailed-Book-Review.html http://codecourse.sourceforge.net/materials/Code-Complete-A-...
- nur0n 8y agoThank you. The most value I get from these kinds of books is to become aware of important concepts so that I can actively work on improving them. In other words: what I seek from these books is the mental framework that experienced developers rely on, the rest is mostly noise.
- yingw787 8y agoI read through Code Complete 2 cover to cover my first year and I agree with parent it's more useful early on than later. There's a lot of discussion around best practices; I think there's an entire chapter on strategic whitespace. All the stuff in there makes sense, but it cements why it's important. Definitely check out "The Pragmatic Programmer"! There's definitely some good nuggets in there that helped me. Distinguishing full-blown prototypes vs. prototypical kernels that can be productionized, a.k.a. tracer bullet prototyping, is one.
- acconrad 8y agoThis x1000. I'm only just getting to reading these now 10 years into my career and I find them to be a bit useless for me since I've already picked up bits and pieces of each throughout my past jobs/companies. Would have been much better off earlier on if I had just read these beforehand.
- clumsysmurf 8y agoI kinda wonder, after all these years, if there would ever be a new edition of the Pragmatic Programmer; or even a discussion from the authors on how their thinking has evolved over time.
- nacho2sweet 8y agoCode Complete 2. I bought it... never read it.
- modbait 8y ago1. The Mythical Man Month. Quite old, but still a classic. 2. Dilbert. This comic series is an excellent introduction into how corporations actually work. 3. The Systems Bible. Somewhat obscure. Fascinating ideas on how large systems, both technical and organizational, actually work.
- tabtab 8y agoDilbert! Amen. Humans are not Vulcans.
- kosma 8y agoThe Art of Unix Programming. It teaches the "why"s, not just the "how"s.
- cbanek 8y ago1. Mythical Man Month - obvious reasons 2. Deathmarch: The Complete Software Developer's Guide to Surviving 'Mission Impossible' Projects- also a classic. 3. Thinking fast and slow - a great introduction to biases that will affect your thinking in any project. 4. The Art of War - strategy and tactics for attacking any problem. My personal favorite translation is by Thomas Cleary.
- godelmachine 8y agoIt's next to impossible to find a soft copy of "Deathmarch", except for in Russian. I tried but I haven't found yet.
- mcphage 8y agoDo you mean this one? https://www.amazon.com/dp/013143635X https://www.amazon.com/dp/013143635X ? Or do you mean a different book?
- godelmachine 8y agoYes, the link is about a hard copy, not a soft one.
- mcphage 8y agoIs hard copy vs soft copy different than hard cover vs soft cover?
- AnimalMuppet 8y agoYes. Hard copy is printed (hard or soft cover); soft copy is electronic.
- mcphage 8y agoHuh, I’ve never heard “soft copy” used for that before—I’ve always used electronic copy or digital copy. TIL.
- sl956 8y ago1) The Art of Computer Programming 2) The Art of Computer Programming 3) The Art of Computer Programming 4A) The Art of Computer Programming
- akshat_h 8y agoHas anyone really read these books from page to page? Also, are they really relevant when you are starting your career? These seem more into the category of making you competent in the field of algorithms research, rather than something a person starting a career should read.
- commandlinefan 8y ago> Has anyone really read these books from page to page? I recently finished reading the first three, and have started on the fourth (with a detour to read "fascicle 1.1 on MMIX"). I started the series planning to work every single problem. That turned out to be just a little unrealistically ambitious - I settled for _attempting_ every single problem except for the "unsolved research problems" (in some cases, just figuring out what the problem was asking for left me with a sense of accomplishment). Even so, I ended up spending a year on each volume, reading/working problems for a half hour a day or so. On the one hand, I loved these books, and really enjoyed reading/working through them, but - recommended before beginning one's software development career? You'll need to know a fair amount of calculus to make sense of a lot of it, and it'll take quite a while to get through. It's questionable how relevant it really is, fascinating as the subject matter is.
- bluGill 8y agoI've read 3 pages and I started on one exercise: I'm the better for it. Someday I hope to find the energy to read 3 more pages. If I'm really energetic I'll attempt another exercise as well.
- bg4 8y agoThe book everyone recommends but few have actually read.
- deleted 8y ago
- nextos 8y agoThe Little Schemer
- busterarm 8y agoI've read most of the recommended books, but as far as what I think has delivered immediate real value, I'm going to go with: 1) Clean Code 2) The Phoenix Project 3) UNIX and Linux System Administration Handbook I'm sure #2 will be something folks want to fight over shrug. If you want to sidestep years of headache it's a must-read though.
- busterarm 8y agoTo elaborate, the best things you can do for yourself when starting your career are be easy to work with and have a clear picture of what good code/system/project/team/company organization looks like. Don't worry about coming out of the gate skills-hot. It's a marathon, not a sprint. If you are lucky and good, you will be doing your best work late in your career, not at the beginning. None of the other recommended books tell you how to name things, and that's always going to be the most important problem to solve anyway ;)
- organsnyder 8y agoAnother vote for The Phoenix Project. It really helps to set the right mindset for identifying and addressing the multitude of non-technical challenges that quickly become the focus of many (I'd venture most) developers' careers.
- poulsbohemian 8y agoFWIW, "The Goal: A Process of Ongoing Improvement" by Eli Goldratt, almost certainly was the inspiration for The Phoenix Project, and is IMHO a better read. One could follow up with any of Goldratt's other books for more information about the Theory of Constraints.
- busterarm 8y agoIn a sense, I agree with you, but TPP is specific to a software organization and I find it "translates" better, especially to the inexperienced.
- poulsbohemian 8y ago
- pcprincipal 8y agoSome I haven't seen mentioned here: 1. Coders at Work Peter Seibel does an amazing job of asking programmers questions that make them explain their methodology. The interview with Donald Knuth is awesome; really enjoyed hearing him talk about literate programming. 2. The Soul of a New Machine Tracy Kidder's 1981 Pulitzer Prize winner I think is a brilliant case study on how engineers work together and the things that can go wrong and right with different personalities interacting with highly technical ideas. The project in this book starts without the consent of management, which to me shows the value of questioning the system to add business / engineering value. 3. Little Schemer Small book that will give your brain a serious workout and show you how to problem solve with Lisp like languages. Even if you never end up using a Lisp dialect, this book expands your brain. I have more here, all of which I recommend for software and other careers http://benbrostoff.github.io/books/ http://benbrostoff.github.io/books/
- humbleMouse 8y ago+1 to Coders at Work. That book does an excellent job of showing the human side of programming. I think too many people approach the industry thinking programmers are god-like deities who have an unlimited amount of time and brain power. Coders at Work does a great job breaking down the "imposter syndrome" plaguing new people coming into the industry.
- bgutierrez 8y ago+1 for Little Schemer. Before I read it, I could write recursive methods, but after I read it I could think about recursion naturally.
- nur0n 8y agoThis! The primary benefit of this book is in learning to understand recursion. Lisp just happens to be a good environment for naturally expressing recursion.
- mrweasel 8y agoThe Soul of a New Machine is a wonderful book. I don't think it helped me career-wise, but it's an absolute joy to read.
- bmj 8y agoThe Practice of Programming by K & R. Or has this fallen out of favor?
- bluGill 8y agoIt is by K&P, not K&R. Great book though.
- bloodorange 8y agoThere are many books which sound good in theory but I think my younger self would not have been able to make use of the wisdom in those books because I did not have the experience to relate to what the book was talking about. Nevertheless, if I had to ignore this factor, I too, like many others in this thread, recommend "The Mythical Man Month". However, I think, it's more important to figure out what one wants from life than to just better one's craft. Of course if that is what you want in life, then indeed pursuing that makes sense. I'm also tempted to recommend "Siddhartha" by Herman Hesse and "The Consolations of Philosophy" by Alain de Botton.
- commandlinefan 8y ago> recommend "The Mythical Man Month" But be prepared to come away very depressed than a book that's now 44 years old contains wisdom that none of the people who ought to have absorbed it have.
- modbait 8y agoIf we're going meta, I'd add Ecclesiastes (yes, from the Bible). Doesn't matter whether you're religious--this was also a favorite of noted atheist Christopher Hitchens, for example. The basic theme is that everything is ephemeral. This really starts to resonate when you see how fast the results of your labors over a period of decades fade, turn to dust, and are utterly forgotten. As you yourself will be in short order. Ultimate medicine for keeping things in perspective. Here's a particularly readable paraphrase: https://www.amazon.com/Nothing-New-Under-Sun-Ecclesiastes/dp/1530872804/ https://www.amazon.com/Nothing-New-Under-Sun-Ecclesiastes/dp...
- Slansitartop 8y agoPeopleware: Productive Projects and Teams (https://www.amazon.com/Peopleware-Productive-Projects-Teams-3rd/dp/0321934113/ https://www.amazon.com/Peopleware-Productive-Projects-Teams-...) It talks about what makes a good team, how powerful they can be, and also gives some insight on team dysfunction.
- troupe 8y agoHow to Win Friends and Influence People
- kat 8y agoFind a book that introduces to programming patterns. I read 'Design Patterns' from the Head-First series when starting out http://www.headfirstlabs.com/books/hfdp/ http://www.headfirstlabs.com/books/hfdp/
- _hardwaregeek 8y agoDon't Make Me Think by Steve Krug and The Design of Everyday Things by Don Norman. While they're not strictly software or programming related, I really like the concepts of making interfaces that require minimal thought to use and empathizing with your users. I've seen an unfortunate amount of "programming machismo" where a confusing or poorly engineered system is used and accepted because "that's just how things work in the real world". And whenever someone struggles with the process, it's obviously because they're wrong, not the system. But more often than not, if more than one person has trouble understanding your system, whether it's an API, a website, a build process, the design is the issue.
- busterarm 8y agoDon't Make Me Think is a good one, but I always felt like its lessons could have been summed up in an infographic...though I guess that would be missing the context to get people over that hill. I guess if you don't know that intuitively, you're the kind of person that needs that book.
- vazamb 8y agoI honestly felt the same way about "The design of everyday things". The first few chapters are quite interesting but it gets insanely repetitive after a while. To be fair I feel that way about a lot of pop-sci books...
- enitihas 8y agoCode Complete. I found Code Complete to be as eye opening for day to day work as SICP is while learning in University.
- Itaxpica 8y agoBack when I was just graduating from college I picked up a book called "Coder to Developer: Tools and Strategies for Delivering Your Software". It was basically written for people who knew how to write code, but not all the stuff that comes with it in a professional setting - unit testing, build systems, version control, deployment and monitoring, etc. I'd have a hard time recommending it per se, because it relies heavily for examples on specific technologies that were dated even when I was reading it half a decade ago, but I think something like it with that kind of content is a must-read for anyone starting in SE, especially coming from a CS degree that might have been light on those areas. If I could find a version that's more recent I'd recommend it to every new grad I know.
- jiveturkey 8y agoLe Petit Prince. Certainly you’ve read this but it should be reread on occasion and starting a career is a good time. eg “You become responsible, forever, for what you have tamed”
- pera 8y agoStructure and Interpretation of Computer Programs: https://mitpress.mit.edu/sicp https://mitpress.mit.edu/sicp
- heinrichhartman 8y agoThis is the most influential book I have read in my SE career. It's not a LISP book. It's a book about programming fundamentals. E.g. Objects are covered as well. They even build a register machine at the end. I think a translation to a more modern language (lua!) would boost adoption quite a bit.
- skfist 8y agoHow To Design Programs pursues a similar goal. Esp. 2nd edition has largely been rewritten and uses a more modern programming language. Maybe give it a try?
- pvg 8y agoSuperdupermegapreviouslies: https://hn.algolia.com/?query=books&sort=byPopularity&prefix&page=0&dateRange=all&type=story https://hn.algolia.com/?query=books&sort=byPopularity&prefix...
- cmrdporcupine 8y agoThe Glass Bead Game by Herman Hesse.
- mfrw 8y agoMy take on some which I think should be atleast read once: 1) The unix programming environment 2) The design of the unix operating system 3) The Pragmatic Programmer 4) Programming Pearls 5) Computer Systems: A Programmers Prespective 6) K & R C 7) The art of Unix Programming. PS: I admit my bias towards systems.
- heinrichhartman 8y agoI like (1) The unix programming environment It's very old and underrated. Many people have problems getting started with the command line and basic UNIX tools. This is _THE_ place to learn about this.
- travmatt 8y agoI’m halfway through the 5 and its an amazing resource.
- jamestimmins 8y agoReally phenomenal textbook. Maybe the only one I've read (almost) all of the way through.
- charlysl 8y ago"The unix programming environment" I read this in like a week at one of my first jobs. I learned so much that in a few days my status in the team radically changed and became the go to person when people's scripts didn't work; word spread and soon I had people from other teams seeking help with their scripts too. No one else read the book though AFIK ... What I really liked about this book at the time: - it explains the few key concepts extremelly well - the exercises were truly outstanding, really testing your understanding of subtleties of above concepts One for the ages.
- Rotdhizon 8y agoMost books recommended here are for programming of some or administration, anyone have notable books for cyber security, pen testing, red teaming, etc?
- DDerTyp 8y ago+1, that would be awesome! :)
- wilsonnb 8y agoOur field is so varied that there is no good answer to this question unless you specify what you want to focus on. Some people are inevitably going to recommend The Art of Computer Programming, which hardly anyone has read and isn't that relevant to the work that 99% of us are doing. Someone will probably recommend The C Programming Language, also called K&R after the authors, but again it's not very useful unless you're going to be using a lot of C and even then I personally don't think it provides anything you can't get from guides on the internet. (I have actually read this one, but it's been a while) There are other classic textbooks that will probably be mentioned that are only useful to those in that domain. Many of us can get by without a deep understanding of algorithms and data structures, most people don't need to read a compiler book, etc, etc. However, there are some generalized books that people often recommend like The Pragmatic Programmer and Code Complete. These are, in my opinion, good recommendations if you're looking for something to read but I wouldn't say that someone starting a career in software engineering should read them. Software engineering isn't really a field with seminal texts that should be read by everyone. For example, every political scientist should have probably read The Republic by Plato and Politics by Aristotle among many other texts. I don't think software engineering has that equivalent, partially due to the relative newness of the field and partially because the primary output of our field is not written texts. Another interesting question would be "What codebases should someone starting their career in software engineering look at?". Are there things that the average joe programmer can learn by poking around the Linux kernel or Firefox? Maybe. I don't know. I've never done it. I'd be interested in hearing from those who have, though. Maybe I'll do my own ask HN. edit: I feel I should clarify that this is written from the perspective of a software engineer, not an academic in computer science. For all I know there could be seminal texts that those on the academic side should all have read.
- commandlinefan 8y ago> recommend The Art of Computer Programming And, if you do decide to dive in and read them, plan to spend a few years on them.
- greymeister 8y agoI sort of wish my CS grad school had just been studying those books versus some of the stuff I did cover.
- napsterbr 8y agoThis will be an unusual suggestion, but I highly recommend Geographic Databases and Information Systems by Stefanakis. The book is split into three parts, and the last one is specific to GIS. The other two, however, are a great introduction for databases, indices, data structures and even some graph theory. I've revisited several concepts I'd seen before at college.
- ryanmarsh 8y agoAnything about Complex Adaptive Systems. Holland’s short intro is nice. Eventually you’re going to be faced with a very complex system to refactor. It helps to understand the principles of healthy complex systems in nature. https://www.amazon.com/Complexity-Very-Short-Introduction-Introductions/dp/0199662541 https://www.amazon.com/Complexity-Very-Short-Introduction-In...
- collinf 8y agoAs far as a technical book, Data Intensive Applications by Martin Kleppman. This book covers distributed systems as well as databases, data-warehousing, and data-processing. A lot of tools and patterns you don't see in school that describe how most of the "magic" behind high-powered software we use is implemented.
- sp527 8y agoThis should honestly be the top-voted answer. The standard palette of cargo cult options are at best a weak proxy for real-world experience. But Kleppman's book is genuinely and outstandingly useful for understanding the various components involved in modern backend architectures.
- bluGill 8y agoSomething for any industry that interests you. Computers are a tool. We use them not because a bubble sort is n-squared and quick sort is nlogn with a n-squared worst case. Step outside of your box and learn something about the real problems in the world and you will be the better as you realize how you can apply computers to solve the real problems.
- dmux 8y ago(1) Object Thinking by David West. (2) Thinking Forth by Leo Brodie
- mhh__ 8y agoLinux kernel coding standard, for attitude rather than specific guidance?
- Hernanpm 8y agoWeb Scalability for Startup Engineers
- ozim 8y agoYou start career. If you already have been programming like in high school or something and finished CS university don't focus much on technical books. Learn how to work with people not computers and listen. I assume you know objects, ifs, for loops. It is enough for technical start. I don't expect more from junior. "The pragmatic programmer" is quite good start on it. If you lack technical background and have problems with structure because you have not worked through university/school in structured way then "Code complete", "Clean code". Pick also something in depth for your specific area you are going to start, for C# good would be "C# in depth" to get really details of tech you will be working on. Get details in one programming language really well then you can pick up some other tech.
- originalsimba 8y agoHACKERS by Steven Levy ISBN: 0-385-19195-2
- tomdre 8y ago"Introduction to Algorithms" by Cormen et al. is one of my favorite books. It gave me a deep understanding of algorithms and data structures.
- InclinedPlane 8y ago- The Pragmatic Programmer - Refactoring - Facts and Fallacies of Software Engineering - Code Complete
- Trundle 8y agoI'm surprised to see basically only books on how to be better at making software. Nothing on negotiation or other soft skills like that. Do people generally just not value things like negotiating? Or do you just not think a book would have helped younger you?
- jpamata 8y agoDesigning Data-Intensive Applications[0] by Martin Kleppmann. There's a previous HN thread about it[1]. Helped me understand a bit more about databases and systems. The book is also very approachable and has the perfect blend of application and theory at a high level that anyone approaching the industry for the first time stands to gain a lot from reading it. The Architecture of Open Source Applications[2] series is a good one for leaning how to build production applications and you can read it online. The chapter on Scalable Web Architecture[3] is a must-read. [0] https://www.amazon.com/Designing-Data-Intensive-Applications-Reliable-Maintainable/dp/1449373321 https://www.amazon.com/Designing-Data-Intensive-Applications... [1] https://news.ycombinator.com/item?id=15428526 https://news.ycombinator.com/item?id=15428526 [2] http://aosabook.org/en/index.html http://aosabook.org/en/index.html [3] http://aosabook.org/en/distsys.html http://aosabook.org/en/distsys.html
- BigTex420 8y agoHackers and Painters
- hemantv 8y agoEffective Engineer by Edmond Lau Game Programming Patterns
- akaralar 8y agoFor the technical side of things, http://teachyourselfcs.com http://teachyourselfcs.com gives a nice curriculum.
- gargarplex 8y agoWaltzing With Bears. Oh my god how I wish I had read that one book.
- sidcool 8y agoThe title makes me wonder, is it too late to read these books for me, a decade long programmer?
- charlysl 8y agoNo
- jacksmith21006 8y agoThe Phoenix project. Everyone should read, IMO. I actually started with The Goal first. Then Phoenix project and then the Google SRE book.
- telltruth 8y agoThis might sound either obvious or naive but if you are not a CS major, I would really emphasize reading CS textbooks such as CLRS, Programming Pearls, Dragonbook and most importantly textbooks on statistics m probability, linear algebra. There is a pyramid of skills for developers. People who haven’t studied throughly above stuff usually ends up at bottom (aka “enterprise” or “web” or “database” developers). They spend their lives in trivialities of patterns and plumbing and only very rarely doing something interesting such as distributed computing, game programming, systems programming, ML/AI.
- skfist 8y agoMy favorites so far: - Pragmatic Thinking & Learning by Andy Hunt - The Design of Everyday Things by Don Norman - The Effective Engineer* by Edmond Lau - The Pragmatic Programmer by Andy Hunt and Dave Thomas - SQL Performance Explained by Markus Winand And http://teachyourselfcs.com http://teachyourselfcs.com curriculum is pretty good as well. As a side note, there's so much we can learn from game programmers and OS/database/compiler engineers.