Starting a Web Design / Programming Firm

I was recently asked by an acquaintance what it took to start a design/programming firm, as he was considering getting into the business. I’ve learned a few things about it, having run a one-man company, and now a company that now has four staff, and hires out bits of work that we don’t have the time or inclination to manage (large flash jobs, windows hosts, etc..)

One thing that’s extremely important to us is finding a tight crew of contractors who we can 1) outsource smaller jobs to when we are busy and 2) hire for bigger jobs for the individual’s talents in discreet parts of the job. If you want to do more than flip brochure sites, you’ll need to form a mixed crew of design/programming and SEO talent. I would also suggest having your contractors be people in your local region. There will come times that you will need to talk to them in person, or perhaps  have them meet with a client.

We’ve got a crew of 4, two programmers, one designer and a bookkeeper / social media expert / apprentice designer. I would suggest you find your talent/niche and then find people you can subcontract for the other parts of the job. Otherwise, you’ll find yourself trying to do everything, and only working on 1-2 contracts at a time.

Get a workflow going, something like this recipe:

Week 1: Design spec, have the designer meet with client, work up the 2-3 mockups.
Week 2: Meet with client, go over mockups, try to finalize site layout, including SEO modifications if needed.  Also create list of content the client is responsible for providing.
Week 3: Build skeleton of site, programming time.  Make sure client is getting copy material during this week.
Week 4: Add content from client to site, skin site with customer design, more programming time.
Week 5: Final touches, test site (SEO staff does heavy evaluation at this step,if the client has hired/contracted that)
Week 6: Launch.

If you have a general guideline like this in mind, you can flow your staff time better, and run multiple jobs at once. Hopefully, the coding time will happen while the design staff is starting the next job. This model will not always work, as some projects are huge, but you should be able to tackle a couple of small jobs in the background while you are doing your large projects.

Choose a CMS platform that you get to know well (WordPress, Drupal, Typo3, etc…), so if the customer isn’t set on a platform, you can suggest one that you will not have to spend ages learning. Don’t lock yourself into a platform, you need to be nimble, but be an expert on one.

Choose a framework for more serious work to help speed up your development cycle for jobs that are by their nature larger than a site CMS framework. These kind of jobs, by their large nature, will usually not dictate your technology platform. I use CodeIgniter, but looked at Cake, Zend and a few others before settling on CodeIgniter for larger products.

Don’t hesitate to do e-commerce. But understand that road is fraught with danger. There’s no perfect shopping cart out there, and you ~will~ get support calls from customers. Shipping will fail to compute, CC#’s will be declined, and the client will involve you. There is no perfect e-commerce solution you can install and forget about. Because of this, make sure you build relationships with your client base, instead of building a site and moving on. Get involved in their business enough to know their business model as well as your own. Know what they mean when they reference parts of their workflow. A few bigger businesses like this, that constantly need improvements on their web presence, is your bread and butter.

Don’t try to do too much. Find a local computer handyman that’s responsible, and if your clients have computer problems with their workstations, make a reference. You can’t be in the business of helping them fix their computer and meet your other deadlines. It’s just not worth the money. Their computer problems will be continual, and they will always be urgent. Urgent in a way that interrupts your scheduling.

Get yourself some kind of system to manage your projects. We use ActiveCollab/Quickbooks, but I have a peers who use FreshBooks, just Quickbooks, ProjectPier, or Basecamp. It’s important that you track your hours. It’s also important that you prioritize your incoming support tickets and always reply to people promptly. It isn’t always recommended to fix everything the instant it comes to your email, so some kind of priority system is mandatory. Get an answer back to people within the hour, solve crises immediately, solve the little things within a day or two, and add features slowly, after you have considered the best way to implement them (server down, you get me right away, shipping computation wacky on low traffic site, you get me the following morning, you need a new feature added to your site, you’ve got me by the end of the week). Giving features some time lets you research the best way tackle it, giving you the best long term solution. After all, you’ve got to support it.

Try to give yourself some time every week to keep up on technology. Not “What is the latest smartphone like”, but “How do you use the mysql set datatype?”

Don’t hesitate to pass work up if the client’s expectations exceed either your firm’s timetable or your talent level. Only have one job running at a time that requires you to learn new talents. This is not mandatory, we’ve certainly bypassed this rule before, but it adds unneeded stress when you are trying to learn 2 disparate technologies at the same time, both on deadline.

I’ve been doing this for five years, and am constantly refining this workflow,  it is still a work in progress. Don’t treat any workflows as hard and fast rules, but try to use your workflow to estimate jobs and not get yourself stuck in an under- or over-employed state. I’d love to hear, in the comment section, what has worked for your webdesign/programming business.