Incomprehensible Code

June 21, 2018

Incomprehensible code is unmaintainable code. Unmaintainable code is bad code.

Avoid code that violate customary idioms without having a very, very good reason for doing so.

“Cleverness” is not a good reason.

Pick Up a Scripting Language

May 17, 2018

Pick up a scripting language with access to a large library of utilities. Get good at it. Learn its trivia. Use it to automate your chores. A good scripting language enables you to turn your computer into a custom-made power tool.

Software Engineers are Craftspeople, not Scientists

May 4, 2018

Most software developers are engineers and craftspeople, not computer scientists. By nature, we don’t deal with the cutting edge of computer science; we hang way back from new research and implement what is tried and true.

When you think you’ve invented a completely novel data structure, algorithm, or design pattern, chances are you probably didn’t; you just rediscovered something a computer scientist described decades ago.

Don’t fall in love with your “invention”. Instead, take the opportunity to find other experienced engineers or scientists who can help you learn more about exactly what it is you’ve rediscovered.

You will probably learn of shortcomings in your technique you didn’t know about. And if you’re really lucky, you’ll find an even better way of solving your problem.

Protect Your Flow

April 20, 2018


“Flow”, that state of being “in the zone”, lets you create your most significant, productive, and satisfying work. For a creative professional, it’s most important to create conditions that allow regular, predictable, flow.

Turn off all push notifications. You don’t need to read that message right now. Group chat is the mind-killer. Turn that shit down. Create a routine of checking your email and messages during administrative time between flow sessions.

Put on sound-dampening headphones, and listen to ambient, rhythmic, non-vocal audio (Spotify’s Focus playlists are fantastic). Avoid visual distractions, even in your peripheral vision.

Avoid interruptions and context switches. If your work area is not amenable to this, take a laptop and leave. Go somewhere you can focus.

Pick a length of time for “flow work” and commit to it. After the session is over, take care of your body, and get social. Eat, drink, go to the bathroom. Mingle with (not currently focusing) coworkers. Check your email, take a walk. Prepare for your next flow session.

Managers, allow your creative crew to have solid flow sessions throughout the day. Use asynchronous communication (email) instead of synchronous (chat). Create separate focus vs. social spaces.

Flow is when you achieve your best work. PROTECT YOUR FLOW.

Separating Business Logic

April 13, 2018

When designing an application, separate UI code from the code that makes your application “do things”—what is traditionally called “business logic”. Make sure an airtight interface separates your business logic from your UI.

Taken to its logical end, business logic code should exist in its own library or framework, and your UI app links against it.

Separating your business logic this way allows you to repurpose it in other apps, create command-line versions of your app (useful for scripting), refactor it without changing your UI, or overhaul your UI without introducing errors into your app’s core logic.

Even if you never refactor or repurpose your code, this separation acts as an organizational tool while you design your app. Follow this pattern and your app will likely be more maintainable.