themusicinnoise-site/blog/posts/0119-five-technological-principles-to-live-by.html

97 lines
5.4 KiB
HTML
Raw Permalink Normal View History

2021-01-21 10:36:26 +00:00
<p>A problem that presents itself with our use of modern technologies
and how we develop them is how extremely inefficient it ends up being.
Often times the technological solutions we choose to solve a given
problem are overly complex and rigid, requiring us to be wasteful. As a
result of this demand for poorly designed technologies, suppliers
provide exactly what we ask for, and as such engineers develop
technologies that promote this inefficient use.</p>
<p>Basing these primarily on the UNIX
philosophy<sup><a href="#r1" >[1]</a></sup>, I've come up with a five
principles by which I decide which technological solutions to elect, as
well as how my own software should be designed. It's worth noting that
these are not only applicable to software or even digital technological
solutions, but rather can be applied to any use of technology.</p>
<p><i>Necessity</i>. We must understand this principle not in its
strictest form (i.e. what is absolutely necessary to survive), but
rather in the true sense of what an ordered use of technology is: a
means to achieve an end. We call them "solutions" because they solve a
problem. As such, technology should not be an end within itself, and if
we are to use a technology, it should be to achieve a set goal. If there
is no goal then we should likely not use the technology.</p>
<p>As a note on this matter, we must distinguish technology as a tool
(which is the object of this article) and technology used in art (e.g. a
video game), as in this case the art is the end to which the technology
is ordered.</p>
<p><i>Simplicity</i>. After we determine that a technological solution
is required, and as such have also determined what features we require
of said technology to provide a viable solution, we must always choose
the simplest option available to use. This is to say, a solution that
does only that which we require of it and nothing more. In the (common)
event that this is not possible, we must choose that solution which has
the least amount of excess features. The reason being that the more
complex a system is the higher chances there are of that system having
a structural flaw, and due to the complexity of the technology, solving
it becomes its very own struggle. As such, by having a system that is no
more complex than absolutely necessary, one avoids a larger number of
technological problems. To give an example, one is much more likely to
encounter problems writing with a typewriter than with a pen or
pencil.</p>
<p>This principle, however, should never trump the principle of
necessity. That is to say, we should not neglect a necessity in the name
of simplicity. If a necessity requires that a more complex solution be
used, then this overrides the principle of simplicity.</p>
<p><i>Modularity</i>. In aid of maintaining the principle of simplicity,
a technological solution should also be modular, and therefore
facilitating the addition and removal of modules/components that can add
new features. This permits the base technology to only provide the most
basic and fundamental of functionalities, while also being extensible
such that new features that may be required by the user can easily be
added or removed when need be. Here one could think of the example of a
hunter's rifle, upon which a scope may be mounted.</p>
<p><i>Interoperability</i>. A technological solution must be able to
easily operate with other technologies, thereby permitting that each one
may specialize in a specific task, and the output of one may serve as
input for the next. This principle reinforces the principle of
simplicity by allowing for each individual technology to specialize in
its own task, rather than requiring that a single technology solve the
entire problem. This can be thought of in the sense of an assembly line,
where at each station a different task is performed. Each task is
independent of the one before it, yet they all contribute towards the
same ultimate goal.</p>
<p><i>Universality</i>. The technology must be able to input and output
in a standard and universal format that is not specific to that
technology, therefore facilitating its replacement with a better
solution. This principle serves to enable the previous principle of
interoperability, as it is what allows for one technology to input the
output of another, making proper use of it. It also makes the system of
independent interoperable technologies more flexible, allowing one to
remove one component and replace it with another that may have more
aptitude solving a particular problem. An example of this would be
language itself, as we use a common language in order to communicate
ideas in a standard manner such that it may be commonly understood.</p>
<p>Now, although these principles are great in theory, in practice we
find that often times solutions meeting all these principles are simply
not available. This is especially true in the area of computer programs,
where often times companies will neglect these principles (regardless of
how useful they are) for business reasons. However, they may still serve
as a general guideline when we discern what technological solutions to
choose to solve different problems we are confronted with, and those
technologies that are compliant with more principles should be favored
over those that are compliant with less.</p>
<label id="r1" >[1]</label>
<a
href="https://en.wikipedia.org/wiki/Unix_philosophy"
target="_blank" >
https://en.wikipedia.org/wiki/Unix_philosophy
</a>