Attention: We are retiring the ASP.NET Community Blogs. Learn more >

Abstraction vs Concretion

When we design software we usually build abstractions on top of other abstractions that we or someone else built.

When we build a new abstraction we have to keep in mind that the goal of any abstraction should be to let the user of the abstraction express something more concrete than without using it. We need to build abstractions to make our app fit the way the user 'mental model'.

For example, if I'm using an email component library, I write:

mail.From = aaguiar@aaguiar.com;

mail.Send();

I'm using an abstraction someone built, but I'm really not doing anything abstract, I'm being as concrete as I can be.

When I say we need to build better tools for the corporate developer, I mean that we don't want to provide him ways to build better abstractions. We need to provide the corporate developers ways to express their knowledge in the most concrete way possible.

 

No Comments