Master of my domain

Master of my domain

Business Jack does not play gentle

This is the third of a five-part series about my horrible career: how it started, how it’s going, and what I learned from making every mistake imaginable.

  1. My horrible career
  2. Not a real developer
  3. Master of my domain
  4. If you need the money, don’t take the job (coming soon)
  5. Will write for food (coming soon)

The full series is now available as a book, exclusive to Go Club members—subscribe now to get your copy!


Devex supercharger Zack Proser and I have been talking about my history of bouncing around the tech industry like a pinball, the times I went on tilt, and how I (mostly) avoided going down the drain. (Wait, do people still play pinball, or is that a bad reference? How do you do, fellow kids?)

This time, we’re talking about how I made the leap from being a (clearly not very good) employee to running my own independent business.

So, when we spoke previously, you were becoming a master of Puppet, writing code to manage servers and networks. What happened next? Promotion?

Nope. Redundancy. A manager at the company asked the question “Why do we need all these sysadmins, when the servers never go down?” Now, there’s a very good answer to that question, but somehow they didn’t seem that interested in learning what it was. (They found out eventually, though.)

Although technically I was self-employed, this company had been my only significant client, and so without them, I became self-unemployed. Oddly enough, it was the biggest favour they ever did me.

Because you like living on ramen?

Sure. With lots of black pepper, soy sauce, and cheese, you’ve basically covered the four food groups. Yes, those were thin times for a few months, but little by little, work started to trickle in. It’s not so much that people wanted to hire me to do Puppet work, as that they had config management problems that needed solving, and I could use Puppet to solve them.

Indeed, for a while I could bring Puppet into companies and it made me look like a genius. “Here’s the code you need to set up every server in your network. No more manual builds. You’re welcome.” I didn’t really know anything, of course, but I seemed smart because I knew one thing they didn’t: infrastructure should be code.

As a consultant, I would go into a company, figure out what they needed, and write software to make it happen. They were delighted, because instead of having to hire a traditional server wrangler to keep things running, they had a more or less self-managing system that their own developers could tweak when they needed to.

Within a few months I actually had a decent base of established clients, and enough new business coming in to keep the account book healthy. So, although the prospect of going it alone was scary at first, and success wasn’t guaranteed, I pretty soon reached the point where I started to think “You know, this might just work out.”

So what was it like running your own business? Was it what you imagined?

Yes and no. I mean, working for someone else never really suited me, and that’s something all my erstwhile employers would probably agree on. I’m just one of those people who doesn’t thrive on being told what to do by others. Unfortunately, that’s something we all have to deal with in life to some extent, whether we like it or not.

It’s always been a challenge for me. I can remember being thrown out of the Cub Scouts at a very early age—though I can’t remember exactly why.

Failure to salute an officer?

Yeah, probably. So maybe some people are just made that way: they don’t respond well to authority. Those are probably the people who are going to want to be in charge of whatever organisation they’re in, and who aren’t really going to be happy until that’s the case. That’s annoying if you’re supposed to be the boss of that person!

You’re unmanageable.

That’s so, and when you run your own business, you soon realise how much managing yourself is going to be an issue. You know, you can get it wrong both ways. There’s no one telling you when to work or what to do, so you can drift or get distracted, and waste your time. Or you can drive yourself too hard, working every minute of every hour, always stressing out that you could be doing more, so you should be doing more.

I’m shocked. Shocked to hear that independent working isn’t just a matter of sitting in a beach chair, sipping Mai Tais.

That’s part of it, sure. I mean, I’m a little drunk right now. But there’s also a lot more on the negative side than I imagined there would be.

Example?

Life as a salaried worker is very simple, in some ways: you just show up at nine, do your assigned tasks, and go home at five. If you work from home, you don’t even have to get dressed (maybe just the top half). You don’t, for example, have to worry about finding customers, marketing the company’s products, sweet-talking investors, dealing with tax and payroll, or fixing the phones. You have the exquisite moral luxury of never compromising any of your principles.

When you’re a developer, especially, what you don’t realise is that a large part of the company’s workforce is devoted entirely to making and keeping you happy. It might not always feel like that, but you’re in a very feather-bedded position. If something goes wrong with facilities or logistics, you just open a ticket and someone takes care of it. You have layers of management to protect you from the crap that comes down from on high. If the company has a rough quarter and doesn’t make any money, you still get paid. (For a while.)

You’re thoroughly insulated from the occasionally dirty business of… well, business. A company can’t exist without making money, and I’ve known some software engineers who turn up their delicately-shaped noses at this idea. “Filthy lucre? That’s all right for those MBA types upstairs, but I’m here to make the world a better place.”

Sure, the world legitimately couldn’t get by without your cat-picture sharing app, or whatever, but what you don’t see—or don’t want to see—is that someone has to pay your salary. The money for your nice laptop, your Herman Miller chair, and your cafeteria snacks has to be grubbed up by someone actually sending invoices and making sure they’re paid.

Software engineers feather-bedded? I literally can’t believe what I’m hearing.

Sometimes business can be a bit rough and tough. It’s easy to ignore that when someone else is taking care of it all. When you’re in charge of the business, it suddenly looks a bit different.

Just because you’re nice doesn’t mean everyone else is nice. People will try to rip you off. You’ve got to be able to deal with that. Or even nice people will sometimes give you the runaround.

What if your client doesn’t pay their bill, and every time you chase them about it, they just fob you off with some excuse? Can you get tough with them in the right way? Not shouting and screaming, but being assertive enough to get the message across, without putting your future relationship in jeopardy.

JACK: It needs to be communicated to Lemon that if she wants to play business, I’m more than happy to play with her. But as she saw earlier today, Business Jack does not play gentle.
JENNA: Are you as turned on as I am right now?
“30 Rock”

I’m a Kenneth myself, but I actually saw you as more of a Lemon.

In private life, I definitely am, but as the boss I have to channel Business Jack a bit, without becoming him. The thing is, there’s no online course for this. (Well, there are probably plenty, but they won’t tell you the stuff you really need to know.)

Like?

Early in my consulting career, I had a contact from a very promising-sounding client. They were building out a big music-based social app and wanted me to design, architect, and scale the infrastructure. They asked to meet and discuss, to see if I was the right guy to help them.

I had plenty of experience in this area, so I figured I’d have no problem landing the gig. We met in a swanky hotel bar in London, which I now realise is a red flag. If the company doesn’t want you to come to their offices, it’s because they have no offices. But whatever. I knew they were a startup that hadn’t started up yet: that’s one reason they needed my help.

We had a terrific meeting that lasted about two hours. Their business deck was good, and their expectations about scale and cost were realistic. I said, “Okay, here’s what I’d recommend. Your infrastructure block diagram would look something like this…” (sketches) “…and you should go with cloud provider X, because…“ (reasons) In essence, I designed the whole thing for them right there at the table, with all the tech stack info and performance numbers they’d need.

I have a bad feeling about this.

I chuckled to myself all the way home from that meeting, thinking “I crushed it with those guys! That’s the best two hours of consultancy I’ve ever done. They can’t fail to sign me up now.”

And you never heard from them again?

And I never heard from them again. They had everything they needed, and it didn’t cost them a penny. My “hire Bitfield Consulting” pitch was too good! In my eagerness to show them how much I could do for them, I did it for them. That’s the kind of mistake everybody makes as a consultant, especially if you’re a decent, honourable sort of person by nature. You wouldn’t rip people off like that; the idea simply wouldn’t occur to you. So you’re not looking out for it when it happens.

Integrity is great, and ultimately it’ll be the key to your success in business: if people can’t trust you, they won’t hire you. But you also need to acquire a bit of low-down cunning. You have to know how the dirty tricks are done, so that you can avoid people doing them to you.

This is gold, John. Gold! Anything else?

Here’s another pearl I gleaned the hard way: don’t take fixed-price contracts.

The first consulting work I ever did, the guy said “We can pay you X grand for the whole job“. Nice and simple. Everybody’s a winner! Or at least I thought so, until after much labour, I presented them with the finished system.

And they paid you on the spot, right?

They paid you on the spot, right?

You know, that’s the funny thing. They said “This is great, but actually, we need one or two little changes.” I made the little changes, but they still weren’t happy. “Some of the requirements changed since we gave you the spec, so you’ll need to replace X, Y, and Z.” And so it went on.

It took me quite a while to realise that, ever since I delivered the system they initially asked for, I’d been working for free. After all, each change request was small in itself: not worth jeopardising the deal over.

They always made me feel I’d screwed up a little bit, but it was okay: they were prepared to forgive me, so long as I made it right… for no extra money, of course. In business terms, it was an abusive relationship.

“Baby, why you always gotta make me hit you?“

I mean, it makes perfect sense from their point of view. It’s just easier for a business to sign off on a single purchase order for a fixed amount, rather than commit to an unknown and variable ongoing cost, with no end date in sight. And, having agreed the price in advance, they then had every incentive to squeeze everything extra they could out of me for free.

They had total power over the contract, because until they said they were happy with the deliverables, I didn’t get paid a cent. I was at liberty to walk off the job at any time, of course, so long as I didn’t mind writing off all the money I’d worked so hard to earn.

And, I need hardly add, I minded.

You got played, my brother.

So hard. And I don’t even bear the guy any malice. He was just a little sharper at business than I was, that’s all. Well, that’s how you get good at this stuff: by screwing up, and learning from it. I learned a lot from that engagement, and all the others.

My mistakes were many and expensive, but in terms of value for money, it’s actually one of the best training courses I’ve ever taken.

Let’s press pause at that point, because I need to go re-think some of my business plans.

No worries. We’ll pick this up in the next chat, and talk a bit more about money: what to charge, how to strike the right deal, and how to negotiate (or not). Until then, good waves.


And you can read the whole series right now in this charming, fun-size ebook, exclusive to Go Club members.

 
 
Generics in Go

Generics in Go

Iterators in Go

Iterators in Go

0