1.) Understand the problem you’re solving. A user has requested a feature, but what problem are they trying to solve?
2.) Write a guide doc exploring the issue, and what the end solution achieves. This serves as high-level documentation for users and coworkers. (It also helps me remember what the heck I’m doing at any given moment)
3.) Write unit and integration tests that test whether the feature’s implementation (which you haven’t written yet) meets the specifications in the guide doc.
4.) Implement! Make sure your code is well-documented, so future-you doesn’t have to waste time becoming familiar with the problem all over again.
5.) Test and refine. Your tests should cover as much of the code as possible; my target is 90% coverage right now, since it’s often hard to test specific logical branches except through smoke tests.
1.) Color is weight. Real things are heavy. When we envision the future, it’s often in greyscale tones (such as Apple’s white and metal sheen) because those colors are ethereal and dreamlike. It reinforces the design’s futurism.
2.) Contrast is noise. Highly contrasting objects are loud, and will draw your audience’s attention. Turning up the volume too much will hurt their ears (or, in this case, their eyes), and turn them away.
3.) Audiences have a wealth of norms and codes with which they are familiar. Using these codes is like importing a library: it saves you the time of coding your own solution. Familiarity helps users navigate.
1.) Programming is hugely entrepreneurial, and in many ways the inverse of traditional entrepreneurship: First, we invent things. Then, we figure out how to monetize them (or we open source them and don’t worry).
2.) I’ve often heard, “Engineering is a practice of trade-offs.” Economics has a similar saying: “No free lunch: everything costs something.” I wonder if all disciplines could be reduced to “a practice of trade-offs”, differing only in the medium and context of the exchanged qualities.
3.) Entrepreneurship is mis-advertised as depending on bold ideas, but I contend it depends instead around diligence, determination, and passion. If you’ve got those, you could become an entrepreneur in fruit stands and still make it big.
Reflections on Post-Academia
1.) I consume books now. On design, on software patterns, on mathematics… These are books I would have read for classes, often. I want to read them now, because I know how they serve me.
2.) I wish there were more book clubs, or ways to find book clubs.
3.) I am not sure what I learned in school other than tidbits of knowledge. What economics I know, I learned from friends, family, and my own research. What technology I understand, I learned much the same way. Languages are the only thing I learned from academia that I would never have studied on my own.