Where do External Triggers Belong?

The great thing about blogging vs a shorter medium like Twitter, is you can have actual, in-depth conversations. There’s nothing better than someone replying to a post you wrote with one of their own. So here’s one…

Last week I wrote about External Triggers in OmniFocus. Sven Fechner of SimplicityBliss picked up my post add added his own thoughts. He agreed with the need for a designated place to park these types of tasks, but he disagreed with where I recommended putting them. He writes:

Rather than adding a new bucket, these type of external triggers I cannot control or influence get added to my “Someday/Maybe” Single Action List which already exists anyway.

When it comes to OmniFocus and GTD, I fully subscribe to the idea of “whatever works best for you”. But to his point specifically, I disagree with his solution.

The reason I don’t put my external triggers in a “Someday/Maybe” single action list is because these types of tasks are items that I’m committed to doing. They’re not tasks that I hope to someday get around to maybe doing them. I absolutely plan on finishing them – I just can’t complete them at this point in time.

So, for me, they don’t fall into a “Someday” or “Maybe” category, which is why I’ve created a new, dedicated list to place them into.

I Will Not Use the Phrase “Growth Hacking”

But I will call it marketing.

It’s always something that I’ve been interested in, but it’s also something I’ve always put off until “I have more time”. Well, that time is now.

I spent two days in December and did a thorough review of my little software business. The obvious take away is that 90% of my revenue comes from one app – VirtualHostX. I’m thrilled that it’s doing so well, but that’s a scary place to be in. If the app ever fails, I’m done for. The non-obvious realization I came to is that I believe I’ve reached a point of diminishing returns with regards to adding new features to the app. It’s over seven years old at this point. I’m committed to continuing to improve it, but I’m not sure how much growth I can drive by adding new features. Instead, I think my company’s growth potential derives from two things.

  1. Releasing a new product that I can sell alongside VirtualHostX that will become, at a minimum, half as successful as VHX within one year.
  2. Becoming better at selling my products by investigating historical analytics and trying new optimizations, with data to backup the results. (Yes, yes, I’m the dumb programmer who just now “discovered” marketing.)

With those two strategies in play, my goal for 2015 is to double my revenue.

Yes, seriously.

I know it’s a stretch, but I’m optimistic.

Releasing a new product is the easy part. I took the last half of November and all of December and built and launched Hobo. It’s another app aimed at web professionals that makes using Vagrant easy. Customer reaction has been overwhelmingly positive so far. And I’m optimistic that will translate into sales before too long.

Improving my marketing is the hard part. And taking that on full-force has been something my wife (a marketer herself) has been beating me over the head with for years. I’ve finally taken the time to learn Google Analytics beyond the basic vanity metrics and have done deep dives into goals, conversion tracking, where my customers are falling off in the order process, etc.

Based on my learnings, I chose three goals (low hanging fruit, really) that I could tackle in January to see how they improved sales. And based on those learnings, pick better goals to implement each month throughout the year. Here’s what I’ve chosen to do this month.

First, for four years I’ve offered a free System Preferences pane download that allows you to turn web sharing on and off on your Mac. It just adds back the functionality that Apple removed in Mountain Lion. I knew it was fairly popular, but had never done any real tracking of it. Well, after watching downloads for a month, I was knocked-off-my-feet-blown-away to find out it has just as many downloads as VirtualHostX.

All of these people downloading my web sharing tool are perfect customers to upgrade to the more powerful VirtualHostX. I just need to figure out how to do that.

As a start, I’ve replaced the download page for the tool with a marketing page that up-sells them on the benefits of VirtualHostX and encourages them to give the full app a try. The final download link for the web sharing tool is at the bottom of the page – not hidden! – but they have to scroll past all of my other content to get to it.

Anecdotally, in the week since I’ve made this change, downloads for web sharing are down 15% and up 15% for VirtualHostX.

Next, not enough people are talking about my apps on social media. To make this simpler, I’ve added a callout to my apps’ marketing pages that offers a $5 coupon if they Tweet about one of my products. I offer three pre-written tweets they can choose from. And they have the option to write their own message instead.

The response to this has been way beyond what I was expecting. I’m seeing 20+ Twitter mentions a day, whereas before I was lucky to get two or three.

Of course, none of this matters until I can verify that those tweets are leading to increased traffic and conversions. I’ll know more in a few weeks.

Finally, I’ve always gotten basic stats from my apps’ automatic update code. Info like operating system, screen size, etc. But I never knew exactly how my users were using my apps or what features were most popular. Piggybacking on top of Google Analytics’ support for mobile app tracking, I’m now pretending that my Mac apps are mobile apps and am sending event data to Google.

All of that data is completely anonymous of course, but it will allow me to see session length, number of launches, and exactly which functions within the apps are being used the most.

So, those are my three marketing improvements for January. I’ll review all the data at the end of the month and hopefully learn something concrete I can use to improve my business. When and if I do, I’ll write about it here.

Creating a Weekly Preview from your Weekly Review

I’ve long felt that the two most important aspects of following GTD are having an inbox where you can quickly record any task that occurs to you and then the regularly scheduled review that keeps your system on track and up to date with your priorities. For me, the weekly review has always been the key component. It’s what keeps me sane and prevents me from becoming overwhelmed. I know that at the beginning of every week I’ll have a full hour dedicated to reviewing each project, killing off anything that no longer needs doing, and identifying any tasks that might have slipped my mind.

Last year, however, I changed how I did my weekly review and split it into two sessions. One on Monday mornings that I call my weekly preview and one before I check-out on Friday afternoon that I now call my weekly review.

The Weekly Preview

Every Monday morning before I begin work, I block off an hour to review all of my projects and take a look ahead at the week. Like David Allen suggests, I consider each action in all of my projects and decide whether or not I’m still committed to doing it or if it should be dropped.

During the course of the weekly preview, I consider what my large goals for the week should be. I do my best to adjust my next actions so that as I work through my tasks during the week, they naturally lead me closer to completing what I set out to accomplish on Monday.

I also take this time to do any work that influences how I spend the rest of my week. For example, I review all of our finances and any upcoming bills that are due. I also scan through my external triggers project to see if any of the triggers have happened and if I need to make any new tasks based on them.

My weekly preview is where I get my head straight, my mind focused, and my plans in order for the upcoming week. It’s about setting a concrete plan for what you want to accomplish and building the motivation to see you through the week so that the tasks you commit to get done.

The Weekly Review

My weekly review happens every Friday afternoon. It’s an hour I spend reviewing what got done, what was left behind, processing all of my inboxes, and making sure everything is ready to go Monday morning so I can spend the weekend with a clear mind.

First, I switch to my OmniFocus completed perspective and review everything that I accomplished. I often pull out items that need to be included on status reports or that should go into my journal. Then, I re-visit every project and make sure each one has a valid next action so I’ll be able to choose what to do come Monday morning. I also take one final look at my external triggers to see if anything changed since Monday.

And that’s it for the review of my actual OmniFocus data.

The rest of the review is spent processing all of my inboxes. That means going through

  • Any documents I’ve scanned to PDF
  • New photos I’ve taken that might need to be sorted into albums
  • Any new notes added to my Evernote @Inbox
  • Any remaining tasks in my OmniFocus inbox without a project or context assigned to them

Finally, I login to Mint.com and see how our spending for the week compared to our budget.

And with that, I’m done and ready to enjoy the weekend with a clear mind. The weekly review is where I assure myself that everything is in order, is safe to mostly ignore for the next two days, and will be in a good state to pick back up on Monday morning.

Technically Speaking

Like so many of my posts about productivity and OmniFocus, none of this stuff is that advanced. It’s really just a bunch of realizations that I’ve codified into routines and habits. (And that I’m having fun turning into posts on this blog.)

As for how my weekly preview and review work in OmniFocus…

I have a single action list in OmniFocus called Routines. As I’ve written about before, “I use it as a dumping ground for all the periodic checkins I have to do to keep my other trusted systems running smoothly.” Inside it are two tasks called “Weekly Preview” and “Weekly Review”. Within each of those tasks are all the other actions specific to each one that I’ve written about above.

The “Weekly Preview” task is set to repeat and be due every Monday. And the “Weekly Review” repeats and is due every Friday.

About six months ago I deleted those tasks and trusted that they were habitutal and I’d do them every week as planned. Everything went fine for a few weeks, but eventually I would bargain with myself and say “Well, I didn’t take many photos this week, so I don’t really need to go through and sort them.” That happened once, twice, and then before I knew it I had hundreds of photos in my backlog to process.

Once I realized I was getting lazy, I put the tasks back into OmniFocus. I discovered it wasn’t so much about remembering to do all the review actions each week, it was about that magical little checkbox next to each task that I can’t mark done until the task is really done. It holds me accountable.

And that’s the best way I can summarize the benefit of following a consistent pattern of reviewing your system. It holds you accountable to the priorities you’ve committed to. And staying true to your commitments is the single best way towards achieving your goals. And if you’re not getting closer to your goals, why even have a system in the first place?

External Triggers in OmniFocus

In OmniFocus, and in other GTD systems I’m sure, there is the concept of a sequential project. A sequential project is any task with two or more steps that have to happen in a specific order. You can’t move on to the next step until you’ve completed the first step.

An example that’s currently on my plate is a project called “Return Remote Control to Amazon”. I can’t “Drop-off package at UPS Store” until I “Print off and affix shipping label”.

This is a very powerful productivity weapon because it allows you to fill up all of your sequential projects with tons of tasks, knowing they won’t become a distraction or source of anxiety since your Next Action List will only show the one task you can actually do at a time.

In most cases, sequential projects cover my needs because they are comprised of tasks that I’m personally responsible for and have control over. But occasionally there are two other types of dependent actions that I find I need to handle differently because they are outside of my control. They are

  1. Tasks I’m waiting on other people to complete.
  2. Tasks that I’m waiting for some external event to happen before I can proceed.

I’ve already written about how I handle tasks that involve other people. Today, I’d like to write about that second type of situation.

In my head I think of these types of tasks as waiting on an external trigger. What I mean is, they all can be written as When This, Do That. I have a task I need to do, but not until something else that I don’t have control over occurs.

Here’s an example.

My friend Karen recently told me that she’s looking for a new job. Once she finds and starts that new job, I would like to send her flowers. The problem with this task is that I can’t simply add it to my todo list since it’s not something I can currently accomplish (because she hasn’t gotten a new job yet). It’s also not a task that I can just assign a future due date because I don’t know when it will be due. It could take her two weeks or six months to find a new job. I suppose I could assign the task a waiting context titled @Karen, but that feels a little odd because the task isn’t really something I’m waiting on her to get back to me with.

Another example that’s currently in my OmniFocus is “Setup a meeting with our financial advisor once our credit card debt is paid off”. Again, like the other task, that’s not something I can just assign a due or defer date to because I don’t know when exactly our debt will be paid off (although I do have a rough idea).

I’ve learned to identify tasks like these because they all follow the form of When This, Do That.

GTD enthusiasts will probably recognize tasks like these as being good candidates for a tickler file. I thought so at first, too, but now disagree. If I were to add the send flowers task to a tickler file to be dealt with two months from now, Karen could get a job later this month and I’d completely forget that I wanted to send her flowers.

What I need is a simple place to park these tasks that I’ll remember to regularly review. The solution I came up with is hardly groundbreaking. It’s just a bit of common sense that finally occurred to me once I became aware and identified this recurring problem.

In OmniFocus, I keep a project on-hold called “External Triggers” with a setting to review it every week.

Inside this project I add all of my tasks that fit the above pattern. When This, Do That. I don’t bother sorting or separating them based on area of focus. All of my tasks from across all of my areas get dumped into this project. And they all follow the same title structure. For example:

  • When Karen gets a new job: Send flowers
  • When debt is paid off: Follow up with Edward Jones about reallocating savings

Then, each week during my weekly review, I have a recurring task that reminds me to look through this project for any actions that have become available. Titling each task in a consistent manner lets me quickly scan the list. Also, keeping this project’s status as on-hold is key, as that keeps all of these tasks from cluttering up my list of available actions when I do my planning.

Like I said, this isn’t anything groundbreaking. But it is a strategy I’ve learned that helps me deal with tasks I might otherwise forget, while keeping them from cluttering the list of stuff I can actually do.

Lowering the Project Threshold

One part of GTD and OmniFocus that I’ve always struggled with is the idea that any action that requires more than one step is actually a project. It sounds simple, and I agree with that definition in theory, but I’ve never followed through in practice. My OmniFocus project list has always been relatively sparse – really just containing my three areas of focus each with 5-10 medium-to-big-sized projects plus a catch-all single action list for miscellaneous tasks.

The problem with this approach is that it’s stopped me from adding piddly, little multi-step tasks to OmniFocus because I don’t believe they count as a captial-letter PROJECT, and they don’t fit into my single-action lists. Instead, they stay in my brain, forgotten or causing anxiety.

I really came to identify this problem a few weeks ago and made a mini New Year’s resolution to be better at it. Since then, I’ve made a conscious effort to be less picky about what crosses the threshold to qualify as a project and now force myself to turn anything with more than one step into a for-real project.

Here’s an example. Previously, I would have had a task titled “Mail Christmas photos to Aunt Betty”. And that was it. Simple. Right? But now I have a project titled “Send Photos to Aunt Betty” with the following steps:

  • Write and include happy new year letter
  • Include family Christmas card
  • Save Betty’s address into iPhone
  • Take photos and letter to post office to mail

You see. All of those tasks were implicit in the original task by itself. But writing it down as a single task was fooling myself into thinking it was just one step to completion. I kept putting off that task and others like it because I never found time to do all of the steps that were actually required to finish it. But now that it’s hoisted into a project and broken down into real, concrete, necessary actions, I’m free to complete each one individually as time allows. If I have five minutes between phone calls I can run downstairs and write out a quick letter and stuff it and the photos into the envelope. When I’m back at my Mac, I can lookup her address and add it to my address book. Then, when I leave the house the next morning, my @Errands context will remind me to grab the envelope so I can stop by the post office.

Adding granularity, precision, and definition to your tasks enables GTD/OmniFocus to operate at a much more efficient and functional level.

The result of all that is a much, much longer list of projects in OmniFocus. Seeing my previously perfectly-ordered and organized project list grow into an at-first-glance messy and overflowing one was a bit of a shock. I felt like weeds were sprouting up in my OmniFocus. But I took a step back and just let it happen.

After a few days it stopped bothering me when I realized the benefit. And that’s that the tasks available to me during my morning planning session – the ones that feed into my Today list – truly, for the first time, reflect everything I have to do instead of mostly-everything-but-kinda-leaving-out-the-small-stuff.

It also helps me make more progress on more projects each day by creating more true next actions. Before, when so many tasks were actually projects, I’d see them during my morning review and never place them on my Today list because I knew they contained multiple steps that I wasn’t ready to commit to.

But by breaking those small projects down into their component steps, it produces more actionable tasks that I can feel confident about adding to my daily list, which leads to me regularly making progress on all my projects and fewer of them stalling out.

And it feels wonderful.

I’ve never really been able to achieve David Allen’s feeling of “mind like water”. But freeing up those final open loops and trusting them into my system has gotten me much closer. If you find yourself avoiding certain tasks because you know deep-down that they’re really multiple steps, try – just for a week – turning them into projects.

That’s my story. If you have any tricks for not falling into the “multi-step action” trap or for just keeping things moving along in general, I’d love to hear about it in the comments below!

Even Panic is Having Trouble Making Money on iOS

(I hope the title of this post doesn’t misrepresent what Cabel wrote.)

The 2014 Panic Report is a wonderfully candid look into Panic’s successes and struggles throughout 2014. Continuing in line with the trend of small developers finding it difficult to make money on iOS is this nugget…

Wow! 51% of our unit sales came from iOS apps! That’s great! But now look at this revenue chart for the same month… Despite selling more than half of our total units, iOS represents just 17% of our total revenue.

I love, love, love developing for iOS. But this is exactly why, as a solo developer, I put all of my serious effort behind my Mac apps. Anything I do for iOS is at best a hobby or an experiment.

Benefits of Selling Outside the Mac App Store

Dan Counsell, founder of Realmac Software with an up-front and insightful post about the benefits of selling your software outside the Mac App Store.

Imagine if your app made $30,000 in the first month it launched. That’s great, apart from the fact that you have to give Apple $9,000 of that. Is the service they provide really worth that much? I’m not so sure it is.

My little company wouldn’t be able to survive if I had to give 30% of my revenue to Apple. While I hope to change that, Click On Tyler simply doesn’t operate at a scale where that’s sustainable.

Ember for Mac was in four different bundles in the last half of 2014. It earned an extra $80,000 (USD) in revenue, not only that it also brought in a lot of new users. If Ember was only available in the Mac App Store I wouldn’t have been able to do this and Realmac would have been worse off because of it.

I’ve participated in a few different bundles over the years. And, while they have brought in a nice bonus bit of revenue, I’ve found the ability to market to that huge base of new customers more useful.

Here’s the biggest and most important difference of all, by selling directly you get to know every single one of your customers. When building a business your customers are your most valuable asset, but yet when you sell on the Mac App Store you don’t know who they are.

Bingo. Over the years selling my apps I’ve formed many great, personal relationships with my customers. They’ve become key advisors when I experiment with new product features and services. They’re also a constant stream of ideas and improvements that I wouldn’t normally see since I’m so close to my apps. Customers on the Mac App Store rarely translate into this kind of usefulness – if you even know them at all.

All that said, one distinction worth making is that Dan doesn’t advocate not selling through the Mac App Store. He simply says that you shouldn’t limit yourself to only one sales channel.

2014 Business Yearly Review

Inspired by this article on doing a year-end review of your indie business, I took a few minutes and calculated some stats and compiled my major accomplishments from 2014. The result was eye-opening and made me feel more than a little bit proud.

I’ve made a conscious effort to be more transparent about my business dealings this year because I truly believe getting more people to share these kinds of numbers will benefit the community as a whole. So, here’s my 2014 review of Click On Tyler

  • Earned $61,500 in sales ($168/day)
  • Grew revenue by 6%
  • Gained 1,714 new customers (40% down from 2013 new customers)
  • Sold 1,961 copies of my software
  • $31.36 average sale price
  • Launched new, responsive clickontyler.com website design
  • Launched VirtualHostX 5.0 with folders, SSL support, custom directive templates
  • Launched VirtualHostX 6.0 and reset the app’s development cycle to coincide with Apple
  • Built and launched Minion
  • Built and beta launched Hobo
  • Built Upshot
  • Built and launched Shutterbox
  • Retired Incoming!
  • Retired Traffic Advisor
  • Migrated off Rackspace to Linode
  • Integrated a FAQ/support website into clickontyler.com
  • Introduced commercial licenses with priority support
  • Began writing regularly at tyler.io
  • Wrote 56 blog posts. 35,900 words
  • Wrote half a book on my Dropbox photography workflow. 11,251 words
  • Gained 883 newsletter subscribers (42% growth)
  • Sent 11 newsletter campaigns (10,789 emails)
  • 68% newsletter open rate (19,447 opens, 7,406 unique opens) (18% industry average)
  • 15% newsletter click-through rate (2,217 clicks, 1,666 unique clicks) (2.5% industry average)

All of that, while caring for (dealing with) our first son, who was born at the start of the year. And, while working a full-time job as well.

A sincere thank-you to all of my customers and everyone who reads this blog. I can’t wait for 2015.

My Inboxes

I’m not one of those people who feels busy all the time. I typically never feel overwhelmed no matter how much is on my plate. But I know and have worked with lots of people who always seem to be in a hurry and are frazzled trying to remember all the tasks in front of them.

I’ve never been able to understand the mindset of the perpetually busy person. I don’t at all mean that to sound condescending. It’s just not in my nature to feel overwhelmed very often.

I really do believe that a big reason for why I tend to stay calm even during my busiest times is that I fully trust my (mostly) digital organization system for running my life. And a key part of believing in my system is knowing that any time an actionable piece of information comes my way, I have a dedicated inbox I can place it into where I know it won’t be forgotten or overlooked.

And that’s the purpose of an inbox – whether digital or physical. It’s a dumping ground where you can safely store everything you need to do but haven’t yet had time to process, schedule, or fully examine. Then, during your regularly scheduled review or whenever you have time, you can go through the contents of your inbox and either act on, defer, or delete its contents.

Today I thought I’d share my various inboxes and how I use them.

If you’ve read any of the other productivity posts on this blog, you’ll know I’m a heavy OmniFocus user. It’s my first and primary inbox. Any time I’m at my Mac and I come across something that needs doing, a keyboard shortcut launches the app’s quick entry window. I can type in my task, press return, and go back to my work knowing the task is captured and waiting for review the next time I process my inbox. When I’m away from my Mac, new tasks go straight into my inbox by way of the OmniFocus iPhone app. In almost any situation, I’m able to capture my tasks without breaking the flow of whatever else I’m doing.

I have a default Evernote notebook titled “@Inbox” where all of my new notes go. Every piece of information I clip from the web or capture from some other source is initially filed into @Inbox. Once a week, during my OmniFocus weekly review, I’ll go through all the notes I created last week and sort them into a permanent notebook. (The “@” at the front of “Inbox” keeps the notebook sorted to the top of Evernote’s notebook list.)

I’m also a heavy user of Drafts on iOS. It’s the fastest way to write down any amount of text that you plan on doing something with later. When people dictate their phone number or email address to me, I’ll typically capture it into Drafts and then add it to a real address book contact later. Also, many of my blog posts begin in Drafts. It’s very common for me to have the inspiration for a new post while I’m away from the computer. I’ll use Drafts to jot down the topic and maybe even a few sentences worth of ideas I want to be sure to include. Later, I’ll move that text into a proper draft post in WordPress where it will sit until I flesh it out into a completed post.

I also use my (unreleased) iOS app Upshot to quickly capture photos, videos, and audio recordings. Everything I capture with the app is immediately uploaded to a Dropbox folder for future processing. Processing that folder happens (of course) during my weekly review.

My final digital inbox is literally my Gmail inbox. As I wrote previously about my email habits, the only emails in my inbox are either unread or something I need to act on. That guarantees I never have to spend time scanning over my inbox for emails that no longer matter. Everything in it requires an action of some kind – even if it’s as simple as deleting the message.

So those are my digital inboxes. But what about the physical world? Unsurprisingly, my solution is to scan everything into digital form.

Next to our front door is a literal inbox hanging on the wall. All of our snail mail and any other papers we acquire go into it. Once or twice a week I’ll empty it and bring everything into my office. Every piece of paper is either thrown away or scanned into PDF form with my ScanSnap and then shredded. My goal is to remain as paperless as possible. And other than a few mortgage documents stored in a fire safe, there’s zero paperwork in my office. Everything is in OCR’d PDF form and safely stored in Dropbox, where it’s sorted into an appropriate folder for future reference.

One workflow detail: When I scan a document, the built-in ScanSnap software automatically OCR’s the text and saves the document as a PDF into a Dropbox folder named “_Inbox”. It’s not uncommon for there to be 10 – 15 PDFs in that folder at any given time. But, like everything else I’ve written about, during my weekly review I’ll review each PDF and file it away into a permanent folder.

And that’s it. Those are the seven inboxes where every piece of information, task, or document begins its journey into my trusted system.

For folks reading this, all of the above may sound insane. But it really is a simple system once you have the right tools and workflow in place. And it’s actually kind of liberating. I never have to deal with a computer monitor covered in sticky notes of things I have to remember. Instead, I’m confident that everything is in it’s correct place where it won’t be forgotten or overlooked. And that confidence leads to a clear mind free of open loops (to use David Allen’s term) so I can focus on the actual work in front of me.

That Connection

I don’t code every day. Even when my only job was running my little company, I never had enough work in the pipeline to keep me busy in Xcode five days a week. The actual programming part of my job comes in fits and spurts as I work on new features and bug fixes.

The only area of running my company that is consistent (other than the administrative overhead) is customer service.

Simply due to the fact that I sell my software worldwide, I have customers in every time zone and in countries with vastly different holiday schedules than my own. That means support emails, tweets, and phone calls can arrive at any time of day and any day of the year.

I’d wager half of the work I do for Click On Tyler involves interacting with my customers. Support emails, feature requests, bug reports. Over the seven years I’ve been selling my software, I’ve talked with literally thousands of my users. Some of the most frequent ones are now on a first-name basis. A select few have even become friends.

It’s a part of the job I truly enjoy.

Helping a customer get started with one of my apps or troubleshooting a bug and delivering a fix never gets old. For days when I’m feeling down, or after one of those fortunately rare times when a customer yells at me, I keep a folder in my email full of letters from people simply saying “thank you”.

I really do thrive on all that interaction. It’s an amazing feeling knowing not only are people willing to pay money for something you built, but that something you built has had a measurable, positive impact on someone’s life.

And that’s why I think I’ve never 100% ever loved any of my “real” jobs. I’ve built websites and apps for many different companies. But I’ve never once been given the opportunity to interact with customers or see the work I’ve done in the hands of users. Whether due to bureaucracy, company policy, or simply logistics, I’ve always been kept separate from the people using the code I spend eight hours a day writing.

It leaves me without the connection I’ve grown so accustomed to with my own software business. And that connection is vital. It keeps you grounded, honest, and empathetic towards your customers. It seeps into your brain and imparts a bit of humanity into the code you’re writing.

So don’t dread the time you spend talking with your customers. Relish it. It keeps you connected and provides the fuel you need to keep your software operating at a human level.