Skip to content

EternityForest/AnyoneCanDoIt

Repository files navigation

AnyoneCanDoIt

An open source guide to mistake-resistant engineering for plans that don't require natural talent to do. (work in progress)

Introduction

A lot of planning these days includes the word "carefully".

What does it mean? Well, it means you don't get distracted and do the wrong thing. Your hands don't shake and you don't forget anything.

In essence, it means "this task requires a high level of skill, possible talents that not everyone can learn, and you're the one who's gotta do it, sucker!".

As everyone who's ever broken anything knows, this is unscientific at best and terrible planning at worst.

Instead of just relying on our own ability, let's think of some ways we can stop these failures before they happen!

This is a fairly extreme set of principles. They likely will not apply to every situation.

Many are mostly relevant to product design, but they also apply to the selection of existing products.

They are derived from a combination of personal experience, study of mistakes of others, and adaptations of industry techniques like [https://en.wikipedia.org/wiki/Crew_resource_management].

Nonetheless, I believe they may be useful in spotting likely issues with a plan.

Principles

State/Action confusion

Things should not be labeled in such a way that would make someone confused as to whether they represent an action like "Turn this on" or a state like "this is currently on".

This mostly only applies to software toggles.

Powder Problems

A very large number of accidents can be stopped by keeping things, like a pile of paperwork, away from things that could spill or splash, like your full cup of coffee.

This seems to be one of the most common mistakes people make, it is very easy to overestimate your ability to control liquids and powders. This includes not wearing gloves when handling something that should really be handled with gloves.

Redundancy

There should not be anywhere in your plan where a single failure can have significant consequences. One broken rope, one person dropping something, or one lost flashlight shouldn't affect the plan at all.

Two is one and one is none, not just with things, but with actions. If the plan starts with "it's basically impossible, but I know one guy who can do it by hand for a good price" you might want a different plan.

When adding redundancy, often it is best to use unrelated technologies.

People use candles and lanterns as a backup for a flashlight not because they are in any way better, but because they are different enough that they may not be affected by the kind of thing that might cause all your flashlights to fail at once.

Similarly, when double checking you have all the items packed, you may choose to count the number of items on the list and in the box, without concerning yourself with anything but the total number, and then check off each item individually.

This kind of random unrelated strategy may uncover problems not found simply by repeating the same method twice.

Of course, when one method is very reliable, having two copies of the gold standard isn't usually a bad thing.

"Life Experience": Is it really worth it?

While we absolutely should respect, listen to, and learn from the people who have seen and done a lot, I doubt it is any guarantee that they know any particular fact. Many people will use their general experience to make specific claims without evidence, by saying "I know how the world works, you don't" or similar.

This idea is sometimes used to convince people to put themselves through all kinds of unnecessary torture, by claiming things like "you need to learn how to handle the hard stuff if you're going to succeed". This is especially prevalent with sports, with the whole "I learned a lot about life on the gridiron" thing, or the "all those broken bones made them who they are" idea.

In reality, going through a lot of stuff may prove you can survive a bad situation, but it's not going to teach you much about avoiding it in the future, especially if you insist on doing the same thing. Living on the streets for a year is no guarantee you're going to know how to run a Dairy Queen, and in fact, many of the habits people learn in survival situations actively increase the risk of problems down the road. Many poor people are incredibly kind, but some are plain evil. It might "build character"... but what kind of character exactly?

There are heroes who are known the world over for their resolve and toughness. There are also millions of people who made great contributions to the world by being careful, looking at the evidence, and avoiding getting themselves into trouble, without ever willingly doing any of these "character building" things we hear so much about.

Clearly, one does not need to get blackout drunk and hung over, tear a ligament at the gym, or backpack across a foreign country alone to accomplish things, and many do all those things, and wind up in quite the sad state anyway.

Always follow procedure, even when you are absolutely sure you don't need to

There are multiple reasons for this. One is that your assessment may be wrong, and by deviating from procedure, you leave yourself open to the consequences of your assessment, whereas by following it, you can succeeded regardless of the quality of your own judgement

The more important reason is that it is said you will play the way you practice, and every time you practice doing it wrong, you make it harder to remember to do it right.

You may think you are talented enough to keep it all straight in your head (and even the most obvious mistakes can be made by the best of us), but what about the people around you?

If you drag others into your deviation from procedure, you make their lives harder.

And if you are the leader, it may well be you that takes the blame for the mistakes they make.

More generally, never drag another person, whatsoever, into your playing fast and loose, doing things the hard way lifestyle. When someone says they can't do something your way, listen to them.

False Resolution By Unusual Tasks

FRBUT is a phenomenon I propose to explain a common source of mistakes.

The effect occurs when a set of routine tasks are interrupted by an unusual task or sudden difficulty in a routine task.

Upon completion of the unusual task, one has spent as much or more time on it as they would have on the routine tasks.

Therefore they experience most of the same conditions they would, had the unusual task not occurred, and had they completed all routine tasks.

As this time was spent not thinking at all of routine tasks, conditions are perfect to forget that there were any tasks at all besides the sudden unusual one.

This effect could possibly be prevented by rigorous use of checklists, as crossing off the unusual item provides a chance to review the usual items, by completing all routine tasks first, or by habitually treating task completion as a danger point, opposite of the normal connotations of completing a task.

Nothing to prove

If you don't want to do something, and it doesn't need to be done, there's no sense wasting thousands of hours to prove you can.

Nothing to hide

Every secret or lie you tell will likely require maintenance. Perhaps with more lies, and the tower will eventually collapse.

Not only this, but any slightly bad thing you do can be used as leverage by those far worse than you.

The shady recesses of crooked deals, scams, petty theft, and not-quite-white lies are simply not worth it.

A stolen item can be found anywhere, by anyone, at anytime.

Not only this, but immoral actions are generally very hard to reverse, and have completely unpredictable consequences. You don't know who will be angry, what they can do, or who will want revenge.

In every way, and on every level, even the common everyday crimes, hurtful actions, and lies, are a bad deal.

Redundant information

Have you ever seen a Claymore mine that says "front towards enemy"? How do you know that side is the front? Most people will probably guess correctly, and in the military, one is presumably trained.

But in civilian life, many of us would rather see "this side up" explicitly.

In mechanical design, an excessive number of straps, bolts, and constraints can fight each other, and be a bad thing.

In labeling and instruction, redundancy can be positive, because it gives multiple chances to correct an error.

A "fully idiotpoofed" claymore might have both the front and back labeled as such. You might not want someone who needs that kind of thing to be using a Claymore mine, but on something like a washing machine, it's easy to see the value.

Whenever there is ambiguity, as in "does 'push right' mean to push it from the right, or push on the right end", ensure that it is possible to figure out, without assuming any preexisting knowledge, even if some of that preexisting information seems obvious.

Firebreak points

I forgot my mask one day. In the process of buying one in a hurry, I lost my wallet.

Mistakes generally cause other mistakes. Things propagate via chains of cause and effect. To control this, one can avoid ever having long continual periods of time with a scheduled plan.

Even if there is no reason to suspect a problem, reserve time is critical for preventing error propagation.

These reserved time periods should ideally be absolutely as empty as possibly and truly reserved for future assignment, nothing that can't be cancelled should be planned for them, and they should not be outside of and in addition to any extra time allotted for any particular project.

Storage and organization

It's essentially always worth the money to buy a case for your phone. If you're gonna buy something that needs an extra adapter, buy one that doesn't if you can. Use Bluetooth headphones instead of corded ones.

Get a labelmaker. Don't carry anything heavy without a dolly. Use padding to protect anything expensive. Physical objects are a common source of failure, so the accessories we use to manage them, and the upgrades that make them easier to manage, are worth it.

Force or precision: pick one

Never design anything with the words "firmly but carefully" in it. Hands and tools slip under force. If force is needed, you should be able to use a hammer, or you should use a better design.

Stay away from all screws aside from Torx heads. Phillips requires pressing and turning at the same time. No more of that!

Especially avoid anything involving "carefully prying". Nobody wants that.

Insanity is believing Einstein ever said that dang quote

Most worthwhile progress is made by doing the same thing over and over in slight variations till the results change.

This quote was never said by Einstein so far as I know, and it is fairly harmful, especially in engineering, where it is used to advocate a return to older technology before even trying to improve the newer tech.

The decision to keep going or to turn back must be made with sound logic, not arbitrary observations of small numbers of situations, most of which are more influenced by outside factors than the action in question.

If this quote were any more popular, we would have no musicians, because they would stop practicing after a lesson or two.

Rather than asking "how is this working", ask "has this worked for anyone else" and "what reasons do I have to believe this will work in the future" and "what assumptions do those reasons rely on".

All too often this quote is a lazy shortcut used to dismiss things without thinking.

Stopping the dropping

Dropping things is always a hassle, made worse by the fact that people will advise you to be more careful next time, and never explain how.

The easy way is to examine how you are holding things and take note of the points of failure. If you are relying on friction, a little less pressure for even a moment will cause a slip. If you rely on gravity, any tilt will cause you to drop it.

Pay attention to the margin of error. The goal is to put as much distance as possible between you and an accident. Be sure that small movements can't result in a drop. I like to wrap a finger around the handle of a cup, and additionally put my pinky underneath for a very slight bit of extra protection, if I'm going to be walking around a lot.

Next, consider what happens if you DO drop something. The higher up, the more damage. So avoid unnecessary fussing with things above a high drop. Always use wrist and neck straps when available. Always use protective cases.

Dropping things is one of the most common mistakes, and it's rarely answered with a real plan.

Watch your wallet (and other similar things like it)

Always have a backup plan for highly critical items. Assume you will lose them at the worst possible time. Have things like Kroger's mobile payment app ready-to-go should you find yourself with a full card or groceries, and no way to pay for them. I didn't, and spent a half an hour installing the app in the middle of QFC one day when I left my cards at home, thanks to a crappy and worn out wallet.

The only reason I was able to do that? I had the card info saved in Chrome, and the security code written in an old notetaking app.

Things like that slightly increase your risk of fraud. But this must be considered against the odds and results of losing a card at just the wrong time, and the effectiveness of fraud protection.

Similarly, you can hide a backup set of keys in a backpack pocket or even an outdoor safe, if you find one you consider secure enough.

Your phone, too, is not perfectly immune from being lost or stolen. Use the best case you can find, enable any tracking features you want, and be sure to back up all data.

Minimum energy

Don't use dynamite. Or rat poison. Or High voltages, or big strong springs, or giant hydraulics, or anything else with real power behind it, unless you actually need it.

"Safety" should not be the goal. What you want is harmlessness.

You don't want a plan that won't hurt anyone. You want a plan that cannot hurt anyone, because there is no part that has the capability to do so.

If you need a training video to explain how not to hurt yourself, look at eliminating that step entirely.

Minimum material

You are trying to make excellent products -- not to use up excellent materials. Every excess ounce of matter, be it steel or gold, is a waste.

When someone says "solid gold" they mean "I probably polluted an entire village somewhere because I didn't have any better ideas"

This applies to non-physical "material" too, like lines of code. Anything you have to buy, carry, maintain, etc, is a liability.

Go with things that are cheap, common, and inert.

Avoid hidden state

Hidden state is anything that has a variable condition, such as a door that can be open or closed, but which does not make that state visible, or makes it insufficiently visible.

Appliances that get hot should have power lights. Just as you shouldn't trust a person to do something later, you shouldn't trust a person to check on something later.

There should not be any "do X, then check Y" steps. X should obviously and instantly fail if Y is in the wrong state.

Ideally, all things should return to a default safe state if left unattended.

Nondestructive verifiability

A related, and possibly more important concept, is that you should always be able to verify that something was done correctly after it has been done, without undoing it.

At most houses, one cannot check if they left the iron on, without opening the doors.

The state is not exactly hidden, but the result is that there is no state in which things are both guaranteed to remain as-is, and inspectible. This creates a big problem, because once the task is done, you must rely on memory or documentation, and unless you videotaped everything, documentation can be forged, making it impossible to prove that the task was done correctly.

This is often not practical to solve without online sensors, but occasionally can be resolved with transparent covers.

Positive locking

This probably has a well-defined engineering meaning, but in everyday language, a "positive" click, latch, lock, or connection is one that is absolute. You cannot disconnect in any way but the intended manner without breaking something, and it cannot incrementally loosen over time.

Consider velcro, which has varying levels of "attachedness" depending on how thoroughly it was pressed together, and its age. Or, consider a loose bolt which can come undone by vibration, or two parts held simply by having "just the right amount" of friction to allow someone to wedge it in securely.

Contrast this with a magnet, that will not detach unless the holding force is exceeded, and will not slowly come undone under vibration. Or, the lock on a front door.

Positive locks are usually held in place by physically blocking the path of something, friction is not particularly relevant.

Screws can be considered positive under vibration-free conditions, but nuts and bolts can and do undo themselves in some cases if nothing is done to stop this.

Don't trust elegance

Scientists and engineers LOVE simple, short, expressions of some deeper truth, that cuts right to the essence of what it means to be a pencil or a knife or a razor or something.

They are mathematical theorems made concrete. No part could be added or removed and still make sense, and not much can be changed without totally changing the character of the whole thing. The people that like this stuff might use the word "perfection" to describe it.

They also love to wonder why consumer products aren't built like this anymore. To everyone else, it's obvious.

Non-engineers are trying to sign a check and have stuff work, not marvel at your skill. The rest of us will be bored long before we ever have a clue why you did what you did.

And more than that, simplicity usually just moves the complexity elsewhere, namely, to the user. It's another word for "manual".

Elegance is a design constraint that doesn't accomplish much.

It results in parts that perform multiple functions at different times, things that loop back on each other so that everything affects every other part, and nobody will have a clue what you're doing.

Even untrained people can instantly recognize the genius of things like that, but most of the time, it's not practical.

It's also generally ugly and delicate, because the aesthetic parts, the function parts, and the protective parts are one and the same, and can't be optimized separately

Many argue that it's just the price of fine craftsmanship, that an old 1800s writing desk was not meant to be set drinks on, but accepting that principle means putting the responsibility back on the people, rather than preventing failure at the design stage, where you have the best chance of stopping it once and for all, regardless of unexpected circumstances.

A more extreme statement of this might be "just right is all wrong". When there's nothing to add or take away, and every piece fits perfectly, ask yourself what happens when someone drops it in the mud and it's not so perfect anymore.

No guessing

You should never have to adjust something you can't immediately see the results of, while you're doing it. Aside from aesthetics, you mostly shouldn't have anything that needs "adjusting" in the first place.

There shouldn't be too many tweakable parameters you have to get "just right" to make it work. Those always result in something getting out of calibration over time, and the whole thing goes down for a week while you wait for the guy who knows how to fix it again.

If there is something that needs adjusting (usually something that directly affects people, like light levels), it should be controlled in real time, with a knob or a slider. No "Reboot and change a config file" or any such nonsense.

In general, things should adjust themselves. Every adjustment the user makes is usually a failure the designer made.

This also applies to pretty much any kind of configuration or setup. Things should just work, and you shouldn't need to tweak them or use a different version for every possible situation.

Too many tools

Avoid having two similar tools for slightly different applications if you can. They can almost always be merged, unless the task is so large that modifying them takes too much time.

Especially avoid creating a new tool to avoid learning an industry standard that you know you will have to learn anyway.

No mental rotation

Just throw the idea in the bin right then and there if it involves accurately imagining something rotated or flipped.

Things like reading a map that is not oriented in the correct direction, manually inverting document content that is intended for double-sided printing, and so on, should be treated with extreme care.

No arbitrary mappings and remappings

If your plan has something like "oh yeah A fits into C" or "just press Ctl-N" or "A is also called 1 in some places", you need to document every step, or avoid the whole plan. Nobody should have to memorize nonstandard arbitrary codes.

No duplicated information or entry

No reporting the same information to different sets of people at different times. No giving employees multiple ID numbers that apply in different contexts.

No manual bookkeeping that relies on someone updating one document to stay in sync with another. This should either be automated, one person should be dedicated to this, or the whole plan should be scrapped.

The only time a user should do the same thing twice is as a confirmation. Redundancy should be part of the automated process, not something you do yourself.

When a confirmation is needed, the automated system should immediately check that the data is consistent.

Requiring a user to reliably do the same action more times than needed is not redundancy, it is just multiplying the single points of failure, unless there is tolerance for some of them to be erroneous.

A user should not deal with both the processed and unprocessed version of information.

Avoid anything like common credit card receipts, where one has to write both the tip amount and the total, as the total can be calculated from other information and there is no need for a person to do so.

Most such cases that use the extra manual calculation step as a confirmation can be replaced by an automatic calculation, and an explicit confirmation prompt.

Do not be confident, and don't trust someone because they're better than you

This is neither a football field, nor a chess club, nor a Eugenics festival.

It is not an engineer's job to worship anyone's superior body or brain.

An engineers job is to use careful analysis and the latest tech to achieve results above and beyond the limitations of the body and mind, for the good of all.

Someone who takes great pride in being smarter than you likely does not understand this.

And when it's true, it can be even worse, as they may not even notice how incomprehensible their designs are, causing everyone around them to make mistakes.

Respect the "blue collar workers"

No matter how long your day was at the office, I am quite sure the team that had to install whatever garbage you're building was far longer.

If they tell you something, believe it.

Sometimes non-technical people have some unscientific ideas and think things are "too cheap and plasticity" or "not powerful enough" or something, but even then, they probably have at least one legitimate complaint, and ten more they aren't even telling you.

The ones who actually use these systems in real life know a lot more than the ones who design them from behind a desk.

Use what you have, buy what you need

While helping a friend move, someone once repeatedly tried to convince me to carry various things like couches and bookcases by hand, across level ground, with a perfectly good dolly sitting idle.

Their reasoning? "It's Faster!".

Speed and flexibility is quite often used as a rationale for doing things the hard way.

Unless you enjoy being sore at the end of the day, I see little reason to not use perfectly good existing things, rather than do more work yourself.

Everything you do can fail. Things that happened in the past and already exist are the closest thing to truly predictable we have.

Don't throw stuff away

Throwing things away is selling them, and being paid in empty space. If you don't need the empty space, you're just wasting things.

But don't hoard analog junk in the first place

It's heavy, it's delicate, it takes up space, and it only does one thing.

You might want to keep that outfit you wear once a year, but think twice before you buy that clock radio, corded power drill with a brushed motor, or other such thing. Tech always improves, so there's rarely a reason to mess with the older versions.

Even a desktop computer is questionable if you aren't a hardcore gamer. Think light, solid state, digitally controlled, and futureproof.

Every item has some kind of cost in terms of space, maintenance time, hassle required to use, weight to carry, or even subscription service costs. While the total number of items, and the level of complexity they add is irrelevant, the costs of these items is very relevant.

A shelf of action figures may have very low cost, but a second fridge using energy and blocking a path may have a very high cost.

Watch the clouds

"Cloud services" are very popular, but they can disappear at any time, and sometimes cost money constantly, and it doesn't work without the internet. As more and more software becomes cloud oriented, you may want to start moving away from such things.

Especially watch out for any physical devices tied to a specific cloud services. Voice assistants tend to be from very big companies, and they probably want to keep selling data, so you might be able to trust that they will be around for a while.

But other things, like smart thermostats, can and have completely dropped support for old products.

The ideal electronic device for consumers is connected, but in such a way that it can be controlled locally, without relying on the manufacturer after you already bought it, but these products usually take some research to find.

There is no later

Avoid any plan that involves a person remembering "when X, do Y" or "in 30 minutes, check on the pot".

Especially avoid anything that requires regular recurring maintenance.

The cheapest plastic may last 500 years, while steel used in the same place may be total rusted when left alone.

Choose plans that are independent of any human action, and especially independent of any specific person.

The best way to predict the future is to create it yourself. As people's future state cannot be effectively predicted, anything dealing with the future should be left to machine.

If you're leaving a pot on the stove to do something else, set a timer on your phone. If you need to bring something with you to work tomorrow, leave it where it will be impossible to miss while getting ready, and additionally set a reminder.

Don't assume you or anyone else will be able to remember something later.

And especially watch out for statements of the form "when X, I will do Y".

I personally usually treat those as a complete impossibility that I am guaranteed to forget, if the matter is of any importance.

Tests don't predict the future

Things are not guaranteed to behave as they did in testing in all cases.

If it works in a test, but theory says it will fail, watch out.

No ordering dependencies

Avoid manual processes with steps that must be done in a particular order. This is a common type of error that can be eliminated in the design stage.

Explicit, not implicit

Where possible, avoid expecting anyone to manually determine unknown information, even when it is fully specific by present information.

Examples include inches to feet conversion, or manually finding the center of a marked circle to drill a hole.

Watch for highly transported objects

An object is unlikely to be lost if it stays in one place. When a cheap object such as a pen or pair of scissors is used in two locations, it is likely far better to duplicate the item rather than transport it.

Transported objects create an element of both variable state and a dynamic time region while it is in transit.

”Kits" for accomplishing an activity are valuable enough to warrant even large amounts of duplication.

Atomic time regions

An atomic time region is the period between beginning an activity and completing it, when the activity cannot be abandoned during the region.

A section of fast moving traffic is one such example. There is neither a way to exit at an arbitrary point, nor any inherent stability that would return things to a safe state were the driver to stop paying attention.

Another example is the time between taking an item out of a pocket to use it, and returning it, during which it can be lost.

These regions should be minimized, and things should be designed such that things can be paused or stopped at arbitrary points without consequence.

Captive objects

Things not meant to separate should not be able to easily, or should at least be able to stick together by themselves.

None of this "hold these three parts in place while you insert rod X" business.

Valuable items such as keys and wallets can be tethered to the inside of pockets using carabiners and grommets. Pens can be affixed to clipboards.

Where periodic separation is required, a slipped knot, highwayman's hitch, or mechanical device should be used, but only one that requires definitive action to separate.

A tether that can become undone simply through tension is not secure, and magnetic attachment should not be used for things exposed to arbitrary unknown force, such as portable or handheld objects.

Watch for reversibility

Any step that cannot easily be reversed should be avoided or given extreme caution, and an acceptable decision that can be undone may be preferable to an excellent decision that cannot.

As situations change, fixed elements add extra challenges to keep up with, but fixed elements can often be avoided through planning and engineering.

In particular, never do something in hardware that can be done digitally, unless it is safety critical and studies have shown hardware failsafes to be needed.

Don't write things in stone or make your mark that lasts forever. Almost nothing people do is perfect, so be sure that your plans can be erased without a trace when something better comes along.

Project to process transitions

Projects are easy. They have a beginning, an end, and the only goal is to finish them without seriously wrecking something.

Processes are hard. When someone starts saying it's the journey, not the destination, suddenly you now have more than one goal, in fact, you have hundreds, because every action must be done not only successfully, but neatly and gracefully, with a smile and good posture.

The easiest way to avoid these, is to do things in advance so that they can be done as a project, rather than live under pressure as part of a process.

The Dreaded Chopstick

Absolutely reject any design that involves bending some part in, wedging it at an odd angle, and possibly pushing something out of the way with chopsticks.

Hands and tools should never go where eyes cannot, nor should there be any step where the act of closing a box can easily affect the (now non-inspectable) contents

Eschew the screw, careful how you connect

Screw-based connectors are often incredibly inconvenient to work with in-place, although they may seem very convenient for use in the lab.

When using terminal blocks, avoid non-detachable versions, and air hose quick connects are usually worth it.

Generally, connection points are very common failure modes. All connectors should have a large strain relief if you want them to last, unlike the popular slim white style USB connectors that imitate "luxury" brands.

Keychain carabiners and clips are similar danger points, as is the wrong knot in a rope.

Remember, connection can fail by coming undone, staying stuck, putting force on something else that breaks, and in sealed devices, by leaking.

Electrical contacts have all sorts of additional failure modes.

Pay attention to connection points!

No remapping By swapping

A relatively common problem is something like this. You have a box with four coloured pipes going out, and four blank ones going in.

You need to figure out which pipe to drop each colored ball in to make it come out the right pipe.

If there is already a listing of which pipes to use, but it is incorrect, people will often try to fix it by swapping incorrect ones. When more than two are wrong, this seems to rarely work.

Instead, make a map of every input and the corresponding output (giving them all labels that have nothing to do with what specific balls you put in!), and trace outputs back to inputs on the map.

Look for potential problems

A lot of people will analyze a plan or situation by looking for active problems. The things that are wrong with the plan itself, that are guaranteed to cause problems.

This is important, but more equally important is to look for points where a mistake is likely, or where the consequences are large.

A wet floor is not an immediate problem until someone slips on it. It would be easy for someone who is used to assuming perfect competence to conclude that people should see it and not slip.

Removing contributing factors is often easier than directly avoiding problems for several reasons.

One is that you cannot always be sure of the future, or what additional circumstances will complicate your plan to avoid the mistake.

Another is that, like the wet floor, "being careful" must often be done continually, in this case each and every time, whereas removing the contributing factor often only needs to be done one time (as in mopping the water), and will persistently make things safer until something causes the factor to return.

Beware things that make using them the same as engineering them

In the Linux world there's a lot of talk about modularity, but they usually leave final integration to the user. A typical UNIX style program isn't a program at all, it's a building block to make your own program.

This can be a major time sink, and it's important to recognize the value of integration, and purpose built devices.

A multimeter can be used as a cable tester, but only in a very inconvenient way.

A proper module system is seamless, and trivial to reconfigure, but this is often hard to achieve. Beware of building toolkits to build another tool to do something, and mislabeling them as directly usable tools.

Some people claim that engineering a brand new solution is a good thing, because of the increased power and flexibility.

The trouble is, this throws away a major advantage of technical solutions. Traditionally, they are never deployed outside a lab without hours of testing.

However, modular systems like UNIX shell pipelines can't be developed offline and extensively tested before real deployment. It would just take take far too long to triple check and peer review every command.

However, less flexible tools like Etcher (as opposed to dd) CAN be thoroughly tested, as they are meant to solve a common problem once and for all, and get used enough to be worth testing.

Note that the issue has nothing to do with simplicity. Massively complicated things can still be thoroughly tested if there is the economics to support it, but ad-hoc solutions rarely get a proportional level of scrutiny regardless oof how simple they are.

Watch out for tasks involving listing or counting scattered elements

Tasks like "count how many cars are in that parking lot" are very difficult because there is no obvious ordering, and no way to know if you have already counted any particular item.

If you have to do something like this, and can't find any kind of row/column based system, one should not trust their memory. If all can fit in a single photograph, they can be counted and digitally marked, or, for things like outlets in a house, they can be physically marked with tape.

Especially watch out for tasks involving listing things that do not yet exist, like "what will we need for the party?"

For that, only a complete dry run test, or detailed plan down to the last paper plate is likely to help you function any better than your own talent and competence would.

When making such a plan, look at every step and ensure that you have not lumped any separate steps together and left places where mistakes can hide. An overview, program of events, or schedule is not a plan.

Pouring wine involves opening it, which may involve a corkscrew, and actually doing the pouring, which probably involves cups.

And more than any of this, avoid any use whatsoever of undocumented lists of multiple items of any kind.

If you go to the store for five separate things, assume that one will, as a deterministic fact, be forgotten unless the entire list is written down. If you are confident you remember everything and don't need to check the list, that is exactly when you need to check it.

Compatible standards

Many things are made better by being all the same. Unfortunately, these things are made worse when they require things to be all the same.

Nobody would be happy if they had to upgrade every device in the house when a new WiFi hotspot comes out. Get the best when buying new, but leave room in plans for old and perfectly good things.

Don't write code that doesn't run on old computers.

And more than that, don't create disruption to existing processes. Don't fence off an area for a cable if a wireless link will do. Don't delay people's lives because you insist they first learn some new system to proceed.

Don't use updates that run automatically. Technology should stay out of the way, not add additional things people have to keep up with.

Some things are obsolete and should be upgraded immediately, but usually only the user knows which things those are.

Minimize unique parts

It's bad enough to use dozens of parts when a few lines of code would do. What's worse is to have dozens of one-of-a-kind, custom, handmade, imported, or otherwise nonstandard parts.

Ever tried putting together a tent with four different lengths of poles and several different kinds of clips?

Not only is this kind of design a hassle to build, it's expensive, as the benefits of mass production are partly cancelled out, it leads to obsolescence when replacements are no longer available, and often, those parts are not well tested, as they are generally new and not made by the million.

Especially avoid slightly modified off the sheet parts if possible, although it may still be better than a scratch build.

In that case, you never know if the original manufacturer will change the internals of the design so that it no longer works, on top of the extra effort and unpredictability of customizing something.

This also goes for unique pieces of software. If you don't have time to do it better than the people who did it before, just use theirs.

It's hard to automate things you can't describe

Automation is great, but when usability or aesthetics matter, the computer isn't always going to "get it".

To automate something, you need to be able to fully describe what you want, or just let machine learning guess.

Fully describing what you want is often equivalent to doing something by hand, or else is a limited version that isn't actually what anyone wants.

Computers can find the right decoder for a file format, they can reconnect when the network goes down, but designing a bookshelf requires a real understanding of how it will be used. It is important to see what problems are "hard", and can be fully described in a page or two, and what problems are "soft", meaning we don't really know the algorithm we use to do them.

In addition, aesthetics will always depend on context and one should not expect it to be ignored.

Many people will not appreciate something generated entirely by machine.

Many things are only valuable because of the origin story. In many cases the origin has a dark side, and one can argue that the origin, the aesthetic, and the symbolism are all representative of something evil that should not be desired.

Nonetheless, one cannot expect something entirely artificial to be appreciated unless it has some sort of context.

Beware the wear

Many devices use flash memory. Many automatically save whatever you change.

Few take any steps to avoid wearing out the disk in a few years, because a few years is thought to be an acceptable lifetime for a device.

Don't do that. It's not acceptable! Actions outside the user's control especially should not contribute to device wear. Things should not just be expected to wear down over time.

More generally, avoid coupling any frequently-done action, (like changing a color), to an automatic action that causes wear (like saving to flash)

Replaceability!

Things that don't last, should be replaceable. Don't let a design leave the drawing board if it becomes disposable because of one part. Beyond that, things that wear should be common and available anywhere, like 0.7mm pencil leads, not proprietary to one manufacturer, or even handmade and totally unique.

Never assume that problems will be correctly reported

People do not consistently report issues, even when it is their responsibility to do so.

The issue may make themself or a friend look bad. It may also make an enemy look bad, who may retaliate.

Perhaps they forgot, or even wilfully sabotaged the situation in question themselves. Perhaps they think you don't want to be bothered. Maybe they have already reported several issues and think you're getting tired of them.

Whatever the case may be, people will often not tell you things you need to know, unless you specifically ask, and even then, they may not know.

People are bad at monitoring things

Never assume that a person is capable of monitoring an automated process, or someone else's work, just because they have done this work themselves.

It is a well known phenomena that people switching to the role of monitor can easily become complacent, and sometimes the results can be worse than before the automation or extra help.

Take the job of monitoring seriously

On a related note, When you are there to watch for trouble, no matter how rare the trouble may be, you must still take your job seriously.

If you slack off because you don't expect trouble, you are not acting with integrity.

Regression to prior learning

If a potentially dangerous action is similar to a common action that people will have learned before, assume that the dangerous action will be mistakenly performed, and that this will most likely occur during a time of stress when the situation is already primed for a disaster.

Beware indirect proxies of quality

Simple. German Engineered. Made in America. All metal construction. Handmade. Natural.

None of these are a crystal ball to tell you how a product will perform, look, or whether it will last.

What they tell you is how well they conform to some tradition that seems, to someone, to be associated with quality. There may be reasons for this in some cases, but over time, these vague indicators become goals in and of themselves, and eventually they can become philosophical axioms, where the value of product itself is irrelevant, and the choice is made for idealistic reasons.

When dealing with people, such as looking for someone to do a job, words like Certified. Experienced. Intelligent, Honest, etc, come into play. In this case, one presumably does want a properly trained employee, and honesty is always valued.

Someone with a decade of experience doing consistently terrible work, however, is clearly no better than someone with only a year of experience.

Slow is smooth, smooth is fast

While machines can place multiple parts per second with sub millimeter accuracy, you probably cannot.

If you try to, you will likely break something. And even if you don't, someone else probably will while trying to keep up. Avoid this.

Writing right

A common complaint of people who feel unskilled is legible handwriting, but this too can at least partially be faked.

Italic calligraphy is, as far as I can tell, the easiest style of writing that has tutorials, but ignore the whole part about keeping up a rhythm, and don't worry about using a fountain pen. The "cheat" way to write legibly is to think about and plan every letter before writing it.

This is fast enough for a few documents and greeting cards. Unless you are a doctor, almost anything else either doesn't need to be fast, or doesn't need to be neat, in the computer age.

You can cheat at drawing too

They say anyone can learn to draw, and that it's fulfilling enough to be worth it. They're probably right, but for those of us without hours a day to spare, the cheat programs like Inkscape and Blender.

Unlike real drawing, vector and 3D art does not require a sense of proportion or perspective. If you put something in the wrong place, you can literally move a line over.

If you made a line too thick or thin, you can adjust it. You're not directly drawing with ink or pixels, you're working directly with shapes and lines, which are much simpler than the many square inches of paper badly placed mark messes up.

Layers in programs like Krita have a similar effect, in that you can work on small parts of a drawing at a time, without messing up previous work if you get it wrong.

Know your knots (or pretend to)

The usual overhand knot is often a terrible choice, but the others are hard to learn. The exception is the common area shoelace knot, which has a verbal description that doesn't rely on muscle memory at all, but it is surprisingly hard to find.

Most people seem to have no trouble learning to tie this, but I definitely had plenty of it before finding this hack.

What people use to tie their shoes is actually a doubly slipped variant of a reef or square knot.

Once you've seen a picture of a square knot, it's fairly easy to remember the rhyme "right over left, left over right makes a knot both tidy and tight".

"Slipped" variations of many knots exist, that have a "pull tab" to instantly untie it.

They are almost always made by having the end of a rope retrace it's path and go back the way it came.

This is usually accomplished by doubling over the end of a rope to make a loop, and the tying the final step with the loop inside of the end.

A square knot has two ends, and so has two slipped pull tabs.

This is much the same as a slipped "regular knot",made by sticking the end back through the hole, but not pulling it all the way, because that is how you untie it.

If you can't directly remember spatial things, theory and descriptions are much easier.

Another knot like this is the uni knot. The important thing with that one is that there are three line segments. One down through the eye, through it, one back up along the first, and another going back down.

The coiled part is around the first two, but "inside of" the final one, which is used both to get into place to start winding upwards, and to apply pressure to the coils so they don't uncoil.

Sheet bends are almost the easiest way to join two ropes reasonably well. The first rope loops back on itself to make an eye.

The second rope comes through the eye, from the back, then down and around the back of the "neck" of the eye loop, over the top coming forwards, and then down in between itself and the eye. This one also has a slipped variant, where it goes back up in between itself and the eye to form the pull tab.

Another extremely easy knot is the tautline hitch, but it is only easy if you are following a picture. It is useful because it can be slid by hand, but will not slide under tension by itself.

Get the lead out

There are few luxuries that can compare to not having to carry a bunch of heavy crap. Be very careful about the weight of the things you buy, if you will be carrying them even a short while, and ruthlessly prune or upgrade anything in your bag that weighs you down. If it costs money I'm sure there are meals at restaurants you can skip, because not much tastes as good as not hauling crap around.

Similarly, when designing portable things, aim for the smallest weight and minimum number of items.

And if you must carry something, try to put it on a rolling cart. You will probably feel much better at the end of the day.

Literally get the lead out

I'm sure you know about lead paint and gas, but did you know it could be in your keys? The prongs and plastic of your extension cord (it is or was used to stabilize PVC)?

Brass often uses it to make machining easier. Old crystal glass has it. Maybe new crystal glass too. It has all kinds of uses, so don't assume any random thing is good safe.

Manufactured hurries and artificial deadlines

These are terrible mental devices that have been used for everything from landing someone in the hospital, to making unwanted sexual advances.

The way it works is pretty simple. Someone has a bad idea, which they want to pursue for irrational reasons. Perhaps trying the hardest ski route with no experience.

If you resist or hesitate, one tactic they almost instinctively seem to employ is a sense of urgency.

They will speed up their words and movements, speaking in short, controlled bursts as if using an assault weapon of verbal Diarrhea.

Traditionally, one may associate talking too fast with weakness or being on the defensive. However, someone using this tactic likely is already filled with confidence. They have no complicated reasoning to explain, and thus the short bursts of words seem enthusiastic, not defensive.

And on top of it, this tactic often happens on one-on-one situations.

The trouble occurs when you respond. If you take your time to explain something, they may interrupt you, or look as though they are threatening to.

If you match their pace, you will probably sound like a maniac and stumble over your own sentences, because you quite likely need more words to explain your position than "it will be awesome bro!".

On top of this, your reasons may well involve a mistrust you don't feel comfortable expressing.

They may be saying something you know to be untrue, like "it's perfectly safe", and you may think you are not in a position to argue.

The added self-censorship makes it even harder to speak at their pace.

They have given themselves the home field advantage, an insane conversational style to match an insane idea.

On top of it all, they may physically move towards their part of whatever they are planning, threatening to leave you behind, or implement the bad plan without your agreement at all.

In these cases, there may be no other answer aside from short controlled bursts of your own, such as "no way!", possibly with your expletives of choice.

The strategy on their part relies on you thinking that you need a reason to refuse, and that you must make a decision immediately.

As your reason may not be explainable in a matter of seconds, you may feel that your reason is not valid or good enough. However, if they don't need a reason to do whatever it is, than surely you don't need a reason to not do whatever it is.

The tactic may also rely on an implication that overthinking things is "weak" or otherwise bad. I believe this is best ignored entirely, to the absolute best of your ability, on account of the vast amount problems one can find by trying too hard to prove themselves.

Facebook, incidentally, is thought to use this via endless scrolling, forcing an immediate interaction, or else the risk of losing that content forever to the miles long news feed.

Think "Never Again" not "Life Happens"

For some people, mistakes are a natural part of life, to be embraced as a chance to learn about yourself and your capability under pressure.

When making a plan to avoid mistakes, these people may attempt to guilt trip you. They may not understand your need for such a plan.

They may tell you to just carry on but "be more careful" next time, with no explanation for how that works, or how you're supposed to not make unrelated mistakes while spending all this extra time "being careful" of the original mistake you are trying not to repeat.

Many problems are highly preventable, and it is only a lack of desire to prevent them that stops us, or a belief that a need for constant vigilance against them is "just how life is", and that it's "not worth it" to make the changes needed to stop it.

If a mistake happens once, it can happen again, to the same person, or to someone else entirely, unless something is done differently.

"Being more careful" isn't really doing something different unless you have a concrete plan. Will you work slower? Will you double and triple check things in different ways? If not, then what stops "being careful" from being empty words?

Being careful is often a loaded phrase, implying that you were not being careful at all when the mistake was made.

We don't have to accept this kind of thinking. We don't have to constantly live just a little outside our capabilities while things fall apart around us.

By making real, actionable plans, we can prevent many mistakes both big and small.

About

An open source guide to mistake-resistant engineering(Work in progress)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published