Lessons Learned - Three years of running a software consultancy
This year's story is one of how we nearly went out of business twice yet still managed to pull off our most successful year yet.
In 2013, we ended the year with 11 employees. We made a key hire at the start of the year with Robert Jackson joining us. I had met Robert a few months prior at Burlington Ruby Conf. Robert had been contributing to a few of our Ember libraries, as well as making a name for himself by quickly moving up the contributors list in Ember.js itself. Less than four months after we hired Robert he was welcomed onto the Ember.js Core Team. I'm extremely proud of him accomplishing that.
We added depth to our design team in Q1 2014 with Maria Matveeva and Tim Walsh. Tim and Maria have been invaluable for us, their dedication and ability allows you to easily forget how young they are. I'm looking forward to seeing how they continue to grow in 2015.
Early in 2014, we hired our first Project Manager, Jon Lacks. Jon and I went to college together, and historically I have not had a good run of working with friends. That has been my fault, I think I was more interested in working with people I was friends with than establishing what their responsibilities would be. Jon and I agreed that any and all potential issues that may arise that could conflict with our prior relationship should be aired out immediately. Jon joined DockYard in February and spent the first month or so observing our team more than taking complete ownership of our process. I gradually handed off some of what I was managing to Jon (running standups, getting involved with some client meetings, helping with estimations). All this to say that adding a dedicated PM was one of the highest impact decisions I made in 2014. I suspect that many companies don't need one until they're around 10 people in size but once you do hire one you'll be thankful.
Romina Vargas and Lin Reid were two engineers that went through our intern program and we upgraded them to full-time as soon as we could. Both Lin & Romina have been important members of some of our larger clients projects in 2014.
Marin Abernethy, a former engineering intern, came back for her third (and final) internship with us after her graduation from college. In the Fall we hired her as a full-time engineer.
Paul Webb interviewed with us in early 2014 but we had some projects fall through and things got very tight for us (more on this later) so we had to pass. But as soon as we had the bandwidth we brought Paul onboard to our UX Development team.
Heading into the Summer, we started to get spread a little thin on the engineering team. I had come off of client work completely to focus on the business so we needed another Senior level engineer. I reached out to Estelle DeBlois, who had come to our Wicked Good Ember conference in June. She's been lead developer for one of our larger clients over the past few months.
Our final hire starts full-time with us in January. Ashley Treni was actually tending bar at Highball Lounge right next door to our office (they can see us, we can see them). She asked what we did and it turns out that she is an amazing designer who was completing her Masters in Information Design and Visualization at Northeastern. She did a summer internship with us and accepted our offer for full-time employment just recently.
Hiring is hard
Hiring continues to be hard. We have had success by focusing on technology niches, but we may have tapped that out. Going into 2015, we will have to consider how do we reach out and attract top talent, and how do we improve the existing talent we have. Promoting from within is something I've talked a big game about but have done little with. This will change in 2015.
I began 2014 with the same trend I had in the previous two years: I would hire good people even if we didn't have projects to put them on. Coming out of Q1 2014, I had to stop this immediately. While we had built up a great team, the weight of that payroll and our lack of cashflow at the time was at a breaking point where I could no longer cover the difference by taking myself off salary. Since then I have been very conservative with hiring. Unfortunately we actually missed out on some great people because of this, and I regret that as I was perhaps too conservative in our hiring at the time. Heading into 2015, this will probably continue to be an aspect of the company I will continue to improve.
Firing still sucks
I had to fire two employees in 2014. Firing always sucks and I don't think I'll ever get used to it. There is a guilt that is attached that at some point is out-weighed by whatever you're not getting from said employee. So how does one mitigate the guilt? Netflix has a great policy when it comes to firing employees. The document outlines their full cultural philosophy but the gist of how they fire is that they give a very generous severance package. So managers don't concern themselves with the guilt what will happen to this employee without their job. I think this is a great idea, but not always practical for all companies. If we had Netflix money then I would definitely align our severance package with theirs.
We've done a lot of work to define what the culture of DockYard actually is. Until Q4 2014 our culture was never written in stone. So we took some time to put it into words:
- strong problem solvers, with attention to detail
- coachable learners and willing mentors
- professional, kind and respectful
- collaborative team players
I'm sure you're looking at this list and thinking "yeah this is pretty much what every company will say". That could be true, but these are going to be our hiring and retention criteria. We will be building a team around these principles and expect everyone at DockYard to live up to them.
Heading into next year
We have a goal of expanding our team to over 25 by the end of 2015. I would actually prefer to be closer to 30. Our hiring will be focused on Senior Level talent for engineering, design, and UX. We're always interested in hearing from great people, get in touch if you're interested.
Our problems with maintaining our estimations were not significantly improving in early 2014. We had to eat a lot of money on contracts that was due either to bad estimations or our inability to properly manage our clients. If we ever expected to build a real company, this had to be fixed. This is where Jon came in as our first Project Managing hire. It took a few months but we've gone from being consistently late to being consistently early. Our estimations are currently one of the more reliable aspects of our business. This has not just helped relationships with existing clients but being able to reliably sell our services to new clients is incredibly powerful.
Heading into the next year
I suspect we will continue to hone our ability to estimate. We will also be looking to hire an additional Project Manager as we decided we don't ever want to spread a PM over more than three projects.
In 2013 we ended the year with $1.7m in revenue with about 20% profit margin. This year we improved that to $3.1 in revenue with 33% profit margin. This is a significant jump, in many ways I'm incredibly proud of what we were able to accomplish this year. However, I also know that we (as a company) underperformed. If we had been as productive in the first half of the year as we were in the second half we should have been closer to a $4m+ company with >50% profit margin.
What went wrong
We were getting contracts coming in through the year, but nothing with the challenge or scope that I was hoping for. Small $50k contracts here and there. I like working on small projects but from a business perspective we were burning too much time negotiating contracts, balancing people on and off between contracts. I was butting heads with our business developer. He and I had different ideas on how to run the company. The funny thing is that neither of us were wrong. He wanted to reduce price due to lack of the demand we had at the time. I didn't want to do that. I was willing to pass on contracts that we could have gotten if we cut our rate 25%. This eventually put us in a position of bringing in 0% of billings for more than 50% of the company rather than 75% of billings. Which would you rather have?
I'm sure there are people reading this was a deeper background in running a business than saying it was stupid not to take the 75%. Here is my problem: at that amount we weren't making any profit and our people were tied up on projects. I was tired of living hand to mouth, I had taken myself off of payroll consistently for the past few years. I was living off my wife's salary.
At the end of Q1 I was looking down the barrel of DockYard and not liking what I was seeing. Then we got a whale of a contract come our way. This was a contract that could right the ship. Or so I thought.
I was not heading up the contract negotiations. The only criteria I gave was what I thought our rate should be for this contract. When it came to it our business developer was not confident that we could get that rate. I was distraught. I was not willing to lock DockYard into a long-term contract at cost. I told my wife at dinner I was going to start looking for a "real job" and that DockYard was finished.
I didn't sleep. I stayed up and kept mulling over the contract, was this it? I came to several conclusions:
- The client could afford our rate.
- We were worth the rate.
- Our business developer did not believe in #2
- I should be handling contract negotiations for DockYard
I came into work that morning. Within a span of 15 minutes I fired our business developer and landed the client at the rate we felt we deserved.
I realize the above might seem indifferent to letting someone go. He and I actually got along very well on a personal level. But as I mentioned previously when it came to how to run DockYard we didn't see eye to eye. I was stressing out over this constantly and in the event I was not able to land this client on my own at the very least I could say that I went out my way. Egotistical? Yes, of course. But it is something I needed to do. If we had slowly died over the rest of 2014 due to no real profit margin I would have quit.
This was the first of two near-deaths for DockYard this year. The second would come just two months later.
The large client came with a large legal team, one that I was unprepared for handling properly. We have an excellent lawyer we're working with but I am accustomed to contract negotiation taking maybe a week. This took months to complete.
The problem with dealing with Enterprise companies is that they can outlast you. It isn't their intent to do so, it is in their best interest that their vendors are able to work on what they need to the best of the vendor's ability. It doesn't help either party if the vendor can't make payroll. However, because of how many Enterprise companies are structured, and who has to sign off on what, an unprepared small vendor can be put into a position of agreeing to some things that are not in its best interest so it can start getting paid ASAP.
I was perhaps too risky in this regard. I held out on the contract, I put it through multiple rounds of negotionation. There was some legit scary stuff in it that I was not willing to agree to. We had started work with the client before the contract was completed. At the time I didn't consider this to be a big risk.
What happened was that there was little to no incentive to speed up the contract signing for our client. We were working, doing what they wanted, and they had no obligation to pay us. I realize some of you are reading this and thinking "Rookie Move!" but consider the context. Starting work with large clients prior to contracts being completed is actually a common practice in the Enterprise. I hear some of you screaming "no it isn't!". Yes, it is.
We ran out of money. We had a payroll that we were $25k short for. I had a very difficult conversation with the client and made the tough decision to stop work until the contract was signed and our existing invoices were immediately covered. I made a personal loan to DockYard to cover payroll. (as a side-note, banks never loan you money when you need it) Thankfully the client saw the situation for what it was and we were able to move forward. This was in June.
Putting the brakes on the project and getting the contract done and getting paid was the turning point for DockYard. We went from invoicing on average $30k/week to over $100k/week. With no contract longer than Net-30 by August we had all of our debts paid off and were in a position to hire again. By November we had gone from a 1% profit margin for the year in June to over 25%.
It is actually strange writing about this now, and I'm not entirely certain I should have written all of this. In some ways it was one of the most stressful times in my life, and looking back it feels surreal.
I hope there are some nuggets of knowledge in here to help others avoid a similar situation.
Heading into next year
We have ambitious financial goals. We aim for a $5m+ business in 2015. A $10m+ business in 2016, each year with >25% margin. If we can maintain our current momentum we should easily meet 2015's goal.
We bet very heavily on Ember.js in 2013. That bet has paid off very well for us in 2014. The client mentioned above hired us for our expertise in Ember.js. We landed another great client in the Summer because of Ember.js. We are seeing a steady flow of work come in because of Ember.js but I don't think we can meet our $5m goal by relying on inbound leads from Ember.js.
One thing we've never dealt with is selling our services into another company. We've got most work by companies making a technology decision then finding who is good at working with said technology. How do you convince a company unfamiliar with Ember.js that it is what they should use to build their product with? What if this person is not technology savvy?
I came to the conclusion that you cannot sell Ember.js directly. I needed help with building a sales pipeline and sales pitch. A friend put me in touch with Lorne Cooper who I have been working with over the past two months. Lorne convinced me that I had sales backwards. We need to start with Marketing. (he also convinced me that I couldn't sell Ember.js)
So what we built was the DockYard marketing funnel. Working backwards from Ember.js, we broadened the funnel. If the answer is: Ember.js then the question should be What is the best Single Page App framework? (let's save tech debates for another time). I didn't feel that selling SPAs was any better than selling Ember.js. Again, the answer is Single Page Apps so the question should be How do you provide a modern user experience on the web?. Now were had something. Selling UX as a solution to companies was tangible. If we could market that UX improvements was the way to solve common problems in modern web apps then we could hook companies on the idea that Single Page Apps was the best way to deliver modern UX. If we could convince companies on SPAs then we have the chance to convince them that Ember.js is the best framework for building out SPAs. At this point we have to make a case that DockYard is the best company as building Ember.js applications. We now had our marketing funnel. We plan on putting this funnel to the test in early 2015, but don't expect any significant number of qualified leads to be produced until late 2015, more likely early 2016.
While we are not currently writing any Elixir apps I think it will be part of our offerings around Q3 2015. Specifically because of the Phoenix Framework being very similar to Ruby on Rails I think we should be able to ramp upon it quickly.
The other choices I considered looking into were Go and Rust. Elixir feels like the best of the three to me. It is far less popular than the other two but considering it is backed by Erlang and boasts the most approachable syntax, has meta-programming, concurrency, and is built for fault tolerance I feel of those three language Elixir is the best suited for the future. Of course, this is a gamble and time will tell.
Ruby on Rails
Our involvement with Ruby on Rails will never go away completely but I don't see Ruby or Rails being a serious part of our technology identity in the future. I would like to think that we were out with a bang though, in early 2014 we were selected to redesign RubyGems. We launched the redesign at RubyConf and it was a nice way to say "thank-you" to a community that we've benefited from for so long.
Heading into next year
I always want DockYard to be a company that does not stagnate on technology. I enjoy working with and exploring new technology and I always want to push our engineering team to do that same. In the near future I think Ember.js and Elixir will be important for us, of course we must be open-minded enough about new technology on the horizon.
Design has become so essential to our process I don't understand how we go by in the early years without a dedicated design team. We rely upon design to manage our Discovery Phase, build and inform our estimations. Design has more impact on us converting a client out of Discovery to a full client than engineering does.
This year we ran our first Design conference, UX East. It was structured as a design camp with two talks and one workshop. The conference was organized by our Creative Director Steven Trevathan and Maria Matveeva we believe we were hugely successful.
We're already beginning plans for next year's UX East (you can sign up for updates, including call for proposals, here).
Every project is now assigned at least two designers. This is partially because the projects are big enough to merit the team, but it's also a huge qualitative add to the final delivery. Pairing designers is really helpful for "leveling up" as well. Matching designers by their different strengths they'll help each other grow. The concept is very similar to pair programming, however the designers go through many rounds of critiques instead of using the same computer for an extended period.
While we hadn't previously done this, and it looks like a fairly obvious improvement to make, the result has been surprisingly positive and our most recent projects are seeing a huge benefit from it.
Setting Goals & Sticking To Them
One thing we're very good at is coming up with ideas. Lot's of them. There is no shortage there, however there is a real challenge in effectively using down time and DockYard Fridays to commit to delivering on those ideas. I believe this is due to not having specific departmental goals that directly fit into company annual or quarterly objectives.
An example of this challenge is Tools of the Trade. In the beginning of 2014 we put effort into creating small and novel icon packs and distrubuting them as free to use. It generated some interest, and we had fun with our icons, but we dropped the ball and lost momentum on it. Not because we didn't enjoy making them or that it didn't benefit our designers by the challenge, but because it didn't fit cleanly into any company objective.
We've set a Q1 2015 goal to create a program and agenda for design experimentation with a focus on single page web applications. By that objective we'll be aiming to provide more practical design tools, design and interaction patterns, and free assets for other designers in creating single page web applications. By commiting to this goal and using Tools of the Trade as vehicle, we should be able to promote ourselves, "level up" our designers, and effectively utilizing downtime.
On the business side of things we've begun to add more structure to DockYard. We hired a CEO coach to take us through an OGSM (Objectives, Goals, Strategies and Measures) planning session for 2015. It was a tiring two days of time that helped us discover what type of company we want to be. The management team has all decided that DockYard should aim big and that is what we're going to do.
In Q2 2015 we'll be moving into a new office space. Our current space has served us well but it has its problems. The new space will be modern and have plenty of space for us (we're upgrading from 2,800 sq/ft to 7,800 sq/ft). I'm excited to share those plans in the upcoming months.
I hope this year's reflection has been useful for you in some way. Each year's summary has felt different and I'm sure next year's will too. As a company DockYard has taken some knocks this year but we came out stronger for it with more focus and an actual gameplan. I'd love to hear other's experiences as well in the comments.