Development lessons from my first three months at Matchbox

Development Workflow
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.

Design Notes
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.

Cultural Notes
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.


What do you think?

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s