Developing and building great web applications relies on having the right tools at your disposal to alleviate the headaches that arise during the building process. Planning, constructing, implementing, and maintaining are all pieces of the web puzzle that cause every developer an equal amount of frustration when not handled properly.

Planning

Usually the planning phase of any project is handled by managers working with business analysts, but that doesn't mean that web developers shouldn't have their own ways of keeping track of the in's and out's of each project they work on. In the planning phases for Centurion I started with a list of features, but did not own know where to begin when it came to planning the beginning steps. It isn't enough that you know all the features in your project, but others have to understand why those features exist and also know how to use them. Plan for your projects success, not only what it can do. Start with these questions:

  • What is the purpose of your project?
  • Who will benefit from your project?
  • What are the pieces of your project? Features?
  • What technologies will you use in developing your project?

Constructing

The construction phase is the best part of any project, because you have the ability to create something that didn't exist before. During the development phase you're crafting your project from a plan into a working tool. Though when working on a project with multiple developers it's hard to keep your code base structured, organized and current. Using code repositories help alleviate the problem, but keeping track of where other developers are working keeps your project moving forward with minimal issues.

There are several tools that I have used over the past few months that help you push through the development process. The first is a web tool known as Trello, which is an online collaboration tool for organizing and assigning tasks. The best part about this tool is that its free and allows you to create boards for each of your projects. You can choose to classify your projects based on the method of to do, working on, and completed, or you can create your own working method for the way you handle tasks.

If you have used Basecamp, then there is a collaborative tool that will keep your project on track with calendar features, message posting and it is essentially a private way for developers to collaborate on the same project. Basecamp does offer a free trial, but the bulk of your work may require the purchased options.

Another tool is known as Bitbucket, which is a SVN, and Git code repository. You can create an account for free and create both private and public repositories for your next project. Works great for keeping code in a structured and organized place so that you can track changes that have been made and find out where the issues arose by comparing the Diffs.

Implementing

Getting your project into the light is the point where others can start using it and seeing the ultimate benefit of what your project has to offer. The tools that I mentioned above all came from a concept and eventually was built by a team of developers. Your projects will follow the same course usually and the implementation phase takes its own twists and turns. For Centurion I went back to the drawing board several times trying to find the best implementation of particular pieces of the framework. I was working independently at the time and saw various issues crop up as I was testing. I'll admit that you will need a dedicated group of testers and not necessarily people that have developed what you are working on. They need to be disconnected so that they can try to use it. Beta testing to the max.

By the time you reach the end of the implementation phase you will have a solid platform for your future users to utilize. However, keep in mind that there is nothing wrong with testing multiple times before release and who knows you might be able to get beta testers into your initial product launch to help work out the kinks.

Maintaining

With any good project there is always the initial launch, but what about the next phase. Implementation implies that your project will be maintained. I am not sure how many developers work on a project only once and never touch it again. Those projects tend to die because no one uses them. Operating systems change, computers change and so will your product if you want it to live in this complex ecosystem. Usually towards the beginning of a development phase I work on a list of features for my project. A list of things that it will ultimately do or at least be used for. From that list I break down the features into smaller lists that are divided by phases. For example, with Centurion I included the basics and it was first and foremost a framework to build web sites fast. From that point I tacked on new features, such as, responsive grids, mobile design, and extra features. Though the final question you can ask yourself is where will your product be in 1 year? 2 years? etc. Look forward towards innovation when you start your next project.