Embedded - 199: Petri Dishes of Doom
Episode Date: May 10, 2017Chris and Elecia answer listener questions about contracting (and consulting). Reminders: T-shirts! Hat contest! Digilent contest announced in #197! It all ends around May 18th so get your entries in ...now! The original discussion was on episode 4: Are We Not Lawyers? Elecia's salary to rate conversion can be found as a Google spreadsheet.Â
Transcript
Discussion (0)
Welcome to Embedded.
I am Alicia White, here with Christopher White.
Our guest didn't show up, so we're going to have a show anyway.
We're going to have an imaginary guest?
You know how tempting that is for me.
We could just pretend that somebody was talking.
Luckily,
Andrew sent us a really
interesting question about consulting.
And while we did a show about consulting,
it was episode number four.
And in the intervening
195 episodes,
That can't be right.
Things have changed and
might as well talk about it again
since our invisible guest seems very quiet.
Well, I'm not consulting anymore, so this is going to be your show.
You still have to participate. Sorry, honey.
Before we get into more detail, this is your reminder that the t-shirt ordering hat winning logic analyzer contest all end around May 18th.
Don't delay.
Check the show notes for more information for each of those.
All right.
All right.
All right.
Now, contracting.
Contracting.
You don't do it anymore.
Why?
Not really.
Because somebody asked something and I said yes.
Somebody asked pretty nicely and you said,
as long as it doesn't change my life in any way.
My main client asked me to go full-time,
and there were reasons that I won't get into that they wanted to do that.
But yeah, after some hemming and hawing, it seemed to make sense.
So I'm no longer really consulting,
although I am doing some small things occasionally.
But nothing very big deal. So.
Well, it's only been a few months. I expect you to come back.
Maybe in a few years.
Okay. So Andrew said that he has been doing more and more electrical and embedded consulting and
freelancing. He doesn't know anyone who's done it before, and he has questions.
He looked up some of the stuff online,
and he's not talking about the technical side so much as the business side.
So the idea for the episode is to talk about the business side of consulting.
Okay.
Okay, so consulting, contracting,
are those the same thing?
No, not really, but we use them
as the same word.
Contracting to me is when you are hired
to
do a very large amount of work.
So that's the day-to-day
programming, that's
40 hours a week of
implementation. We'll get to that in a minute well that too um
the hours how many hours a week do you work but uh it's the it's as though you worked there
consulting is more when you are popping in and mentoring or giving your vaunted experience.
Or solving a specific kind of small problem.
Probably one that you've solved before.
Or a large problem, but something that's like off to the side.
It's not, we need you as an individual contributor for this project.
It's, we can't figure out how to do this.
Yes.
Or we know that you are the best person to do this and we want you to give us an architecture or we want you to be on call for when things go horribly wrong and to come in and tell us what
to do yeah and so that's usually really highly paid because they are using your experience
and it's often time crunched but it it is only a few hours a week.
Right. You have to have a lot of those to keep a business going.
Well, because it is more money, you can have fewer of those and just be really,
really good at some things. Be the only person who is that good at those things.
If there are things that are hard to learn, don't specialize in things that are easy to learn.
I consult on the ABCs. You'll be surprised when you get to N.
I will be.
No, nobody will because that's a terrible thing to specialize in.
Okay.
Okay. Okay. So that's contracting and consulting. And I don't know that that really is industry standard i mean i've heard those
definitions lots of time yeah when you are working for a company and you are contracting
in the u.s you can get into trouble if you are contracting and not obviously a secondary person, not obviously a business.
So like if they give you an office or a cube and a chair and your computer is there.
And a computer.
And you sit there and you go there every day and you look exactly like every other employee to the IRS.
And then the IRS says, well, why isn't this person being treated like an employee?
Right.
And in civil court, if the company goes public, that person says, well, I was for all intents and purposes an employee. And in civil court, if the company goes public,
that person says, well, I was, for all intents and purposes,
an employee.
I should have gotten the benefits,
both the stock and human resources type benefits.
So there's some danger there.
You kind of have to be a little careful and aware
that you can get yourself and the company in trouble.
Okay, so those are terms.
We still haven't gotten to his questions.
First one, given the choice,
do you prefer a fixed job cost or hourly billing?
That's so easy.
Time and materials.
I really prefer hourly.
I have done a few fixed bid contracts,
and they are things that I know very, very well how to do,
and I know how long they'll take,
and I still charge you twice as much as I think they're going to take,
even though I'm really confident.
Well, just think about how good we are all at estimating our schedules.
It's very difficult, and especially difficult
when you're coming into a new project
and you're working with an unfamiliar company.
You don't know what kind of roadblocks.
And they never tell you everything.
You don't know what kind of roadblocks they're going to put in your way, what kind of meetings you're going to end up going to that you didn't know about that's going to take your time.
And so, yeah, you have to inflate the fixed bid costs by a lot to cover.
Because you don't want to end up in a situation where you expect to make $100 an hour
as your normal rate.
Now you do a fixed bid and you try to figure that out.
And you think it's going to take you 10 hours.
And suddenly you've spent six months on a one-month project
and you're down to $15 an hour or something.
So that's a big danger.
I think people occasionally asked for fixed bids from me,
but I always refused.
Yeah, so I think hourly is the way to go, but that can be a different kind of negotiation.
You can get in a lot of trouble with fixed bids. So I tend to stay away from them.
If it is somebody who wants me to, for example, I worked on that mouse
feeder project that was an Arduino and a motor shield, and it was a prototype and it didn't have
to be a super fancy. And I knew how to do that. I could have done that fixed bit because I knew
all of the pieces pretty well. And I was just putting them together in a slightly different way and the uh the client had a written spec if they don't have a written spec and they
want you to do fixed bid run run quickly yeah that better be a pretty good spec and it's not
and changes you know should go through a change order process and not just and will affect the bottom line yeah um i have one person wanted a fixed bid
and i said i don't think you do let's try a week at hourly and i won't go over this amount and if
you're really unhappy uh we'll just walk away and i didn't give them a whole lot of hours but i think
that i would have had to bid way too much not knowing them very well.
And that worked out. We ended up with hourly and they said that it was much less than they
were willing to pay for fixed bid. And I said, well, it was better for me. It was better for
everyone. All right. So next question. What is your strategy for calculating estimates?
For billing, for hourly or for fixed
what do you think well i mean i think that applies to both so um start with fixed for fixed
uh if i know what i'm doing then it is how long i think it would take if i was just going to sit
down and do it for myself.
Multiply by two to three, depending on the vibes I get from the person I'm working with.
And then add at least two full days.
Yeah, and then you should have some idea of what that means for your billing.
Like, okay, this is my hourly rate.
Yes. Oh, and then I multiply that all by my hourly rate. Right.
By the high end of my hourly rate.
So let's go to hourly rate.
I have for a long time said that you should start out with an hourly rate
that is very similar to the salary you want.
Divided by a thousand.
Divided by a thousand.
So you take your annual salary.
Let's say that's going to be sixty thousand dollars a year that's what the area that you're in and what
glass door or whatever your last job paid you and you take this number sixty thousand and then you
divide by a thousand you get sixty that's your hourly rate and that isn't your final hourly rate. That's your start. And if you are one of those people making, I don't know, $500,000 a year,
then I'm saying your hourly rate should be $500 an hour.
So the interesting thing about the 60 hourly rate is that comes out to,
if you worked 40 hours a week, which you won't, but let's say you did.
Well, I have the whole Google spreadsheet.
But it comes out to $120,000.
Right.
It comes out to a lot more than it looks.
And the reason is there's all this stuff you're paying for that the company would normally pay for if you were an employee.
You're paying for health insurance.
You're paying for your own tools, your own computer, because that's how you're not an employee. You're in the US, your taxes are higher. Your taxes are
higher. You don't get paid time off like you would if you were an employee. And you may not work as
many hours because the company can turn you on and off. You're not an employee that they have to pay
or are supposed to pay. They can just say no more hours this week. And usually in your contract, it says
once they say no, you can't work anymore. And so there's some time spent with making sure that your
network is good enough that you can get a new job. And there's always this fear of, should I turn
down that job? Even though I'm busy right now, I may not be busy next week. And you're always going to end up between jobs.
That's the thing, right?
Even if you're a pretty steady consultant,
there's going to be month-long, two-month-long periods
where either you don't have anything
or somebody's not ready to start yet,
but you have them lined up.
Or they're almost out of money
and the only way is to work on really important things
and only for three hours a week.
And so all of that extra rate goes into keeping you alive and so i mentioned um
google spreadsheet which i will link to the show notes um and it goes through and you put in your
annual salary and it pops out an hourly rate and Cool. It lets you choose how much your insurance costs per year
and how much you devote to tools.
And it goes the other way, too.
I mean, it can start from the salary,
or it can start from your hourly rate.
And then it gives you an equivalent salary.
So that's public, and you all can try it.
I really don't have one hourly rate. I start with a fairly high hourly rate and then people
get discounts. They get discounts if they don't, if they want to pay me quickly. People who want
to take more than 30 days to pay me, I worry that they don't actually have any money and I have
gotten burned a number of times. So I am pretty neurotic about that.
And people who I know usually get a bit of a discount because I know what I'm getting into.
People who have technologies I want to work on and applications I want to work on get a bit of a discount.
And so there's this whole, at some point, I do have a really high rate.
And then if you don't manage to get a discount below a certain level, I don't work for you because I don't want to.
There's this like, I don't want to work with people who are jerks and I don't want to work on things I don't want to work on.
Well, that's going to differ for different people.
So you're answering for yourself.
Some people would say, oh, $250 an hour.
I don't care what the project is. And some people will be like, well, this is
beneath me or something I've done a million times before and I'm really not interested in.
Even though you're willing to pay me a lot, I'm going to look for something else.
Yeah. And I am fully willing to say I am in a position of extreme privilege. I have lots of credibility. I have a good network.
I've shipped some great products.
I am maybe not hugely in demand, but I don't go for a long
time without having a job. I usually have at least one on the horizon.
It's okay for me to turn down jobs. It's still terrifying
sometimes. Now my husband has a full-time job. and so it's okay for me to turn down jobs. It's still terrifying sometimes,
but now my husband has a full-time job.
I can sit in my office and make robot hands if I want to,
which is another thing to think about with consulting.
It is nice to have one stable job in one consulting
because then you can balance things.
It was a little scary when we were both consulting,
at least at first, because what if we both hit a dry patch?
We have savings, but who wants to use their savings for daily life?
Did he ask anything about remote work?
Because I've done both on-site contracting and remote contracting,
although it got more remote as time went on. Because that's
another consideration too, is you have to be in a place that has enough clientele. So if you're in,
let's say, I'm going to choose a geographic place and everybody's going to be mad at me.
Go with Cincinnati.
Sure, Cincinnati, you might have fewer options than if you're in San Jose.
And if you have a good enough network, that might not be a problem if you can get remote clients.
But that's still trickier than having a whole bunch of places near you that you can physically go to.
He doesn't ask about it, but that's a good point. We didn't start contracting until after we had a pretty extensive network.
We'd worked at a large number of companies and those people had exoduses. So they went to other
companies, but they knew us well enough to be willing to hire us in the future. And we were
physically located, so it was easy to come in and talk to people. And then we moved, and now we could go and visit people in San Jose and San Francisco,
but it's a trek.
It's not, you know, I'll meet you for lunch.
It's like, let me spend the whole day there.
So yeah, that network building, I don't know if it's as important
because there is more remote work and it's way more accepted,
but it would worry me.
That's one of those things that I don't know.
I'm a fish in the water.
Don't necessarily ask me about the water.
I don't know.
Well, it's a different prospect for electronics and software too,
because if there's something you're working on with electronics
and you're expected to deliver physical artifacts and debug stuff,
you know, in their lab, that sort of thing.
That's harder to do remotely than firmware or software.
Well, that's one way to try to figure out if you need to be there or if you can work remotely is how much gear you need to take home.
And if it involves five power supplies and 12 motor drivers, it's better just to go into the office.
Trust me on that one.
Let me go on to his next question.
Yeah, sure.
If a job requires some work with a technology you're unfamiliar with, would you bill any time taken to learn that technology?
A new programming language, an IDE, or a CAD package? Yes. Yes, but why are they hiring me?
Would be my question, I guess.
It depends on how big the thing is to learn.
But it's unlikely that, say, a C-sharp house is going to hire somebody who's never done anything in C-sharp.
So you're not going to have to learn C-sharp.
Yeah, it's kind of a strange question.
I tend to say, would I be doing this if not for this client?
And that's where I say they get built.
Oh, yeah. No no i mean if and and so yes
if i if i want to use iar and they want me to use eclipse they actually have to pay for me
to set up eclipse and and that learning that's common i mean but those are those are tools and
things they're not concepts um ble then sure soLE, I definitely did some of that on my own. And I definitely got paid to learn some of it
because there's no way I can memorize all of the different BLE implementations.
On the other hand, I do a lot of technical reading and I do a little bit of messing around
with my own projects
and so yeah there's some balancing both ways i would say if they hire you even though you have
something missing that they need you bill them for for educating yourself that's part of the project
it is part of the project and uh and if you feel squeamish about it, ask them. Say, I'm not that familiar with X, and I find it looks like I'm going to spend some time learning about X.
Are you sure I'm your right fit?
Because your goal here is to have a client who wants to hire you again.
And making them pay you to learn esoteric blah then they won't hire you again um so yeah would i be doing this
if i wasn't under contract with these people is how i i judge things it's a tough tough line
because you're like do i charge them to go out to lunch with them well i'd have to eat anyway so
usually not depends on what you talk about. But if we spend the whole
time talking about their project, that is not something I would do.
If we spend the time talking about our kids and our hobbies,
then yeah, you know, at some point
their kids, our hobbies, then yeah, I don't
usually charge for that.
Okay, so that answers that?
That question, yes.
If a job requires some paid software you don't have,
do you buy it yourself or bill the customer?
Both.
Well, one or the other, but... Not both.
It depends. There's some software by myself yeah uh beyond
compare is something that i don't even care if i'm employed by a company i'm buying it myself
because it's mine mine mine um sorry ir on the other hand is pretty expensive. Well, and the configuration varies from project to project,
so you can't have the...
You wouldn't want to shell out for the whole thing,
and then you have to upgrade it,
and who knows what version they're using.
Yeah, so something like that, they're buying.
Well, and the license remains with them.
Yeah.
So when you are done with your project,
you hand them over the license.
And it is theirs,
and they will be using it in the future because no software
is ever finished. Are there other
software tools that you can think of that might fall under that?
I mean, if you want to, like, linters and stuff, and it depends on
you know, there's different contracts, right? There's ones where you're coming into
an established software place that knows what software is.
And there's ones where they have no software experience and you're the software person.
And so you're expected to, you know, figure out what tools should be bought and develop a tool chain and the whole development environment.
And in that case, you know, there's going to be a mix of things, but I think they should pay for everything. As long as it stays with them for the most part.
Everything that stays with them, they should pay for.
And everything that stays with me, I should pay for.
And I don't usually make their tool chain depend on things I've bought.
Yeah.
So, yeah, I think they generally pay for it.
Although that is something that is different with consulting, I think.
With the come in, fix something consulting um yeah if they have as a consultant i might have matlab or
some other view or something um fairly expensive tool and one of the reasons they're hiring me and
so that's one of the things that might be different with electronics consulting if you have an ltm
license and it's your ltm license be sure they pay you for that
um yeah so what do you mean if it's your license well like if i had a iar and it was really really
expensive my rate should uh reflect that they are using an expensive tool through me yeah okay
and this is for tools that cost upwards of $5,000.
Yeah.
What about hardware?
If it stays with them, they get to buy it.
If it stays with me, I get to buy it.
And that's why we have a large selection of hardware
because I am very greedy with my hardware.
But you should expect to buy your own computer
and maintain it.
Yes.
And figure out what to do when your computer is dead
and you're on a contract?
Oh, yes.
I hate that.
Oh, we almost killed my computer recently, and I spent a whole hour thinking,
huh, well, that's going to make work hard next week.
I sure hope it doesn't matter.
But no, I mean, but that's one of the side effects.
You can't call up IT and say, hey, my laptop's broke.
Go grab one from the supply closet and you have to figure out, okay, do I need to go shell out $2,000 at the Apple store this weekend or at the, where else you might buy a laptop?
Costco.
Costco, yeah.
And you have to maintain your own laptop.
So that means keeping it up to date.
And when it goes bad.
And keeping security because your client's data is on the laptop.
Yeah.
And that's part of your rate is having these tools.
Being IT.
And so I guess this goes back to if your computer fails,
do you charge them for setting things up again?
And that I say no to, even though it's something I might not do.
I don't know.
Was it their code that broke it?
Well, usually not.
But yeah, that's where you're kind of paying out of your own wallet
because, okay, this is my company's infrastructure that's broken, not yours.
Yeah.
And so, yeah.
On the other hand, sometimes I do buy software and hardware
just because I want to have it.
And that's allowed, and it is cheaper if you do it as a business.
Even solo contracting, you can write off part of your income with toys and tools.
All tools, all tools, I swear.
No toys.
How do you handle questions requests after you've handled off a project?
Bug fixes.
Do you fix them for free, as they could be your error?
No.
And if there's a line item in the contract that says that, it is struck.
Yeah. Chris had a contract once that said, you will forever fix bugs. And he was like, no,
no, I won't. And I had one, I think yours was for free. And I had one that said,
you will always be available to sign any paper. And you aren't we will sign it for you as power of attorney for everything and i was like no you may not have power of attorney you cannot sign things for me if there's a reason i didn't sign it there's a reason
if you want to say 30 days and you can't reach me and you make a good effort
so look the reality of software and electronics is there are going to be mistakes.
And some of them will be large,
and large ones should be taken care of
as part of the agreement of your contract,
that it works according to the specification.
By the time you're done with the contract
and you've fulfilled everything, small bugs,
that's just a reality of life.
And no, coming in and doing stuff for free is...
No.
You're devaluing your time.
You're devaluing your education and your tools.
You're devaluing yourself.
Now, if you do a terrible job and it's riddled with bugs,
there are recourses to never hire you again or badmouth you.
There are other ways of dealing with that if you do a bad job.
But if you honestly make a good effort to do a good job
and you believe you are in line with industry standards
with how other people are doing things,
you are using unit tests, you're using linters,
you're not ignoring all the warnings.
Maybe you weren't doing it as much as you could if you were crazy and that was all you did but you're you're trying to be an ethical
good person of implementing this stuff then no you should not feel bad about having a few bucks and they should pay you you know usually your normal rate uh
sometimes out of contract like okay can you come in and this is going to take two hours can you do
this at your rate that's fine yeah and i'll even go without a contract for that yeah um
and often in my contracts there's a sunset period that's where I'm available for the next four months for up to 10 hours a week in order to fix things.
Wow.
That's a decent idea.
It was, you know, it was fine.
I don't know that we actually used it.
I mean, I think it was like three weeks later, they were like, okay, we don't have anything else and we're shipping, bye.
And I was like, cool, ship me one.
And they did.
It was nice.
Yeah.
So don't feel too bad about the bugs.
For questions after and requests, I will admit that sometimes if something takes less than an hour, I'll do it.
Oh, yeah.
And I won't worry about billing them until they've gotten three or four of those.
Yeah, yeah, me too.
So you hand it off and everybody agrees you're done.
And then they email the next week about a question.
Fine.
And they email the next week about a question.
Okay.
And they email the next week about a question.
And that's where I say, maybe we need to re-up the contract.
Yeah. So be smart about it.
In general, I figure about one hour of my time is free to most people.
I don't mind hearing about their projects and giving them what advice I have, if I have time.
And so I try to apply that to past clients as well as future
figuring it leaves a good impression
and that helps with getting the next job
I mean your best source of contracts are people who
used to have a contract with you and everybody scrambles around
and goes to different jobs and then you get new opportunities.
Okay, next question?
Yeah, next question.
What kind of license and author text do you put in the file comments of programs of libraries?
Well, let's actually break that up.
And how does this change if you wrote something entirely or just modified?
Okay, so licenses.
Licenses are important. If something comes from, say, Nordic, the vendor of my chip, then that has a copyright license,
and I usually don't modify it. I do read it because if it says something that I don't think
is good for my clients, I let them know. And if I get something off the internet, I check
a lot to make sure that that code is compatible with what my clients need. If they are okay with
GPL, we'll do GPL. If they're not okay with GPL, we will make sure it is clean. If it's BSD,
I will note that and make sure that it is in their documentation.
And if I do it from scratch, it says copyright client, year of writing.
The code does not belong to me.
My name is not in there.
Does that all make sense to you?
Yeah, except I think the question is coming from a different angle.
Oh, okay.
Your writing code.
I'm writing code.
What do you put in the code you write?
If I'm writing it for a client, I put in client company.
Did you already say that?
Yeah, that's fine.
Oh.
Apparently I went spacey.
No, that's okay.
I might have.
Yeah, conform to whatever your client does.
And that's going to be 99.99% of what you're doing.
I'm using a lot more example code from the vendors these days.
Right, right, right.
But, I mean, obviously, you keep that as it is and you comply with those licenses, but anything new you've written.
And you do have to read that code that you guys can use but i'd like to open source it that's a whole
different conversation about your contract yes so um now they're paying you to develop code that
might be used for somebody else and so yeah you'd be careful with that and i have some code i have developed for myself that i do apply to clients and that is one of the
hardest things to figure out how to charge them for and i finally came to the conclusion that if
i have developed like my uh console serial uh you type at it and it runs commands, console thingy, widget.
I charge them for putting it in their system and not for any of the code itself.
I wrote that code to be open source and it is open source to them as well as everybody else in the world.
Right.
I wanted to do some code involving an inertial measurement unit,
and I was working with an inertial measurement unit company,
and I wanted to do some free software,
and then I wanted to apply it to their code.
That still was, I wrote the code outside of their billing hours
and then said, I am done with this.
Would you like to use it?
And they got to use it just like everybody else that I made it available to.
If I had written it for myself and was not intending to open source it, I don't know what I would have done.
I mean, that's sort of license it to them.
I'm not willing to try that hard.
Yeah. One of the, one of the problems with contracting is there's a lot of legal stuff involved and you can, you have to read the contracts carefully because they do put weird
stuff in them. And if you don't have a lawyer, it can be even trickier. I don't think we've ever used the services of a lawyer in any of our negotiations, although we've occasionally considered it.
And I think we should sometimes.
But that goes to the licensing thing and protecting yourself.
If there's liability involved with the product you're working on, they go after the company somebody gets hurt or do they go after you? How do you protect yourself from that? There's some big legal
implications for working for yourself that just don't exist when you work full-time for a company.
Well, this all falls into the next question, which is, do you reuse code you've written for
another job verbatim? Where do you draw the line between boilerplate code
and proprietary code that your client owns?
So I've done, I would say, three or four projects
that were extremely similar.
And I rewrote them from scratch every time.
Yep.
And it gets easier the fourth time.
Oh, yeah.
It wasn't that big a deal because having done it once,
it's just not that hard to do the same thing.
You get to improve upon it, which is nice because it's a clean slate
and you don't have to make the same mistakes again.
But I think it's borderline and maybe across the border
of unethical to reuse code that you have.
Unless it's stuff like, you know, you got a linked list implementation you like, some snippets and stuff like that, fine.
You know, if it's boilerplate structural code, I think that's fine.
Well, those are the things that end up implementing
when you go to
implement it the third time
I'm like
oh to heck with this
I'm not doing this
for the client again
I'm just going to do this
for myself
I'm going to make it nice
and then I'm just going to
be able to use it forever
but if it's
you know
if it's something to do
with networking
if it's something to do
with image processing
if it's the core
of the product
like you're making
a BLE widget
and you know the glue code between BLE widget, and the glue code
between BLE and this and that, don't reuse that stuff.
What about looking at it?
Oh, sure.
It's yours.
So customer A pays you to implement complicated library, and customer B comes and wants something
similar.
At the end of your contract, you shouldn't be able to look at it.
Yeah. You shouldn't be able to look at it. Yeah.
You shouldn't have it anymore.
It kills me sometimes because I think back and I think, wow, I remember that as a really great implementation.
But you know what?
An earlier question was about licensing.
And I said, if I'm writing it from scratch for a client and then they're paying me to write it. Then the license says copyright them.
Yeah.
And at the end, it's theirs.
Yep.
And even, I mean, you know, sometimes I'm tempted,
hey friend at this company, do you mind if I look at this?
Knowing that they will say, no, we don't care.
But in the end, it just i would even feel better
i would even say worry about it given the history of legal you know cases surrounding code even the
thing i said about keep your list linked list and implementations around that could get you
if somebody really wanted to get you you're better off taking your linked list implementation off of some
very
free
location
getting it off of
stack overflow
implementing it
in your free time
testing it
in your free time
and then using it
the way around this of course
is to
open source all of your
things like that
that is
what I do
but only slowly
hey can I use this in our project?
I wrote it, it's open source, but it's not.
That's probably the best way to go around it.
But you should be always open with the client
about what you're doing.
You should never...
Yes, and if you can't be open with the client
about these things,
then I wonder why you're working for them.
It's very easy to think,
well, they've hired me to be an expert,
I should have all the answers.
That's nice. I don't. Let me know all the answers because I could use them.
I would rather have a client understand there are four good ways to go from here.
And this is the one I want to take. Which one do you want to take? And if they say, well, we want you to implement it on your own time and then not charge us to put it in, then you say, well, I'm sorry,
I have to work on pain work until such time that I don't have pain work and then I will work on that,
which might be three or four years from now. So yeah, like I said, I have my own implementation of the console apps. I did that in one of my down periods, not for waiting.
I mean, clients don't get to wait on stuff like that,
that just magical presence for them.
Okay, moving on, moving on.
How do you handle invoicing?
Badly.
If you're billing for hourly work, what do you
bill for and what do you
accept from
billing? What does that mean?
What do you not bill for?
And how frequently do you bill? Oh.
So we've talked about how we decide what we're billing for
and what we don't bill for. Pretty much,
let's state it again, if you're doing something you wouldn't normally do that's your first kind of first order
approximation yeah so um travel gets a bit mixed up in that so if you have a two-hour drive to
your client it's usually in your contract that commuting does not count um you should work that
out with your client and be open about that too.
And if you have to travel there
and spend the night,
it's not a two-hour commute,
it's a plane ride.
Yeah.
You need to talk to them about
how is that going to affect
how many hours you can put in
and how are you going to pay for it.
Especially if you're paying for lodging
and stuff like that.
So that gets tricky.
So that's the first order of how you decide.
But generally, you know, I'm not going to lie.
I've charged 15 minutes for thinking in the shower.
Some of the best thinking there.
But I don't normally charge for showering.
If I solve a problem, you know, and I realize, you know, I've been thinking about this for a half an hour in my normal downtime, that's work.
And I'll bill for it.
It's not quite like the lawyer jokes where, you know, I saw you across the street and went over to talk to you, but it wasn't you, 15 minutes.
Yeah. You know, so generally, you know, if you're thinking about the project
and working on the project, if you're at a coffee shop with a napkin
and you're working stuff out, that's all billable.
And if I am working and working and I get up to get a cup of coffee,
I continue billing as long as I don't lose my train of thought.
Yeah, or some lengthy period of time.
If we go for a walk with the dogs then then yeah
i know i can't unless we talk about something even usually once we're out the door i mean yeah
but uh yeah so and that's that's the downside right when you work full-time and this will
get into the 40 hours thing which we'll probably talk about separately again but
when you're working full-time at a job you you get there nine to five, eight, 30 to six, whatever,
you know, you're working your quote 40, 40 plus hours. Let's be honest. How many hours are you
actually working while you're sitting there? It's at least, you know, a few minutes of shooting the
breeze with your, with your buddy across the cube. There's, you know, few minutes to shoot in the breeze with your with your buddy across the cube there's you know lunch which come you know sometimes lunch can take a while and there's
the birthday party celebration birthday part there's there's meetings where you don't hands
meeting don't really want to be there but you have to because you're an employee all those
moral improvement meetings don't forget those if you add up all of those throughout the week
i think most people find they're working maybe 25 hours of solid actually heads down typing, 25, 30.
And that's kind of what you will end up billing because you're not doing any of that other stuff.
Sometimes you're going to meetings still.
You're going to meetings, but you're going to fewer meetings because you should only be going to meetings that are relevant to your contract.
Yes.
And your client should be aware that you attending a meeting is costing them money.
Well, anybody attending any meeting costs them money, but yes, special money.
Yes, special money.
But yeah, I mean, I think I've done bursts where I've worked a lot of hours for a contract, but working an eight-hour build day feels a lot worse than a normal eight-hour day.
Because that is eight hours of I'm doing technical, creative work.
And you can't do that for that long.
My, yeah.
Some of you probably can, but i i personally you know yeah
start to get pretty tired and you make mistakes yeah and the more mistakes you make the more you
have to do tomorrow and then you have to bill them for that and then you feel guilty and blah blah
i know some people out there like i work hard for 60 hours a week.
I have three jobs.
And I work two more.
The startup people.
And I've been there.
I've worked at a full-time job.
And I have worked 50, 60-hour weeks,
even two or three of those in a row.
And you just feel like a zombie afterwards,
and you're really heads down working.
And it can happen.
Yeah.
But there are a lot of times that, it's funny, as a full-time employee, I almost always aimed
for 44 hours.
I don't know why I decided that.
Maybe 110%.
I don't know.
F? four hours. I don't know why I decided that. It was 110%. I don't know. But that was my goal
in chair hours. And it was always kind of dumb. One of the things I like about contracting,
if I want to make cookies at three o'clock or I want to do a podcast at four o'clock, we can do that.
It's not, they aren't paying me for my life.
They are paying me for the hours I give them.
Yeah, and you don't feel guilt about, I'm not working right now.
And at full time, I always felt like I wasn't working enough.
Like I should be checking email or I should be doing this or that. Now with contracting, I feel more pressure to be self-motivated with learning, but I don't
feel more pressure just to be there. And it's better for me personally. It's one of the reasons
I really like contracting. It's funny, I think when we did show number four, we talked about contracting and I said
I would go back to a full-time company if it was the right company.
Similar to how I left contracting to go to ShotSpotter. That was the
right company for me then.
But you were like, no, you're never going back to full-time. I don't think I said that.
I think I said I'm never going back to sitting in an office all day.
Yeah.
All right.
Which is still true, especially since offices have become so much worse.
They're just little petri dishes of doom.
Open offices.
Did I say that out loud?
Yes, you did.
I'll mark it down as a possible show title.
Petri offices of doom.
Dishes, Petri dishes of doom.
Petri dishes.
Did we answer that question or did we go off on a tangent?
No, actually, how do you handle invoicing was the question.
Oh, well.
It was much easier.
Okay, so there were several parts of that um i found it easiest to
write down in and out on a notebook instead of using any of the apps or anything it's just easier
just reach to have a pen out and clock in and clock out that way and then add it up at the end
of the day and put it in an app or something or a spreadsheet um what i got to toward the end was
just having a text file open and i would would write, at the end of each day,
I would write a one or two sentence summary of what I did
and the hours I worked.
And then that would just get cut and pasted into the invoice
so that the client had a record of,
oh, okay, these hours were spent on this.
So it wasn't just a, here, 75 hours, please.
And as far as the details of invoicing, there's lots of ways to do it.
I mean, there's website services that do it that people like.
There's QuickBooks if you're really into self-abuse.
There's iPhone and Android apps that are pretty good.
And they'll all, even the Android apps and iPhone apps,
will spit out a PDF and email it for you.
And they'll put on your logo and make it look nice.
So the mechanics of that are pretty easy to deal with.
I mean, even Excel is a perfectly,
I mean, I've had clients say,
well, why don't you use Excel?
And I'm like, because I am forced to use QuickBooks.
It's horrible.
But I have used Excel for a few clients and it's easy.
As far as how often? Depends on how often you want to get paid.
Yeah. How often do you want to get paid? What are their cycles? You might want to ask,
do they do their books every week, every two weeks, every month. I mean, if you bill on the first of each
month and they do their accounting on the 30th of each month, then you are going to be waiting a
long time for your checks. On the other hand, if you note that they do their accounting on the
30th and you make sure to bill on the 29th, you don't have to wait so
long. So there's some strategy there. I tend to bill every week and for new clients, they aren't
allowed to get over $10,000 before they pay me because that's my limit and getting burned pisses
me off. Anyway, so yeah, be a little careful with that. And I like every week because
I also use it as a status. As you said, I write down what I work on as well as the hours I work.
And similar to how Chris said, I have a physical paper notebook because that's what I use it as an
auxiliary brain. I put a lot of information in there.
I just sketch things and write things, and I like having a physical notebook.
And so I clock in and out of that, and I have special notations.
You put a box around it to indicate four hours, and I subtract 15 minutes at a time.
You've got to be consistent with it, too.
And the nice thing about paper is you can't screw up and delete it.
But there have been times, I'm sad to admit this,
and the weekly is, I agree, weekly is, it's a nice balance of,
well, it's kind of the minimum you can do really,
but you don't spend as much time, it doesn't feel like,
setting up your invoice.
If you're doing it monthly or every two weeks, that's a lot of stuff to...
You have to remember what you were doing two weeks ago which is kind of hard i mean if you've written
stuff down that's okay well yeah my chicken's got to say allegedly um but there have been a couple
of times where i either lost my log or been so busy and heads down that i forgot to keep track
of stuff because i just wanted to work and who cares about these hours I just got to get this done and then an invoicing time comes it's like oh I have no idea and you
piece it together and I have to go through your chats go through forensics and look through
instant messenger chats and emails and check-ins and when did I check logs don't don't don't be me
yeah write it down um even if it's post-it notes on your monitor,
just writing it down will be good.
I also give my notebooks to my clients at the end of the project,
although most clients don't really want them,
but that's too bad for them.
Okay.
Yeah.
Okay, let's see.
How frequently do you bill? How do bill how do you okay we did all that
what do you do for job agreement slash contracts we have them and we've never gotten to use our own
i've used our own really like once maybe twice so we have a boilerplate contract that we got
from legal zoom but almost every time the clients are going to come to you with theirs and
theirs may have things in it.
Oh my goodness.
There's one that's been,
that was added in the last two years that everybody seems to have that says
you can't take any confidential property onto their site.
Off of their site or anybody else's confidential property.
And so I have a laptop that I use for multiple clients.
That means I can't take my laptop to their site.
And they're all like stunned by this.
I'm like, why didn't you read your own contract?
And so that's always been easy to strike.
The we will sign things for you was a lot harder to strike than it should have been.
And I should have fought more for that.
There's usually a bunch of intellectual property things you have to read pretty carefully on in terms of what they own because i've read some
that are vague enough that it could like taint other stuff you're working on yeah we own everything
that you work on for the duration of this contract for example and maybe you have other clients so
that can't work so you have to be careful to strike that. I had one that said it owned everything related to sensor networks.
And I'm like, no, no, I don't think so.
And they're like, well, why don't you write down all of your pre-existing information?
And I'm like, here's my book.
Well, I mean, yeah.
And you can't write some stuff down because it's confidential to somebody else and there's other stuff like that
where you know there's patent issues
who owns the patents
so you have to read through that stuff
pretty carefully
unfortunately because it's hard to read sometimes
and
it's one of those things where
a bowl of M&M's or peanuts will help you
you just get one for every paragraph. Keep going through it. Okay. One thing I've encountered is at least a couple
of times, and these little startups are often founded by somebody who's had a history, right?
They've had previous companies and used contractors before. And they'll often insert things to try to
fix a problem they had with a previous contractor.
That was one about licensing, yes.
The one I already mentioned was the one where it said you will maintain and fix this in perpetuity for free after the contract.
Because somebody had done a really bad job and they couldn't make them, you know, fix their problems. And there was some other clauses I found like that where it's like,
oh, well, I had a bad experience,
so let's just put a line item in here that's draconian,
and that'll fix it because nobody else will do it again.
Yeah.
So watch out.
If these aren't people that you would lend $100 to,
don't do business with them.
Because as you work for them, you're going to be lending them a lot more money in shorter periods of time.
Yeah, that's true.
And if they don't feel right to you, they aren't people you would like to have lunch with.
You're doing business with them.
And I want to say that makes you friends,
whether or not you like it.
And maybe not like friends, but...
Acquaintances.
I mean, the word is business associates.
People you hope not to sue.
Yes.
And I've mentioned that I've gotten stiff.
I've gotten stiff a couple of times.
And that is in large part because I am willing to work for very small companies,
and they sometimes go out of business
and sometimes don't have as much funding as they thought they did.
And it's a little heartbreaking for me
because it means that the next client I have to be a little more strict with.
And I think it's a little hard on them too because I make a point of the person that I have to be a little more strict with. And I think it's a little hard on them too, because
I make a point of the person that I have contact with is the person that I expect to see me paid.
So I don't want the contract to be with some muckety muck manager that I've never talked to
and don't have the email for. I want it to be with the person who is managing me and I want them to be at least partially on my side,
which is I want them to be able to walk over to accounting
and say, why isn't this check cut?
And yeah, so be careful with that.
I know that's kind of, it doesn't happen to everybody,
but it's happened to me.
Be nice to your clients too, on the flip side.
If they're having money issues,
get in front of that and say, do you want me to cut back my hours? Um, are you expecting to be
able to pay me? Uh, and don't just let it get to where there are three invoices out of date
and they're giving you excuses. And by then it's kind of sometimes too late to do anything.
And you're, you're continuing to work
that's the problem um at some point you need to yeah you need to say okay guys looks like you're
having problems or let me know if you're having problems and i'll scale back um especially if
you know you're toward the end of the project where you're just doing maintenance and things
and you'd be throwing an hour two hours three hours here or there sometimes that's not necessary
to do and it'll keep you out of trouble and maybe take some pressure off them.
Or put some pressure on them to pay you if they really need those things.
Yeah, because in the end, that's what it's about.
You provide a service for them, and they pay you.
And if they fail to pay you, you stop providing a service.
I remember I had this
client that I had for a while and then they ran out of money and they didn't tell me. Actually,
they told me they were getting more money. And every time I said, it looks like you're having
problems, they said, no, no, it's fine. And then it turned out they didn't pay me and they went
out of business and all of that. And the founder called me six months later and wanted me to work for his new company.
Yeah.
And could not understand my vehement, no the hell way.
Yeah.
He really just, it was like.
It's a different company.
It's business.
It's a different company.
We're funded this time.
And I'm like, no, I'm sorry.
This is a business association, and in the end, we are people, and I hold you responsible for failing to tell me that you were in deep trouble.
Yeah.
Yeah.
It's a transparency problem.
All right.
Well, that covers Andrew's questions.
Wow.
Anything that he didn't ask that we should cover?
We are not lawyers.
We do,
we're talking about this from our personal experience,
blah,
blah,
blah.
You know all that.
Last time,
because I don't want to make them go back and listen to episode four now.
Sure.
You had some good suggestions about backups.
Yes.
And about virtual machines.
Yeah.
So,
you're likely to be using your own computer.
So normally you're using their source control system.
So there's some backup there, right?
They should be backing up their source control system
when you check in.
But you don't want to depend on that,
especially if you've done a lot of work
and maybe you haven't checked it in laptops
and things die and you can lose a lot of things
so first order of business is to have backups
and have an on-site backup
and have an off-site backup
and a RAID array is not a backup
if you're using your primary RAID array
for your storage
just because you have a RAID array
doesn't mean that things are backed up
you need to back up to something else
and there's lots of services
that'll do offsite stuff
over the network just transparently.
It saved my butt a few times,
even when I made just stupid mistakes,
like deleted a file I hadn't checked in yet
and it happened to back it up
three hours before
and I could restore it.
So there's CrashPlan,
there's Backblaze,
there's rolling your own thing with AWS.
There's a whole bunch of ways to do that.
Beyond backups, kind of segmenting client data,
it's nice to use virtual machines.
So I've done that historically
where I'll have a VM for one client
that's Windows with all their tools
and then a different VM.
And that kind of keeps them separate for
the whole confidentiality thing. I mean, not, not really, it's not like anything comes out of that,
but, um, it, it's a good practice. It's a good practice, you know, and if you have like a VPN
for each client, then you're not tainting one computer with multiple VPN things where something
could possibly in the realm of grand imagination,
somebody could mix and match things or steal data. So I like the VMs. And the VMs, additionally to
keeping stuff compartmentalized, it's easy to back them up. So in the instance we talked about before
where your computer goes kablooey, if you're packing your VM up every night, you can grab
another machine, you copy it over, it takes half an hour to copy a big file over. If you're packing your VM up every night, you can grab another machine,
you copy it over, it takes half an hour to copy a big file over, and you're back in business instantly because you actually haven't lost anything. So that's another reason I really
like that. He does that, and he's very good about it, but I don't tend to get along well with VMs.
It's just one more thing that breaks for me.
My field of breaking things... So what would you do if your laptop was completely destroyed right now
for your client? I'm just going to hold it while you talk.
But how long would that take you to get back to where you were running with your client?
Probably only about four hours.
Really? I mean, I try to commit everything I need for them,
and the long part would be setting up some of the drivers and tools.
But...
What if your IAR license, you weren't able to transfer it
because your computer was dead?
Oh, that would be really sad.
But if you cry to the IAR person, usually they'll give you a pass.
Between nine to five on Swedish time.
No, you're right.
I mean, that would be bad.
I don't currently have an IAR license.
I don't have a license for anything good other than Beyond Compare,
and they would let you install it to multiple computers.
I mean, like anything else, you should game out what it would what it would take and
if it's acceptable to lose a day getting back up and running then that's fine but you're not you
shouldn't be billing your client for that no so keep in mind that that's that's a day lost a day
lost that's a day your free time um but go ahead don't use vms that's fine i i will admit the vm
i'm using for my employers that that they rolled is not the best for some reason. I don't know whether it's the host or it's the fact that I've moved to Windows 10, which I don't want to blame it. I'm not sure.
Oh, blame it. Please blame it.
But so I have not been having as good a experience with the VMs I'm using now than the ones I set up for myself.
All right.
Well, I think that covers everything.
Anything else you'd add for consulting wisdom?
Don't get screwed.
I wouldn't go that far.
Because you do learn a lot, and you get a lot of freedom and sometimes no it's great it's great but sometimes things do go badly and you accept it
that it is a a price you pay yeah and so don't let them pay you in stock yeah yeah i mean i'll
sometimes play for a little bit of stock but i I admit it's worth nothing. And their whole, oh, our stock is worth $100,000 per share. If you just look at our valuation this way, assuming that our capitalization is a billion dollars, which it should be next year once we finish designing the product.
But you're two people with a 3D printer in a garage bed.
Yeah, but I mean, sometimes it's fun.
No, it is fun.
It is fun.
It is great to, you learn a lot, you learn fast.
You get to do the fun parts a bit more often,
but also the boring parts a little bit more often.
Well, you get to do the fun parts a bit more often
because you're more focused on development.
And if you're, you know And if you have a good reputation,
you get to work on things that you're kind of an expert in
and that your contracts will be steered that way.
On the other hand, things do get monotonous where...
Oh my God, not another BLE sensor, please.
No more BLE sensors.
They're horrible and not wearable either.
Okay. Okay.
Yeah.
On that note.
On that note, let us be done.
This was not really an advertisement for Logical Elegance.
It's just me and I'm busy.
Unless you have something really, really cool,
and then we can talk about it at the end of the summer.
And not a BLE sensor. Please, no.
Let's see. Oh, look.
So at the end of these shows, I usually have four
or five quotes that I choose from while the
guest is doing their thought. I go and try to find the one that
matches the conversation best.
And when it's just us, usually I read Winnie the Pooh.
But this time I really, really liked the quote I had for this guest who is invisible.
And I'm going to read it anyway.
So let's go with the thank yous.
Thank you to Christopher for producing and co-hosting.
Thank you for listening.
Don't forget about all of the contests and everything that end on May 18th. And have a really wonderful week. So this quote is something I heard recently on
Dr. Who on the Thin Ice episode. Human progress isn't measured by industry. It's measured by the
value you place on a life. An unimportant life.
A life without privilege.
The boy who died on the river, that boy's value is your value.
That's what defines an age.
That's what defines a species.
Embedded is an independently produced radio show that focuses on the many aspects of engineering.
It is a production of Logical Elegance, an embedded software consulting company in California.
If there are advertisements in the show, we did not put them there and do not receive money from them.
At this time, our sponsors are Logical Elegance and listeners like you.