One of the things I love most about working at rackAID is the diversity of clients we serve. From companies like Homage (retro T-shirts) to NotDoppler (flash games) to Roastar (custom coffee bags), we serve a variety of industries, each with their own web development practices.
We have worked with amazing successes such as MyYearbook (sold for $100 million), TravelPod (acquired by TripAdvisor), and Bubblebox (acquired by Bored.com). In working with these companies, I’ve spotted some common web development characteristics that contributed to their successes. While their web development approach may have started out rough, they soon realized that bringing order to chaos is a key to success.
No Cowboy Coding
Cowboy coding is the practice of making changes to a production system. I am sure we’ve all done it once or twice. At the Babcock and Jenkins agency, they make the coding cowboy where a pink sombrero. I think the next time we hire a web development firm, I will send them a pink sombrero.
In our experience, many service outages, security issues and similar problems are caused by coding on production systems. If your business depends on web site, don’t code like a cowboy. Use development and staging servers to test code before pushing it into production.
Also, a significant problem we face is people making “small changes”. No changes are small if they cause your server to crash.
Act: Learn about the 10 Types of Programmers
We mostly support LAMP (Linux Apache PHP MYSQL) applications in our scalable hosting platform. In nearly all cases, our most successful clients are using some time of coding framework. I don’t have a preference between about which coding framework your select.. CodeIgniter, CakePHP, or Zend are great, just pick one and enforce its use.
What our clients use a coding framework they become less dependent on a single developer. So when staff changes, they can find someone to support their application.
Sure you can have odd things done within a coding framework, but at least there is some structure. This structure can be a lifesaver when your developer jumps ship or simple does not call you back. (Yes, we had a case where a client’s developer went MIA for 45 days during the middle of a site upgrade.) In our own projects, we require a coding framework be used and standardize on a particular framework when possible.
Act: Great post on benefits and pitfalls of coding frameworks.
Version control is a must. If your developers are not using version control, I would demand they do so or find a new developer. Every week, we deal with service issues caused by undocumented changes. Without version control, finding who changed what is difficult.
When we see unexpected service issues, we often ask about changes, especially if coding cowboys are involved. The typical reply is “No, there have been no changes.” With some digging into the logs, we often find there were changes, but they were undocumented. This is a major problem when web development is outsourced. The developer, with good intentions, makes some minor change but does not notify anyone. A day later, some traffic or other change causes a site failure. Nobody knows what was changed but the developer.
By using version control and change documentation, you know what files were changed. With most tools, you can revert changes quickly and easily.
Act: Check out Smashing Magazine’s review of 7 revision control systems if you are ready to get started.
Bonus Tip: Taking Ownership
Our most successful clients take ownership of any service problem. They then delegate smartly to get the issue resolved. They don’t hound us to fix stuff we are not equipped to fix or is not our responsibility. They may ask for our input, but then they bring in the developers, designers, and database experts required to fix their applications. If we host a well-designed application, we can make it fast, secure and reliable, but we cannot fix programming, database queries and site design issues. We know what we do well and stick to it.
What’s Your Take?
I see these four items as major differences between companies that succeed online and those that fail. What traits do you look for in well-managed, online operation?