💾 Archived View for gnebbia.net › gemlog › articles › on-engineering.gmi captured on 2023-11-04 at 11:35:12. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
I have always been a huge fan of both the wizard book and the legendary
lectures provided at MIT by Sussman and Abelson.
Each of those lectures were really revealing and brought me to the
understanding of very deep concepts that have profoundly changed me into
a better engineer.
Within one of the first lectures Prof. Sussman shows the main techniques
to control complexity, stating that, engineering is all about designing
while controlling complexity.
Just had my PhD defense in Electrical Engineering and after having
spent both my bachelor and master's degree in a set of courses going under
the label of "engineering" I wanted to share few thoughts on the meaning
of this mystical word, "engineering".
What exactly is "engineering"? What do an electrical a mechanical or
a civil engineer have in common? Is there a set of concepts they share
that is common to all engineering fields? The answer is yes and hides
within the core knowledge that every engineer should own.
In fact, it is common to believe that engineers share a common knowledge
of mathematics, physics and programming. Anyway if we think about it,
although this is true, these subjects do not highlight the real traits
that tell engineers apart from other scientists. In fact, A biologist,
a geologist or a physicist are also sharing that body of common knowledge.
Surely, one of the difference is about the aim, while a scientist has
to explain and describe phenomena, the aim of an engineer is to design.
So to make an example, a physicist may be interested in explaining why a
certain electromagnetic phenomenon happens while an electrical engineer
may be interested in designing signal amplifiers.
But aside from that, what other things do really distinguish an engineer
from a scientist?
Well a key difference is in the approach followed in problem solving,
engineers share a way of solving problems that is different from that
of other scientists.
Well, as already stated, engineering is all about controlling complexity
and this is achieved by three fundamental techniques:
These techniques are common to all of engineering designs.
The mantra of engineering is:
We control complexity by building abstractions that hide details
when appropriate. Think about the operational amplifier (op-amp).
It is common to use op-amp without describing everytime what is
the configuration of the transistors, their region of operation and
other design details, we just use op-amps as black boxes.
We control complexity by establishing conventional interfaces that
enable us to construct systems by combining standard, well-understood
pieces in a mix and match way. Think about plugs and sockets, we
tend not to design appliances which have custom plugs or houses
with different sockets which are only compatible with one or two
domestic appliances. We favor unified interfaces.
We control complexity by establishing new languages for describing
a design, each of which emphasizes particular aspects of the design
and deemphasizes others. Think about UML, circuit diagrams, wiring
diagrams and so on.
That's it!