What Makes a Good Web Development Company

The world of web development is still very much misunderstood. We’ve even heard people call it a “dark art”. So when you need help turning your ideas and designs into a high quality website or web application, how do you know who you can trust to get this done?

The purpose of this post is to provide some key points on what makes a good web development company, and will help you understand the kind of questions you should be asking development companies.

This is going to be a very opinionated post and we make no apologies for it. If you disagree with anything we are certainly open to discussing it further.

Now to get on with the post. Below are the key areas we are going to be looking at, and what you should be looking for in a web development company.

Able to do both front-end and back-end development

Don’t specialise in one back-end technology

Should follow best practices

Understanding of marketing strategies surrounding the projects

Invests time in research and development

Has a rigorous testing process, including automated tests

Flexible to change

Use source control

Able to do both front-end and back-end development
We don’t subscribe to idea of developers that do front-end development and developers that do back-end development. That’s the equivalent of having a plumber who only fits pipes and leaves the fitting of the baths, showers, sinks and toilets to someone else.

We agree there is a separation between web developers and web designers, there’s a completely different thought process going on there, but the separation between front-end and back-end is just wrong. To be a good web developer you need to understand the full development cycle and to be able to get involved in the project from start to finish. There is also much to be learnt from the working with the varying technologies, but we’ll come on to that.

Don’t specialise in one back-end technology
There are a number of good back-end technologies that are appropriate for web development including Ruby on Rails, ASP.Net and PHP (and others). They all have their strengths and weaknesses and not one is perfect. A good web development company should be flexible in which technologies they use, so that they use the most appropriate one for their clients’ needs.

The key reason we have spent time learning a number of technologies is to able to pick and choose the bits we like. Over the years the developers involved in The League have been able to take the good parts of each technology and formulate a number of best practices and use them across all platforms.

Should follow best practices
The key to being a good web developer is not the technologies that you use, but the best practices that you follow. As technologies come and go in our very fast moving industry those best practices will remain, or at least evolve. As a developer if you have a good grounding then you can move with the times and technologies fairly easily.

So what are these best practices that we are talking about. Below are some of the key ones we follow.

Writing semantic HTML

Follow web standards for all front end coding

Automated testing of both front-end and back-end code

Use of a MVC framework

Understanding of marketing strategies surrounding the projects
We’ve heard this complaint many times that web developers don’t think about the marketing strategy of a project. This is generally because developers don’t care. Well they should. How can they advise clients and think about helping clients produce the right solution, if they aren’t thinking about the “bigger picture” (sorry, we know it’s a horrid phrase, we’ll go wash our mouths out now). If a developer blindly does the work, they are not offering the client a service, they are just being a meat puppet.

The most important question a developer can ask is “Why?”. Take time to understand the client’s requirements fully, and advise them, after all the client doesn’t understand the ins and outs of web development, you do. Make the development cycle a two way conversation.

Invests time in research and development
As everyone knows the web industry is a very fast moving industry. Things come and go in the blink of an eye. A good web development company gives it’s developers allocated time each week to look at new trends and technologies. Admittedly some of these trends and technologies are dead ends, but you won’t know unless you look into them.

If you want to know if a web development company knows there stuff, simply ask them what their developers have been looking into recently. You don’t have to understand everything you are told, note them down though and look them up on the internet to understand if the company are looking at new trends or not.

R&D is probably the most important time each week for a developer. If developers don’t evolve, the solutions they build will become stagnate and dated very quickly. As a client do you want an out of date solution before you even start?

Has a rigorous testing process, including automated tests
Too often we have seen the client is the tester for a project. If this is happening, then, to put it bluntly, the development company don’t understand your project well enough, they are just “banging out” code.

A good web development company should be writing automated tests (integration tests, unit-tests etc) for all their code, both front-end and back-end. On a simple level, tests help developers to concentrate on the code they are writing at that given time, they also help developers to write more concise code. More concise code means the code base is easier to understand and cheaper to maintain.

The major benefit of a test suite to a client is that when changes are made to the code in the project there can be a lot more confidence in the fact that the change, or new code, hasn’t broken anything else.

We are not saying automated testing is the silver bullet of web development, and tests are only effective if they are written well, but they certainly should be part of any web developers toolset.

Automated tests aren’t the only important aspect of testing. The web development company should also have a level of human testing as well, and this is certainly something clients should be involved in. User stories are key to this process. As part of the development process, clients should work with the web development company to put together User stories, so that all parties involved understand how users will interact with the site or application and the results of those interactions.

Flexible to change
We’ve all heard developers complaining how their clients’ change the requirements of a project midway thought a project. Developers need to stop complaining about this, it happens to us all and it’s never going to change. A good web development company should have processes in place to cope with change. If you are a client, ask how change requests will be handled.

Web developers should work to short release cycles, preferably 1 – 2 weeks. The worst thing that can happen to a project is that the developers get the brief, start the work and then 2 months later they announce it’s finished, only for the client to say “This isn’t what I asked for!”. By working to short release cycles, clients can be involved at all stages. At the end of each release the client should review the project so far and submit any change requests.

Use source control
Our final recommendation is a pretty obvious and simple one, to most people, but we still speak to developers who don’t use any form of source control. This seems more prevalent with freelancers as they don’t see the need as they are the only ones working on the code. If that’s how they see it, then they are missing the point.

There are lots of reasons why all code should be source controlled. We’re are only going to mention a couple of key points here. Firstly it’s a great way of keeping a log of changes made to code. (As long as developers put a comment into the commit). Secondly and most importantly is allows developers to change code without the fear of losing already work already done. This is especially useful when trying out other possible coding solutions to a problem.