Ask HN: Reading list for being a better engineer?

I'm looking for some books to help me practise and refine my skills as a developer and Engineer.

I'm currently working in python on a django project, working in a financial domain. I lead a few engineers and direct/manage some projects. But I feel like I'm missing out on something when I read about people making things in zig and rust, or how they apply some numerical modelling techniques to certain problems, plus the new technologies being developed. I feel like I'm very much not knowledgeable or distinguishable enough, so I want to refine my skill a bit and maintain "sharp" in case of something happening and i need to find a new job quickly. And i want to make sure that I'm learning all that I could be learning in my current position.

Some previous books I've read / enjoyed:

* The makings of an Expert Engineer * Designing data intensive applications (haven't finished, moved house and lost the book, want to pick it up again) * Designing Elixir Systems with OTP * Practical Common Lisp

I feel like I have learned a bit with the Elixir/CL books, inwhich I apply to how i write python, but I never branch out to doing my own projects in these languages, so I feel like I'm missing out on utilizing these tools fully.

Is there anything to read that could take me to the proverbial next level?

35 points | by drekipus 1 day ago

15 comments

  • jpc0 18 hours ago
    I want to reiterate the points other have brought up.

    Learn more about whatever domain you are writing software for, then ask what skills you need to improve to solve a problem in that domain.

    Also do not get hung up on specific languages or paradigms, the overarching patterns are universal and learning them makes things significantly easier to implement.

    Finally the most generic advice, Algorithms and Data structures. When you start thinking in terms of "This is the data in memory" and "This is the algorithm manipulating the data" you will "level up" quickly. Software isn't cats and dogs and random objects. Thinking in objects can be a decent way to model systems but when you get into the details you are operating on instructions and data not on objects.

  • another_twist 23 hours ago
    None of the generic thought leadership books are particularly useful. I've noticed that the best way to keep relevant as an engineer is to ignore flavor of the day frameworks and tech but rather focus on the basics. For example, if you're working in financial modeling, one way to improve as an engineer to get better at the domain. Maybe "Advances in Financial Machine Learning" by Marcos López de Prado. You'd have to work through the math and pick up finance on the go (which I assume should be easier part). As for people doing cool stuff in Zig / Rust, what matters is the problem not the hammer they're using to solve it.
  • vismit2000 23 hours ago
    'A Philosophy of Software Design' by John Ousterhout - https://news.ycombinator.com/item?id=37975558
  • kengoa 19 hours ago
    Understanding Python's data model helped me become a better software engineer. I'd recommend watching this PyData talk (James Powell: So you want to be a Python expert? | PyData Seattle 2017 - https://www.youtube.com/watch?v=cKPlPJyQrt4) and then using the official doc as a reference which is also fun to read: https://docs.python.org/3/reference/datamodel.html
  • never_inline 11 hours ago
    You might find the reading list on my blog interesting, though it's more about long form articles than books.

    https://mahesh-hegde.github.io/readings

  • markus_zhang 9 hours ago
    I'd say anything that inspires you to move to a career that focuses on engineering, that you cannot get away by being half-ass, is a good book.

    I recommend two books, none of them is technical. "Showstopper! The Breakneck Race to Create Windows NT and the Next Generation at Microsoft" and "The soul of a new machine".

    Once you put yourself at the edge of knife, everything you want comes naturally, because you either swim or die.

  • linesofcode 1 day ago
    I think some of the best engineering leveling up one can do is to become an expert in other domains completely unrelated to what you’re working on now.

    Furthermore, build more and read less. Programming books, while a great resource, are detached from the everyday realities for software engineering. The skillset comes from applying concepts by doing the work.

    If you really want to read something, pick a popular project on GitHub in Elixir or Zig and read through its source code.

    Finally, if you haven’t augmented your workflows with AI-tooling, strongly consider doing so (and I don’t mean asking ChatGPT and copy/pasting answers, but actually full on agentic programming)

    The skill gap you’re concerned about now is only going to increase if you’re not using every tool to your advantage. Simply knowing a few programming languages is not enough, in fact it should barely even matter once you’ve hit a certain level of experience.

  • aristofun 1 day ago
    > I'm missing out on utilizing these tools fully.

    mastering a tool doesn’t make you a better engineer, only better expert in a particular tool. And it is not the “next level”.

    Next level is about getting a wider perspective and bigger picture view on your craft and your job.

    On a conceptual/phylosophical level any decent book about building, engineering or designing any complex thing (preferably based on real events, not some made up boring fluff like “deadline” by Tom Demarco) would contain some gems.

    I don’t know any single book that is full of gems.

    To make this comment useful this is one of many examples, of a book that have couple of good ideas (about feedback system for example) https://www.goodreads.com/book/show/1501427.Managing_The_Des...

  • ahussain 23 hours ago
    A philosophy of software design by John Ousterhout is the best software book I have read.

    But, from your post it’s not clear specifically what you are looking for. If you think you will level up by learning how to apply numerical modelling techniques, then it’s probably best to focus on that.

  • Agingcoder 15 hours ago
    Computer architecture a quantitative approach by Patterson and hennessy

    It’s the real life exchange rate for algorithms and data structures. Basically understanding your infrastructure and its performance characteristics will help you design simpler ( and therefore better )systems

  • tjr 23 hours ago
    Some specifics are outdated, but I very much like a lot of the general theme of Greenspun’s Software Engineering for Internet Applications:

    https://philip.greenspun.com/seia/

  • OgsyedIE 21 hours ago
    If you want the big picture stuff to give your vague direction more precision try giving the top articles of Ribbonfarm by year a quick skim. It sounds like bad advice but the content has broad domain applicability.
  • chistev 20 hours ago
  • joshribakoff 1 day ago
    Martin Fowler.
  • coolThingsFirst 13 hours ago
    1) C++ concurrency in action

    2) Tannenabum Networking and OSes

    3) Get your domain and build something