My programming partner and I have been working for quite some time on some large projects, and we have come up with a basic list of rules that apply to startup computer businesses, from software development to software sales.
- You have to pay – Nothing in life is free, someone is always paying for it, in time, energy, and or money. Never-Ever do anything for free, because when it’s free, you’re the one paying for it. That doesn’t mean you have to charge money for things, there are many forms of currency, favors, endorsements, contributions, and forgiveness for mistakes and lateness are all ways of getting compensated for going the extra mile.
- No funny stuff– This is also what we call Jay n’ Mike’s Razor, similar to Occam’s Razor, where the simplest solution is usually the correct one, this rule states that the simplest and most direct route to a solution is the most maintainable, stable, and testable. Arcane, convoluted, esoteric systems are a hassle. This applies to development as well as business.This rule is akin to the KISS principle, keep it simple stupid, but is more precise in its application, that is, it is not so much about keeping it simple, somethings just can’t be made simpler than they are, it’s about keeping things explicit.
While the No funny stuff rule may seem simple and obvious, there are some important conflicts, for instance, while some meta-programming is permitted, it almost always violates the No funny stuff rule.
Some optimizations in code, like managing several arrays within the same loop also violate this rule.
Code shortcuts almost always violate the rule. Dynamic code, or code that is generated at runtime almost always violates this rule unless it is integral to the design of the product.
When designing product options, like product packages, the No funny stuff rule applies.
The No funny stuff rule is also the Don’t be a clever smartass rule. You might think you are clever now, but you won’t in the future. I couldn’t count how many times I thought I was clever with my code or my actions and they came back to bite me on the ass. Keep to the direct, explicit straight and narrow path.
When you design forms in HTML, No funny stuff! Forms should do one thing, and one thing only. That makes multi-model forms a no-no. Create a separate form and connect the IDs of the models via a select or auto-complete box.
Modular designs which convolute code, or make functions and behavior arbitrary and unpredictable are a no-no.
Fixedly adhering to Don’t Repeat Yourself that forsakes clarity and explicitness of code is a no-no. This is why this rule comes before Don’t Repeat Yourself.