Found in 8 comments on Hacker News
wenc · 2024-08-29 · Original thread
This book surprised me by how good it is -- it distills a lot of tribal knowledge about how software engineering works at the mid-level to (early) senior engineering levels, based on the author's experience working at SV companies.

https://www.amazon.com/Effective-Engineer-Engineering-Dispro...

If you're experienced (senior or higher), it's still a good read, but fewer things will surprise you.

maryrosecook · 2021-12-18 · Original thread
Anything about leverage. Here are the ones I read that were helpful. The second two are engineering-specific, but Principles is domain agnostic.

* Principles: https://www.amazon.com/Principles-Life-Work-Ray-Dalio/dp/150...

* The Effective Engineer: https://www.amazon.com/Effective-Engineer-Engineering-Dispro...

* High Output Management: https://www.amazon.com/High-Output-Management-Andrew-Grove/d...

LrnByTeach · 2021-11-29 · Original thread
I think this book would be great addition to any software engineer . I think book captured the recent modern practices ( last 10 years?) in one place .

The Effective Engineer: How to Leverage Your Efforts In Software Engineering to Make a Disproportionate and Meaningful Impact

Effective Engineer - Notes : https://gist.github.com/rondy/af1dee1d28c02e9a225ae55da2674a...

https://www.amazon.com/Effective-Engineer-Engineering-Dispro...

swah · 2018-10-08 · Original thread
Yep. I like books like this https://www.amazon.com/Effective-Engineer-Engineering-Dispro... for this reason.

1-star commenters will say they learned nothing new, while 5-star commenters will be happy they found knowledge from experience enginners in (kinda compact) book form...

Zyst · 2018-07-24 · Original thread
The Effective Engineer[0] has a chapter on technical debt, where he goes into how a lot of crappy code decisions are there for a reason, and how rewrites can be chaotic. If you have the time, I'd recommend giving it a read.

I frankly got a lot more pragmatic about asking for rewrites after reading it, and I feel it helped me to grow (mature?) as a developer.

Either way, I think there's a need to balance the need for employee self actualization needs which they often push as rewrite requests "Oh since we're rewriting this, we should (do it in)/use/etc X instead". I have often realized that a lot of requests to rewrite something are really tinkering desires camouflaged as a business related request, which is not to say that the code that does exist could have problems, it could, but having a period of debt repayment would improve it as well. So finding a way to allow your employees to tinker without letting their desires torpedo your products would be positive.

Either way, it's a complex subject, and I don't really think there's a single "right" response to it. Best of luck!

0: https://www.amazon.com/Effective-Engineer-Engineering-Dispro...

EDIT: I'm not a CTO, I'm a developer.

comvidyarthi · 2018-05-22 · Original thread
I really liked "The Effective Engineer" by Edmond Lau. Its not intended for starting your own company. But it has some good insight for doing good in your job and how to grow as a software engineer. https://www.amazon.com/Effective-Engineer-Engineering-Dispro...
henrik_w · 2017-02-08 · Original thread
A relatively new book that isn't mentioned (but that I really like) is "The Effective Engineer" by Edmond Lau.

https://www.amazon.com/Effective-Engineer-Engineering-Dispro...

Edit: Here's why I like it: https://henrikwarne.com/2017/01/15/book-review-the-effective...

Your comment reminded me of Edmond Lau's book - The Effective Engineer [1] - where he talks about putting in a good amount of effort into the onboarding process for new engineers.

His premise - having a senior engineer spend an hour a day for the first month helping the new employee with explaining the existing abstractions being used, the underlying design of various systems, etc. - would still be only about 20 hours, which is still only 1% of the number of hours that employee will spend in their first year - about 2000 hours.

As a result, I believe that armed with that knowledge, the new employee is likely to be much more productive, failing which, at least cause less damage to the code base.

I would say that the first example you mention - leaky abstractions et. al. - are just as much (or maybe more) due to poor onboarding as they are due to the frustration of mediocre programmers. There is a lot to be said for good process, which software engineering as a discipline falls short of quite consistently.

[1] https://www.amazon.com/Effective-Engineer-Engineering-Dispro...