You probably won't pick the perfect abstraction the first time. However it's the process of picking and trying that helps you find it.
Related Posts
It's really satisfying to use a profiler for the first time on a project. I always find a big performance win with only a small code change.
It's never the code that I expected to be slow, however!
It's weird that GitHub shows time since the last commit, but not time since the first commit. It's a nice way of seeing how mature a project is.
Individuals and interactions over processes and tools => Competence trumps process
Working software over comprehensive documentation => Minimize time from program launch to deployment of simplest useful functionality
I really like the DoD's phrasings of classic agile maxims: https://media.defense.gov/2018/Oct/09/2002049591/-1/-1/0/DIB_DETECTING_AGILE_BS_2018.10.05.PDF