Reads
Books
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.
- Designing the Obvious: A Common Sense Approach to Web Application Design, Robert Hoekman Jr.
- Don't Make Me Think, Revisited: A Common Sense Approach to Web Usability, Steve Krug
- Essentialism: The Disciplined Pursuit of Less, Greg McKeown
- The Subtle Art of Not Giving a F*ck, Mark Manson
Articles
Any articles/posts I've found interesting or valuable over the years. They are stored as GitHub issues.
- How (some) good corporate engineering blogs are written
- Why you need a "WTF Notebook"
- How To Be A Good Listener
- The Bloat in Software Engineering
- Directly Responsible Individuals (DRI)
- The Generation, Management and Handling of Errors
- All code is technical debt
- Productivity tips
- Your small imprecise ask is a big waste of their time
- How to Solve It
- YOLO-Driven Development Manifesto
- Software Engineering Lessons from RCAs of world's greatest disasters
- Simple Sabotage Field Manual - How to Destroy Your Organizations
- The Code Review Pyramid
- Salary negotiation
- If you can’t tell a story about it, it isn’t real
- Speed matters: Why working quickly is more important than it seems
- A system to organise projects
- The Surprising Power of Documentation
- How To Design Software Architecture For Startups
- The D.E.N.N.I.S. system: Résumé tips for Senior Devs
- Get your work recognized: write a brag document
- Treat your to-read pile like a river, not a bucket
- Lessons from a Pessimist: Make Your Pessimism Productive
- Powers of 10: Time Scales in User Experience
- Mary Poppendieck’s "The Tyranny of ‘The Plan"
- Where did software go wrong
- How to communicate effectively as a developer
- YAGNI exceptions
- How to Build Software like an SRE
- First make the change easy, then make the easy change
- 11 Laws of software estimation for complex work
- Why deadlines are pointless and what to do instead
- How to break into senior management
- What you should work on
- How to Write a Git Commit Message
- The advice gap
- Be good-argument-driven, not data-driven
- Don't Go Dark
- Technical Writing for Developers
- A guide to frontend migrations
- Publishing your work increases your luck
- Giving a Shit as a Service: A mental model for service businesses.
- Code vs. No-Code
- Kelsey Hightower on How to Become a Better Engineering Team
- The Documentation Triangle (or, why code isn't self documenting)
- When Everything is Important But Nothing is Getting Done
- Proper use of Git tags
- Shipping to Production - Approaches for shipping code to production reliably, every time.
- Accidentally Saving the Day
- You probably don’t need AWS and are better off without it
- How long do software engineers stay at a job?
- Eight Points for One Team Is Two Points for Another Team
- Choose Boring Technology
- The Code Review Pyramid
- My guiding principles after 20 years of programming
- How To Do Less
- Just say no to :latest
- No capes: the perils of being a hero-engineer
- Writing Maintainable Code is a Communication Skill
- Things You Should Never Do, Part I
- Overengineering can kill your product
- Programmer’s emotions
- Do-nothing scripting: the key to gradual automation
- Sharing our Engineering Career Framework with the world
- A Practical Guide to Writing a Software Technical Design Document
- Reduce code complexity: Guard clauses
- How to Remember What You Read
- Testing in the Twenties
- Google Tag Manager, the new anti-adblock weapon
- Reddit Interview Problems: The Game of Life
- Backpedal of the Day: Type Keys
- Our Engineering Principles and Best Practices
- Understanding UUIDs, ULIDs and String Representations
- Bad engineering managers think leadership is about power, good managers think leadership is about competently serving their team
- A day in the life of a professional software engineer
- 10 Software Engineering Laws Everybody Loves to Ignore
- What is engineering enablement
- Why Senior Developers Are Leading the Great Resignation Movement
- Polyglot Programming and the Benefits of Mastering Several Languages
- Willingness to look stupid
- Tips On Prioritizing Tech Debt In A Healthy Way
- Your Team is Not "Them"
- Researchers Defeat Randomness to Create Ideal Code
- How to build an effective working group
- Will Nix overtake Docker?
- Why flow matters more than passion
- Only One Deliverable Matters
- The Problem With Hero’s In Software Development
- Write code that's easy to delete, and easy to debug too.
- Measuring Software Complexity: What Metrics to Use?
- Five Books that Changed My Career as a Software Engineer
- My Personal Creed of Employment
- How to mentor software engineers
- Manipulating AST with JavaScript
- Embracing Impostor Syndrome
- What makes writing more readable?
- Everything is Build vs Buy, Even the Cloud
- How to be useless
- 15 Technical Leadership Qualities That I Try to Emulate
- Cost of attrition
- An incomplete list of skills senior engineers need, beyond coding
- The Pragmatic Pragmatic Programmer
- No code reviews by default
- Write Shitty Code - why you should and feel good about it
- ARE WE REALLY ENGINEERS?
- 'Positive deviants': Why rebellious workers spark great ideas
- Software development topics I've changed my mind on after 6 years in the industry
- The software apocalypse is coming
- Developers, your manager is likely clueless
- Traditional companies are losing because they mismanage software engineers
- Developing engineering talent
- Writing Matters: How to improve your written communication skills
- The Boring Technology Checklist
- Death, Taxes, and Database Migrations
- Three things that are limiting your impact as an engineer
- How to build microservices with Node.js
- Monitoring Performance with the PageSpeed Insights API
- Admirable Traits of Tech Leads
- Three things that are limiting your impact as an engineer
- The UX on this Small Child Is Terrible
- Do not log
- Confessions of a 1x Programmer