You have your idea, you have the skills/means/money/time to build it: but where do you start?
The first reaction of many will be to rush right into design and or development of your idea. But wait, you haven’t even scoped out your idea yet. Why are you rushing off to start building something that is only 1% of the way there?
As a developer with limited design knowledge, I used to be the same. The excitement of potentially building something you think is the worlds greatest idea can sometimes get the better of you. I would rush right into the design and development phase without a care in the world and ultimately I would never complete the project because I never thought it through.
Before you build or design anything, you need to determine what it is you want to build first before you rush into designing or developing anything.
Answer these questions in as few words and succinctly as possible
- What are you building?
- Who is it you are building it for?
- Why are you building it?
- Who are your competitors?
- What makes your idea different from your competitors?
Now what you need to do is map out your idea. Write it down on a piece of paper, draw it on the walls or a Word document. Just like it is considered smart to write a shopping list so you know what you need before you go shopping, you are writing a shopping list for your app plus the meal plan.
Now it is time to model the data structure of your application
What are the key components of your application? How do they connect to one another?
An example of a blogging application would look similar to the below:
Users
Roles
Pages
Posts
Comments
Categories
Tags
If you want to go deeper, you can also write down what fields each data type will have. A user will have at a minimum; username, email and password fields. These individual data components in an ideal world should relate to database tables, but they don’t have too. We’ve just sketched out what the models in our application will be.
Now you’ve worked out the key components of your app, how do they tie together?
Users can have multiple roles
Users can own many pages
Users can own many posts
Users can make many commentsRoles can have many Users
Roles can have many Pages
Roles can have many PostsPages can only have one User (owner/author)
Pages can have multiple Roles (allowing for role restrictions of a page)
Pages can have many Comments
Pages can have many Categories
Pages can have many TagsPosts can only have one User (owner/author)
Posts can have multiple Roles (allowing for role restrictions of a page)
Posts can have many Comments
Posts can have many Categories
Posts can have many TagsComments can only have one User (the original comment owner)
Comments belong to a Post
Comments belong to a Page
Comments can have multiple Comments (comment replies from other people)Categories can have many Posts
Categories can have many Pages
Categories can have many Categories (Allows for nested categories, parent/child)Tags can have many Posts
Tags can have many PagesCongratulations, you’ve now mapped out your data structure.
Now there is just one more step before you can start building: an application map.
It sounds fancier than it actually is, we are essentially going to map out a loose site structure. Of course it is impossible to determine what our final structure will look like, but it’s better to have a rough starting point.
Using the blog application example we used earlier, we might come up with something like this:
Homepage “/” — This is the first page any visitor will see. It will show 10 of our latest blog posts.
Search “/search/searchterm” — The page that will display search results.
Single Page “/page/pagename” — The page that will display our page contents when someone visits it. This will also display a comments form and any comments others have already made.
Single Post “/post/postname” — The post that will display our post contents when someone visits it. This will also display a comments form and any comments others have already made.
Login “/login” — A page with two fields, “username” and “password” that will log our users in.
Register “/register” — Where new users can register for an account.
Now you know what you want to build. You can supply your sitemap to your designer and your data map to your developer and your end product should be how you envisioned it.
Keep in mind the end-result won’t be exactly how you pictured it. The result could be better or worse depending on if you stick to the plan or not. Use this blog post as a loose guide, it works for me and it might work for you.