Rich mentions that things like performance are a property of the artifact, not the construct. But that we focus so much on the experience of the construct with a reference to the amount of typing required.
So, what's one critical area where we have to distinguish these two
things and look at them from a perspective of them being easy and
being simple? It has to do with constructs and artifacts. Right? We
program with constructs. We have programming languages. We use
particular libraries, and those things, in and of themselves, when we
look at them, like when we look at the code we write, have certain
characteristics in and of themselves.
But we're in a business of artifacts. Right? We don't ship source
code, and the user doesn't look at our source code and say, "Ah,
that's so pleasant." Right? No? They run our software, and they run it
for a long period of time. And, over time, we keep glomming more stuff
on our software. All of that stuff, the running of it, the performance
of it, the ability to change it all is an attribute of the artifact,
not the original construct.
he then goes on to say
Does the software do what it's supposed to do? Is it of high quality?
Can we rely on it doing what it's supposed to do? Can we fix problems
when they arise? And if we're given a new requirement, can we change
it? These things have nothing to do with the construct, as we typed it
in, or very little to do with it, and have a lot to do with the
attributes of the artifact. We have to start assessing our constructs
based around the artifacts, not around the look and feel of the
experience of typing it in or the cultural aspects of that.
The "Can we change it?" gives me pause, I would have thought that was an attribute of the constructs used to build it.
He goes on to say
One of the problems I think we have is this conundrum that some things
that are easy actually are complex. So let's look. There are a bunch
of constructs that have complex artifacts that are very succinctly
described. Right? Some of the things that are really dangerous to use
are like so simple to describe.
Which gives me even more confusion about what an artifact is in this context! I originally thought it was a software project, but now it doesn't seem so.
This quote seems helpful for answering, as indicates that simplicity is about the artifact. Not the construct.
So the first part of making things simple is just to choose
constructs that have simple artifacts. But we have to write our own
constructs sometimes, so how do we abstract for simplicity?