DaedTech

Stories about Software

By

The Gravitational Force of Wage Labor

Editorial Note:  Thanks, to all for the heavy response rate to my last post!  I’m glad there’s interest in Expert Beginner T-Shirts and I’m really excited by all of the people interested in exploring new ways to do free agency.  In fact, I was sort of blown away by the number of responses, which far exceeded my expectations.  I’ll be figuring out next steps before too long, so stay tuned!

Today I’m going to do something that’s a first, but probably not a last, since it makes sense.  I’m going to regard a comment as a reader question (since the comment came in the form of a question).  This one also has a much shorter cycle time than average because the substance of it was something I was literally just having a conversation about in the last couple of days.  I have opinions on the matter, and fresh ones at that.  Here is the comment/question.

Ever dealt with this situation? You’re brought on to deliver with clear expectations on both sides. You deliver. They like you. They want you to stick around. Then your job slowly morphs into “do whatever needs to be done as an all purpose IT generalist.” You came on to port an old app to a newer platform, and next thing you know they are asking you to write custom sql data transforms to onboard new customers. To top it off, you want to be a “team player”, so you agree to take on one of these tasks. How would you respectfully and professionally address this situation? It’s basically the “this is not what I signed up for” argument.

First of all, have I ever dealt with this situation?  Oh, my, yes, and from a lot of different angles.  And, I’m not just being grandiose — there are a lot of different angles of approach once you think about the nuanced relationships between standard companies, software companies, software consultancies, and free agents.

But despite the myriad situations in which this arises, there is really only a singular cause.  And it’s because the closest thing to a law of nature in the corporate world is what I’ll call the “Gravitational Force of Wage Labor.”  But let me resurrect my consulting taxonomy before I get to that.

Consultants and the Enterprise

There are, in my estimation, three main ways for non-salaried people from outside of an organization to act, temporarily as part of that organization.  (Someone please chime in if you think of another one that is fundamentally different — I have not given this exhaustive thought to make sure nothing is omitted.)  I say “act as part of the organization” to discount superficial interactions and put us squarely into the realm of consulting.  These are as follows.

  • Staff augmentation
  • Project specialist
  • Retainer consulting

(As a quick aside, please note that I would consider wholesale project/product delivery to be a vendor relationship — if you’re a ‘consultant’ that sits at home every day for six months, building a piece of software that you then hand off to the client, you are acting as a vendor rather than as a part of that organization.)

Perhaps not surprisingly, these line up pretty well with my taxonomy from the earlier post, when expectations align and all is right with the world.

  • Software pros, when onsite, offer staff augmentation.
  • Specialists, when onsite, serve as project specialists for the duration of some project.
  • True consultants, when onsite, do so in a retainer consulting capacity.

This should line up with common experience.  Software pros sign on through agencies to work at the company with its staff developers or else they get para-dropped in by ‘consulting’ firms in the same capacity.  The only way you know whether they’re staff or not is the color of their badge.  Specialists come in to help with the CRM installation and then toddle on off to the next CRM installation elsewhere when this one finishes.  And, consultants come in to offer advice during the course of a particular situation or phase of a project.

SuperDev

At least, that’s the theory.

The Gravitational Force of Wage Labor

But have you ever noticed something odd?  Have you ever noticed that you come in as a consultant or specialist, and are regarded as a high priced, hot shot commodity?  And then, you just kind of run out of steam somehow, without realizing it, six months in?  When you started, the CTO was interested in your strategic expertise, but now some project manager is chiding you for not reporting your status with a little more flair during a daily standup?  (I’m asking the royal you, since the question submitter presumably has, per the premise of the question.)

Read More

By

Applied Consultant Taxonomy to Prevent Confusion

A few posts ago, I proposed a taxonomy for software consultants.  My reasoning for doing so was that I wanted to attempt a bit of clarification.  As software has taken over the world, “consultant” is no longer singlehandedly up to the challenge of describing everyone working in software not associated with any particular domain.

So I proposed the terms software pro, specialist and consultant as a means of bringing some clarity.  At the end of that post, I also alluded to a future post, in which I would talk about the problems that crop up when one of these personas is mistaken for another.  This is that future post.

Having been in and around the consulting world for a long time now and having served time in all three of these roles, I’ve seen firsthand how weird and sometimes damaging confusion of these roles can be.  There are too many permutations of mistake for me to want to list all of them in a post, so I’ll stick to the ones that are the most common and interesting, in my opinion.

The Aggrieved Grunt

For better or for worse, rightly or wrongly, software pros are regarded as the grunts of the non-salaried software development world.  Consultants and specialists are hired in non-delivery and possible-delivery roles, respectively, which means that they’re being hired for their expertise.  Software pros are hired into delivery roles, and while their expertise may interest their clients, it’s their labor that’s being purchased.

DevOpportunityCost

A non-expert labor purchase has two interesting characteristics for our purposes here.

  1. It means that someone else, and not the software pro, is making the strategic decisions (i.e. “we’ve put together all the requirements and design specs and need you to code ‘em up”).
  2. It puts the software pro firmly on the hook for execution.

Significantly, the software pro’s charter looks a lot like the line-level developer’s charter.  After all, architects and team leads make strategic decisions, and managers supervise delivery rather than owning it.  The grunt coders on the team, by contrast, faithfully execute the strategic visions of others.  So if we map the consultant taxonomy to familiar team roles, consultants are roughly like managers, specialists are roughly like architects, and software pros are basically developers.

Read More

By

A Taxonomy of Software Consultants

The conversation that follows this paragraph is a dramatization.  But it’s a composite of actual conversations that I’ve held, distilled and focused.  And I think it will illustrate why I believe we need a taxonomy of software consultants.

“What do you do?”

“Oh, I’m a software consultant.”

“Oh, nice.  So, what, you like, go out to client sites and help them with their projects?”

“No, I work for a software consulting firm and I just go there.  My company writes apps for other companies, and I’m on a team working on something for one of those companies.”

“Ah, okay.  Do you interact with your client over the phone or via chat or something?”

“No, that’s mainly the project manager — I just code up requirements.”

“Oh, gotcha.  So no one really consults with you, per se.”

“Yeah, huh, I guess not.  I guess I’m more like a contractor or something.”

The surface problem here is that the definition of consultant has been somewhat watered down.  But I’d say the deeper-seated problem is one rooted in history.

In a world (of, say, 30 years ago) where software was mainly a maintenance concern for line of business automation and hardware-based products, the people that wrote code were employed by the companies that consumed the code they wrote.  Someone without domain knowledge that went around writing software would rightly have been considered a consultant, since specialized knowledge of software was uncommon.  But as the balance of the world shifted to software being ubiquitous, someone unmoored from a particular domain, writing code for a living, is no longer highly specialized nor is that person likely to be consulted for their unique expertise.

DevSkills

As the world evolved, however, the terminology did not.  A software consultant continues to be defined as “anyone who writes software for a company other than the one direct depositing pay into their bank accounts.”  This can be the ‘consultant’ described above, an agency staff augmentation, a CRM specialist installing a CRM installation, or a person advising the dev manager on a migration strategy.  To gain some clarity, I propose some clarity around terms.

Read More

By

The Consultant’s Life: Weird Stuff You Suddenly Need To Think About

I’m going to start off with a quote, though I’ve been warned by someone who knows more about writing than I do that this may be a cheesy thing to do. Oh well, I’m living dangerously these days.

“Gentlemen,” he said
“I don’t need your organization, I’ve shined your shoes
I’ve moved your mountains and marked your cards
But Eden is burning; either brace yourself for elimination
Or else your hearts must have the courage for the Changing of the Guards”

— Bob Dylan (Changing of the Guards)

I’ve made little secret of my opinion that the software developer (and knowledge worker in general) is trending toward a life of increased autonomy and agency.

WalkAway

Anyway, I’ve been on my own for a few weeks now, so I thought I’d share some experiences that I’ve had so far. And, I’m not talking about anything especially profound here such as that I’ve reconsidered my life and found nirvana in controlling my own destiny, or whatever. I’m talking about the kind of things that, should you undertake this particular choice in career, are going to prompt you to say, “holy crap, I have to do what!?” Or maybe that’s just me.

You Need a Company

This is cheating a bit, because I did this some years ago, but if you’re contemplating free agency, this is important. Personally, I’ve formed a limited liability corporation (LLC). There are other corporate structures that you can choose from that differ in various legal and tax-oriented ways, but I won’t really go into those. Instead, I’ll discuss my motivations that I think are probably paramount for you to consider.

(I will qualify what I’m about to say with the standard “I am not a lawyer” caveat, so keep in mind that you’re hearing my understanding and recollection of what lawyers and others have told me. These are my motivations based on my understanding of the world.)

My LLC got me two important things: limited liability and a business entity. By default, if you start moonlighting through something like E-Lance, you’re operating as a “Sole Proprietorship.” In a Sole Proprietorship you are Louis XIV, in that you ARE the business. This makes life easy from an income tax perspective because there’s only you, but it makes things a real bummer from a getting sued perspective, since, if you write software that takes down your client’s business for a week, you can be personally sued for damages. If you don’t have enough money in the bank to cover the tab, the client can come after your car and your house (though you should certainly write verbiage into your contract that limits your liability, however you do business). If you create an LLC, on the other hand, you’re creating a separate entity — a property that you own and that can conduct business. Now, you client can sue the LLC for all that it is worth, but the LLC doesn’t own your car or your house, so those are off limits.

The motivation of having owning a business entity (second thing I listed) extends beyond just the limited liability motivation, however. A huge consideration here is that the business entity makes it a lot easier to classify things as business expenses for tax purposes. Having always done my own taxes and operated both in Sole Proprietorship and LLC capacities, my experience is that you can claim a substantially larger amount of deductions when you have a business entity. It also makes keeping things straight for taxes and accounting easier. My LLC has checking, savings, and credit card accounts, so for bookkeeping purposes, anything that DaedTech needs (supplies, equipment, etc) goes through that channel and anything non-business related is with my normal credit cards and bank accounts. On top of that, the business entity lends legitimacy in your dealings with others. There’s a big difference between telling your clients to mail you a check made out to Joe Smith and invoicing them on corporate letterhead instructing them to make checks payable to Acme Inc, for instance.

Creating an LLC isn’t particularly difficult. It’ll vary some by state in terms of the procedure, but you essentially fill out a form and send it into the appropriate government agency in your state (or, potentially another state — a lot of places incorporate in Delaware because of its favorable tax laws or something, but I don’t know what’s required to be able to do this). There will be a fee to incorporate and then an annual maintenance fee and these also vary by state. When you do this, you also notify the federal government of what you’re doing and you are issued an EIN (Employer Identification Number), which is basically your LLC’s social security number, for all intents and purposes. You’ll need this for tax purposes and for conducting certain kinds of business with other entities.

Now onto the things I’ve stumbled across in the last few weeks…

Tracking Your Time

When moonlighting, it was generally easy to keep track of billable hours, since I’d work 9-5 and then come home and do an hour or two of freelance work. I’d have a spreadsheet or something where I’d log the hours as I went. But boy did I discover how wildly impractical that is when doing this full time.

In the first place, I’m now doing billable work for several different entities, so the spreadsheet would need to be more complicated. But even more importantly, I don’t want to just look back on a week and say, “oh, that’s nice, I billed 30 hours.” I want to be able to audit how much billable work versus total work I did (with the idea of maximizing this ratio). There’s a big difference between billing 30 hours and working 30 hours and billing 30 hours while working 60 (the other 30 going to looking for more business, doing clerical work, taking exploratory meetings, side projects, blog posts, etc). In fact there’s literally a difference of 100% of your pay. If Jane bills $100 per hour, bills 30 hours and works 60 total, she’s really only making $50 per hour and not $100.

Other considerations abound as well, such as searches, filtering, different billing rates, and annotations about the work. I saw immediately that a spreadsheet was going to get way out of control very quickly. A younger, wetter-behind-the-ears Erik would have immediately started building a homegrown database app for this, but, bearing in mind how that would absolutely sink my billable ratio, I did some research and settled on Grindstone for logging hours. It has a lot of nice features to it and it also had the advantage that I’d used it previously. It gives me enough granularity that I can easily look back at the tasks I’ve logged all week or month and any notes I’ve appended to them, and generate invoices for individual customers as appropriate.

Working Too Much or Thrashing

This is kind of a weird one, but it’ll probably creep up on you. When I started on the freelance path my concern was that I’d depart from my schedule and start staying up ’til all hours or sleeping until 9 every day or something. What I didn’t anticipate was what actually happened. I had no problem getting up, keeping focused, sticking to a routine, but I did find that I was logging 9 to 6 hours in Grindstone and then also logging 11 PM to 1 AM hours after I was the only one awake in the house. And also Saturday and Sunday hours.

As your own person, responsible for your own income, there’s a much more intense feeling that every hour you’re not working is an hour that you’re leaving income on the table. Every would-be non-technical startup partner with an idea for an app that you don’t meet for lunch is you missing out. Every recruiter call is an opportunity for you to turn the tables and look for contract work. You can’t pass on anything.

I’ve had to fight tooth and nail to give myself the freedom to pass on leads and not pursue everything. Weird as it sounds, my blog post announcing free agency was met with more recruiters calling me about CTO/Dev Manager type positions by far than it was with people interested in my consulting. I started doing some interviews because I’m open to all sorts of possibilities, but I’ve now had to ramp that back and pass on some offers because between scheduling all of that and also earning my keep, I was logging 80+ hours per week in Grindstone. And, while I’m not averse to hard work, I had to look at the fact that doing job interviews and lots of exploratory meetings are unlikely to be revenue generating for me — I have to focus on the most promising/profitable things going on.

That’s been unexpectedly hard, since I’m very enthusiastic and game for things. Anyone approaching me with a project or an opportunity makes me want to say, “yeah, totally, let’s do that,” but I’m learning there’s no way I can say that to everyone or even the majority of those to whom I talk.

Weird Tax Things (Quarterly Filing and Mileage)

Anything related to taxes is always an odd combination of scary and extremely boring, and that led me to procrastinate a bit when it came to “what do I do with all of this gross income I’m getting with no taxes withheld?” When you work for a company, you fill out a W-4 form and your company then sets up your paychecks such that the IRS takes its pound of flesh before the money ever hits your bank account. At tax time, you then get a “refund,” which is really just them saying, “turns out we held on to too much of your money and, oops, look at that, we earned interest on it, but here ya go.” In a case where your employer didn’t withhold enough from your paycheck, on the other hand, you have to cut the IRS a check for what you owe, come tax time.

But if all your money is coming in via checks for services paid, there are no taxes being withheld at all. And that means, come tax time, you’re going to have to write the IRS a massive check for your entire annual tax burden. However, the IRS, while happy to hold onto and earn interest on your money, gets extremely cranky if you hold onto and earn interest on theirs. So, if you’re a free agent, the normal course of action is that you have to send them quarterly checks in order not to face penalties. (If you’re liquid enough and depending on how you structure your business for tax purposes, there are ways around this, but I’m going to focus on the simplest sort of case — me with my LLC).

I spoke with an accountant, and I have yet to actually do this, but you basically fill out a form Schedule C that calculates the business’s profits and losses and then, based on that, you compute/estimate the tax you owe for the quarter and send them a check for that amount. Then, at tax time each year, like a normal, workaday person, you’ll probably either get a small refund or owe a small amount of money, rather than the entire 30% or whatever of your salary that would go to Fed, SS, Medicare and State taxes.

So be aware that you now have to be an active participant in the tax game, rather than just passively waiting for your W2s each year and firing up Turbo Tax or dropping things off at H&R Block.

Forms, Forms, Forms

I earlier mentioned sending invoices to clients. To do this, you need an invoice form. I also mentioned drawing up contracts for clients. To do this, you need a contract form. You’re going to need a lot of forms, so if you’re contemplating a move to freelancing, I’d get these ready in advance.

I’d say you’ll want the following forms in your arsenal: invoice, contract, statement of work, master services agreement. Invoices are obvious — this is simply the way you enumerate the services rendered and request payment. Contract is an agreement signed by both parties for work, often on an ongoing basis. I’d use this for retainer arrangements or “I’ll work 15 hours per week for you” arrangements. Statement of work is a more project oriented document — “I’m going to build you a website and you’re going to pay me for it.” Master Services agreement is an umbrella agreement that establishes general terms for you to do business with a company (e.g. “we won’t steal each others’ intellectual property, we won’t poach each others’ employees, etc”). Usually you would exchange this with a client for the duration of your relationship and then have individual contracts or SOWs underneath its umbrella. This one is probably not quite as critical for fledgling consultancies/free agencies, but may be worth having around.

Where do you get these? Well, if you know or have a lawyer, the lawyer can probably draft them or perhaps just supply you with a boilerplate one. A lawyer will also be happy to review any specifics and mark them up. But if you don’t want to incur that expense, search your inbox for emails on which you were CCed at your company that may have included these. For instance, if you were CCed on some email where your department reached an agreement with Expensive Consultants Inc to do some web design, grab that and use it as a starting point for creating your own. If they’ve been in business a while, they’re probably doing something right.

Keeping the Books

When you’re on you own, running your company finances isn’t quite the same as whatever you do for your personal finances. You want bookkeeping software. I’m fortunate in that I’ve been using Quicken since my finances were no more complex than a checking account and the occasional paycheck, and so the move to Quicken for Home and Small Business was easy.

Quicken (or Quick Books or whatever you use) will allow you to record invoices that you’ve issued and then to keep track of whether payment has been received. This is important because you’ll send out invoices that require payment within 30 days, and then it’s up to you to keep track of whether clients have paid or not. This is not like W2 employment. Companies will straight up forget to pay you. Or not bother. Because, remember, you’re not dealing with an individual and you’re not dealing with a payroll system — you’re dealing with Accounts Payable departments and people who have jobs of which only a tiny portion is sending out the dozens or hundreds of checks per day that a company has to send out. Stuff falls through the cracks, and you need to be checking back on the status of payments that you’re due. If you have only one client or if you’re missing huge checks, this will be obvious, but if you remoted in and helped a former client for an hour or 2 in June, it’s pretty easy to forget that they owe you $150, unless you have software that reminds you.

Software like this also helps you keep track of things you can deduct but wouldn’t think of. Sure, if you bought a computer or a bunch of printer ink, you’ll file that as “business expense” for tax purposes when recording expenses. But what about the mileage you drove getting to a meeting? Record that! It’s tax deductible at about 50 cents per mile. Quicken lets you keep track of this and other similar non-expsense-per-se-expenses.

That’s All for Now

This has become a pretty long post, so I’m going to wrap up here and save other things that I learn for another post, later. And, while I’m speaking somewhat authoritatively on this stuff, it’s stuff I am truly learning the nuance of as I go. A lot of it falls under the purview of “stuff that I’d have known if I’d thought about, but was kind of surprised by its immediacy.” Other things were news to me. And, since this is a learning experience, please feel free to chime in on the comments section with your experiences, tips, or corrections of anything you feel I’ve gotten wrong.

Cheers, and happy free agency to anyone reading in advance of taking the plunge!