It's been about four years since we last took on a new project as a company. Work continued for existing clients for a long time after that, but the company itself was basically dead from that point. I was on vacation with my family last week and somewhat reflecting on exactly how I got there after ending up in a hospital bed in the middle of the night four years ago trying to keep it going. Here's how it happened.
NOTE: I still personally consult through Brightball.
// Share.on([hacker news,
linkedin,
twitter,
facebook,
reddit])
That was my view of the beach every evening on vacation. Actual. Real. Vacation. As in, I was away from work and not waiting for the phone to ring. Not getting server alerts on my phone. Clients did not call me wondering about deadlines or estimates. I was not following up with anybody about a bill. I didn't have to think about all of the things I would have to catch up on when I got back.
Because I was on vacation. This was the first time since probably about 2007 when I could really say that and mean it. You see, in 2007 I left my first job from college with NuVox Communications, a large business telecom company (acquired by Windstream a few years ago), to go and work for Mediasation, a local web development company in Greenville that is owned by some of my favorite people. Mediasation did a lot of contract web work for small businesses. They offered both smaller CMS projects and huge custom projects that involved bidding, presentations, and requests for proposal (RFPs). I was there to work on the larger projects and I did that for about 2 years.
That was my first exposure to the realities of contract work. At Nuvox, I'd been able to work on one project at a time, deliver it, hand it off to our production support group and then move on to the next project. We were always able to take every necessary step to make sure that the applications were virtually self supporting and the word "budget" was never involved with architecture decisions. In 2 years, my team at the company delivered about seven applications which remained in service for close to a decade (so far) in heavy usage with virtually no maintenance.
At Mediasation, we juggled multiple client projects simultaneously. Instead of thinking about one solution in my free time, I was thinking about several. If clients couldn't see features, no matter how important they were to it's long term stability, they often did not want to pay for the hours required to implement them. Multiple clients also meant multiple deadlines that could be at nearly the same times. Because there was no "production support team" it basically meant that if there was a problem, we were on call to resolve it.
At this same beach, many years ago, one of those sites went down while I was on vacation. I spent nearly 6 hours in a Krystal Burger getting it back up and running, because that was the closest place I could find with WiFi. A database table had been corrupted somehow, in case you were wondering (*shakes fist at MyISAM*). This isn't the sad part. The sad part was that this made me feel important instead of annoyed.
My wife and I found out we were going to have our first child and I'd always had the entrepreneurial "itch". Back in 2003-04 in grad school at Clemson I'd tried to start a company developing a comprehensive information system for public schools (more on that another time). It didn't work out after our investor fell through, so I took a job after graduation. She understood that it was sort of a "now or never" thing with the baby on the way so I talked to my boss and gave my notice. They understood. They knew me. As far as they were concerned it was more of a question of "when" than "if".
A friend of mine, Barrett, had contacted me with a backlog of contract work that he couldn't do on his own and this would provide income for close to the first year. We basically subcontracted each other on projects for a while until we decided to just make it official and become business partners under my company, Brightball. His company was called Craz-E-Bear and we thought Brightball had better branding. Brightball came from a story that a friend used to tell me about this one client he had who would get really excited about a business idea and then get distracted by the shiny bright ball of another within about a month. I used to be that way when learning about new technologies, so he started using it on me...hence the company name.
Now, this is critical. Contract development work was not the plan at Brightball. We had a much, much bigger project in mind and the goal was to work on it in our spare time between the contract work. We were winging it on the contract business plan. After my previous experience with hunting for capital, I just wanted to build something instead of spending all my time pitching investors. That sounds all fine and good when you can go a month or two without a paycheck. As soon as your buffer is gone, all of your downtime is spent chasing new project work and you never get to work on your actual goal.
When we didn't "need" the money urgently, the business operated completely differently than it did when we "needed" it. When we didn't need it, we stuck to our guns. We never compromised on critical items. We always did what was in the best interest of the projects and the clients long term. When we "needed" it, we started compromising. Before we started compromising, things were very promising and we were doing really well. Compromising reads something like this...
"Sure, we can toss that out." (most of the time we'd do it anyway and just not bill for it)
"You don't have to have unit tests I guess..."
It became more of a focus on whatever we could do to get the estimate lower. Clients would argue with us about $20 on a $5,000 bill. We'd spend more time discussing things like that than the time was worth in billable hours. Where we previously didn't have many issues with clients, we suddenly had a lot. In hindsight, it was because we were allowing clients to exhibit bad behavior. That was happening because we needed the money and we were letting things slide to be more agreeable. We were afraid of losing the business.
When I finally took a sales class and realized that I was the person who let this behavior happen, it was eye opening but far too late. The question "is that a lot or a little?" has some incredibly deep insight into how project estimates work depending on who they are for. For some companies, $1,000 is everything they have. For others, $50,000 will be considered not enough to be a real bid.
Barrett had to go get a full time job after a while and applied to be an entry level programmer at Clemson University. He was elevated to a Director within 2 years. Now he's over 5 departments. He is good.
Eventually we embraced our sort of "race to the bottom" and decided we would see if we could cut our prices to sustain work with volume. Since it was basically just me at that point, we needed to find contractors since we couldn't afford to hire people full time. Local contractors were too expensive to mark up. Our goal was to get other contractors and verify the quality of their work via our development process but it wasn't going to work without some type of profit margin on the time.
That meant...overseas contractors. I'm going to hopefully save a lot of people some time here. This is a bad idea. We tried 5 firms. They were all bad. Very, very bad. They get your money because it looks like SUCH a good deal. But all you end up doing is losing that money, some dignity, and time on your projects before you come back and pay for local people. The only people who I've spoken to that have managed to get overseas developers to work out ended up sending people overseas to manage the developers in person. We found one good programmer. He was excellent and I've continued to recommend him ever since.
But back to the story. We lowered our prices and committed to 5 projects over 3 months, all with November deadlines starting in September. Then we learned how bad two of the contractors were and had to fire one while the other took another job...leaving me full time, Barrett and Chris after hours part time, and our one contractor...to finish 5 projects in 3 months.
I was confident we could pull this off. For one thing, we had too. But I was also used to working insane ours. I managed our servers, handled client meetings, sales, billing, recruiting, interviewing and development. I was used to getting alerts in the middle of the night. Being on call 24/7 for client emergencies. Working late nights routinely to deal with simultaneous work influxes. For the next 3 months, I slept when my body left me no choice. Continuously. Some weeks I got a total of 8 hours over 5 days. I was drinking Diet Coke like it was water because of the need for constant caffeine.
Then one night in November, Barrett and Chris and I were working late at the office trying to get things finished off and my chest suddenly felt like it was being squeezed by a vice. I couldn't breath. I grabbed my chest. For a couple of seconds I couldn't feel my heartbeat. I thought I was having a heart attack. Then it stopped and I felt light headed. The guys walked me outside to get some fresh air and that helped get me back to normal. Even so, we decided to call it a night and Chris followed me as I drove to the ER as a precaution.
When I got there, they hooked me up to an EKG and ran a lot of tests. The doctor told me that what I'd experienced was a premature atrial fibrillation. She said that it wasn't serious as long as I stopped doing whatever I was doing to cause it. My daughter was due to be born in February. I was 30 years old. And I was hooked up to an EKG in a hospital with a doctor telling me I needed to change my life. At 30...years...old. To say I was shocked would be understating things just a smidgen.
The business was clearly unsustainable. I told Barrett and Chris that I wanted to shut it down. They both already had full time jobs, so it wasn't a huge issue for them so we quietly stopped accepting work and just managed maintenance requests from that point on. We did hit all of our November deadlines at least.
I knew the business was unsustainable months before we committed to those final five projects. One side effect of running an actual business in an area for a couple of years is that you learn a lot about the other operations in the area and you begin to see the commonalities. Web businesses generally fall into 2 categories:
These businesses are the easiest to sustain and often are one man operations. Projects have a clear lifecycle. Design. Apply. Deploy. Done. You build up a continuous revenue stream slowly by hosting a lot of client sites. Design is tremendously easier for client interactions because you can show proofs, they can approve things prior to any other work beginning and often times you can re-arrange things right there with them in a room once you have some initial work done. Once everything is approved, you cut it into HTML/CSS and add it to the CMS. Sometimes there will be some CMS customization via modules but for the most part, you're done. Lots of projects with short life cycles that build a portfolio and referrals.
Often, a design is quoted and the amount of time involved will be significantly less than anything that needs to be calculated on a "per hour" basis. I've known enough designers that have invested less than 20 hours in $10,000 jobs. It's more about getting it "right" than hours involved. Those type of high variable margins work out well and the client SEES what they are getting. It becomes tangible for them. That doesn't happen in contract programming where a client has no idea how to look under the hood to investigate quality. You can try to do the flat rate quote with programming, but on custom work it's a lot more complicated because the hours involved will vary from hours to months and scope changes from a client that seem small to them will in reality involve significantly more time.
These are aimed at larger projects with very custom needs. Usually start ups or larger companies where IT is not a core focus. Custom programming projects never really end. The sweet spot for this client base is a company who does not want to hire programmers long term and is willing to pay about twice as much for them short term. Sometimes these projects will come from a department in a larger company that needs a prototype. Sometimes it's a huge company with a lot of internal politics that wants to get a project done without jumping through all of those hoops. In many cases these are clients looking for an agency that can provide them with talented people to design, develop, and monitor an entire project.
We were not an agency. What we tried to do was to allow firms focussed mostly on design and marketing to act like an agency when a big project came along. We got that finalized design and then handled everything else to deliver the project. This largely left us out of control of our own sales process. We did A LOT of estimates for people. I had a number of people contact me from around the country just to tell me how much they loved our business model. Nobody else was doing it because it didn't work well in reality. Like free money. Sounds good though.
Every successful agency that I saw had one "whale" client that was responsible for over 50% of their income. It's an anchor tenant. Landing a whale who is willing to pay a contract rate for that many resources long term is not easy, so to the guys who have pulled it off...kudos. We missed our most likely whale about 6 months into our existence. I still have the 150 page RFP that we put together sitting on a shelf for a $320,000 project. The "whale" client with a long term contract allows you a shot at sustainability. Hiring people on salaries where you can have a larger profit margin on their time for a consistent level of productivity. Without that whale, your only chance to grow the business is to contract people when you get more projects than you can handle. For that, you have to be able to charge a much higher price to make anything on their time.
A single contract programmer can do fairly well. You're selling your own skill set for a specific rate with flexible timelines for when you get paid. As soon as you are responsible for getting multiple people paid, everything gets more complicated. You effectively start trying to grow the business by selling what YOU can do and hoping to be able to guide somebody else through doing that work at a much lower rate than you personally would charge. That is the only way you can make money on somebody else's time and it happens everywhere. My last job I took over a botched programming project from a reputable firm. The lead programmer did great work (amazing really)...for the first 3 months. Then a junior guy took over who was not nearly as sound and left a lot of major issues behind. Then they handed it off to a kid in college. Billing rate never changed. Everybody wants to provide unlimited, top people but reality just doesn't work that way. Doesn't stop the pitch.
You can read more about the business model subject in a post I wrote back in 2010, before the end began.
Following the project close outs and new project shut off, I was reluctant to immediately look for a job. My daughter was about to be born and I knew I needed to be there so I decided that after she was born, I'd notify a few recruiters that I was looking. I also applied for some jobs with interesting companies, including Server Density, who we used as part of our server monitoring process. They ended up hiring me. The pay was significantly lower than what most US programmers make, but they were a small UK based company, the tech was interesting, the people were nice, the hours were flexible and I could work at home. If you've ever seen one of my resumes this is not on it because I worked for them for 1 month. Two weeks in, Nuvox (now Windstream) contacted me to come back in a contract role and I couldn't turn it down. It felt awful about leaving so quickly so I only let Server Density pay me for the first 2 weeks that I worked there. In the short time I was there, I was very impressed and was able to make a small contribution to their regex based process monitoring interface.
In April, I returned to Windstream as part of the production support group mentioned before. They'd contacted me specifically because part of the job was supporting the systems I'd built for them before. The work was a significant change from what I was used to doing. I was used to going 1000 mph all the time, triaging every last to-do. In this role at a large company, you were on stand-by at all times. Monitoring existing systems. Getting things back up and running if they went down. Doing root cause analysis if something actually does go down. Handling system upgrades. Working with vendors. Being on call 24/7. I got a page at 8:30am Christmas Day one time. It was a cross between sysadmin, programming and management. For the first couple of months I was figuring out what my job was but eventually got the hang of it. When it was quiet it could be really, really boring. When I was investigating things it was really interesting though. Like putting together a puzzle made from dozens of servers, systems, logs and people. Used a lot of Perl too.
This was a "term contract" or as I liked to call it "contract to fire". There was no chance of the position becoming full time but there was a strong possibility of contract renewal for a couple of years at least. Knowing it was a term contract meant I had to keep looking for other opportunities though, so I did. I looked for a lot of different jobs in and around the area. Most were very specialized "enterprise" jobs looking for X years experience with Java or .NET or some specific obscure system. I was qualified for several opportunities but I was trying to find something long term. I wanted to find a job that felt like it would be my last job. Additionally, I had such a wide array of experience from running Brightball that I had a much broader understanding of business operations around development than most programmers I knew. I'd put in a lot of hard work in filling all those roles and if I was really just going to be re-entering the workforce as a programmer where I left off then all that work would have gone to waste. I nearly killed myself doing that work. It had to amount to something.
So I prayed about it. Hard. I asked God to put me wherever he wanted me to be. I know a lot of people don't put much stock in that. A week later I got a call from a former client who was in a panic about a project he'd discussed with me when we were shutting down. This was a whale project, but at the time I had nothing left to even consider taking it on. Because of confidentiality agreements I can't say much but the short version is that there was a chaotic situation after the premature relaunch of a huge site and no technical leadership that had any idea what to do. I was asked to provide advice and then I was offered the job. So I took it in a situation where most people would not have come near. I know that because we tried to hire people and the company looked like a sinking ship to the eyes of most people. The company, however, had a strong network effect on its side that I thought would buy time to get things fixed. Unless you understand network effects, this situation would look a lot scarier.
I spent a year and a half righting the ship and left things stabilized. I thought this was going to be the job that I did for the rest of my life, but for a number of reasons it wasn't. But...it was my resume maker. See, at Brightball we had a lot of smaller projects and what we could do was limited largely by our clients' budgets. We had an underlying system that we worked on across all projects that I'm still very proud of, but it wasn't easy to show people. I spent so much time preparing for huge jobs that we never landed, my time with the company ended up being almost like an expansive research project. I had a lot of knowledge that I hadn't been able to apply to anything I could put on a resume. This job gave me that. One, huge system that had a measurable baseline from which I could improve. The before and after on my resume was a dramatic change and I was presented with a number of opportunities that I wouldn't have dreamed of prior to taking on this juggernaut.
Eventually, I found out about a position with ACS Technologies that I consider a dream job. I love the people. I love the work. I love the company. I love the mission. I love the opportunities the company provides their employees to contribute and develop. I've never seen a company who treats their employees so well. ACS Technologies is the countries largest developer of church management software. You want to talk about an answered prayer? I landed in a job that allowed me to get here. That's not a statement I make lightly. There were so many things that happened to get from point A to point B that had to happen "just so" it's impossible to attribute to coincidence but I will spare the details here. I'll leave it this way...it's a story I feel obligated to tell as often as possible and if you know me I will be happy to tell you all about it in person. If you don't know me it may as well be anything else that people make up on the internet.
I've been with ACST now for just over a year and I still can't believe I'm here. Company is still just as amazing and keeps on surprising me. A few years ago I was sitting in a hospital bed from trying to keep a failed company afloat. Now I'm on vacation not expecting any phone calls and totally relaxed for the first time in about 7 years. Actually focussing on spending time with my family instead of thinking about work or how quickly I can get to my laptop if the phone rings.
Still can't believe it. Always grateful.
// Share.on([hacker news,
linkedin,
twitter,
facebook,
reddit])