The world of web development is still very misunderstood. We also heard people call a "dark art". So when you need help turning your ideas and projects in a high-quality website or web application, how do you know that you can trust to get this done?
The purpose of this post is to provide some key points about what makes a good web development company, and will help you understand the type of questions you should ask the companies development.
This will be a very opinionated post and make excuses for it. If you do not agree with anything we are certainly open to further discussions.
Now to get on with the post. Below are the key areas that we're going to be looking at, and what you should be looking for a web development company.
* Able to do both front-end and back-end development
* I do not specialize in a back-end technology
* Should follow best practices
* Understanding of the marketing strategies that surround projects
* Invest time in research and development
* It has a rigorous testing process, including automated testing
* Flexible to change
* Use source control
Able to do both front-end and back-end development
We do not share the idea of developers who do front-end development and developers who are developing back-end. This is the equivalent of having a plumber that just fits tubes and leaves the installation of baths, showers, sinks and toilets to someone else.
We agree there is a separation between web developers and web designers, there is a completely different thought process going on there, but the separation between front-end and back-end is simply wrong. To be a good web developer you need to understand the full development cycle and to be able to be involved in the project from beginning to end. There is also much to learn from working with different technologies, but we'll come to that.
Do not specialize in a back-end technology
There are a number of good back-end technologies that are appropriate for web development including Ruby on Rails, PHP and ASP.Net (and others). They all have their strengths and weaknesses and it is not perfect. A good web development company should be flexible as the technologies they use, so that they use the most suitable for the needs of their customers.
The main reason that we have spent time learning a set of technologies is able to choose the pieces that 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 set of best practices and use them for all platforms.
Should follow best practices
The key to being a good web developer is not the technology used, but the best practices that you follow. As technologies come and go in our industry is moving very fast these good practices will remain, or at least evolve. As a developer, if you have a good ground, then you can move with the times and technologies quite easily.
But what are these good practices that we are talking about. Below are some of the major ones that follow.
* Writing semantic HTML
* Follow the standard encoding for all webs front-end
* Automated testing of front-end and back-end code
* The use of an MVC framework
Understanding of the marketing strategies that surround projects
We've heard this complaint many times that web developers do not think about the marketing strategy of a project. This is generally because the developers do not care. Well they should. How can advise clients and think about helping customers produce the right solution, if you are not thinking about the "big picture" (sorry, we know it's a horrible phrase, we'll go wash your mouth out now). If a developer does the work blindly, they are not offering the customer a service, which are just being a meat puppet.
The most important question a developer can ask is "Why?". Take the time to fully understand the needs of the customer, they want to receive, after all, the customer does not understand the ins and outs of web development, you do. Make the development cycle of a two-way conversation.
Invest 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 its developers assigned time each week to look at the new trends and technologies. It is true that some of these trends and technologies are dead ends, but you do not know unless you look at them.
If you want to know if a web development company that knows stuff, just ask them what their developers have tried recently. You do not have to understand everything that is being said, even if you write them down and look on the internet to see if the companies are looking at new trends or not.
R & D is probably the most important time each week for a developer. If developers do not evolve, solutions that build stagnate and become dated very quickly. As a customer, you want a solution of date before you even start?
It has a rigorous testing process, including automated testing
Too often we have seen the customer is the tester for a project. If this happens, then, to put it bluntly, the development companies do not understand your project well enough; they are just "throwing out" the code. A good web development company should write automated testing (integration testing, unit testing, etc.) for all their code, both front-end and back-end. On a simple level, tests help developers focus on the code they are writing at that time, but also help developers write code more concise. More concise code means that the code base is easier to understand and less expensive to maintain.
The main advantage of a test suite for a client is that when changes are made to the code of the project there can be a lot more confidence in the fact that the change or the new code has not broken anything else.
We're not saying automated testing is the silver bullet of web development, and tests are only effective if they are well written, but it certainly should be part of any web developer toolset.
Automated tests are not the only important aspect of the trial. The web development company should also have a level of human experimentation as well, and this is certainly something that customers should be involved in. User Stories are fundamental to this process. As part of the development process, customers should work with the web development company to put together the stories of users, so that all parties involved understanding how users interact with the site or application, and the results of such interactions.
We've all heard developers complain about how the change of their customers' requirements for a project halfway thought a project. Developers need to stop complaining about this, it happens to all of us and it is never going to change. A good web development company should have processes in place to deal with change. If you are a customer request will be handled as change requests.
Web developers have to work for shorter release cycles, preferably 1-2 weeks. The worst thing that can happen to a project is that developers get the short, start the job and then two months after announcing that it is over, only for the client to say "This is not what I asked." Working on short release cycles, customers can be involved in all phases. At the end of each release of the client should review the project so far and submit any change requests.
Our final recommendation is quite clear and simple, for most people, but we still have to talk with the developers that do not use any form of source control. This seems more prevalent with professionals because they do not see the need because they are the only ones who work on the code. If this is the way they see it, then you are missing the point.
There are a lot of reasons why all the source code must be controlled. We're only going to talk about a couple of key points here. In the first place it is a great way to keep a log of changes made to the code. (As long as the developers put a comment in the commit). Secondly, and above all IS allows developers to modify the code without the fear of losing the work already done already. This is especially useful when searching for other possible solutions to a problem of encoding.