I've read thousands of articles over the last 20 years in Tech. Agile, Career, Distributed Systems, Engineering Management, Metrics, Programming, Testing, Types... Below are The 22 Articles that Impacted my Career the most ➕ my main highlights from each one. 🧵🧵🧵

1️⃣ On Software Rewrites: "Things You Should Never Do, Part I" by Joel Spolsky (@spolsky). → Link: https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/ ~2013: It heavily influenced me probably 10 years back and explains a lot about why I’m not a big fan of “Green Field Projects.”

2️⃣ “Change Your Organization” as an IC, or “For Peons” by Jim Little (a.k.a @jamesshore) → Link: https://web.archive.org/web/20130721011202/http://agile2003.agilealliance.org/files/R1Paper.pdf ~2014: Be a Change Agent has been a goal of mine since forever. This paper gave me an approach that's proven to be effective & avoided many frustrations.

3️⃣ “Generalizing Specialists: Improving Your IT Career Skills” by Scott Ambler (@scottwambler). → Link: http://agilemodeling.com/essays/generalizingSpecialists.htm ~2008/2009 and It helped me a lot to understand how to think about my skills and to evolve as a professional focusing on being a “T-Shaped Engineer.”

4️⃣ Patterns for Effective Acceptance Criteria by Brett Ansley (@pbansley) → Link: https://brettsbabble.wordpress.com/2011/03/26/patterns-for-effective-acceptance-criteria/ ~2012: I came across this one inside @thoughtwork's "internal wiki" while I was working there. It completely changed how I think about User Stories & BDD in general.

5️⃣ The Law of Leaky Abstractions by Joel Spolsky (@spolsky). → Link: https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/ ~2016: it helped me to see how libraries, programming languages & frameworks will always abstract you from things that might be crucial for you to solve a deep problem.

6️⃣ How to Misuse Code Coverage by Brian Marick (@marick). → Link: http://www.exampler.com/testing-com/writings/coverage.pdf ~2014: It was mind-blowing in so many ways. It introduced me to the concept of "Faults of Omission" and made me go on the rabbit hole of Checking vs. Testing.

7️⃣ Test Mercenaries by Mike Bland → Link: https://mike-bland.com/2012/07/10/test-mercenaries.html ~2015: I'm always impressed by how much I learn every time I revisit this blog post. This explains in details how Google changed its Engineering Culture on Unit Testing around the time they acquired YouTube.

8️⃣ Mocks Aren't Stubs by Martin Fowler (@martinfowler) → Link: https://martinfowler.com/articles/mocksArentStubs.html ~2011/2012: I remember exactly where I was when I read it and had many epiphanies. It's that good. Print it and read it on paper. Take notes, carry them around with you.

9️⃣ The Combined Engineering Software Model by Brent Jensen (@BrentMJensen). → Link: https://testastic.wordpress.com/2016/01/03/the-combined-engineering-software-model/ ~2015: Although this was published in 2016, for me, it was a consolidation of the many mental models I learned from Brent & @alanpage listening to their podcast in 2015.

1️⃣0️⃣ Consumer-Driven Contracts: A Service Evolution Pattern by Ian Robinson (@iansrobinson). → Link: https://martinfowler.com/articles/consumerDrivenContracts.html ~2012: Read this on ThoughtWorks Anthology Book and it was mind-blowing. This article set all the foundations of we call "Contract Testing" today.

1️⃣1️⃣ Goto Fail, Heartbleed, and Unit Testing Culture by Mike Bland. → Link: https://www.martinfowler.com/articles/testing-culture.html ~2014: I've more highlights on this article than I have in most books. Probably the canonical article I would recommend anyone to read on Unit Testing and Engineering Practices.

1️⃣2️⃣ Being glue by Tanya Reilly (@whereistanya). → Link: https://noidea.dog/glue ~2019: Another article that has had a big impact more recently on my career. I've found myself recommending it to multiple folks struggling career-wise without knowing why. It's eye opening! 🤯

1️⃣3️⃣ Strong Typing vs. Strong Testing by Bruce Eckel (@BruceEckel). → Link: https://archive.ph/sNiUC ~2013: Not a game changer now, but kind of revolutionary for me when I switched from Java to Python. Made me think about a dimension of programming I was blind to: Types.

1️⃣4️⃣ Testing vs. Checking by Michael Bolton (@michaelbolton) & James Bach (@jamesmarcusbach). → Link: https://developsense.com/blog/2009/08/testing-vs-checking ~2014: what seemed to be a subtle difference in my vocabulary revealed to me as a big gap in my knowledge on why automation alone was never enough.

1️⃣5️⃣ Implementers, Solvers, and Finders by Randall Koutnik (@rkoutnik). → Link: https://rkoutnik.com/2016/04/21/implementers-solvers-and-finders.html ~2022: What if we stopped using Seniority/Titles as a proxy and instead started to use the degrees of autonomy & what the job entails to describe things?

1️⃣6️⃣ How to mentor software engineers by David Golden (@xdg) → Link: https://xdg.me/mentor-engineers/ ~2021: Sent this article to many staff engineers trying to structure & be more effective with their mentees. Thanks @dballona for sharing!

1️⃣7️⃣ The Engineer/Manager Pendulum by Charity Majors (@mipsytipsy). → Link: https://charity.wtf/2017/05/11/the-engineer-manager-pendulum/ ~2020: First article I read that made crystal clear the numerous benefits career-wise of switching back and forth between as an IC and as a Manager.

1️⃣8️⃣ Advanced Time Management Principles by Shreyas Doshi (@shreyas). → Link: https://threadreaderapp.com/thread/1492345140492472321.html ~2022: Exported this thread to read on Kindle & Had many epiphanies. The LNO (Leverage, Neutral, Overhead) Framework is fundamentally different than everything I'd seen. https://twitter.com/shreyas/status/1492345140492472321?lang=en

1️⃣9️⃣ On Pair Programming by Birgitta Böckeler (@birgitta410) & Nina Siessegger (@sssggr) → Link: https://martinfowler.com/articles/on-pair-programming.html ~2020: Hands down the best article on Pair Programming I've read. It reflects 💯 my experience and many good practices my team and I also came up with.

2️⃣0️⃣ The New User Story Backlog is a Map by Jeff Patton (@jeffpatton). → Link: https://www.jpattonassociates.com/the-new-backlog/ ~2018: It helped me tremendously to create a methodology at Amex to slice initiatives into global releasable increments and avoid big-bangs. More: https://www.linkedin.com/pulse/behavioral-interview-answer-landed-me-three-650k-job-offers-ghisi/

2️⃣1️⃣ HOWTO negotiate your salary and benefits - for women by Valerie Aurora (@vaurorapub). →Link: https://archive.ph/1ai4e ~2010: I've lost track of how many times I shared this with colleagues. It opened my mind and helped me to start to negotiate salary early in my career.

2️⃣2️⃣ Measuring Software Eng. Productivity by Laura Tacho (@rhein_wein) & How Uber is Measuring Eng. Productivity by Gergely Orosz (@GergelyOrosz). → Link 1: https://newsletter.pragmaticengineer.com/p/engineering-productivity → Link 2: https://newsletter.pragmaticengineer.com/p/uber-eng-productivity ~2022: Two seasoned Eng. Leaders sharing their views. 💚