I wonder to what extent you were just finding actual abstractions that the two of you could share. &quot;For each number&#x2F;thing in this list, you do a calculation&quot; is an abstraction from an old school &quot;for (i = 0; i &lt; n; i++)&quot; loop. A lot of modern conveniences in programming are abstractions that ordinary language has had forever.<p>A lot of people in programming think of abstraction in terms of AbstractFactoryFactories or LifecycleConfigurators and then start to complain about architecture astronauts and leaky abstractions. But there are more basic abstractions that we use every day, which are perfectly precise, don&#x27;t leak[1] and are near-indispensible.<p>[1] Except perhaps in terms of performance.