The steps described here would apply to the development of other websites.
Step 1: Come Up With the Idea
So we decided to build a website that would allow people to easily discover, organize, and share book information. Bookhuddle is this site.
Photo by Felipe Torres.
Step 2: Buy a Domain Name for the Site
Good domain names are hard to find, but you just have to be creative.
Our site's domain is Bookhuddle.com.
There are are countless sites where you can buy domain names from. A domain name should only cost you a few dollars.
The following Google search finds domain name services: http://www.google.com/search?hl=en&q=domain+names&btnG=Search
Step 3: Form a Team
Find people that are passionate about the idea, have the appropriate and complimentary skills for the tasks involved, can work effectively in a team, are good communicators.
The skills needed among the team members building a website include: creativity, good analytical skills, writing, programming, design, web application development, database design and maintenance, requirements definition, testing, graphic design, server configuration and maintenance, and more.
Step 4: Identify the Core Features of the Application
For Bookhuddle, the core features included:
- extensive database of books
- ability to search for books
- user profiles
- user book lists for users to organize their personal library, books they've read, want to read, are reading, etc.
- user search
- groups or book clubs for users to organize with friends and discuss books
Following an iterative process is useful to help prioritize the work, define frequent achievable goals or milestones for the team, get features released frequently to users, and get feedback from users to fine tune the site.
Step 5: Define Feature Requirements
Employ use cases, diagrams, flow, etc to document the feature and facilitate communication among team members.
There are many ways to do this. Figure out what works best for your team and the environment you work in and do what is necessary but no more so you don't waste time.
If drawings on napkins are all the requirements that your team needs, then great. Some teams require more formal documentation.
Step 6: Create Prototypes
Step 7: Develop the Site
For a dynamic website, you'll generally have to develop your program using a programming language and related technologies, you'll run your program in some kind of application server, and you'll likely need a database.
There are many options of technologies to employ and some of the popular ones include:
- Programming languages and related technology: Ruby on Rails, Java, .Net, PHP, ColdFusion, Python, etc
- Database: MySQL, PostgreSQL, Oracle, Sql Server, and others. Choose an open-source one if you can to help reduce your costs.
We recommend using a technology stack that you are familiar with and that it's proven to be a good stack for the kind of development you are doing. Being familiar with the stack will help reduce your learning curve and help you focus instead on the other aspects of developing your site.
We chose the Java technology stack because of our expertise with it and its related technologies. A nice thing about Java is the large community of developers that exists; there is a plethora of tools, frameworks, servers, resources for learning, and qualified people.
Step 8: Test Your Site
Your testing effort should include unit tests, integration tests, functional tests, etc.
Testing can be done by your developers, dedicated testers, or anyone that is available to play with your application.
Using a Bug Tracking system is an effective way to track the problems found in your application and help you manage the work. Systems such as Bugzilla, Trac, and JIRA and good tracking systems.
Step 9: Hosting
If you have one or more servers at home or business that you can use, then that's one way to go. Another option is to get a hosting service to host your site for you. Depending on the needs for your site (amount of traffic, infrastructure required, etc), you could choose a virtual server, a dedicated server, or a cluster of dedicated servers. Virtual hosting being the cheapest, and a cluster of dedicated servers being the most expensive.
There are many hosting providers out there and the prices vary quite a lot. Find something that meets your needs. Amazon has a set of services that can be used for this purpose and are priced competitively: EC2 for computing power (i.e. servers), S3 for storage, and others.