Akin's Laws of Spacecraft Design
spacecraft.ssl.umd.edu
spacecraft.ssl.umd.edu
People say lol a lot when they didn't really. But I really did at that one. Because I know exactly why it is true. What's going on is that you have a high order term that dominates the big-O. As long as that is anything of the form x^k it will be linear, and the lower order terms will show up as minor deviations, which the magic marker smoothes out.
Since big-O scaling terms of that form arise in a lot of different equations, it is very common that real data DOES show up as a (reasonably) straight line on a log-log graph. And the slope of that approximate line tends to be very useful to know.
But if you see data set after data set plotted on log-log with magic marker lines drawn, it is easy to ridicule the phenomena. :-)
This one caught my eye as being only half right. As you increase something, you may get better performance up to a point but then see it level off and decrease. For instance, you could increase the fuel capacity by a factor of 10, but then you'd need a larger engine, more powerful thrusters to maneuver it, etc.
On the other hand, the lower bound of "don't do that at all" is frequently optimal. A lot of these cases are things that you'd intuitively see as stupid ideas (ie "how many lead weights should we bolt on to the fins"), but in other cases they aren't. Like a fish that evolved away its eyes because they were no longer useful. (https://en.wikipedia.org/wiki/Amblyopsidae)
If you took the "law" too literally, you'd be distrustful of saying "These eyes aren't doing anything, let's have 0 of them." Don't be afraid to remove wasteful features.
I've worked on projects that were burned by incorporating too many bleeding edge components, when things are too new, you often don't know what you don't know.
I'm sure if I had this list to point to on my last project, I'd either have been shown the door sooner, or we might have had a better chance of success...
Zero should be a valid number (there are many systems with no gears, also describable as gears with no teeth). But once you decide that you need a gear, it's got to have some teeth, or some number of eyes, etc.
Also, wouldn't a fish with no eyes be a fsh?
> 7. At the start of any design effort, the person who most wants to be team leader is least likely to be capable of it.
Some of these adages are universal.
In my experience, people who want to lead for the sake of leading, that is to get status or rewards that often come with that role or because they simply enjoy power, are often by far the worst leaders.
However, those who reluctantly come to leadership because they want to achieve something often make the best leaders but that is quite different to people who regard leadership (power) as an end in itself.
15. (Shea's Law) The ability to improve a design occurs primarily at the interfaces.
This is also the prime location for screwing it up.
So true. Parnas' paper on information hiding and decomposing into modules is of course also about choosing the interfaces https://docs.google.com/viewer?url=http://www.cs.umd.edu/cla... (bonus: he describes the genesis of the paper, see the "quick view" of the top of this google search https://www.google.com/search?q=filetype%3Apdf+parna+on+the+...)Unfortunately, once you've chosen interfaces that hide the details and things likely to change, it becomes harder to change the interfaces, in case you were wrong in your predictions of what will change in the future... Or, if you just didn't understand the best way to approach the system... (how could that happen?)
It's hard to change because other modules depend on this interface. Unit tests operate on the interfaces between modules, so they need to change too... and you won't have the safety net they provide. Documentation must change. etc.
Therefore, in practice, interfaces are not changed.
So I guess if one deals with ugly interfaces it may be wise to wrap the ugly interface in a cleaner one. As an added benefit, the project is decoupled more from the ugly interface, perhaps permitting to replace it with something better in the future.
[1] https://en.wikipedia.org/wiki/David_Wheeler_(computer_scient...
By the way, I believe a more up to date URL is: http://spacecraft.ssl.umd.edu/akins_laws.html
The 26th anniversary edition was released (or escaped) in 2003.
http://www.amazon.com/Murphys-Law-26th-Anniversary-Edition/d...
http://en.wikipedia.org/wiki/Clarence_Johnson#Kelly_Johnson....
Note the unwritten 15th rule: "Starve before doing business with the damned Navy. They don't know what the hell they want and will drive you up a wall before they break either your heart or a more exposed part of your anatomy."
...for all the people saying that a software rewrite is never worth it :)