I use Goodreads to keep track of the books I am reading.

The following is a list of books I've found very helpful and that I would highly recommend to anyone in software.


Any articles/posts I've found interesting or valuable over the years. They are stored as GitHub issues.

  1. How (some) good corporate engineering blogs are written
  2. Why you need a "WTF Notebook"
  3. How To Be A Good Listener
  4. The Bloat in Software Engineering
  5. Directly Responsible Individuals (DRI)
  6. The Generation, Management and Handling of Errors
  7. All code is technical debt
  8. Productivity tips
  9. Your small imprecise ask is a big waste of their time
  10. How to Solve It
  11. YOLO-Driven Development Manifesto
  12. Software Engineering Lessons from RCAs of world's greatest disasters
  13. Simple Sabotage Field Manual - How to Destroy Your Organizations
  14. The Code Review Pyramid
  15. Salary negotiation
  16. If you can’t tell a story about it, it isn’t real
  17. Speed matters: Why working quickly is more important than it seems
  18. A system to organise projects
  19. The Surprising Power of Documentation
  20. How To Design Software Architecture For Startups
  21. The D.E.N.N.I.S. system: Résumé tips for Senior Devs
  22. Get your work recognized: write a brag document
  23. Treat your to-read pile like a river, not a bucket
  24. Lessons from a Pessimist: Make Your Pessimism Productive
  25. Powers of 10: Time Scales in User Experience
  26. Mary Poppendieck’s "The Tyranny of ‘The Plan"
  27. Where did software go wrong
  28. How to communicate effectively as a developer
  29. YAGNI exceptions
  30. How to Build Software like an SRE
  31. First make the change easy, then make the easy change
  32. 11 Laws of software estimation for complex work
  33. Why deadlines are pointless and what to do instead
  34. How to break into senior management
  35. What you should work on
  36. How to Write a Git Commit Message
  37. The advice gap
  38. Be good-argument-driven, not data-driven
  39. Don't Go Dark
  40. Technical Writing for Developers
  41. A guide to frontend migrations
  42. Publishing your work increases your luck
  43. Giving a Shit as a Service: A mental model for service businesses.
  44. Code vs. No-Code
  45. Kelsey Hightower on How to Become a Better Engineering Team
  46. The Documentation Triangle (or, why code isn't self documenting)
  47. When Everything is Important But Nothing is Getting Done
  48. Proper use of Git tags
  49. Shipping to Production - Approaches for shipping code to production reliably, every time.
  50. Accidentally Saving the Day
  51. You probably don’t need AWS and are better off without it
  52. How long do software engineers stay at a job?
  53. Eight Points for One Team Is Two Points for Another Team
  54. Choose Boring Technology
  55. The Code Review Pyramid
  56. My guiding principles after 20 years of programming
  57. How To Do Less
  58. Just say no to :latest
  59. No capes: the perils of being a hero-engineer
  60. Writing Maintainable Code is a Communication Skill
  61. Things You Should Never Do, Part I
  62. Overengineering can kill your product
  63. Programmer’s emotions
  64. Do-nothing scripting: the key to gradual automation
  65. Sharing our Engineering Career Framework with the world
  66. A Practical Guide to Writing a Software Technical Design Document
  67. Reduce code complexity: Guard clauses
  68. How to Remember What You Read
  69. Testing in the Twenties
  70. Google Tag Manager, the new anti-adblock weapon
  71. Reddit Interview Problems: The Game of Life
  72. Backpedal of the Day: Type Keys
  73. Our Engineering Principles and Best Practices
  74. Understanding UUIDs, ULIDs and String Representations
  75. Bad engineering managers think leadership is about power, good managers think leadership is about competently serving their team
  76. A day in the life of a professional software engineer
  77. 10 Software Engineering Laws Everybody Loves to Ignore
  78. What is engineering enablement
  79. Why Senior Developers Are Leading the Great Resignation Movement
  80. Polyglot Programming and the Benefits of Mastering Several Languages
  81. Willingness to look stupid
  82. Tips On Prioritizing Tech Debt In A Healthy Way
  83. Your Team is Not "Them"
  84. Researchers Defeat Randomness to Create Ideal Code
  85. How to build an effective working group
  86. Will Nix overtake Docker?
  87. Why flow matters more than passion
  88. Only One Deliverable Matters
  89. The Problem With Hero’s In Software Development
  90. Write code that's easy to delete, and easy to debug too.
  91. Measuring Software Complexity: What Metrics to Use?
  92. Five Books that Changed My Career as a Software Engineer
  93. My Personal Creed of Employment
  94. How to mentor software engineers
  95. Manipulating AST with JavaScript
  96. Embracing Impostor Syndrome
  97. What makes writing more readable?
  98. Everything is Build vs Buy, Even the Cloud
  99. How to be useless
  100. 15 Technical Leadership Qualities That I Try to Emulate
  101. Cost of attrition
  102. An incomplete list of skills senior engineers need, beyond coding
  103. The Pragmatic Pragmatic Programmer
  104. No code reviews by default
  105. Write Shitty Code - why you should and feel good about it
  107. 'Positive deviants': Why rebellious workers spark great ideas
  108. Software development topics I've changed my mind on after 6 years in the industry
  109. The software apocalypse is coming
  110. Developers, your manager is likely clueless
  111. Traditional companies are losing because they mismanage software engineers
  112. Developing engineering talent
  113. Writing Matters: How to improve your written communication skills
  114. The Boring Technology Checklist
  115. Death, Taxes, and Database Migrations
  116. Three things that are limiting your impact as an engineer
  117. How to build microservices with Node.js
  118. Monitoring Performance with the PageSpeed Insights API
  119. Admirable Traits of Tech Leads
  120. Three things that are limiting your impact as an engineer
  121. The UX on this Small Child Is Terrible
  122. Do not log
  123. Confessions of a 1x Programmer