Category Archives for "Business of Software"

Setting and Achieving Your Goals With OKRs

If you lack a systemized process for setting and achieving goals, your likely to run into all sorts of problems:

  • Writing vague goals. 
  • We pick the wrong goals. 
  • Tackling too many goals. 
  • Choosing goals that are too hard.
  • Choosing goals that are too easy
  • Defining conflicting goals.
  • Create goals without committing to our goals. 
  • We don’t hold ourselves accountable

Plenty of people will tell you the importance of setting goals. What people don’t tell you is how to choose, set and accomplish them.

In Measure What Matters, John Doerr lays out an approach to goals to tackle these challenges. John taught this to industry juggernauts Google, Intel, Adobe, and Intuit and others. Its design increases focus, commitment, and ambition. Among teams, It fosters alignment, transparency, and accountability. 

Introducing OKRs

The system is OKRs, short for Objectives and Key Results. An Objective is something that you intend to accomplish, your goal: Your what. An objective contains several key results, which are objective, quantifiable measures of progress: Your how.

Here’s an example OKR From their website:

Defining Your Objectives And Key Results

the system works like this:

  1. Decide on 3 – 5 objectives you would like to achieve and define them.
  2. For each of those 3 -5 objectives, you choose 3 – 5 key results you can use to track progress toward achieving that objective.
  3. From there, you decide how to do the best work that fits into this framework.

Before deciding your objective, you have to decide where it is you want to go. If objectives are what you are doing, and key objectives are how you are doing it, then where you are going is your mission.

For example, Google’s mission is to “Organize all the world’s information.” Your personal mission may be raising your children or gaining financial independence. Your company may have one of these plastered on a wall or ‘about’ page.

Choosing objectives you can commit to takes deep thinking. Don’t try to define objectives no Monday and begin working towards them on Tuesday. Give your self some time to consider exactly what it is you want to accomplish.

When you’re ready to move forward, lets take a closer look at how to define quality objectives and key results.

Characteristics of Strong Objectives

Objectives need to be clear and understandable. In the example you’ll see that while the objective sounds initially vague, the key results give it precision. You can set up systems to measure each of these and determine objectively how well you achieved your goal. Another benefit of clarity is that it increases alignment within a team. There’s no debate about what we are all working together to accomplish. 

Achieving every key result achieves the objective. If that isn’t true then you need to tweak your OKR. One trick recommended in the book is to try to rewrite your objectives and key results ending with “as measured by ________”. In this case, your objective is measured by the sum of all key results. 

Objectives must be worth achieving. What’s the point of pursuing a goal that isn’t going to have a significant impact on your business or life?

You should timebox objectives. The time frame could be monthly or quarterly, but its recommended to not think in longer time frames. Longer time frames mean aiming for more ill-defined objectives. Shorter time frames may be ok at the start, as a warm-up, but it is hard to accomplish significant work in a weekly time frame.

Write down your objectives. If you don’t, then they cannot be clearly discussed and people cannot be held accountable. 

Defining Clear Key Results

Key results must be measurable. As a general rule, they should be a number. “Deliver prototype by 10/31” is a number. On that date, the number of delivered prototypes will be zero or one.

These numbers should also be objective. Getting approval from a manager is not a good key result is all it relies on is one person’s discretion. If you want to set results for measures of quality such as user experience, find ways to quantifiably measure that, through either analytics or surveys.

Key results should include measures of quality. All metrics are games, and key results should be defined to prevent harmful gaming. For example, “publish 100 blog posts this quarter” is a dangerous metric, because it contains no bounds what a “blog post” is. A team ignoring quality could hit this target in weeks if not days. You could improve this KR by also defining a metric around the impact of the posts, such as conversion rates, engagement, etc. 

The Goldilocks Ambition Zone

Here’s where I think the system goes from solid to genius: When it comes to setting your goals, you should aim for a success rate of 70%. Aiming for a 100% goal rate gives you an incentive to set less ambitious goals. Have a hit rate too low means you are setting goals that are unachievable. 70% is a good middle ground: You succeed more than fail, but you are still stretching and being ambitious. 

Imagine how different education would be if you were encouraged instead of punished for tackling challenges outside your comfort zone. 

As a gut check, take stock of how you feel when you look at the OKRs you are responsible for achieving. How do you feel? Do you feel very confident that you pull them all off? Then you didn’t stretch enough. Can you shorten deadlines or increase targets?

What if you feel scared like there is no way you’ll even come close? That may be a sign that you are reaching too much. Setting goals that are unreachable are defeating. If you know you won’t come close, why should you try? What will motivate your team?

But, if you look at your targets, and you feel like maybe you could achieve these, or at least most of these, if you push yourself, then you’ve found the Goldilocks zone. You have objectives that will test you, but with a test that you can pass if you get outside your comfort zone.

As my coach likes to say: “Get comfortable being uncomfortable.”

Measuring Success 

While objectives completion is always a clear yes or no, measuring progress and achievement can be more nuanced. Let’s say in our previous example of writing 100 blog posts in a quarter. You could write 70. While you did not achieve the goal, you did achieve 70% of it. Think about measuring each of your key results on a 0.0 – 1.0 scale, with the following goal posts: 

  • 0.0 – 0.3: Red: You failed or have not made significant progress. 
  • 0.3 – 0.7: Yellow: You have made some progress, but still fell short.
  • 0.8 – 1.0 : Green: You have achieved all or most of the goal. 

These numbers should be from both objective metrics and self-evaluation. Consider the 99% uptime key result from the earlier example. If your site has 70% uptime, would you say that’s yellow or red? In that scenario, a more reasonable scale would be something like  < 95% uptime is red, 95-98% is yellow, and 98-99% is in the green range. 

You may also consider separating objectives into “stretch” and “committed” categories. Some goals may be important to hit and you should really be thinking about going for 100% there. Others may be more ambitious but also less costly if they fail, so aiming higher there is ok.

 Tracking Progress

Instead of annual or quarterly performance reviews, the OKR system encourages continuous feedback with another acronym: CFRs. CFRs stand for Conversation, Feedback, and Recognition. Conversations should focus on facts over feelings, and process over outcome. These are not a replacement for annual or quarterly performance reviews, which are used to determine other measures, mainly compensation based on performance. It’s important that you divorce feedback on goals from compensation. Changing compensation is backward facing and about the person, while CFR discussions are forward facing and about the goal. Both are more effective when decoupled. Here are 5 questions from Measure What Matters that can help frame these discussions: 

  1. What are you working on? 
  2. How are your OKRs coming along? 
  3. Is there anything impeding your work? 
  4. What do you need from me to be more successful? 
  5. How do you need to grow in order to achieve your goals? 

As teams work together, it’s important to remember to recognize when others do well in a public and visible manner. It helps people remember how their work helps others.

OKRs In Teams: Transparent, Interconnected Cascades

OKRs are primarily designed for teams, although I think they are valuable for individuals also. When working in teams, how multiple OKRs interact with one another is another powerful part of the system.

OKRs cannot be written and handed down from up high. You must write them collaboratively. However, One manager’s Key Result and be someone else’s objective. For example, let’s look at the example again. Let’s imagine that this OKR is from the CTO who is responsible for the project. One of the key results is 99% uptime. This could be an objective for the person or team who is in charge of systems administration, who could then define sub-KRs that could them achieve that objective. You can break the KR “Response time of under 1 second” into other objectives and key results for front end and back end development teams. While OKRs are not assigned top-down, they do cascade down or sideways. This helps people contributing at any level to see how their work connects to the bigger picture. 

A single person should own objectives. If that’s not possible then they should be owned by a single team. Focus is important, so no single person or team should have more than five objectives. Another benefit is the focus that this brings. If work does not go towards or at least facilitate the pursuit of a key result, then you can confidently remove it from the backlog of tasks. 

The interconnectedness leads to another feature of OKRs in teams: They must be transparent. Everyone can see everyone else’s OKRs along with progress. It helps keep people honest. It also helps avoid situations where teams are blind to others work. One team might be able to help another if they knew the challenges another team was facing. Or it is possible that teams have conflicting goals and are working against each other without knowing it. Transparency breeds accountability and alignment. This also helps encourage clarity in objectives. If everyone in the company can’t understand it, it may need some tweaking. 

With these systems, you need to encourage a culture that supports safety. By that I mean if you are encouraging people to stretch for goals where they will fail 30% of the time, then people need to feel comfortable talking about mistakes and failures. transparency is easier when you know you will not be mocked or admonished for taking risks that might not pan out. On the flip side, you should also aim for a culture that encourages doing quality work and being a place where you can count on others to do so as well.  

According to a study by Deloitte, the largest increase in job satisfaction and productivity comes with a company has clearly defined goals, written down, and shared freely. 

Implementing OKRs

I think OKRs are useful not only in a team setting but individually as well. After reading Measure What Matters I’ve begun applying the system to personal goals like finance. OKRs are a big shift that will not overhaul a company or a human overnight. Start small. Maybe you can set 1 – 2 OKRs on your own, or with your team. Try one for a weak or a month and see how it feels. If you are seeing positive results and getting your footing in systemized goal setting, you can begin to expand how often you use them.

I also would not recommend jumping in too quickly. Don’t try to define OKRs and commit and implement them on the same day. Take some time to reflect on what you are doing and how you’ve defined it. Another thing to remember is that OKRs can be flexible. Don’t give up on an OKR because its hard, but feel free to adjust definitions and key results if you find better ways to measure them. If you realize that an OKR no longer seems to have meaning or impact, kill it. If you finish your 3-month OKR in two, consider starting another one early. 

By implementing these systems, you can overcome most of the common reasons people don’t achieve their goals. Let’s look at the list from before, and how you could approach setting goals differently now: 

  • Your goals are vague, they are specific, measurable, and actionable. 
  • You’ve considered how your goals fit into a larger mission. 
  • By targeting 70% success, you’ve ensured that won’t set goals that are too hard or too easy. 
  • By being clear and transparent, you’ve ensured that goals increase, rather than decrease alignment. 
  • That clarity also means you have the incentive to hold yourself and others accountable. 
  • You’ve put a system of feedback and continuous improvement in place, making it easier to commit to and achieve your goals. 

It’s not magic, but it’s also not easy. OKRs won’t magically make you a 10x productivity wizard or fix a toxic company culture, but it can give you a framework and a process from which you can make improvements. 

The Budget is Set. Now What?

Projects are sometimes doomed long before any designers or developers are brought in. Your work will never provide value or even see the light of day if you are working on something where the only possible outcomes are failure and mediocrity. But some can be saved. You can make it work. Your career will be better off if you can learn to avoid these projects and work within given constraints.

The first design decision on your project was made when a budget was allocated.

Mike Monteiro, Ruined by Design

I use Mike’s broad definition of design: making decisions on how a system works is doing design. Stakeholders, project managers, and developers all design. Marketers could also benefit by realizing what they do involves design. Some developers don’t see it that way. They think they just write code. That’s wrong. We’re problem solvers, systems designers, and the people who need to help others navigate this ever-expanding technological jungle we are building. We can deliver better work and more value to those we serve if we understand our role in the design process.

Let’s take another look at the budget.

Various software projects can be attempted, sometimes even completed, for just about any budget. You could build a real estate listing site for $5k, $50k, or millions of dollars. You could spend $32 million building a holistic solution and not ship a damn thing.

Budgeting for software is like buying a house or a car. There is a wide range of options, and it depends on your situation at the time and plans for the future. And like major lifestyle financial choices, typically the budget is the biggest constraint we have to consider when building software.

Then our challenge is this: how can you help projects fit into a predetermined budget?

Make Responsible, Considerate Technology Choices

Different tech stacks come with different costs. If you are implementing the work one of the biggest factors may be your experience with it. Using the shiniest new tool is often not going to be the most efficient. Plenty of successful projects have been shipped with WordPress, PHP, or Ruby on Rails, and were successful.

Let Only The Best Features Survive

If you can’t fit every feature in, you have to decide which features need to go. That’s part of the design. As a developer, it is your responsibility to help stakeholders understand the value of work that may not seem apparent. People will want you to do your job poorly, and call it “cutting features.” Security, accessibility, usability, and testing are not up for debate in this conversation. Those are features, those are taking care of the people that use what you build. Ignoring them makes you a jerk.

Instead, strong candidates for deferment or deletion are features where you say “we may need it one day”, or “what if…”. If you aren’t sure if you need it and you need to make cuts, start there. The more user research that has been done at the point, the more confidently you can argue for these changes.

If a feature doesn’t need to be killed outright, then you can always defer it to the next version. Keeping things for a version 2 or 3 means can be more palpable than saying they won’t be done outright.

Nail Down Requirements With Scope Hammering

If you can’t cut a feature, maybe you can pare down a feature. I love the term Scope Hammering. As Jason Fried puts it:

We take the chisel to the big block of marble and figuring out how to sculpt, nip, and tuck a feature into the best six-week version possible. It’s all about looking carefully at a feature and figuring out the true essence. Not what can it be, but what does it need to be?

Jason Fried, How we Structure our Work and Teams at Basecamp

Make every form field, database column, and page defend its existence. For example, once I worked with a company that wanted users to enter their email, password, username, business name, age, and gender on a signup form. This raises all kinds of concerns, and opportunities to pare down scope:

  • Do we need a username? In this case, business name would suffice, so we can cut that field.
  • Why do we need to know age and gender? Should the gender field be a radio box (with how many options?), or a text field? Why do we need this data? We didn’t have a plan for how use it beyond “…marketing?”, so we can avoid these design discussions and ethical quandaries by eliminating them all together.

Now we have a simple form with two fields. Its probably more effective with less and time and resources invested. And now that it is something that fits into a common pattern that brings me to my next point:

Don’t Build If You Can Buy

Something built from scratch has no more inherent value than an open source library, paid plugin, or 3rd party API within your application. One of the biggest mistakes I see developers make is to try and build their own solution when perfectly cromulent solutions exist. Often times, A pre-built solution will have been more battle-tested, and therefore reliable than building something from scratch. There are situations where it makes sense to build your own solution, but there has to be a good justification. Either there is nothing that exists, or what does exist meets your required use case (see previous two sections.)

When All Else Fails, It’s Time to Get Real

Sometimes, you can cut features, reduce the remaining features down to their core essence, and find a way to piece together a solution with existing tools and services, and still not have a way to deliver what’s requested within budget. What do you do with stakeholders then?

You tell them.

Let me tell you a quick story. I once have several phone calls with a potential client. They wanted to start a new project that sounded interesting and seemed like it could do some real good in the world. I was excited, and so was she. Then, we get down to talking about price.

Me: “I think a project at this scale would be in the range of $15,000 – $20,000”

Her: “My budget is $500.”

I was crushed. I had put so much work into the project proposal and now I knew it wasn’t going anywhere. There’s another lesson in here about doing budget discovery, but that’s for another article. Instead, it didn’t matter what I designed. It was superseded by the design choice that was already made.

At this point I could have ended the call and marked the deal as lost in my CRM, but instead I took the opportunity to try and help this person understand the costs of what goes into software development, and tried to help them have more realistic expectations.

Project planning with stakeholders should be collaborative, not combative. If you can find alternate solutions that work within the budget, do it. If you can’t, have an honest conversation about it.

Take Ownership of Your Responsibility to Help Others

A project’s success lives or dies on every decision that is made along the way. Sometimes those decisions are out of your hands, but other times you have an opportunity to help those decisions end in conclusions that help a project move towards success. That’s the real job of a developer, not just to write code.

P.S. If you want to learn more about delivering software on time and within budget, you can learn more by checking out a sample chapter of Dependable.

[content_upgrade cu_id=”43″]Get the bonus content: Dependable Sample[content_upgrade_button]Click Here[/content_upgrade_button][/content_upgrade]

Moving Fast Without Breaking Things

Why is speed important? 

One of the most common recurring conversations I had with startup founders was how to get products and features out the door faster. Typically, all is running smoothly until it’s time to actually push your work out into the wild. People want to buy the poster that says “move fast and break things”, but they end up not doing the former, causing more of the latter.  One of my core tenants in Dependable was to help move projects forward by making sure everyone checks egos at the door and gets out of their own way. 

Fear is the project killer. 

So why is moving fast important? When put on the spot recently, I blurted out “because life is short and we’re all going to die one day.” I thought I should try to collect my thoughts and phrase it in a less morbid fashion. 

  • It means you can serve others and deliver value quicker. Holding out on delivering value to your customers is selfish.
  • Getting products into customer’s hands means a quicker path to getting cash flow into your pocket. 
  • Speed is a competitive advantage. The quicker you get features out the door, the quicker you can offer something others don’t.
  • As an employee, your stint at your company may be shorter than you think. According to a Stack Overflow 2018 Survey, over half of the developers asked changed jobs in the last two years. That means you have less time to make an impact. This is doubly true if you are a freelancer or contractor working on a project. 
  • You may be in a race with apathy. One of the top 10 reasons projects fail is the lifecycle of stakeholders giving a damn is shorter than the product development lifecycle. 
  • There is nothing quicker than done. And done is the engine of more

And to be clear, I am not an advocate of the “move fast and break things” mantra. Facebook lived by it & paid it no mind when they broke things like their interface, their trust among their users, the news media, or American democracy writ large. Moving fast without caring about destination or side effects isn’t speed, it’s haste and recklessness. It’s careening down the highway at 100mph, instead of picking the route to your destination with the quickest route and finding ways to cut out stops along the way. 

So don’t be hasty, and don’t be reckless. But be quick, and be aggressive

Reading Articles Because You’re Bored, Huh?

When people ask me how work is going, my response is “the good kind of boring.” 

How so? 

No pressing deadlines. No sense of urgency. A tried-and-true tech stack. Feedback comes in, and I implement changes. I send code off for review and review others — Features ship. Bugs die. 

It’s not terrible. But, when my wife comes home and asks me to tell me about my day, I got nothing. 

I’m not complaining, but “the good kind of boring” is still monotonous. Every job and every project has doldrums. Periods, where all there is, is the grind. Since these times are inevitable, what can you do to tolerate them better? I have found a few tactics that have helped me, but before that, here is why it’s imperative that you first take ownership of your boredom. 

Your manager isn’t here to spark joy

It is not your boss’s responsibility to make your job enjoyable, exciting or fulfilling. That’s on you. You don’t find a job that fulfills you; you find ways to build more fulfillment out of your work. Your happiness is more a function of your self-awareness and self-management than external factors.  It’s part of your emotional intelligence. What’s causing your boredom, and what can you do to relieve it? It’s a learnable skill, just like writing, coding, or selling.  Now on to those tactics.  

1. You Can Accomplish Much With 5 Minutes of Mindfulness

Over the last few years, mindfulness has moved from Eastern religious practice to Silicon Valley fad. More than enough podcasts discuss it, so I won’t belabor the point here. Just know this: mindfulness doesn’t have to be a rigid morning routine or even a meditative practice. It can be 5 – 10 minutes of quiet, taking stock of your crazy monkey mind’s contents. We can all 5 minutes. Here’s a trick: The next time you are reading an article online, listening to a podcast, checking social media, or checking your email, don’t. Instead, take a moment to be present.  Ask yourself:  

  • How am I feeling at this moment? 
  • What’s important? 
  • Why am I doing this? 
  • What can I do next? 

2. Are You As Busy As You Could Be? 

Are you honestly working as hard as you can? Is there a way you can Daft Punk your tasks and do them harder, better, faster, or stronger? Actively trying to improve your skills increases engagement. Here’s how I turned one of my first gigs, a data entry job of endless Excel cut-and-pasting, into an enjoyable and fruitful exercise: 

I hid my mouse. 

 Excel has roughly 37,000 hotkeys, of which I knew about 4. I decided to learn more of them. It turned drudgery into a challenge, and after a couple of weeks, I was an Excel dynamo. I was able to complete the task two weeks ahead of schedule and allowed to move on to more challenging products. I walked away with knowledge of 2, maybe even 3 percent of the shortcuts.

3. Look Away From Your Desk

Are there other tasks you can do outside of your current position? Talk to your coworkers and see what they are struggling with. Another story:  Part of working in automation is that you are in a constant state of obsoleting yourself. At one previous job, when I had automated all the significant sections of our marketing funnel at one company, I talked to coworkers about their processes. It turns out customer support had about 1.5 full-time jobs worth of tedious bullshit on their plate. I took on automating that and was able to get others away from their excel sheets so they could do something a little less boring themselves. 

 4. Do Deadlifts of The Mind

What if none the above work? No matter how hard you try to find meaning or challenge in your work, it still seems listless and dull. You doing as much as you can, and you can’t take on anything else. 


That means you are fortunate enough to have a chance to work on your mental discipline. Just as emotional intelligence increases with study and practice, mental toughness increases with training. It works like any other way you increase knowledge or strength. You improve by pushing your limits. You’re bored? Keep being bored. Learn how to be bored. If it’s inevitable, then prepare. If you can’t improve your situation, better yourself. 

I Google Simple Functions Daily… Am I A Bad Developer?

“Help! I Landed A Job, And I Have No Idea What I’m Doing!”

Do you feel like you don’t know what you’re doing… like you’re a fraud?

Impostor syndrome is common in our industry.

Wondering when you’ll “just know” something and not be so reliant on Google & Stack Overflow? That day never comes.

Anxiety comes from chasing an ideal that doesn’t exist. Everyone relies on external resources. There is no “10x” developer that just knows the documentation from memory, that doesn’t have to reference.

Every single developer makes mistakes every day. Every developer has moments they have to reference the language docs for a particular function, even if they’ve used it 1,000 times before. (It was probably this one.)

What you know isn’t what’s important. What you get done is. Shift your mindset from “how good am I?” to “what can I get done?” It moves your focus from internal to external. Stop worrying about yourself, start worrying about others

Break the problem down. Solve the smallest part. Get something done. Start writing code before you understand. You don’t have to commit. Work with others, it’s a good reminder that everyone deals with the problem.

Most of your job is novel. You do things you have never done before and solve problems you have never seen for a living.

Everyone Googles. You can Google. I’m giving you permission.

All you have to know is the next actionable step, And go for it. Don’t read and study and noodle around the problem. Take action. Find answers as problems arise.

Freelancing vs. Employment — When to Go Solo and When to Join a Team

Most creatives freelance at some point. Either as extra nights-and-weekends work, filling gaps between jobs, or building your own business. I advocate for learning the basics of doing client work. It gives you immutable job security. If you know how to find clients and profitable work, you’re never unemployed. The ability to fend for yourself provides freedom.

At some point, you’ll face the decision: should I freelance or work full-time? It’s a personal decision, and there is no correct choice. The only wrong choice is being indecisive and not moving forward.

I’m Talking About Building a Business, Not Just Side Gigs

First I want to distinguish between freelancing and building a service business. Freelancing could mean taking side gigs here or there and making a quick buck. If you are considering client work as primary income, then you must approach it as building a business, not gig hopping. You’ll need consistent sales and marketing processes, and the ability to manage your cash flow.

The Factors In the Decision

Long term, my goal is complete financial independence. I’m aiming to have assets that generate enough cash flow so that no longer have required work. The simplest, most conservative strategy is to have enough investments such that 4% returns pays for everything. In the interim, work is finding the quickest path to that solution.

From that perspective, we have a starting point. “Will freelancing help me reach independence faster than full-time employment?”

 But that’s just one factor. If all we did were optimize for retirement, we’d all end up working in finance, fueled by a diet of rice and beans. In the interim, it’s about optimizing both cash flow and lifestyle until you are at a point you are no longer required to work to sustain yourself.

But wait, doesn’t freelancing provide more freedom? After all, that is the origin of the term, Although I prefer the Westerosi version of Sellsword. In some ways, it does.

But it’s complicated.

What Are Some of the Benefits Freelancing Offers Over Employment?

Control Over Your Time & Schedule

One of the reason’s people see freelancing as appealing is they see it as working whenever they want as much they want.

Spoilers: it’s not.

Freedom isn’t a lack of structure; it’s the ability to build the structure. You have 50 hours of work to do this week. When are they?  You are working with clients and will need to be available to them at some point. You aren’t completely divorced from the 9-to-5 world.

But deciding how many of those hours you work and when is still under your control. You also don’t have to ask anyone for vacation time or over time. If you want to make more, work more. If you need a break, scale back the client work you’re taking on. Which leads to the other part of freelancing freedom:

Control Over Your Income

If you want to make more money at a full-time job, how do you do it? Overtime isn’t an option for a salaried creative, so you’ll have to ask for a raise. You may be able to get a few percentage points, but that doesn’t substiantially move the needle. Usually, the only option is to make a  diagonal leap to get a higher paying version of your job at another company.

When freelancing, you set your rates and capacity. Nothing is stopping you from doubling your rate on your next project. You also have more say on how you get paid. You can get paid upfront or net 60. You can bill hourly or with fixed fees. Sometimes changing your pricing strategy is all it can take to increase your revenue by 70%.

But neither of these are the real freedom most freelancers are looking for. What you really want is…

Total Control Over Your Process and Your Clients

Who you work for is often the biggest factor in job satisfaction. If you work at an agency that takes on cheap toxic clients and then attempts to get profitable with volume, you’re gonna have a bad time. When you’re running the show, you get to decide who you work for and what kind of work you do. If you enjoy working with clients in the music industry, you can build a pipeline focused on them exclusively. Don’t want to write PHP anymore? Don’t have to.

There’s A Higher Ceiling on Your Income

“You’ll never get rich working for someone else.”

This quote holds true in freelancing since you are working on assets owned by other people. But you can make more working for yourself than you can working for a company. I know several freelancers who make between $150k – $250k per year, and they don’t live in Silicon Valley.

Freelancing Gives You Opportunities To Gain More Leverage

If you’re freelancing and your only billing hourly, you’re doing it wrong. With your independence, you should be finding ways to leverage time and money, not just trade time for money. If you charge a flat fee, you can shave hours off of development buy shopping the shelf instead of building something from scratch. You can outsource tasks to virtual assistants or subcontractors. These tasks allow you to skyrocket your effective hourly rate.

You Get to Be An ‘Entrepreneur-Lite’

Owning a business means owning assets and systems that generate revenue. When your freelancing, you are still responsible for some of the work. In some ways, freelancing is more akin to designing a job for yourself and not building a company. You still learn a lot about marketing, sales, and self-discipline. Being a freelancer means less time working on your craft, but more time sharpening your business acumen.

Freelancing is Lower Risk Than Employment

Contrary to popular belief, employment is the highest risk professional position you can put yourself in.

When you are an employee, it only takes one person deciding that they don’t want you to work at your position anymore and POOF, there goes 100% of your cash flow.

When freelancing, you have a diverse set of clients. In one of them fires you, you should only be losing a small fraction of your income. If you have systems for finding clients, you also have a quicker recovery system.

So What Are The Benefits of Employment?

(Note: much of this part is based on my personal experience and is U.S.-Centric. If you live in a country where health care makes sense, your mileage may vary.)

The Literal Benefits.

You can often get better health insurance at a lower rate than you could being self-employed. There are also some tax benefits if your employer offers you a 401k.

The World Was Built For The Employed

Laws and banking systems aren’t set up with the self-employed in mind. Want a fun challenge for yourself? Apply for a mortgage while self-employed.

If my wife weren’t traditionally employed, we likely would not have been able to buy our first home. It’s easier to get good credit when the bank sees that you have ‘stable’ income. The combination of credit score, a W-2, health care, and a tax-preferred investment account means that full-time salaried employment provides you with a lot of life infrastructure.

You Have a Smaller Burden of Responsibility…

With great freedom comes great responsibility. Sometimes for 100% of a project. On a tea,  people have specialized jobs, and you have a support system.

Which Grants You Greater Focus

I knew a freelance developer who was frustrated with all the hours he had to spend hustling. “I wish I could just put on headphones and code all day,” he said.

The, he should get a job.

If you’re a full-time dev, that’s what your boss wants. This means more time focusing on your craft.

There’s Less Variance

People think that freelancing is higher risk, but in reality, it’s higher variance. You may have lean or fat months, busy and slow seasons. Everyone isn’t cut out for variance. Jobs tend to bring more consistency: you work roughly the same number of hours with the same group of people forever and ever. You get roughly the same amount of money every two weeks, which makes budgeting simpler.

Choose Your Adventure Time: Read The Section That Applies to You To Help You Make The Right Decision

Questions to Ask Yourself If You Are Employed and Considering Going Freelance

  • Do I have 3 – 6 months runway in the bank?
  • Do I have a lot of consumer debt?
  • Do I have a list of connections I can reach out to?
  • Do I have a plan to get my first clients?
  • Have I ever freelanced before?
  • Do I have at least two years experience working in my field?
  • Do I want to build a business or a better job?
  • Do I know how to protect myself legally and get paid?
  • Do I have the discipline needed to take complete control over my time and schedule?
  • Can I make more money (eventually) freelancing vs. working at my job?
  • Will I be happier working for myself compared to working at a job?

Questions To Ask Yourself if You Are Freelancing, And Considering Taking a Full-Time Job

  • Will I learn skills at this job that will make a more valuable asset in the long-term?
  • Do they have a good benefits package?
  • Will I enjoy being a part of the team at this company?
  • Do I agree with the team’s core values?
  • Will I harm professional relationships by breaking client relationships?
  • Can you go back to a ‘team player’ mindset?
  • Are you willing to sacrifice the current amount of control you have over your time and energy?

What is a Marketing Developer?

When surgery was invented, the job title “surgeon” came with no modifiers. It didn’t matter what needed to come off or go in, you could see the same person. As medicine advanced, the job splintered. More knowledge meant increased complexity which necessitated specialization. Soon you would see one person for your war wounds and a different surgeon for tuberculosis. This process continued today, where we now have many different specializations.

What does this have to do with web development?

I’m getting there. I’ve watched a similar splintering happen to designers and developers throughout my career. At my first job at an agency, back in 2008, those were the only two titles in the production department. At today’s software company, you will find a mix of front-end, back-end, DevOps, mobile, native, UX & UI experts. All taking orders from a product manager or project manager, sometimes both.

I’ve seen a new type of position begin to branch off. The marketing developer. Sometimes called a growth engineer.

Today marketing departments of a certain sophistication require a programmer’s skill. You can make progress faster when you don’t have to fight the product team to gain access to it.

Since this idea is new to me, I want to attempt to put a finer point on it.

 What are the responsibilities of a marketing developer?

  • Analytics. Ensuring metrics are tracked accurately and can be interpreted usefully.
  • Website Performance.  It’s known that slow performance decreases conversions. A marketing developer can focus on performance improvements with the aim to increase revenue.
  • Segmentation & Personalization. If you’re speaking to everyone, you’re speaking to no one. These days there is no excuse for showing the same web pages to every customer.
  • Tools as Marketing.  You typically don’t want to take a developer off of working on your core product to build a tool for customer acquisition. Examples include VWO’s Statistical Significance Calculator.
  • Testing & Optimization.  Speaking of VWO, when A/B testing starts to require npm modules, you’ll need an engineer to implement them.
  • Marketing Automation.  Sometimes you want to write scripts for your in-house automation. Even if you are using off-the-shelf tools such as  Zapier or Drip’s workflow editor, these are examples of duck programming and benefit from an engineer’s eye.

It’s an interesting field. One I expect to see a lot more of in the coming years.

Process Documentation: The First Step to Eliminating Tedious Work

Looking for ways to spend less time doing parts of your job that you hate? You have three options:

  • Eliminate.
  • Delegate.
  • Automate.

I’m a minimalist. I like to take a Marie Kondo approach in business and life. Tasks get on out plate more quickly than they get off, and we don’t always stop to reflect and ask: “Does this work provide value? should we do it at all?”

Let’s assume for this article that the task has passed the sniff test. You can’t eliminate it. Then move on to the next two options: If a computer can do it automate, else we delegate the task to someone else.

There’s an important step before you can productively do either: document your process. Documenting your processes is something that you should be doing at any stage of your business, for a company of any size. I was documenting new processes on day 1 of my one-man shop.

Everyone has systems in their heads, whether they realize it or not. Do you have a morning routine? A strategy for handling your inbox? These are almost a process. However, I’m a firm believer that:

If Your Process Isn’t Written Down, It Doesn’t Exist

Ideas in your head are fuzzy and abstract. Getting a system out of your head and out into the real world has several benefits:

  • It forces your mind to bring clarity to ambiguity. Sometimes the simple act of writing a process can help you improve it.
  • It frees up mental RAM. You don’t have to remember every step of the process.
  • It improves reliability. A process means you do the job the same way every time.
  • You can iterate on the process. Once something is created it can be improved.
  • You can attack the work with greater confidence.
  • You can share your process with other people (the first step toward delegation)
  • You can find ways to streamline, eliminate, or automate parts of the process (the first step toward automation.)

So How Do You Write a Process?

Many people get hung up here.  Don’t. It can be anything that lays out how the job gets done. Some common examples:

  1. A numbered list of steps that you follow.
  2. A flowchart of if-then logic.
  3. A checklist that you go through.
  4. A rubric or heuristic you use to evaluate something.
  5. A template or swipe file you can use to kickstart a creative process.

You don’t have to pick one, choose the one that makes the most sense for the process at hand. Don’t try to force too much uniformity or rigidity. It also doesn’t have to be just one of these; it can be a mix.

Tools For Documenting Processes

  1. Google Docs— It’s used by most organizations so getting others on board is simple. You can share documents as read-only. You can easily link between docs or link to a doc from another tool.
  2. Screenflow — Screenflow makes it easy to record your screen and your voice simultaneously. I use this to record processes instead of writing them out. You can use the video as documentation, as a supplemental aid, or you can hand it off and have someone else for transcription. The free version of this is using screen recordings with Quicktime
  3. Trello — Trello is great for keeping track of processes that have multiple steps that take place over time. You also get checklists and links to Google Docs within a Trello card. The order of columns acts as a high-level documentation of the steps of the process. I’m also a fan of keeping a resources column on the far left, with cards linking to other processes and resources.
  4. Things —  Things is my de-facto to-do list. My ur-checklist. Every project, both personal and professional, is in there. I also find the scheduled and recurring tasks useful for turning processes into habits.
  5. Context-Specific Tools Every process doesn’t have to live in one place. You’ll see in the next example.

Case Study: Outreach

Recently I had to consider the following facts:

  1. Outreach, when done correctly, is an effective strategy for generating new business.
  2. I’m not a big fan of doing outreach.
  3. I am a big fan of building systems.

So the conclusion was obvious. I shouldn’t be doing outreach; I should be building the outreach system. So I decided to tackle the problem in that way. The process is broken down into three parts.

  1. Email Templates I created a Google Drive file with templates for reaching out. There are a couple of different ones depending on the context. Also worth noting that I’m not advocating for sending the same, impersonal, boring email to everyone; each template is still manually customized depending on the situation. In a way, it’s a mini-automation of the process.
  2. Recurring Task in Things Outreach is something I’ve made part of my daily routine. I keep two recurring tasks on my to-do list every day: One to do new outreach and one to do follow up.
  3. Track Progress in Pipedrive Pipedrive is my CRM of choice. It’s Trello + A Rolodex. I have a pipeline for keeping track of who I need to follow-up with and when.

By creating a process, I  turned outreach into something fun instead of being a chore. Now I’m not just sending emails; I’m testing and iterating on parts of the process. I was able to shrink down the amount of time I spend doing the outreach so that I can spend more time doing work I enjoy.

Getting Started

Try documenting one of your systems today. It shouldn’t take you more than 20 minutes. Pop open a Google Doc, and write down the steps or create a template for just one task. See how much easier that task feels the next time you go to tackle it. How much more confidence you have. See how many minutes you save. Once you get over the hump and get started working on processes and see the benefits, it’s almost addicting.

Should You Repeal and Replace Your Legacy Code Base?

tl,dr: no, you shouldn’t.

The United States Senate is on the brink of making a huge mistake. And it’s the same mistake that sinks software companies every day.

They want to rebuild a project from scratch.

It happens at software companies all the time, typically with new teams. They see a project full of legacy code that confuses and frightens them, and they decide they want to build a new codebase from the ground up.


(Dilbert 2014-08-12)

Ripping out an existing, working system is always a costly mistake. Even if…

  • It’s not working as well as you had hoped.
  • Improvements are difficult because of years of previous complex decisions.
  • You resent the guy who made because of that time he made fun of you during dinner.

But don’t take my word for it.  Take it from Stack Overflow co-founder Joel Spolsky in this essay about things you should never do.

Next time your company is thinking about repealing and replacing an existing project stop. You’re opening yourself up to once again face reasons projects fail  #1,  #4,  #7, and #10.

Look for ways you can improve the existing project without starting over.

It’s Never About Your Slide Deck

Hey there,

I’d like to share a story with you about my first conference talk, back at the end of September.


The First Day

September 28th, I arrive in Norfolk, Virginia for the speaker’s dinner. Brennan invited all of the speaker’s out to a fancy restaurant before the opening mixer at the Double Your Freelancing Conference . This conference will be my first time speaking at a conference. To prepare for any presentation, I have a routine:

  • Get increasingly anxious at the time approaches, even though I’ve over prepared.
  • 10 minutes before the speech, pace around muttering vocal warm up exercises. Look like a crazy homeless person.
  • Get on stage, feel fine.

The talk is never scary; it’s the anticipation that breeds anxiety, even though I know I shouldn’t be. The organization is on point, what could go wrong?

The Second Day

Matt Inglot takes the stage to give his talk. His slides broke. Matt didn’t miss a beat. My heart did.

Something could go wrong.

It was also Gina Horkey’s first conference speaking gig too (Don’t tell her I said that). She went on before me. We would silently cheer each other one whenever we passed by in the hall.

“We got this!” “Do we have this?” “We got this!”

Gina takes the stage. Slides are out of order. She dropped her clicker. It snapped open. The battery fell through a crack in the stage.


After that, it was my turn. I was a bit shaken up, but it went fine.

Later, at the bar

If I learned one thing from DYFC, successful lifestyle business
people know how to party.

Of course, we talked shop too. You know what people said about
the day’s presentations?

  • People talked about how professional and unflappable
    Matt was when his slides broke.
  • People talked about valuable Gina’s advice was, no one

cared about her bad luck. “All that happened, and she was still

People who gave a damn about the things we feared most: zero.

Why did our talks work at all?

Kathy Sierra put it best:

… if the presentation is a user experience, then I am just a UI.

That’s it.
I am a UI.

Nothing more.

And what’s a key attribute of a good UI?

It disappears.

It does not draw attention to itself.

And the moment I remember this is the moment I exhale and my
pulse slows. Because I am not important. What is important is the
experience they have. My job is to provide a context in which
something happens for them.”

We Are Not Important

We all took the stage aiming help people and did. We
disappeared. Broken decks and speaker pointers ceased to matter
because we ceased to exist.

Are you starting a new endeavor? Maybe you’re in the middle of
one, and you’re struggling to finish. Either way, try to take
yourself out of it for a minute. What problem are you solving for
who? Focus on that and success can find you regardless of rough



P.S. This letter originally appeared on the Tuesday Pulse Every Tuesday I could be sending you letters about shipping products that provide value to as many people as
possible, and you can get over the personal problems that stop you.

Minimum Viable Team Management

There are hundreds of project management tools out there, almost enough to convince software developers that they shouldn’t build another one. As a consultant, I form small teams frequently: my assistant and me, or pulling contractors together into a Large Project Justice League. I also have the privilege of working with many different companies, experiencing a smorgasbord of tools, techniques, and philosophies.

Continue reading

Tiny Rock Side Hustle

My Mother works in Elberton, GA, The Granite Capital of the World at a local Quarry. Here is their #2 best selling product:



I love companies like this, invisible enterprises that build something important to everyone. But this isn’t a letter about tombstones; this is a letter about their all-time #1 bestseller:



If you ever think you can’t provide value to the market, here’s a company making bank by selling tiny rocks on the ground, an abundant natural resource.

The quarry didn’t set out to be a tiny rock business. They set out to build beautiful monuments. The tiny rocks are a side hustle. Stonecutters work their craft, and tiny rocks just happen.

  • Drill into granite veins branching off Stone Mountain? Free tiny rocks.
  • Drop and bang raw granite in transit? Free tiny rocks.
  • Cut the stones to shape & size, then drill holes for flower holders? Free tiny rocks.

These rocks are gathered, bound, packaged, priced, and sold. This company took waste and turned it into a product that sells more than the product they showed up to build.


Every business has its tiny rocks: rubbish waiting to be butterfly-transformed into an asset. Here are some examples:

  • Notes and research done during client projects become articles & letters.
  • Replies to emails and questions at bars become articles & letters.
  • Content turn into presentations, workshops, and books.
  • Excerpts from proposals are Voltroned into future proposals and landing page copy.
  • One-off jobs turned into repeatable offerings.

As a small business owner, resources are always tight. Without a lot of time or business capital, you need to get the most out of the resources you have. Look around you for tiny rocks, gold that you’re leaving on the ground. What have you been missing?

How to Write A Software Program Roadmap

You know what one of the most common causes of failure is for software projects? You don’t have a plan. Unlike building with more solid materials in construction, you can start making software before you know what the hell you are doing. Writing a program roadmap helps you make decisions earlier when they cheaper, and give you a reference point to make sure everyone involved is working towards the same goals.

Continue reading

What Every Entrepreneur Needs to Understand About Risk

All businesses are inherently risky. Human beings are terrible at understanding and quantifying risk. Since most entrepreneurs tend to be human beings, this causes problems. Without having a clear picture of what risk is, how to identify it, and how to quantify it, making correct decisions about your business can be hard.

The biggest cognitive dissonance is that people confuse variance and risk. For the purposes of this article, I am defining variance as the variety and difference and outcomes of any given probabilistic event. A six-sided die has more variance than a coin since it has six different possible outcomes while a coin has two.

We define risk as the losses incurred based on the outcomes of one of those events. The greater the amount of loss and the greater the chances of that loss occurring increase the amount of risk in any decision.

Continue reading

What You Can Learn From Apple About Launching Products

Launching a new product can induce a lot of anxiety. If you have been working on your product for some time, it is easy to let the fear of uncertainty about public reaction take over. You might decide to push the launch the back until you can one feature a bit better, a part of the design a bit cleaner, or to fix one more outstanding bug. You end up pushing your launch back to next week, next month, or in the worst case, “one day”.

Apple just finished their 2015 WWDC, and there are some valuable lessons startups can learn from Apple’s marketing strategy.

Continue reading