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.
miniblog.
Related Posts
It's weird how many languages represent tests as functions. They rarely take arguments and very rarely (never?) call other tests.
Is it the right abstraction?
Cases where it makes more sense to use concrete types rather than generics, even if you can be generic:
I'm not convinced that offering the staging area is a good default for git.
It's an abstraction that newcomers have to learn before their first commit. Subversion style "commit every tracked file" isn't as pretty (`git add` is general) but it's the common case.