Once we were done with pre beta launch and were very comfortable to do the beta launch, the question came where should we host the application. I had been working with Godaddy for a while but for this one as it was a portal I wanted to go with something more sophisticated. Amazon AWS was the obvious other option. Other hosting services under consideration were: Rackspace, Rightscale, Google and Digital Ocean. Following are pricing and Price calculator links for the options under consideration.
Pricing Link: http://aws.amazon.com/pricing/
EC2 Pricing Link: http://aws.amazon.com/ec2/pricing/
Amazon Monthly Calculator: http://calculator.s3.amazonaws.com/index.html
Pricing Link: http://www.rackspace.com/cloud/servers/pricing/
Rackspace Monthly Calculator: http://www.rackspace.com/calculator/
Pricing Link: http://www.rightscale.com/products-and-services/products/pricing
Rightscale Calculator: http://www.planforcloud.com/
Rightscale Calculator with Guest Login: https://planforcloud.rightscale.com/deployments?ga=guest_login
Google Compute engine details and pricing: https://cloud.google.com/products/compute-engine/
Google Cloud Calculator: https://cloud.google.com/products/calculator/
Digital Ocean Pricing: https://www.digitalocean.com/pricing/
Here is a cool additional link to compare 250+ cloud hosting plans:
For us it made sense to compare the basic plans at low level as we were starting fresh. We mainly compared the plans where there was room to grow. One additional plan in consideration was Godaddy private server plan,
But we wanted easy expandability so we wanted to go with one of the above plans. We decided to go with Amazon Free Tier because of the following reasons:
- Our outsourcing team was very comfortable with it.
- I was very interested in knowing how things work with Amazon AWS.
- We loved the monthly calculator that let us see how our expenses will go once we start getting more traffic.
- For the first year we thought we can survive with their micro instance with additional storage if required.
- We thought if needed to upgrade the bandwidth or the instance that was a good problem to have as that meant we had an increased traffic to our website.
- And we think expanding the volume size would be simple with AWS if and when the need arises.
Your criteria might be different and you might decide to go with something else but if you decide to go with Amazon AWS keep following us because, in the next articles we will go over how to setup things on Amazon AWS as we move along our journey to the beta launch.
I think when you are working with offshore team or outsourcing company – this particular phase is the most tricky to deal with. Because most of us now a days are so accustomed to work with internal QA team. Things take a drastic change during the Testing and Bug tracking phase. And that is another reason why services of a company like “HeliDigiZen” come in handy. As we know what we are dealing with and know how to handle this. During the testing phase if you uncover a bug – the fix needs to go through regression testing. So not only you have to test all the flows once the bug fix in place – you also have to test it across all the devices as well. You have to make sure the bug fix under one flow is not introducing new bugs on another flow and make sure none of the old bugs are coming back in while merging the changes while deployment.
Most of us now a days have our own favorite bug tracking system but while you are working with the outsourcing company it is best to work with a bug tracking system that works for both the parties. You don’t want your outsourcing resources to waste time trying to figure out how to operate a certain bug tracking system at the same time you don’t want to go through that process either. This is where some innovation comes in handy. We developed our own bug tracking system using google docs and google spreadsheet – as most of the people know how to use it and it does not require any additional software to be bought or installed. This helped us solve a few issues that we were facing,
- Now we always had a way to track what is happening with each bug reported – as we had 5 state defined for each bug – Open, Working, Fixed, Verified and Reopened
- Every one had an easy way to reproduce the bug – as we always defined the steps to reproduce when reporting a bug – very important
- It was simple to go through all the list of bugs while testing different flows and making sure none of the old bug are coming back or we are reporting the same bug again and again.
- And it was simple to reopen a particular bug just in case we see it again rather than reporting it all over again!
Up until this point we had always been working on the outsourcing company’s server but at this point we realized we wanted some control so we had them deploy the project on our end – so we can keep on testing while they are still working on bug fixing on their end. Helped us out a lot, and gave us an idea of “Pre Beta Launch” as well. But now we needed a way to track 2 different versions of code and an ability to report bugs for each one. It was pretty simple to accomplish using our own tracking system.
Once we were fairly confident of how things are working on our own server, we wanted some additional user feedback. We wanted to make sure that the flows are tested by some users who had no idea how this is suppose to work, and that is when we came up with the “Pre Beta Launch”. At this point we invited a few of our friends from technical background to do a test run on our system – and help us with some feed back. A great step – as that helped us understand what flows are confusing, some text revision needed and also gave us some confidence that we are pretty close to the Beta launch.
How did we go about our Beta launch? That we will cover in our next post!
The development phase starts when you approve the design PSDs and the team starts to work on converting the PSD into HTML pages and actual flow design. Here is where your SOW is going to come in very handy, and in our case a well defined SOW made it a lot more easier to navigate through this phase. This phase is when you will want to have well defined internal milestones where you run the testing of various flows as they are getting built and put in place. The well defined testing milestones are important so that you can discover any issues in the flow that you have defined or uncover any gap between your and your teams vision. You want to identify it sooner then later, because it will involve a lot more to change it once the backend is in place,
Also the thing that you should keep in mind is SEO and how you want to use any mark up language or Rich snippet. We used various tools while navigating through the development phase
- SOW – A well defined SOW is very essential during the whole project life cycle but during the development phase you are going to get the maximum usage out of it.
- Basecamp – To keep every one informed about all the steps being taken and all the comments or conversations being done.
- Bug Tracking System – A good bug tracking system is very essential to keep track of all the open issues and check how the progress is going – we had to come up with our own that we developed using google docs and google spreadsheets
The first milestone we had defined was converting the PSD to HTML and just have the page to page flow. This is done by simple linking between the pages with no backend. This process is very similar to the tool “Axure: Interactive Wireframe Software & Mockup Tool”, if you are familiar with it. The only disadvantage with Axure is you are not able to take the “HTML” pages that Axure creates directly into your project, where as in when we used this approach we already had HTML pages ready to be used directly in our project. Just as an additional note, it would be a good idea to use some SEO tools to help you with any markups or Rich snippet. As you already have some HTML example pages defined.
By first defining the basic flow with just HTML links – we were able to examine each flow and refine and correct it if need be without putting a lot of work on the back end. This was a great way of eliminating a lot backend changes for simple design tweaks. And it also gave us a way to make sure that the offshore team and us were on the same page as far as the basic flows were concerned. Very important when you are working with the offshore team.
Once we had refined the basic flow – the development phase milestone 2 work began. The milestone 2 was defined at putting the backend for those flows. But we wanted to work through one flow at a time. For example in our Toysshare project there are 5 main flows,
- Sing up/Login/Logout
- Listing Toys for Sale/Swap
- Searching for Toys
- Contacting the Sharer
- Admin Panel
Again as each flow was put in place one milestone was achieved and we tested each flow individually as they were put in place – this eliminated any refinements still needed in each individual flows without affecting the others.
And as the last milestone we put all the flows together and tested the whole project making sure that all those flows interact with each other the way it was expected. At this point after any fixes you should do regression testing to make sure the fix does not introduce any new bugs or while merging the files some old bugs don’t come back. – This is where we had to develop our own bug tracking system to make sure we are on top of each bug and we are doing regression testing at each level.
Also here is when all the mobile devices come into play. We wanted our site to be responsive – meaning now the testing had to be done on Windows PC, MAC , IOS, Android and Windows Phone. It helped a lot on how we had designed the milestones and testing setup – as most of the corrections and refinements were done way ahead of this final testing phase. In the next post we will go over Testing, Bug tracking and Beta launch in more detail.
It is very important to figure out what is the right time to get started on the “SEO” for the website. It is never too early to start. Before even going into the “Design Phase” it is best to think about “SEO” as well. Of course you can always add keywords and description meta tags. But google also wants to see how many of your key words actually shows up on your page content and how many times – that is the basis of the content keyword for Google. So if you want your web page to show up on certain type of search results you need to keep that in mind while you are designing the webpage layouts and figuring out the web page contents.
The rate at which google will crawl your page also depends on how many websites are linked to your site. If you are going to be launching a new website it is going to take some time before there are links to your website on the internet. In that situation – you should keep in mind that google does not cache your pre-beta version – as it will take time before google decides to crawl your page again and caches the actual live version.
If you want your website to show up under some key word search results – it is important to incorporate the key words in the tagline, on the page content, on the page title and so on. This is extremely important for the google’s content keyword relevance. It is a good idea even to use the Rich Snippet – that way you will have control on what is shown as snippet when google returns the search results.
In the next post we will go over how to work with Rich Snippet!
PS: I know this is a deviation from the outsourcing topic, but I think it is best to cover both in parallel. We made a mistake of not worrying about “SEO” during our design and development phase – and I did not want people to repeat the same so I am going to cover SEO and Development Phase in parallel.
While we were going through the design and development phases for Toysshare.com – we realized that working with an outsourcing company had to be handled a lot differently then working with an in house development team. As we moved through the Toysshare.com we got fairly aware of things that you need to keep in mind while you are working with an outsourcing company – and it eventually became a usual practice for us.
At that point we decided we should form a consultation firm “Helidigizen” – that can help people go through the outsourcing process. Essentially helping companies get their idea executed to a final product but guiding them through all the steps from defining SOW, getting in touch with right outsourcing company, and helping them out with the communication and execution during all the following steps,
- Design Phase
- Development Phase
- Testing Phase
- Deployment Phase or Beta Launch
We take care of choosing the right outsourcing model, choosing the right company and all the midnight communication needed through the proper execution of the project for them. And since we have gone through the process our selves multiple times it comes naturally to us on how to get the best results from the outsourcing company for the money.
It makes complete sense to get the project executed through us for all as we work with the outsourcing company on a long term basis, we have a trust relationship already built with them. As a result we have a much easier communication channel with them. For the outsourcing company too as they are dealing with the same people frequently it just becomes much more simpler. We already have some standard procedures setup and they don’t have to keep on revising them for each of our clients. This way we can achieve the results much faster which translates into increased efficiency!!
How do you get started once you have narrowed down the company and given them SOW – what is the next step?
Well we had an advantage that we were able to meet the project manager from the outsourcing company while we were there. That gave us a chance to discuss the SOW and clear out any doubts. Once things were put into perspective with timeline and milestones the real work started. I can see the project life cycle over 4 phases:
- Design Phase
- Development Phase
- Testing Phase
- Deployment Phase or Beta Launch
Please keep in mind that for the timeline and milestone to be met your input is very crucial in each phase. Especially the design phase as it is the base on how soon you can get to the next phase and keep on moving forward.
During the design phase they tried to design the logo, the color scheme for the website and a few important pages. We had defined our SOW in the terms of pages as well which made it a bit simpler for them to come up with the design for each page. They were able to provide us with a few options on logo/ color scheme and home page psd. Once we approved those the other few page designs were done. The best way to get the communication right at this point is to use the visuals. We created very basic wireframes most of them had drawn on the paper and give them reference to some websites that we liked the designs of. That made it very clear for them to understand what exactly were we looking for.
For each design that they submitted we were able to identify the elements that we liked and the elements that we thought should be changed. And we defined the changes with some visual reference making it easier for them to understand what we are looking for. One note here – it would be a good idea to identify all the message and confirmation text and put it into words for them – as the languages over different countries differs a lot and this way you have covered it at very first step.
It is very important to make sure that both the teams are on the same page in terms of design at this stage as – once everything is approved you go into development phase with the correct design in mind. Which will make development phase a breeze.
We will talk about what to keep in mind during the development phase in the next post.
While we were deciding what is the best outsourcing option for us we went through meetings with different companies. From what I have observed during that process we can categorize the outsourcing options in below different categories
- Small Scale
- Medium Scale
- Large Scale
- Individual Free Lancer
Our elimination process worked in the following way -> Because we needed a fast turn around time we had to eliminate a couple of small scale companies as they could not start on the project right away. Some of the individual free lancer were available to start right away and were reasonable too – but the issue came down to they not being able to support our need for a design team. And once they would take up another project we were worried about the support we would get from them even after the project was over.
Now we were left with 2 options – Large Scale and Medium Scale companies. For a large scale company we were a small client and I was not sure if they would move around resources if they get some request from some of their regular big clients. And the last thing I wanted during the execution was change of the person in the middle of project.
Once we had narrowed down our search to Medium scale companies we met with a few of them and chose the one who had mostly work with US client and knew how quality mattered. Also influencing our decision was the communication and trust we got built up while meeting. They were ready to sign the NDA and they were able to provide the timeline and broken down hour structure for the project. And I am very happy to say they really were able to stuck to the timeline and deliver milestones along the way! They were also able to support us even after beta launch which was one of the most important thing for us.
Of course during the project we did come across quite a few things that you would need to keep in mind while working with an outsourcing company – and we will be covering those within the next few posts.
When you are trying to base the beginning of your completely new project on outsourcing – it becomes very important to choose the right outsourcing company. You have to take few things into consideration,
1. Which model are you looking for:
Usually there are 3 different models that outsourcing companies follow:
- Fixed Price
- Per Hour rate
- Per Month rate for individual developer
You can also get in touch with a freelancer to get your work done but I think you have to be extra careful in choosing the right candidate.
2. Do you have a scope of work defined and with what accuracy level
3. Do you have a basic design defined or you would need help on that as well
Going over the above questions in our case, we wanted to know in advance how much money we will be spending – so we were looking for a fixed price model. And because we needed some help with designing as well – we eliminated the individual freelancers. At this point we were looking for a company who can execute our extremely well defined SOW into a reality. Just as a side note the SOW or scope of work is the most important thing in deciding what model you want to go for. If you don’t have a well defined model or if you are still working on it as your project is getting execute I think per hour rate or per month rate for individual developer is a good idea.
The third criteria in choosing the right outsourcing company for us was a break down on timeline and pricing. We had quite few people coming up with a price for the project but no defined timeline, or milestone and pricing and we did not want that – we wanted someone who can give us exact timeline with milestone and payment plans defined. So now at this point our 4 criteria were:
- Fixed Price Model
- A company with an internal design team
- A company who can give us well defined timeline pricing model and dates for milestone
- NDA – it is always in your interest to get the NDA when you are working with an outsourcing company
Because we have connections back in India – we started to look for the company from here in the city that we have lived most our life. We got in touch with the few of those as well. And as we were going through and getting familiar to the process I formed the idea of “HeliDigiZen” – a consulting company who would get you in touch with the right outsourcing company for your needs. But more on that in the next post.
Coming back to the issue in hand – we were having hard time figuring out a few facts and choosing the company so we decided to actually go down to India and meet with few of them to pick the right company for us. And I think that paid off big time. I think meeting the companies in person gave us a much better idea about their employees, their setup, their professionalism and helped us build the trust and communication channels the way we wanted! And that boosted the idea of “HeliDigiZen” further – as I though many of the companies would want to have someone in US to get in touch with so that they can trust an outsourcing partner better and don’t need to deal with timezone differences.
We will go over our experience in meeting with different companies in the next post. But for this one we did go with the company which met all three of our criteria. It was difficult and we did not close the deal until the last day we had to leave but we were able to find the right company!
After opening a bank account and getting everything setup with the company, we decided that we needed to register as an S corp – Small Business Corporation.
Here is how we did it, we filed the IRS form 2553 and mailed it to:
Department of the Treasury Internal Revenue Service Center Ogden, UT 84201
We did a certified mail and kept a copy so we can verify that the form was mailed in accordance with timing restriction.
Here is the reference website,
Once we decided on company name and registration process. We filed the articles of incorporation with Secretary of States – here is the reference website
Once we received our registration confirmation – we needed to get an EIN number so we can open a bank account on the company’s name. So we filed the EIN Individual Request – Online Application. Here is the reference website,
Once we filled the application we were able to get the EIN approval by mail within a few days, which contained our EIN number and instructions on how and when to file the taxes.
At this point we were ready to open the back account. You can shop around for that, different banks offer different benefits and negotiation is always an option. Here is the reference website,
PS: Our articles of incorporation was returned once because we had forgotten to put the address in, so make sure to fill in the information accurately. We also requested a copy of registration – it is an additional fee but we wanted a copy.
You can always consult a CPA or a lawyer to help you with this process.