Brian Gilham

Engineering leader, husband, and father

career

We are complicit in our employer's deeds →

A reminder from Drew DeVault:

[…] if you’re a programmer already working at $company and you’re looking for a change, you’re better off than 99% of your non-technical friends. In tech, hardly anyone is “trapped” at a bad job; or at least we don’t have a good excuse for not trying for something better.


5 Reasons to Boost Your Career with Side Projects

If you’re a programmer, *particularly* early in your career, there’s no better way to learn new skills, promote yourself, and improve your job prospects than working on side projects. Full stop. Brainstorming, developing, and releasing side projects has been a force multiplier in my career — and it can do the same for you. Always working on side projects comes naturally to me, but I know that isn’t the case for everyone.

If you’re a programmer, *particularly* early in your career, there’s no better way to learn new skills, promote yourself, and improve your job prospects than working on side projects. Full stop. Brainstorming, developing, and releasing side projects has been a force multiplier in my career — and it can do the same for you.

Always working on side projects comes naturally to me, but I know that isn’t the case for everyone. Why should you spend your precious free time coding when you could be watching TV, hanging out with friends, or playing video games?

It’s a question worth examining; why *are* side projects so important?

The answer to this issue has a few different angles — and it’s going to be a little bit different for everyone. But here’s five reasons I think you should be working on a side project.

Low-stakes learning

We all know how important it is to stay on top of changes in the programming landscape. There’s *always* a new technology, library, technique, or platform to learn. Things are moving fast and, if you don’t keep up, there’s a good chance you’ll find yourself out of date. Working on a side project gives you the opportunity to pick up new skills in a low-stakes environment. If a side project fails, you don’t need to worry about letting down your team, pissing off your boss, or not being able to pay rent. You can try new things and learn from your mistakes, all at your pace.

Becoming an expert

If you’re willing to jump on new platforms before anyone else, you can quickly become the resident expert at work. When the Apple Watch SDK came out, I poured hours into building apps, mocking up potential interfaces, and sharing what I learned.

When the opportunity to do an Apple Watch project came up at work, I was the natural choice to lead it. Now, when new Watch projects pop up, I’m often asked for guidance and advice. It’s just one way I’ve increased my value at work and differentiated myself from others.

Landing your first job

If you’re a junior developer, looking to land your first job, side projects can help. There’s one big thing holding you back; your resume is more Sales Associate at Home Depot, less, Front-End Developer at Company X.

A lot of junior developers bump up against that wall for *far* too long, stuck at a crappy job with no real opportunity to learn and grow. Side projects give you a way out, building a reputation and portfolio for yourself.

Cultivating a portable reputation

Working on side projects can give you what Sean Fioritto calls “portable reputation.” If you’ve worked at one place for a long time, there’s a good chance you’ve built up a fantastic reputation and a fair bit of credibility. But there’s a big problem; that status is locked up with your employer.

If you leave, and you haven’t put time into cultivating a portable reputation, you’ll be relying primarily on your resume to help you stand out from the crowd. Can you land a job solely on the strength of your resume? Of course. But why not take *every* advantage you can get? The demand for developers is huge right now, but it won’t last at this level forever. Side projects give you the opportunity to build a reputation independent of your employer. And reputation is leverage.

Sweet, sweet cash (maybe!)

While it shouldn’t always be your primary goal, there’s also the possibility of a side *project* turning into a side business. Some of the most successful companies were born out side projects — Gmail, Buffer, and Todoist come to mind.

Between apps and other digital products, I’ve managed to make some significant money from my side projects. Nothing life-changing, mind you. But once you start making money from a product or service of your creation, you’re forever changed. When you know how to plan, execute, promote, and sell your work, you become more self-sufficient. Once you realize you can generate income based on value, and not time spent, there’s no going back.

Until next week,

-Brian


Stop wandering around and set some damn goals

I’m a software developer. And, if last year’s survey is any indication, there’s a good chance you are too. Despite that, you and I have different goals in our respective careers. We’re all working toward something unique, no matter if you’re working at a job, running a studio, consulting, or just working on a side project. But, do you know what your goals are? More importantly, do you know what you’re doing to accomplish them?

I’m a software developer. And, if last year’s survey is any indication, there’s a good chance you are too. Despite that, you and I have different goals in our respective careers. We’re all working toward something unique, no matter if you’re working at a job, running a studio, consulting, or just working on a side project.

But, do you know what your goals are? More importantly, do you know what you’re doing to accomplish them?

In my experience, most developers don’t set concrete goals for themselves. They wander from job to job, adopting whatever goals a boss or team lead hands them. Usually, they’re kind of unhappy with where their careers are heading.

When was the last time you sat down and thought about what you want out of your career? Or your life, for that matter?

If you’re aren’t setting goals for yourself, your work is aimless. Sure, you might hit on the occasional success. But is that really how you want to go through life, hoping to get lucky? I know I don’t.

It’s like hopping in your car for a road trip, without knowing where you’d like to go. You’ll probably see some great sights along the way, but I’d wager you’d have a lot more fun with a destination in mind.

Deep down you probably know goal-setting is something you should be doing, like flossing or changing the oil in your car. But you keep putting it off. The question is: why?

Honestly, I think it’s because of fear. Fear of making a wrong decision, or experiencing regret. But the benefits of setting clear, actionable goals far outweighs the potential negative rules, I promise you. It’s something you need to be doing, right now

Until you do, you’re just wasting your time.

The best way to get started is by defining the thing you’re trying to accomplish and work backward from that point.

Not coincidentally, this is also a fantastic way to plan a side project. Check out Amy Hoy’s excellent book, Just Fucking Ship, for more on that topic.

You need to know what your big, awesome goal is. You don’t need to get super precise about it — you just need enough definition to be able to check in, from time to time, and ask yourself, “How close am I to accomplishing this goal?”

When all the chips are down, and you’re *truly*honest with yourself, what do you want to do in your career? Your relationships? Your free time?

Where do you see yourself and your loved ones in 5 years? How about 10?

Give yourself plenty of time to come up with your first big, awesome goal. The first time is really hard. Once you start contemplating questions like, “What do I want?” there’s a good chance you’ll start to question everything — from your career to your friendships, to your daily habits.

That’s a good thing! Taking time for setting proper goals can give you a lot of clarity.

Once you’ve figured out where you want to go, you can start working out how to get there. That means creating smaller goals you can work on, eventually accomplishing your big, awesome goal. This step is where the “thinking backward” part comes in.

Let’s say your goal is to save $10,000. What will you need to do to accomplish that? Maybe you decide you’ll set a smaller goal to save $100 a week. Great! Now, what do you need to do to accomplish that? Could you stop eating out every lunch hour?

The more you break your goals down, the more likely you’ll accomplish them. Tiny minuscule goals are easy to do and help you build momentum. Momentum gives you the motivation to keep going and makes progress visible. 

Schedule time to review your goals, every so often. At the beginning of each month, I sit down with my notebook and plan ahead. I ask myself what I’ll need to do to make progress on my goals. Ditto for the start of every week. In the evenings, I review my day and see how well I did.

I don’t always accomplish everything I set out to do. But having a clear picture of my progress is invaluable. Sure, it takes some time. But the clarity it gives me is always worth it.

You don’t need a fancy notebook and pen. You can follow this process in a spreadsheet, or in your favorite app. The more important thing is just to do it.

Otherwise, you’re just wandering around — hoping to get lucky.

Until next week,

-Brian


Learning to Communicate

When you work with someone else, even someone you like, it can sometimes feel like you’re speaking two different languages. There’s a disconnect happening; you’re on separate wavelengths. You might agree on the goal you’re trying to accomplish, but be at odds on how to get there. It isn’t anyone’s fault, necessarily. You’re both skilled, hardworking people. You’re just approaching your work, and the world, from completely different mindsets. Sometimes the person you’re struggling to communicate with is your boss, compounding the problem.

When you work with someone else, even someone you like, it can sometimes feel like you’re speaking two different languages. There’s a disconnect happening; you’re on separate wavelengths. You might agree on the goal you’re trying to accomplish, but be at odds on how to get there. It isn’t anyone’s fault, necessarily. You’re both skilled, hardworking people. You’re just approaching your work, and the world, from completely different mindsets. Sometimes the person you’re struggling to communicate with is your boss, compounding the problem.

You can try to hash it out as long as you like; one of you will always leave the conversation more frustrated than when it started. When that happens, you need to accept that your usual approach to conversations just isn’t going to work.

I’ve been reading about this topic a lot lately. It’s opened my eyes to how different thinking and communication styles can be from one person to the next. Frustratingly, it’s often contextual. You get along fine one day and struggle the next. You just get sidetracked, somehow.

When communication starts to break down, it’s helpful to focus on listening intently and empathizing with the other person — a skill I’m constantly working on. As I’ve been reading, I’ve learned that people primarily fall into one of two ways of approaching life & problem solving: compartmentalization or connection.

People who compartmentalize are skilled at assigning the disparate parts of their life into different mental boxes. They have one box for work, another for their relationship, and another for their hobby or side project. These folks can jump from one box to another, but they’re always occupying one box at a time. This is the style I most identify with. If you start talking to me about a project at work, my brain jumps into that box. Want to talk about something else? Give me a second, my brain has to move to that box.

The ability to compartmentalize is important for a programmer. You need to consider how different parts of your code interact, sure. But you spend a lot of time working through one component at a time. Heck, they teach it in school. I tend to jump into one box, solve any problems I find, and move on to the next. As I’ve gotten older and more experienced, my ability to jump between boxes — and notice connections between them — has improved. But I’m still at my most comfortable when I can settle into one until I feel like I’m done.

On the other side of the spectrum — and it is a spectrum — there are people who primarily approach life by identifying and thinking about the connections between different issues. For these folks, life is full of connections just waiting to be explored. They see how one issue affects another. And another. And another. They’re naturally skilled multitaskers, rapidly jumping from one topic of conversation to another. They’re still solving problems, but they take a different approach. In exploring connections, they find the bigger picture.

“Compartmentalizers” feel overwhelmed, unable to jump between boxes quickly enough to keep up. “Connectors” get frustrated, unable to understand why others don’t see the connections they do. Neither style is right or wrong. Different situations call for different skill sets and approaches. You can even find one person embodying both styles, at times. I often switch from one to the other — though I struggle to do so in every aspect of my life.

Next time you’re struggling, at a fundamental level, to communicate with someone else, try to think about how their brain is working in that moment. Are they trying to focus on just one problem and solve it? Are they bounding from one thing to another, trying to grasp the bigger picture?

Thankfully, both situations can be improved with the same approach: working to understand where the other person is coming from.

If you’re working with someone who leans toward compartmentalization, take a breath and recognize their need to focus on a single topic for a while. You’re going to want to take the conversation in 100 different directions. Resist the urge. Once you’ve worked through the topic at hand, you’ll find a more receptive audience for your next thought. 

If you’re talking to someone who works by exploring connections, you might feel overwhelmed with information. That’s okay. Realize that talking through those connections is how they’re going to process their thoughts. Go along for the ride, with patience and understanding. Eventually, they’ll reach a point where things start to feel actionable.

Dealing with different personalities in the workplace — andlife, really — can be challenging. But programming is a team sport, much of the time. You can certainly try to put your head in the sand and hide at your desk. But you’ll advance more quickly — and learn more — if you take the time to improve how you interact with other people.

Until next time,

-Brian


Your First Programming Job

When you’ve been programming for a long time, it’s easy to forget what it’s like to be brand new, fresh out of school, and starting your first job. Heck, I can barely remember what that period of my life was like at this point. The biggest thing I remember? Being afraid. I worried I’d screw up something important. I worried my coworkers would hate me. Most of all, I was scared I wasn’t good enough to hack it as a professional developer.

When you’ve been programming for a long time, it’s easy to forget what it’s like to be brand new, fresh out of school, and starting your first job. Heck, I can barely remember what that period of my life was like at this point. The biggest thing I remember? Being afraid. I worried I’d screw up something important. I worried my coworkers would hate me. Most of all, I was scared I wasn’t good enough to hack it as a professional developer.

Lately, I’ve read a lot of questions from junior developers starting their first “real” programming job. I see a lot of the same worries echoed in their issues and concerns. So, I thought I’d quickly share some advice for those taking the first step in their programming career.

When you start working on your first project, there’s a good chance you’ll spend a lot of time feeling frustrated. You’ll spend hours hunting down a simple bug or struggle to understand concepts that seem like second nature to the rest of your team. It’s normal — every programmer goes through it. After you’ve been programming for a while, you’ll laugh at the mistakes you made in the early days. You’ll spot the same bug in no time flat, looking at someone else’s code. But you need to fight through this phase first, so stick with it.

Don’t get too precious about the code you write — there’s likely room for improvement. When a senior developer offers a suggestion or critique, it isn’t personal. You are not your code. This is so important I’ll say it again.

You are not your code.

At first, every comment on your pull requests will feel like a dagger to the heart. Don’t let it get you down. There isn’t a single developer out there who writes perfect code on the first try. Quality code is a process. When I was starting out, senior developers tore my work to pieces. I won’t lie; it hurt a whole lot. But I slowly learned to focus on the code — instead of my feelings — and started to improve.

Most programmers experience imposter syndrome, at one time or another. Even the developers you look up to and admire. Often, it’s the most talented developers who experience it the most. Everyone looks around a room, at times, and thinks, “This has to be the day they realize I’m a fraud.” It happens, no matter how hard you work or how skilled you become. Acknowledge the feeling and do your best to move on.

There’s always something new to learn; it’s the best part of working as a programmer. Those people in the office everyone turns to with questions? Even they have something new to learn. Graduating from school was just the beginning of your education — it’s a lifelong process.

Finally, don’t be afraid to ask questions. You might feel like you’re bothering your coworkers, pestering them with simple issues. Please ignore that feeling. Don’t forget; you’re there for a reason. You’re a member of the team now. You know what’s worse than asking a stupid question? Not asking the question and grinding your gears all week, with nothing to show for it. Be willing to admit you don’t understand something and have the humility to ask for help.


Side Projects = Investments

There’s a trend I’ve noticed lately — both online and in my inbox — that I find troubling. Someone will share an idea for a side project and immediately follow it up with a comment like, “But there’s no point in doing it — it isn’t monetizable.” What? When did working on a side project become so driven by a desire to make money? Sure, it’s hard to read an article titled, “Tricks to Monetize Your Side Projects” and not want to get a piece of the action.

There’s a trend I’ve noticed lately — both online and in my inbox — that I find troubling. Someone will share an idea for a side project and immediately follow it up with a comment like, “But there’s no point in doing it — it isn’t monetizable.”

What?

When did working on a side project become so driven by a desire to make money? Sure, it’s hard to read an article titled, “Tricks to Monetize Your Side Projects” and not want to get a piece of the action. But a good side project can offer so much more.

A side project is a long-term investment in your skill set, creativity, and career development. I landed my job at TWG based on the strength of my side projects. I found many of my friends and acquaintances through side projects. I picked up a lot of skills through — you guessed it — side projects.

If your project ends up making money, awesome. But if you’re thinking about starting something new, monetization should be the last thing you think about — not the first. If it stops you from getting down to work, it’s just another form of procrastination.

Don’t throw away the opportunity to invest in yourself just because you don’t see a path to profits.


What's Your North Star?

On a clear night, with just the right conditions, there’s about 6,000 stars visible to the naked eye. As far back as the 2nd century, human beings have looked to those stars to help determine their location and heading. And none is more well-known than the North Star. The North Star has one unique property: it never moves. Okay, that isn’t strictly true. But for all intents and purposes, you can count on it staying put — right above the North Pole.

On a clear night, with just the right conditions, there’s about 6,000 stars visible to the naked eye. As far back as the 2nd century, human beings have looked to those stars to help determine their location and heading. And none is more well-known than the North Star.

The North Star has one unique property: it never moves. Okay, that isn’t strictly true. But for all intents and purposes, you can count on it staying put — right above the North Pole. If you were trying to navigate in the days before GPS, knowing which way was north turned out to be pretty handy.

When it comes to doing our best work, I think we all need our version of a North Star — something that reminds us where we’re going and what we’re trying to accomplish. My North Star is “Be Useful.” When I’m feeling lost, unsure of what to do next, or stuck, I know I can’t go wrong trying to bring value to someone else.

I’ve said before that procrastination is a byproduct of fear. Fear of failure. Fear of other people’s opinions. Fear of not being “good enough.” But I think there’s another angle.

Procrastination is forgetting our North Star.

When we get stuck on a project, it’s helpful to remember why we started working on it in the first place. Most of my early side projects were a response to a job I hated. The work was uninspiring, the clients were awful, and I wasn’t learning anything new. I knew I wouldn’t be able to get a better job with the kind of work I’d been doing. So one night, at the peak of frustration, I said “fuck it” and started coding. I realized there was only one person who could change my situation: me.

You’d think that would be sufficient motivation to carry me through to the end of the project. But it wasn’t. There we so many nights where all I wanted to do was flop onto the couch and watch TV. But it didn’t take long before a tiny voice in my head spoke up.

“I thought you wanted more than this?”

Once I remembered my purpose — my North Star — it became hard to justify six hours of TV on the couch.

Your North Star can be anything that speaks to the heart of why you started a side project in the first place. Landing a more fulfilling job, satisfying the creative half of your brain, improving your skills, or creating a better life for those you love.

No one can tell you what your North Star is. It’s something you have to decide for yourself. So decide, right now. Write it down and put it somewhere you’ll see it every day.

And when those dark, tired moments happen — and they will happen — take a look at that piece of paper, and remind yourself of what drives you.

Until next time,

–Brian


Be Kind

One Friday afternoon, early in my career, I was wrapping up some new features for the back-end of a client’s Rails app. Simple stuff. Confident in my work, I deployed the changes, closed my laptop, and drove out of town for a weekend of camping with friends. I had just arrived when my phone rang. It was my project lead, Kevin. “The client’s site is down. What happened?” Oh shit.

One Friday afternoon, early in my career, I was wrapping up some new features for the back-end of a client’s Rails app. Simple stuff. Confident in my work, I deployed the changes, closed my laptop, and drove out of town for a weekend of camping with friends. I had just arrived when my phone rang. It was my project lead, Kevin.

“The client’s site is down. What happened?”

Oh shit. Fuck. I had no idea. I was three hours away with no laptop.

“Don’t worry about it,” he said. “I’ll take care of it. Have a good weekend.”

Like that was going to happen. I’d let the team down. I’d ruined someone else’s weekend. I beat myself up for days. Come Monday; I walked into the office certain I was about to be fired. The project lead walked over.

“Hey, Brian. How was your trip?”

He was smiling. There wasn’t even a hint of frustration or annoyance. “It was okay,” I said, waiting for the bad news. “Sorry about Friday. I completely blew it.”

“It’s okay,” he replied. “We’ve all done it.” He paused for a moment. “But what did you learn?”

I talked about the need for proper QA. About thoroughly testing my changes. About taking the time to make sure the job gets done right. After a few minutes, he held up his hand.

“Great. It sounds like you get it. I know that you can do better.” 

And that was the end of it. Kevin never brought it up again. 

Kevin gave me the space to screw up, as long as I learned from it. He jumped in, with his years of experience, and helped me out when I needed it most. And still believed I was a competent developer, despite my mistake. He saw my potential.

Now that I’m the one leading projects and mentoring junior developers, I often think back to that day. And I remind myself to be kind and see the potential in people. Give them a break.

Just like Kevin did for me.

Until next time,

–Brian


Luck Favours the Prepared

Many of the best moments in my career have happened because of luck. Shortly after the Apple Watch was announced, Apple approached one of our clients about building a WatchKit app. It would be one of the first available on the App Store. Day one. They asked if we could help. Since I’d been doing a bit of work on the platform I, along with one of our client’s designers, flew down to Cupertino and spent a week working on the app at Apple’s campus.

Many of the best moments in my career have happened because of luck.

Shortly after the Apple Watch was announced, Apple approached one of our clients about building a WatchKit app. It would be one of the first available on the App Store. Day one. They asked if we could help.

Since I’d been doing a bit of work on the platform I, along with one of our client’s designers, flew down to Cupertino and spent a week working on the app at Apple’s campus. It was the highlight of my career. Here I was, working on a device that hadn’t even been released to the public yet. I was so lucky.

Or was I?

The truth is, I’d spent *weeks* poring over the WatchKit documentation, building apps, blogging about the SDK, and mocking up interfaces. I even 3D-printed a model of the watch – just to get an idea of the size. I was putting in the work. 

Did I know it would lead to such an amazing opportunity down the line? Hell no. I thought the Watch sounded interesting and I wanted to build apps for it. But when the chance to do something cool presented itself, I was ready.

We never know where our careers will take us. It’s important we find time to explore new things. Try out a new platform. Build a side project. Collaborate with someone new. You never know which exploration will yield something that changes your path forever.

Steve Jobs once said, “You can’t connect the dots looking forward; you can only connect them looking backwards.”

Which dots will you create today?

Until next time,

–Brian


3 Questions Every iOS Intern Needs to Ask

If you’re a junior developer, two weeks into your first internship, I’d wager you’re probably feeling more than a little frustrated. You spent the first week diving into the codebase — difficult, but at least now you have some sense of what the hell is going on. But now you’ve been tasked with integrating a new feature — or three — and you’re struggling. You’re unsatisfied and disappointed in your meagre output.

If you’re a junior developer, two weeks into your first internship, I’d wager you’re probably feeling more than a little frustrated. You spent the first week diving into the codebase — difficult, but at least now you have some sense of what the hell is going on. But now you’ve been tasked with integrating a new feature — or three — and you’re struggling. You’re unsatisfied and disappointed in your meagre output. Chances are, if you’re at a young startup, there isn’t even a senior developer you can turn to for help. You’ve been dropped in the deep end and left to fend for yourself.

It’s a situation that plays out every year. Eager students jump at what seems like a great opportunity, only to discover they’ve been set up to fail from day one. The good news? It’s avoidable. Here’s three things every student needs to ask their potential employer before signing up for an iOS internship:

1. Who will I be reporting to?

You should be paired with a senior developer who can serve as a mentor, as well as a sounding board when you run into problems. You’re looking for someone who will review your code, improve your skills, and help you navigate your new workplace. They should view helping you become a better iOS developer as one of the core parts of their job — not a chore. Ask if you can meet your potential new boss — even 15 minutes of conversation will give you a good idea of who they are and how they approach mentoring junior developers. Are they friendly? Honest about the company? These are good signs.

If you discover that you would be working alone, or with minimal interaction with the rest of the team, run. Good employers understand that hiring an intern is an investment. Leaving them to fend for themselves, or worse — treating them only as cheap labour — is a surefire way to burn them out, produce crappy code, and drive them to quit.

2. What sort of results would I be expected to deliver?

(Bonus question: How will those expectations change over time?)

Good employers know it will take an intern some time to ramp up and be productive. Actually, that applies to any new developer — regardless of skill level. You shouldn’t be expected to start banging out complex features the moment you walk through the door. That isn’t to say they shouldn’t expect greatness from you, eventually. But they should know it will take a little while to get there.

If their expectations for a junior iOS developer sound wildly unrealistic, it’s time to move on. Many employers mean well. But your first internship should be at a company that has a history of working with junior developers and knows what it takes to make them successful. They already “get it”.

3. What will my hours be like?

Many developers, regardless of skill level, like to be a hero. They work well into the night, cranking out code at a furious pace. When faced with impossible deadlines, they take pride in doing whatever it takes to get the job done. Junior developers can be especially prone to taking this approach, eager to prove themselves. As David Heinemeier Hansson puts it, “When there’s a crisis, it can pay to just carry on no matter what. Get the problem solved and celebrate victory. Winning through shear effort.” Early in your career, however, it can be difficult to distinguish between a true crisis and struggles that are a normal part of learning.

David continues, “But most days are not like that. Most features need not heroes. They need realists.”

Good employers understand that while working crazy hours can pay off in the (very) short term, the returns diminish rapidly. They know that, often, the best thing you can do is close your laptop and go home for the night. An internship shouldn’t feel like a work camp. You can’t learn effectively if you spend all of your time just trying to stay above water. If your potential employer doesn’t encourage their staff to have lives outside of the office, it’s a big red flag. It’s fine if you want to go above and beyond — in fact, I encourage it — but that’s something you can only do if you aren’t already pushed to the limit.

Use this checklist before saying ‘Yes’

You’re considering an offer for your very first iOS internship. Before you accept, run through this checklist:

  1. Will you be paired with a senior developer?
  2. Have you had a chance to meet your new boss/team ahead of time?
  3. Are there realistic expectations of your output? Especially in the first few weeks?
  4. Is there a plan to help you improve your skills over time?
  5. Will you have a life outside the office?

Obviously this checklist isn’t comprehensive — you’ll have your own requirements and red flags. But if you find an employer who checks off each box, you’re in a great spot. Good luck out there!


Burning Out

(I’ve received a fair number of lovely, concerned messages since publishing this piece. While I appreciate all of the love — a ton! — I feel like I need to add a bit of a footnote. I left the job I described in this post almost five years ago. My current gig, at TWG, couldn’t be better. I’m extremely happy and my work-life balance is much better now. In many ways, this post is a warning.

(I’ve received a fair number of lovely, concerned messages since publishing this piece. While I appreciate all of the love — a ton! — I feel like I need to add a bit of a footnote.

I left the job I described in this post almost five years ago. My current gig, at TWG, couldn’t be better. I’m extremely happy and my work-life balance is much better now.

In many ways, this post is a warning. If you are in a job that’s destroying your life, I hope it gives you the push you need to quit. If you’re a junior developer, looking for your first job, I hope it helps you avoid a similar situation.)

In 2009 I accepted a position as a Web Developer at a medium-sized marketing agency in Toronto. The pay sucked, but we had interesting clients and a really fun team. The perks were outrageous. The company-supplied beer flowed freely and we often retired to the local pub and partied well into the night. On the company dime, of course. One year, in lieu of a Christmas party, they sent us on a weeklong ski trip in Quebec.

I was blown away. I had never seen perks like that before.

Two weeks in, my team lead asked me to stay late. Our project was behind schedule and a new one was coming down the pipe. Sure, I said, cracking a beer. No problem.

We shipped.


The timeline for the new project seemed impossible. The biz dev team, eager to sell, had shoved it down the pipe in record time. Four weeks worth of work; due in two. Oh well, I thought, I’ll just have to work harder.

It took 18-hour days, countless energy drinks, and a ton of fast food, but we got it done.

We shipped.


Near the end of my probation I approached the team lead.

“Is it like this all the time?”

No, he said. This is the exception; not the rule. I took him at his word.

They gave me a raise. A year later, drunk at a Christmas party, he would admit they only gave it to me so I wouldn’t quit.


Another late night. It took everything I had, but I managed to clear my plate for the day.

11:30pm.

Fuck. I lived an hour’s drive from the office. At any rate, I was too tired to drive home safely.

The company put me up in a hotel room for the night. Paid for the cab ride and everything.

That was nice of them. I think.

We shipped.


Our project manager was crying. Again. Sobbing into the phone, she apologized to her boyfriend. No, she wouldn’t be home tonight.

Yes, she said. She should quit.

Someone paid for dinner. Again.

We shipped.


I’d been at the office for 48 hours with no sleep. I finally decided to drive home. To shower and change. I didn’t know it then, but I’d end up driving back and working for another 24 hours.

Driving home just to change my clothes started to feel like a real pain in the ass. I started keeping a change of clothes, toothpaste, a toothbrush, and deodorant in my desk drawer.

Perfect. Now I don’t even have to leave.

We shipped.


I’m in bed. Well, a mattress on the floor. I’d spent a few days preparing to move and started feeling ill. My stomach was a mess, my head was pounding. My throat felt like it was being stabbed with a knife. I could barely stand up. My fever was off the charts.

For the next two weeks, I barely stood up.

Lying on your back for two weeks gives you a lot of time to think. To think about your health. Being a team player. Free beer and ski trips.

I wish I could say that I decided then and there to quit. But I didn’t. I stuck it out for another year.

Another year of working all night.

Another year of missing moments with my loved ones.

Another year of eating shit food and brushing my teeth in the office bathroom.

Another year of “taking one for the team”.

Another year of: We shipped.

Those perks I loved in the beginning? By the end I saw them for what they were.

Chains on the door.


Journalism School

I always tell people I used to be a journalist. That’s what they told us on the first day. From this point forward, we were all journalists. It was the first day of college and it felt empowering. They also told us to say goodbye to our friends and family. Long hours laying out pages. Constant interviews, both in person and on the phone. Lots of small towns with names like Colborne and Picton.

I always tell people I used to be a journalist.

That’s what they told us on the first day. From this point forward, we were all journalists. It was the first day of college and it felt empowering.

They also told us to say goodbye to our friends and family.

Long hours laying out pages. Constant interviews, both in person and on the phone. Lots of small towns with names like Colborne and Picton. I loved it. It was the first thing I remember being really good at.

My Mom framed the first article I was paid to write. It hangs on the wall in my home office.

Want to be a better programmer?

Talk to strangers. Learn how to be an expert on something in 15 minutes. Cold call. Be adaptable. Care about the micro and the macro, simultaneously. Be a jack of all trades. Ask good questions. Know when to let silence do the work for you. Own up to your mistakes and do better tomorrow.

I gave up on journalism when I realized paid jobs were scarce. But the lessons I learned made me who I am today.