Live data from Hacker News

Ask HN: What books should I read to improve as a software engineer?

news.ycombinator.com

21–30 of 127 posts

Re: Ask HN: What books should I read to improve as a software engineer?

#21

Controversial take: reading books to get better at software is like reading books to get better at swimming. Like people don't get better at math by reading books about math... So you should go read code. But reading code is boring if you're not also writing code (same goes for math) so my real recommendation is to go find a big OSS project in an area you're interested in and start contributing. If you don't know how…

I agree with the gist of your comment but I think people can benefit from books about maths. A classic example that comes to mind is Polya's "How to Solve It". It's about the meta of doing maths (or the tacit knowledge of a great mathematician), not about specific fields or theorems.

Yes if you know absolutely nothing about writing proofs then polya's book is good. But that's it - after that "onboarding" you're never going to see a professional mathematician reading another such book.

Re: Ask HN: What books should I read to improve as a software engineer?

#24
post #17

It's probably useful to un-read Clean Code, though I don't really have a recommendation for a good replacement. The replacement is something like "Make a lot of mistakes and develop good taste based on your experience." If you're interested in performance, you can read https://algorithmica.org/ and https://people.freebsd.org/~lstewart/articles/cpumemory.pdf

I keep seeing this online. Why? Clean Code was instrumental in my improvement as an engineer. Is there a reason why this is the opinion nowadays?

I think it depends. For me, I can see how it helps a brand new developer get a feel for code style.

That being said, some of the advice in the book is simply dated, some of it seems to break code down arbitrarily instead of on responsibility.

On top of this, you get people who pedantically follow it and don't let a team of experienced engineers develop a style that works for them it's really annoying and it can make the codebase a bitch to work on.

In the end, it should be a guide. And you should be thinking about what bits to take. But what ends up happening is "uncle Bob says...".

Re: Ask HN: What books should I read to improve as a software engineer?

#26
"A Philosophy of Software Design" by Stanford's John Ousterhout is excellent.

It is quite concise (about 190 pages), but in my opinion, it includes all the essential information that the other books in that category would teach you. It leaves out a lot of cruft that over the years turned out to be non-issues (code styling, problems that come with object oriented programming, etc.) but occasionally - when the topic is popular and widespread (e.g. Uncle Bob advice) - addresses them as alternative opinions. It was first published in 2018 and is therefore not in the out-of-date category.

So I would recommend it as essential read, hands down.

If you want something a bit more elaborate: "The Pragmatic Programmer" has a 20th Anniversary Edition. It is a timeless classic, worth reading at any rate.

That being said, I wish there was a single consistent resource[1] that summarizes truly modern software design philosophy in the sense that it leaves the object orientation inspired ideas behind that did not turn out to be useful and focusses on typed functional programming. Maybe with examples in Typescript and Rust.

[1] Possibly a book, but not necessarily. For me it would be important that it presents a consistent opinion, so it should be from a single author or small group of authors. The information I have in mind is mostly there, but spread out over many blog posts from people with slightly different takes and ideas about them. The overwhelming majority of recommendations in this thread are from authors I'd consider part of the founding generation. I'd love to read about software design from the perspective of a younger generation.

Re: Ask HN: What books should I read to improve as a software engineer?

#27
Totally different suggestion, look at how good woodworkers[0] or artisans are creating there pieces. These are unique pieces but reusing common well mastered technics.

It takes time for them. It takes time for us. The small details are ironed out along the way but the big picture, the concept, is defined/designed before.

Note that I really like the books listed up to now, they are not "dependency injection in Typescript using framework x, y or z" kind of books, more general philosophy of coding (with people). Going to this upper level is for me where you go from good to great. And myself, going to my 50s, I am still learning...

[0]: https://m.youtube.com/watch?v=sL96mw1uCmA

Re: Ask HN: What books should I read to improve as a software engineer?

#28
The already mentioned The Pragmatic Programmer, 20th Anniversary Edition is so far the best I have read. It's not overly specific to one single thing, it tries to teaches general principles and good practice.[1]

I also have a personal recommendation for when you want to better understand testing, QA, or want to/have to work with QA people. [2]

[1] https://pragprog.com/titles/tpp20/the-pragmatic-programmer-2... [2] https://www.amazon.com/Lessons-Learned-Software-Testing-Cont...

Re: Ask HN: What books should I read to improve as a software engineer?

#29
I would advice not to concentrate on coding per se. Coding fashion is volatile, today's good practice is a tomorrow's code smell. So instead of "programmer's books" I would suggest How Big Things are Done by Bent Flyvbjerg and Den Gardner. It's a new book (2023) and while it touches software engineering a bit, as the title suggest, it's more about getting big things done.

Re: Ask HN: What books should I read to improve as a software engineer?

#30
post #17

It's probably useful to un-read Clean Code, though I don't really have a recommendation for a good replacement. The replacement is something like "Make a lot of mistakes and develop good taste based on your experience." If you're interested in performance, you can read https://algorithmica.org/ and https://people.freebsd.org/~lstewart/articles/cpumemory.pdf

I keep seeing this online. Why? Clean Code was instrumental in my improvement as an engineer. Is there a reason why this is the opinion nowadays?

"Clean code", when not applied judiciously, tends to result in overly complex code with a lot of repetition. This may be desirable when very strict decoupling is needed in complex projects, but in many projects it makes things worse rather than better.
Post reply on HN