Lessons Learned: The First Two Years of Running a Software Consultancy

business
Brian Cardarella

CEO & Founder

Brian Cardarella

This is an update of the previous post that reflected on the first six months of DockYard. A lot has changed over the past year and a half, and a lot has not. I won’t do a point-by-point comparison to the previous post but I will address some as well as some of the feedback I got at the time. But first, let’s talk about revenue.

Revenue

After our first year we took in about $750,000 in revenue. DockYard officially began in January of 2012 so we had a full calendar year to earn. From what I’ve been told this is pretty good for the first year as a consultancy. In our second year we broke $1,500,000 at the beginning of December. I’m happy with that, we doubled revenue. I have set a revenue goal of $2,500,000 for 2014. Assuming there are no major screw ups next year we should exceed that goal.

Revenue is great and all but kind of useless information without our profit margin. We have averaged around 20% profit margin over the past two years. This year we were averaging in the mid to high 20s before we hit a lull at the end of November.

The Negative Stuff

Let’s get the negative stuff out of the way first so we can focus on positives for the remainder of the post. We could have done better the previous year, we could have done better this year. We lost money due to decisions that I made throughout the past two years. Those choices include two bad clients, a mistake in the direction of our growth, and a lack of experience of running a conference.

Bad Clients

In the previous post I mentioned how DockYard nearly folded from the start due to a bad client. That nightmare lasted for a year and half and was finally settled in June of this year. It ended up being nearly a $50,000 loss for us. I am convinced this is due entirely to poor legal counsel; I cannot stress enough how important it is to have a competent lawyer on your side. We didn’t have someone that was willing to fight for us, it cost us big time. We have since retained the law firm of Gesmer Updegrove. They’re pricey, but it’s worth it.

However, before we ever engaged with our current lawyer we unfortunately had another run with a bad client. This time to the tune of $20,000. That hit came this year. What is really strange is that I knew walking into this deal it was going to end badly, and I voiced my concerns internally to my people at the time but I still OK’d the deal and it unfolded just as I thought it would. It was a dumb move and we paid the price of it.

One of the plans for DockYard was to quickly grow into the political tech space in Washington, DC. I have experience working in political tech, I brought on a guy who I worked with at the DNC, and we hired another guy I worked with on a political campaign. We started making connections. It didn’t work out. Three reasons:

Timing

Timing is everything I guess. Especially in political tech, we set out on this effort right when the 2012 cycle ended. It was a ghost town, and rightly so. There is no reason for campaigns or political groups to spend money on development efforts when the next election cycle is two years away. While we spoke with a lot of people that were interested in what we could do from a technical perspective there simply were very little groups without any budget at the time.

The People

During my time at the DNC I worked with some awesome people. Nathan Woodhull, Chris Gill, Brent Kimmel, Leo Zhadanovsky, and Nicole Aro to name a few. I’ve been lucky enough to work with a few of them since. Unfortunately I also got to work with some really shitty people too. I don’t think its their fault, the political tech space is a real drag. It doesn’t attract a lot of talented people because the money to work on the inside is very bad compared with any other job out there. The tone you get is that it is a privilege that you should be thankful for, and perhaps that is the case. But that leaves a vacuum that gets filled with people that frankly don’t know their ass from a hole in the ground. Many of these people are now in charge of making technology decisions in many organizations. I have no interest in working with those types of people again, nor do I want to subject my employees to work with them.

Politics

I’ve always considered myself “on the Blue team” but the past year has really pissed me off. NSA, Healthcare.gov, drone strikes, and the President trying everything he can muster to go to war with Syria. I walked into our Business Developer’s office one day and I said enough was enough. I could not in good conscience do work for the Democratic Party because of these issues.

Just Dumb Wasted Money

We ran a conference this year and due to my lack of experience running an event like this (and to be honest, being taken advantage of by the venue we held the conference at) we lost $15,000.

There were also downtimes when we didn’t have enough money coming in, but I will get into detail about this later in this post. (and the changes we’ve made to hopefully avoid this in the future)

Overall I am pretty proud with our revenue over the past two years. We didn’t start with an “industry superstar” on our team or with a significant open source project in our pocket, nor were we on the “inside” of the Boston tech scene. We’ve built a very strong brand for ourselves very quickly.

Open Source

This is still a financial loser for us. I don’t care what people say, that’s a fact. However, Pete Forde commented on my last post and what he said was absolutely true: it will help you hire good people. DockYard has been making a name for itself in the Ruby and Ember open source world. We have a good number of projects that people are actively using. I encourage all of our developers to contribute back to not just our projects but projects we use on a regular basis.

Personnel

I’ve made missteps on hirings, that is also costly. I’ll get into this later in the article.

OK, enough with the negative stuff. Let’s get into what we did right.

Great Clients

We have had some awesome clients over the past year and a half. I am pretty much happy with everyone we’ve had with the exception of the two clients I mentioned above. We have kept a balance of Startups and Enterprise, but we have been very careful about the people we work with. This is how I have boiled it down to the clients we want to work with:

  1. Can they afford us? If you think it is callous to put this as the first thing we look for, then you are probably not someone we want to work with. We are running a business and there are plenty of great ideas out there and plenty of great people. But the sad fact is many of them cannot afford to build the applications they dream of, at least not through us. Financially vetting clients is very important. It makes no sense to waste our time in contract negotiations with someone that cannot afford our services. We try to discover this as soon as possible so we don’t waste any of the client’s time either. We try to make the best recommendation on the next steps they can take. We never take equity.

  2. Is this an application we want to work on? I would make this the 2nd No. 1 if I could. While it is very important to make sure we have clients that can pay us so we can pay our employees it is equally important to make sure we have projects that our employees actually want to work on. This is something that I butted heads over with our Business Developer early on. He was not coming from a developer background and at the start did not know what projects were good and which were shit, from an engineering perspective. Consultancies are a feeding ground for other companies to poach from. We try to retain our employees by paying well and by keeping them on interesting and challenging projects.

  3. Is this a project that helps us grow? This is something we have, over the past six months, started to think about when speaking with clients. Is this a project we would be proud to put in our portfolio? Is this a project we can write a case-study on? Is this a project that helps us make a sales pitch to an even larger client?

If we can stick to these three items when choosing clients I think we’ll be fine. That is not always the case and from time to time we have had to sacrifice up the chain. So the first to go is #3, then #2, and finally #1 if we are desperate.

Our Tech Stack

While we started out as a Rails shop we have moved very quickly over the past year to brand ourselves also as an Ember shop.

I believe in Ember as a technology, it is superior to any other JavaScript framework out there in every way except for the learning curve. I see many developers that I have known in the Boston area hate on Ember. Good, let them. More for us. We also chose Ember for business reasons.

Competing with all of the other Rails shops in Boston is just stupid. Down the street we have one of the most well know Rails consultancies in the world (thoughtbot) and within a half a mile we have about 6 others lesser-known ones. From an ability perspective we are just as good as any of them, but then again that’s the point of Rails. There is no technological advantage that any one shop has over another nowadays. We all pretty much do the same “best practices” and use nearly the same tech stack. There is nothing that distinguishes one shop from another. So we have diversified our offerings.

I chose Ember as a technology direction because it was, and still is, incredibly undervalued in the market. If I was playing a short game in our business I would invest in Angular, it is the tech-du-jour but a year from now I seriously doubt that will be the case. While everyone else is wasting their time specializing in Angular we’re building an incredibly strong presence in the Ember world. When the scale tips we’re going to be in a great position. At least that’s the theory. Time will tell, maybe the next time I write on of these I’ll be bitching about how wrong I was. We’ll see.

Hiring

For the most part I’ve been very lucky with the team I’ve hired. Recently we just had our holiday party and I thought on my way to the dinner that this is the team I’ve always wanted. I can’t imagine that is a very common thing for people to think. And that’s not to say we haven’t had missteps.

Finding The Right People

For us I hire for cultural fit. We have a good mix of senior and junior talent. If we hire a junior developer I only hire people that show an ability to learn fast. I really dislike white-board interviews so the face-to-face interview is for me to get a sense of their personality. Then I will ask some general knowledge questions to get a sense of where they are at skill-wise. I will then send the candidate away for a week and give them a project to create. I try to pick criteria that puts them outside of their comfort zone. Have they done TDD before, have they done Ember? I will ask them to challenge themselves and I will ask for access to the GitHub repository. One indicator I use is how soon did the candidate start this project? If it was started right away that shows an eagerness to complete the work. Was is started and finished the night before? This might show a tendency to procrastinate and get things in at the last minute. While these may be outside factors I do ask about them if they are extreme during the follow-up interview.

Recently we have been able to build enough of a name for ourselves in the development community where we have started to attract some good senior development talent. We are putting a pause on hiring junior developers and will likely focus on more senior developers for the next year.

Firing People

I’ve gotten permission to talk about this from Russ. Russ was a co-founder of DockYard and I fired him. It was around the time of the first post but I didn’t want to reflect on it yet. In retrospect it was a long-term mistake but perhaps the correct short-term decision. We were not at the size when I was really thinking too long-term. I was not getting from him what I needed and it was weighing me down mentally, but this was my fault. I was not communicating to Russ properly what my expectations were. Thankfully we’re still friends and grab drinks every now and then. If the roles were reversed I don’t think I would be as magnanimous.

I’ve since fired two others. One was my fault, the other was not. It is a strange thing to fire someone. People try to make it nice by saying “let them go”, but in reality you’ve shit-canned them. When you are employing someone, especially at a small company, you feel a sense of responsibility for them. You are paying them money and provide them with health care they use to take care of their family. I wish we could magically double the salaries of all of our employees but of course we cannot afford that. When it came time to firing someone it weighed on me and I considered the implications. I never did it lightly, but considering the alternative, each firing has turned out to be the correct move. Even with Russ, he’s done much better without DockYard than he was doing with DockYard. Sometimes its not a good fit, I am guilty of letting things sit too long. I have learned to be quicker about acting upon this.

Losing People

We have so far lost just one employee, one of our DC partners Chris Gill. He got a job with the Department of Revenue that paid well beyond what we could afford. I was actually pretty proud of him that he landed it. I have left enough jobs in my career to know that I never want to be angry at someone that has decided to leave DockYard. If it is time to go, it is time to go. Considering the number of junior developers we have been training up I would like to think of it as an accomplishment of ours to see people “graduate” from DockYard and go on to do great things in the industry. (but don’t leave us too quick!)

Business Development

In the summer of 2012 I was overwhelmed. I was Lead Developer, Business Developer, Office Manager, and Everything Else* at DockYard. The most important job I had was making sure new business was coming in. But focusing on that was having a negative impact on the client projects I was on as well as training any developers we had that required it. I started a search for a Business Developer. At first I hatched a plan to leverage the recruiters of Boston. It made sense: they already were talking to companies but it was difficult for those companies to hire. Why not just partner with DockYard and rent our services to those companies? At 8% the math actually worked out in their favor, however none of them bit. I’m still struggling with this one and I think it speaks to the state of recruitment. It was a good business opportunity but they could not think outside the box.

So it was time to find someone for that position. I had never made a non-technical hire before. I had no idea how to do that. I looked specifically for “Business Developers” but that was a bust. I gave up for a month or two then I realized that it was essentially a Sales position. So I put an ad out for a someone in sales looking to take on a larger role, a key role for the growth of a young company. I got about 50 resumes and brought in two people for interview. I liked them both and settled on the one with the better references. It was a great decision. Our Business Developer Dan Crowther has been huge for us. We butt heads on a few things; he’s right sometimes and I’m right sometimes. But the fact is we would not be where we are today without him.

It took him about six months to really get comfortable with the position, this is very common from what I’ve been told of those transitioning into this position. He’s helped us open up business we wouldn’t have known about otherwise. And most important I can focus on other things.

We sell DockYard on the quality of our work. While we started as a technology company, design has become a large part of who DockYard is and has gone a long way to help sell our brand.

Design

Since our first “real” contract with Openbay we worked with an outside designer, Steven Trevathan. He was recommended to me by two separate people. Steve along with his partner Logan Faerber were starting their own consultancy Dobot. Steve and I got along well and I brought them back for a few more contracts. We bonded over our mutual disdain for many of the people in the C3 space at CIC and so when we finally got our own office last year I invited Steven and Logan to work from there. We even brought them along to check out the office spaces we were interested in. This past Spring it became obvious that we needed someone full-time at DockYard to take ownership of our design. Likewise Dobot was also looking for a lead engineer. It would be funny if it wasn’t so stupid that we were literally sharing the same office, worked together on several projects, and were still looking for one another. Steve and I grabbed drinks and I laid it out: let’s do this. He agreed and we brought Steve on as our Creative Director and a partner. Logan came on as a lead illustrator. It is the best move we’ve made to date. Steve and Logan quickly took ownership of the design direction of DockYard and have along with Amanda and Angelo put out a website that really represents who we are and have also put together some amazing designs for our clients.

While earlier I mentioned how it was very difficult to differentiate ourselves from other Rails shops, the one place we can totally do that is with design. Ultimately design sells much better than engineering. The engineering part of our contracts bring in more money, so we have to make certain that the design contracts we pick up will convert to engineering contracts. We look at design as the best Lead Generator we could get. It has worked, very well.

Office Manager

This is one that I was told multiple times that I should do sooner than later. I am very bad with context switching, I have to either do all business stuff one day or all of the engineering. I cannot do both effectively. After hiring Crowther I knew the next non-technical hire I wanted was an office manager. What I did might be considered overboard.

I put an ad on Craigslist. We got over 200 responses. I brought the list down to around 100 and sent out invites and asked people to schedule themselves for an interview through YouCanBook.me I blocked out over two weeks of time, and broke the interviews into 20 minute blocks. Over 60 interviews were scheduled. I ended up meeting with about 40 of people. It was one of the crazier things I’ve done but this was a position I had no idea how to hire and the only way I could figure to find the right person was to see a ton of candidates and waited to see what stuck. The person we hired was the 2nd person to walk through the door, Mariel Ebrahimi. We got real lucky, and I think I even came out of that interview and told everyone that we were probably going to hire her. However, considering she was only the 2nd candidate I still went through the next two weeks of interviews. It became obvious that she was well beyond anybody else coming in and over the past few months she has kept DockYard running smoothly. Being able to let go of these small things in the office is incredibly freeing and has allowed me to focus on the bigger picture.

I have been toying with the idea of hiring a Project Manager in Boston. We did that before in Washington, DC but we were in a very different position that we are now and I think the position only works for us, at our size, in Boston. I am currently running PM on most projects, at least to a certain degree. I allocate resources, and assign roles. Developers at DockYard look to me for what they should be doing next. It’s time consuming and only gets worse as we grow. We’ll see what happens in the next few months.

Building Our Own Products

We’ve tried it once and we failed. That simple. We failed for several reasons:

  1. We could not work on the product consistently. This killed us. We were putting in days here and there in between client work. I was putting in hours on the weekend and this was burning me out for the rest of the week.

  2. It was not an idea that was very good beyond concept. We built out a marketplace for Heroku called Igata It would allow developers to sell pre-baked applications for deployment on Heroku. I liked the challenge of building the initial technology. But when I began to think about the long term implications of maintaining a marketplace application I lost all interest.

  3. Heroku was too much of an obstacle. I actually went out to Heroku and met with some of their people to pitch them on the idea. They liked it but it became clear that if we really wanted to make money we should just make our own Heroku and not lose the money on hosting. Then it was an easy mental jump to “let’s forget about this marketplace and just compete with Heroku” which of course is a dumb idea.

So we bailed on the application and open sourced it. We are going to attempt another product built, this time we are going to save up a financial war chest so we can dedicate the proper amount of time to the project. I don’t mind losing money on projects like this. They are fun to build and I think we come out the other end as a better shop once we dog food our own process.

Getting Our First Office

I was pretty annoyed with all of the entrepreneurial bullshit that was going on in the CIC in Cambridge. It is a terrible working environment, especially if you are a consultancy. You get bugged all the time by the worst people. The space is incredibly loud. If you go there to work on the weekends it’s fantastic. But it became obvious very quickly that we needed our own office. We worked with Jon Frisch at T3 Advisors. We were growing and we need space to grow into. We decided upon a 2,200 square foot 2nd floor space in Downtown Crossing. I always wanted an office there because of how centrally located it was. Thankfully, Downtown Crossing ends up being much cheaper real-estate than many of the other places around Boston (although this is already changing).

We had some difficulty moving in. We were supposed to start the build-out in July of 2012. I was getting married in late August. The owner kept deflecting us, and deflecting. I went on my honeymoon and when I got back I asked him what the deal was. He said, “OK, it’s no longer an active crime scene so I can tell you what happened.”

It turns out that our office is a floor above a jewelery store. The floor in our office is concrete. Two guys broke down a side door to the vacant space, brought some mini-jackhammers and drilled a man-size hole into the store below. They then repelled down with ropes and started to clean the place out. There were some silent alarms that were set off and they got busted. Exactly why it took them 2 months to clear the place to allow us to build I don’t know. But considering how crazy the story is I was OK with it.

Anyway, we finally got into the space in October of 2012. Thankfully no more jewelery heists have happened. We host a lot of community events at our office and I’m really happy with that. Currently we organize Boston Ember, Boston OpenHack, UX Boston, run classes for Girl Develop It Boston, and host Boston Postgres.

Starting Over

If I had to start DockYard from scratch today I would do it differently. The number one thing I would do different is not agree to a partnership until 6 months out. I would have awarded co-founder status to those that started, but I would have held off on awarding partnerships until everyone settled into their roles. I think when you first get going you don’t really understand what those roles are. Assigning roles on day zero and expecting everyone to just stick to these roles is not realistic if this is everyone’s first rodeo. Trial by fire is the best way to define the roles. Once that is done then the partnership can be established. Perhaps someone that previously thought being partner was a good idea was not actually interested in the added responsibility? Perhaps someone you didn’t think was “partner material” ends up being one of your key people and that should be rewarded.

I would also hire a little more slowly than we did at first. I have not yet been able to pay myself what I’ve set my salary to. The first year I paid myself 25% of that salary. This year I’ve hit my goal of paying myself 50%. Next year I hope to hit 100% of that goal. Thankfully I’ve got a wife that makes a good living and we’ve been able to lean on that when I’ve needed to take myself off of payroll. If our situation were different I am not confident that DockYard would be around today, at least not in its currently form. I’ve been able to take risks that others might not be able to.

Conclusion

Any success we have had is due in part to not just the great team we have but honestly sometimes just luck. There have been several times in the past two years where I have not been able to sleep due to the stress of thinking how we were going to make the next few payrolls. Every time we got lucky, someone came along at the right moment and bailed us out. I would like to think we are out of those woods, we’ll see.

One way I have changed how DockYard operates is moving away from always new clients to retaining clients. I had lunch with Andy Singleton and he stressed and convinced me that we were throwing away money by always looking for new clients. The really successful consultancies had several large contracts that would span multiple years. It was obvious but I had not seen it until it was spelled out for me. So we are going to look to retain and provide ongoing services for our existing clients. If someone is reading this and looking to get started that was probably one of our biggest mistakes over the past two years; find a client that you might even need to take a financial hit on but is always there to help you keep the lights on. Looking back it seem crazy that we were able to not just survive but thrive given out direction of always looking for greenfield projects.

In the next few years I don’t want to see the same rate of growth we’ve previously had. I’ve said several times to my team I don’t want to grow to more than 20. Any more than that and we’ll have to consider some serious restructuring of the company. I also feel at that number the small team we have starts to feel more like a “real company”. We just recently made an offer to a new member of our team that will be joining in January. I have not met her yet and that is strange to me, but is also an indicator that we have grown to that point that these things will happen.

I look forward to hearing the feedback from this article. I’m sure there will be people that disagree with some of the things I’ve said and the decisions we’ve made.

Newsletter

Stay in the Know

Get the latest news and insights on Elixir, Phoenix, machine learning, product strategy, and more—delivered straight to your inbox.

Narwin holding a press release sheet while opening the DockYard brand kit box