10 things I learned about running a dev shop in 2015
In 2013 we started our company Standard Code. In 2014 we started hiring people. in 2015, we grew to 10 people and learned a shitload of tough lessons on running a dev shop (our background is in running a startup — very, very different than running an agency). Since I know about a half dozen people contemplating their own dev shop or in the early stages of building one, I figured I’d itemize those 2015 learnings into this sweet ass Medium entry for the world to behold.
- Manage cash flow — In my experience with new agencies, cash flow is the #1 thing that will kill you. Get paid in advance, never trust that anyone will pay you, stop work when someone is more than 30 days late. As soon as you’re able, get a line of credit from your bank. Some months you’ll look at your account and say “damn you guys, we’re rich” and other months you’ll say “uh whoops, how are we going to make payroll”. Be prepared and PLAN.
- Only hire when your “oh shit” radar goes off — the “oh shit” radar is that feeling you get when you have projects to do and you have no one to do them. This is obviously a good problem to have (better than too many people and no work). Avoid the temptation to hire people in anticipation of work to come. Stretch yourselves and stretch your team. Reward the team when they kick ass and take names.
- Startups as your primary client base is the path to pain and failure — if you come from the Startup world (which we did), and you tell people you’re now taking dev work (which we did), everyone will call you with work (which they did). When you’re starting out, take the work! But don’t bank on it as a long term means for growing your company. Startups are cheap with limited vision and runway. Figure out very small engagements you can work on with them. Finish them. Move on to the next project. If you’re going to build someone’s MVP, make it a REALLY small scope.
- Take any project that comes your way — the day will come when you can say “oh, this is wordpress? no thanks”. Til then, take the job. One of our first projects was python. Did we know python? Shit no (we’re a rails shop). Our second project? PHP. Do we like PHP? Uh no, I’d rather swim w/ piranhas with a bag of fish guts tied around my neck. But that PHP project grew into a larger project and eventually turned into a rails project which ultimately opened the doors to all of our biggest best paying coolest clients. TAKE THE WORK.
- Track your hours like it’s your job — Actually, it IS your job but you know what I mean. Everyone on your team needs to track the shit out of hours. We did this from day one and it has saved our ass more times than I can count. We prefer Harvest for hour tracking and invoice management and being diligent about tracking hours not only helps us keep an eye on our margins and profitability on a project but also let’s us go back to clients with really detailed reports on what we did.
- Fixed bid projects will kill you — Make people pay you by the hour. Fixed bid is the enemy of profitability. Out of the 70+ projects we did last year, I think only 1 was fixed bid (and we corralled the hell out of the scope on that project).
- Get an accountant (and skimp on the lawyers) — We screwed this up. We didn’t pay much attention to our books starting out. Damnit I wish we would have. There’s a lot about owning a small business we knew nothing about and we’re still cleaning up.
- Big companies will take for fucking ever to pay you…but they will pay you (usually) — we have a couple of really large clients who take their sweet ass time to pay. we’ve never once had an issue getting them to actually pay. Budget for this though — don’t go off and buy that $500 herman miller chair when you land a big enterprise client. Wait til they pay you. Because it could take up to 6 months.
- Careful with offshoring — our team here in ATL does 98% of our work but the allure of paying some dude in Lithuania $15 / hour to do what would cost you $50, $60, $70 / hour here in the states is great. But be careful. Offshoring is really, really hard to pull off.
- Build a great team instead of hiring a great team — ok this really should be another blog entry but instead of being hell bent on hiring “rockstars” why not focus on taking someone raw but talented and making them into something great? My point is one our jobs as leaders in the community is to make it what we want it to be. Hire young unexperienced people and train them.