Code Like a Goldfish

There is an underlying hidden requirement in creating software products. It doesn’t just have to “work”; it needs to be molded in such a way that it can be changed, maintained, and scaled easily.

Last month, I gave a talk addressing this topic to the 1st cohort at Telegraph Academy—an immersive program that teaches underrepresented groups in tech on how to code. They were nearing their last week of the program so I thought it would be relevant to share some industry lessons.


  1. Design early

    The biggest mistake beginners tend to make is not taking the time to think through the pros/cons of a software design. Designing early makes it easier to find flaws, it’s much harder fixing those flaws once it’s expressed in code.

  2. Don’t over optimize

    This doesn’t just apply to algorithms (e.g. trying to get O(n * log n) performance vs O(n2) on a small dataset), but it also applies to software design. Don’t over-engineer or over-genericize a problem if it doesn’t have to be.

  3. Don’t repeat yourself (DRY)

    Code repetition means if something needs to be changed/fixed, it needs to be changed in all parts of the code which is error-prone. Have one source of truth and abstract where appropriate.

  4. Think small

    Smaller classes, methods, and files are easier to maintain.

Check out the slides here.

Android Wear App: reMIND

Pay attention.

The statement above reminds us that being attentive costs something. To fully listen and be aware requires some level of deliberate focus.

Given stimuli that constantly try to grab our attention, it’s kind of hard to do that.

Recently, I’ve been meditating a lot and have been using apps like and Headspace. I find meditation extremely useful as it helps bring awareness to what you’re feeling in the moment. As simple as it sounds, it’s actually really important because your mood determines the quality of your actions. Feeling really motivated and energized? Do the hardest and most important task on your list. Feeling scatterbrained and under the weather? Do simple and menial tasks instead.

Aside from meditation helping with self-awareness, I find that it also helps with appreciating the moment. Worries about the past or the future are irrelevant because the present is only what is. That understanding brings peace of a mind and encourages just being with it.

As a way to remind myself and others of this fact, I created an Android Wear app that sends reminders throughout the day to be present. Upon being reminded, you can then do your personal mindfulness practice or simply appreciate the moment. Check it out.

Deep Work

“What should I do next to get better at X?”

Practice… right?

When I was in college, I followed a blog by Cal Newport called “Study Hacks”. If you haven’t heard of it yet, I highly encourage you to check it out. It changed a lot of my perspectives and some of the lessons I learned I still practice today. Check it out here.

As I was thinking about the question above, I thought of a topic discussed on Study Hacks called Deep Work.

Deep work, according to Cal, is the type of work that causes our abilities to continually improve. It is a source of deeper satisfaction; that is, a feeling of passion towards whatever it is we’re pursuing. In contrast, so called shallow work are the types of tasks that require minimal amount of effort. These are the tasks that through repetition and training we’re able to do with our eyes closed.

Figuratively, of course.

The answer to the question I posed to myself requires some amount of deep work. With that said, here’s how I go about preparing myself for some deep work:

  1. Quiet time

    The simple act of turning off all my devices and “unplugging” myself unleashes tons of creative juices. Distractions from tweets, likes, +1s, e-mails, etc. make it hard to get into any sort of rhythm. Once unplugged, I find that I don’t really need to think of anything at all – ideas just start flowing.

    Ironically, some of my most creative moments are in the plane when I’m bored out of my mind. Who said boredom was a bad thing??

  2. Plan for tomorrow

    I have trouble maintaining a very rigid routine/schedule. However, it’s incredibly easy to plan for the next day. I find that if I just jot down a few reasonable and achievable tasks for myself to do the next day, my mind has time to prepare for what’s ahead. Surprisingly, this motivates me to wake up early the following day too.

  3. Be in the now.

    The most important part about execution of deep work is to be in the moment. You just need to pay attention to what you’re doing. To “pay attention” is such a great sentiment in this context as it reminds us that attention costs something… energy.

How do you prepare yourself for deep work?