I build tools. Scripts, plugins, hacks, APIs. Glue that makes automated continuous integration and continuous deployment systems come together out of open source projects like Jenkins, ansible, Hashicorp vault and consul.
Sometimes I find a similar error message or similar behavior someone has taken the time to write up and
post on a website somewhere.
Even better, I find someone has written up and posted an answer or solution to the error or misbehavior.
Or I get enough of a direction to work through to an answer.
Now I have a problem and a workable solution. If I think it might be of use in my work I document it for
future reference. If I see it might be useful to someone else, I’ll put it here.
“intuitive engineering” describes taking physical structure and system design out of the lego or erector set
viewpoint — where you piece things together one-by-one — and into an understanding of the art of engineering.
Watch really complex systems, say a network, for awhile and you find unexpected interactions become normal
as complexity increases. The same is true for CICD systems.
Working with instead of against this is:
-
Avoid wherever possible, complexity, and where you find complexity, work toward a simpler design as a goal.
-
The elegant, aesthetically pleasing solution is also in most cases the least effort and
personnel to support in the long run. -
Expect and deal with misteps as they show up – complex designs can present opportunities as you work
through them that are NOT visible at the start of the project. This is true in building construction.
It is true in network and system design, in software design.
Make that discovery part of the process, take
advantage of those simplified and elegant changes as they present themselves. -
Look for the consequences several steps ahead for each decision.
How locked into a design does it make you?
Can you live with that?
Is there a less restrictive/simpler/better/more elegant decision in design
that can be made that doesn’t block off avenues?
Can you solve a problem once and reuse that solution?
Is there a modular or plugin design that would keep a flexibility? -
Use open source tooling where that is practical. Use best of breed. Build the interconnections and tooling passing from one system to another. Customize as little as possible.
I live in the Northeast and I am currently employed by Verizon Media Group as a Senior Devops Engineer.
—doug