New post on technological principles.
This commit is contained in:
parent
e997c85940
commit
8f4a5308e2
@ -0,0 +1,5 @@
|
|||||||
|
filename = 2021-01-21-five-technological-principles-to-live-by.html
|
||||||
|
title = Five Technological Principles to Live By
|
||||||
|
description = Five principles which we should use as a guide when deciding what technologies to use or (in the case of engineers) how we should develop our technological solutions.
|
||||||
|
created = 2021-01-21
|
||||||
|
updated = 2021-01-21
|
@ -0,0 +1,96 @@
|
|||||||
|
<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>
|
Loading…
Reference in New Issue
Block a user