Hacker News .hnnew | past | comments | ask | show | jobs | submitlogin

My top priority books:

    Software Requirements - Karl Wiegers

    Programming TypeScript - Boris Cherny

    Associate Cloud Engineer Study - Dan Sullivan

    Design Patterns - Gang of Four

    Refactoring - Kent Beck, Martin Fowler

    Programming Pearls - Jon Bentley

    Patterns of Enterprise Application Architecture - Martin Fowler

    The Pragmatic Programmer - David Thomas, Andrew Hunt

    CSS: The Definitive Guide - Eric A. Meyer, Estelle Weyl

    Working Effectively with Legacy Code - Michael Feathers

    Head First Design Patterns - Eric Freeman, Bert Bates

    Code Complete - Steve McConnell

    Peopleware - Tim Lister, Tom DeMarco

    Clean Code - Robert C. Martin

    The Clean Coder - Robert C. Martin

    Clean Architecture - Robert C. Martin

    Don't Make Me Think - Steve Krug

    Functional Design Patterns for Express.js - Jonathan Lee Martin

    The Surrender Experiment - Michael A. Singer

The best books I've ever read:

    Principles - Ray Dalio

    The Power of Now - Eckhart Tolle

    The Effective Executive - Peter F. Drucker

    Think and Grow Rich - Napoleon Hill

    Extreme Ownership - Jocko Willink, Leif Babin

    Influence - Robert B. Cialdini

    The Startup Way - Eric Ries

    The Lean Startup - Eric Ries

    12 Rules for Life - Jordan B. Peterson

    Measure What Matters - John Doerr, Larry Page

    The Fish That Ate the Whale - Rich Cohen

    The E-Myth Revisited - Michael E. Gerber

    The Score Takes Care of Itself - Bill Walsh, Steve Jamison, Craig Walsh

    Management - Peter F. Drucker

    Thinking in Systems - Donella H. Meadows

    Blue Ocean Strategy - W. Chan Kim, Renee Mauborgne


Sounds like you’re diving head first into web development? Or taking it to the next level?

Careful not to burn yourself out, that is a long list of technical books, that have nothing to do with the books you’ve read and enjoyed in the past that are from other genres.


Long story short, I am an entrepreneur who sold a company and am transitioning into maximizing my engineering knowledge before diving back into entrepreneurship.

I've spent a considerable amount of time studying top performers and learned how to manage stress levels effectively. I do exercise, meditation, yoga, stretching, forest bathing, mindfulness, journaling, and other activities that battle against burnout.

I am much more worried about failing to meet my goals than I am burnout. Appreciate your concern though!


I'd say if the goal is to maximize engineering knowledge, less might be more. Especially if you don't plan to apply it on a day to day basis as an engineer.

For example, I'm currently reading Clean Architecture by Martin that is on your list. While the words on the pages are not hard to understand and it doesn't rely on any advanced computer science/engineering concepts, actually comprehending the posed principles, their implications, how to reason about them and how to pull them off well in a real world scenario is absolutely non-trivial.

I have met many people in tech that devoured douzends of books and conference talks, hundreds of podcast, blog posts, articles and that were an endless source of catchy quotes found in them. But they weren't able to actually apply all this "knowledge" to anything beyond the most basic. And in cases where these people where in leadership/management positions this often had negative impact on the project/product.

To finish with a catchy quote from Clean Architecture:

"The more haste, the less speed."


You sound like a Tim. Are you a Tim?


Kudos to you and best of luck :) I’m an engineer by trade, but I’ve quit my job recently to start my own thing, and moving into web dev (my experience is in native dev), so I both share your concerns and your reading list!


> forest bathing

That sounds pretty awesome..


No time for fiction?


You have quite overlap between some stuff. I would recommend "Clean Code", but then skip the rest from the same author, at least for a while. While "Code Complete" is good, it's loooong and also a lot of the same stuff.

For patterns, "Head First" is a bit childish maybe, but the content is fine for someone learning to recognize patterns. "Patterns of Enterprise..." is also good, but more dry. I'd stick with one of those two. And then skip the one by GoF, unless you want to read the "original" for some reason.

"The Pragmatic Programmer" is probably the book that has shaped my work the most.


Another "Patterns" book that seems to be interesting is "Pattern-Oriented Software Architecture For Dummies" by Robert Hanmer. I've actually ordered it and look forward to read it in the coming year.

There's also "Patterns for Fault Tolerant Software" by the same author that looks pretty interesting too.


Code Complete seemed to be a book with a lot of dense, redundant content. Reading what was written had me feeling like I was reading information that could have been written by myself. Clean Code on the other hand (along with Refactoring by Martin Fowler) changed the way I write code for the better.


Not a long time ago I've found this comment about how to read Code Complete: https://www.amazon.com/gp/customer-reviews/R65Q50S27SSWE - After reading the comment, maybe I'll consider to give the book another try with a different approach :)


>Principles - Ray Dalio

I'm confused by the praise for this book. I couldn't finish it. No real insight or anything technical, just fluff (Dreams + Reality + Determination = Success!).

I'm with Josh Wolfe [1]; I think Bridgewater is going to be exposed as one of the random, large hedge funds that got lucky for a spell, but is not any better than an index fund, ex-fees.

https://twitter.com/wolfejosh/status/1082470723233476608


I thought I am the only one here. Managed to finish it (unfortunately) but it was completely wasted time.


Looking at your top priority books I recalled a slide from one of Brian Will's videos on object oriented programming: "Object Oriented Programming is Bad" https://www.youtube.com/watch?v=QM1iUe6IofM&t=326s. At around the 43:51 he pulls up a slide picturing several of these (and similar) books. Here is a rough quote: "I can tell you from personal experience of having read these books that you don't need to read them. They don't have answers, they aren't going to square the circle, and you are going to waste productive years of your life trying to live up to their ideals." Now that is just one rather controversial opinion, but we are talking about potentially wasting productive years of your life so I wanted to let you know that opinion is out there. That being said, it would probably be hugely beneficial to read a few of those books and then watch a few of Brian's videos (he has three or four on the topic) and sort out your own opinion. Also, Brian's other (not controversial) videos (dozens) are excellent for learning about programming. Also, Steve Krug's Don't Make Me Think is a keeper. I thought of it last night when I was checking out at a store. I stuck my debit card into the thing, entered my PIN number, then clicked the big blue button that said "Skip PIN". The woman behind the counter said "don't worry about it; everybody does that!"


Skip design patterns, I think it locks developers into a sort of religious loyalty towards OOP abstractions. When you understand the pattern it describes you get a sort of catharsis for discovering a new interesting thing. In reality, any of these patterns are just bad despite the cleverness.

Modern programming is heading in a different direction already so it'd be better to move forward without it.


I disagree because people often don't have the luxury of working on greenfield projects.

When you are working with an old codebase, you are going to run across design patterns. You will see terms like factory, builder, observer, decorator, pool, flyweight, etc... and it's going to be helpful to know what those are. A lot of the value of design patterns was in the terminology.


Times have changed where few non-greenfield projects use these patterns as well. Languages like Go and javascript will rarely have these patterns. I would avoid depending on the programming language.

If you are working with Java or C++ these are the two languages where these patterns will appear, even in greenfield projects due to developer loyalty. If you are working with languages other than this, then you are more likely not to encounter these patterns that often.

Thus avoid the book unless you want to become an expert in Java. Also these patterns can be learned without the GoF book just off of quick scans of articles on the internet.


What has replaced them?

Presumably some of the problems they intend to solve still exist.

Is there some resource you can point to that says in the past when faced with situation X developers tended to use pattern Y, these days that has been superseded with way of doing things Z?

I've seen some of those patterns leveraged to great effect in modern software. But genuinely curious about alternative ways to solve the same problems.

I've definitely noticed the trend towards more and more functional programming these days. I doubt it's simply a case of "just use FP and there are no more problems".


This isn't about OOP vs. FP.

This is about OOP vs. everything else.

Rust, Go and javascript are three languages that are moving away from the OOP paradigm. None of those three languages are classified as functional.

>Is there some resource you can point to that says in the past when faced with situation X developers tended to use pattern Y, these days that has been superseded with way of doing things Z?

No. A general trend is an anecdotal observation. Still a quick google search yielded: https://blog.cleancoder.com/uncle-bob/images/fpvsoo.jpg

Take a look at the following video:

https://www.youtube.com/watch?v=QM1iUe6IofM

While I don't agree with a lot of it, I think it sums up my opinion really clearly. It's not about DP's but because DP's focus around OOP and the video is a criticism of OOP therefore the arguments apply to DPs.


Thanks. I've observed this as a general trend too. I'm starting to become more and more interested in the functional way of thinking.

The image you linked it interesting. I want to dive more in on the how/specifics. I don't necessarily buy the argument it's trying to make that "just make a function and you no longer have a need for factory pattern". You're trying to accomplish something fairly specific with that. Functions compose, I could see how there are properties they have that can be leveraged to achieve the same goal, but I'm guessing the functions you write or the way you write functions to achieve each of those specific aims likely differ in subtle yet important ways. I'm very interested in those details.


>I don't necessarily buy the argument it's trying to make that "just make a function and you no longer have a need for factory pattern".

The same pattern is achievable with functions but the implementation is so trivial in FP that it doesn't even need a name:

Just have a function return another function. That's a function factory.

Same thing with dependency injection:

Just have a function take another function as a parameter.

Outside of this I wouldn't even recommend either pattern at all. It's bad practice in all paradigms. Only have data flow through your execution path, don't have new "execution paths" flowing through your execution paths, such architectures tend to be over-engineered.


Do you have a good example of a reference architecture or implementation of a non-trivial system you can point me to?

I've recently gotten a copy of the book Domain Modelling Made Functional. I'm yet to read it, but I'm pretty intrigued by some of what I've seen and I have heard it comes highly recommend.

I'd be very keen to hear of other high quality examples of things people consider good reference material.


Functional programming is rare. It's sort of like the PS3 when it came out. Better specs across the board but harder to use and understand so it's hard for me to point to production level examples. Facebook does have one big project done in haskell you can look into that. Also whatsapp is done entirely in erlang.

Also note that the trend I see in the industry is not exactly movement towards functional programs but more movement towards borrowing features popular in functional programming as well as getting rid of classes.


Thanks for the heads up. I'm going to read it soon despite your warnings, but I'll keep what you're saying in mind while going through it.


I agree with crimsonalucard but for different reasons. This book is catalog. It's like reading a dictionary from start to finish. This becomes dull fast and you don't learn efficiently. Sure you can just use it to look a pattern up once in a while but then again you might as well read the Wikipedia article.


Could you summarize the different direction that you see things moving?


Less OOP.


Based on your Best Books list, check out David Goggins book 'Cant Hurt Me'. I found him through a podcast he did with Joe Rogan and it resonated with me on a deep personal level. It ultimately inspired me to change my life: I lost 50 lbs since, got a raise and promotion at work and travelled more in 2019 than the last 5 years.


Can't hurt me was so masochistic that after 50% of the book I started thinking why is he doing "that much". It's a good book no doubt. It makes you feel that limits are just in mind. But I've to give it a break after hearing (audible) 66% and will return to it later :)


I love Goggins! That's a great book. So hard to believe, but there's documented evidence for his achievements. Unbelievable.


You'd probably really Technology Strategy Patterns.

That book is seriously underated.


As someone who approximately has their life figured out and is approximately in a good place, would you still recommend Peterson's 12 Rules for Life?


>As someone who ... is approximately in a good place

Are you going to be happy on your death bed that you lived "approximately" a good life?

I can definitely recommend the book. It could reveal to you those aspects of your life that you feel are off the mark.




Consider applying for YC's Fall 2026 batch! Applications are open till July 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: