How to start when thinking about building a website from scratch ?

I will be writing about the familiar part of the flow, the process of starting to build the website from scratch to launch, which comes at a stage after you have validated and ensured that you’d be working on getting the website up.

  1. Get the idea right detailed in a 1 pager. Detail in what the service does and what its not supposed to do. StackExchange has a great example – Area51 (The Staging Zone) go through an elaborate process of where users define what are considered good & bad questions so that it clearly defines the scope
  2. Find and Analyse the competition. You should think about complementing the existing services or do much better than them to avoid people saying “another e-commerce website”. Companies with deep pockets spend money in capturing users and new companies without funding can drain faster trying to keep up with competition.
  3. The process for getting the site out live – I have seen many websites in this phase which I can explain well (both the good and the bad parts). Skipping (1) & (2) might cost you a visible hole in the financials if realised after the fact.

Since you have the functionality listed now, you’d need a lot of other things to get over.

Step 1 – Company and Domain Name:

Determining the name of the company is a challenge since you’d want the search result on Google to get your name rather than somebody else’s. Having the same domain name and company name helps for referencing (startups usually do, others dont).

This is the toughest one if you are looking for dotCom domain since most of the names you can think of are parked or already been setup, especially if you are starting another cloud based product. If you are looking for a local websites using ccTLDs (has impact on SEO), you might be in a better position to get the name you want.

Step 2 – WireFraming:

WireFraming helps you understand the essential items in each and every page that are listed along with the basic user experience of the website.

If you want a different layout for phones, ensure you cover them as well. (The wireframes would be different for phones based on the resolution).

Popular choice of tools: Balsamiq, Pen & Paper

Step 3 – UI Design:

The aesthetics and colours are decided here with dimensions of the components in each of the pages. The non-web designers who do not deal with interactions in the rich-web space do not care about hovers, dynamic content, screens when loading content, image aspect ratios, several fonts, not using default web elements (good and bad).

The most frustrating and annoying thing is they say the site looks like this for a certain text. They do not deal with what happens when text is more or less. (This ends on the neck of the HTML / CSS designer which is found when adding dynamic content to the site).

Popular choice of tools: Adobe Photoshop/Illustrator

Step 4 – Architecture of the service: 

There are 2 schools of thought. Each of these have their own pros and cons

  1. Considering the scaling aspect before starting to code
  2. Scaling when required

You determine how your system looks and what services it’d depend on with basic interactions and information. Ensure your system is de-coupled and clear ownership of the services and interactions between services/servers.

Once decided, it could be good idea to determine which languages/frameworks that would be used. Having a rough estimate about monitoring would not harm the conversation.

Step 5 – Static Site:

PSD to HTML/JS/CSS Conversion is done here with basic interactions and AJAX loading of dynamic content should be mocked to get the complete workflow. 

Step 6 – BackEnd:

The dynamic part of the data comes in now. You integrate with the backend (data in mysql/sqlite) to add dynamicity and display data. Well, you will find more problems here about few interactions and assumptions you made about representation of data in the frontend. 

Step 7 – Others: Social Handles since you would want all of twitter, facebook, pinterest, Google+ where you expect to drive in the social traffic from. 

Step 8 – Sandbox and Staging environments:

It is a good idea to setup a CI or deploy often with migrations in place to help look at the state of the system and changelogs to ensure everything works w/o manual intervention. Capistrano might help with deployments and Jenkins CI would help with making it continuous. The staging environment is usually the replica of production database to test newer versions before hitting production

Step 9 – Analytics & Monitoring:

Prior launch / going live, this is an essential part even on your staging server. At Amazon where everything is a service (mostly), there are lot of alarms. Bad alarms can be fixed, but in a situation of no alarms, its hard to figure out the state of the service(s). This is not just for backend services, FrontEnd services also require monitoring.

Sites like Pingdom offers monitoring of websites from various locations. You can setup your own tracking with Nagios for internal systems like databases or other backend services shared.

Step 10 – Production Servers:

Once you are ready, you go live with the website tested on staging. Prior launch, you would want to perform load testing to ensure you know how many users you can handle and ensure it can handle enough load. Ensure your servers are horizontally scalable for peaceful scaling up and down.

Selecting where to host the servers from a.k.a. Hosting:

Hosting depends on your target audience locations. It seems that the server response time impacts SEO. The choice of scalability options with the now popular IaaS options like AWS EC2 / RackSpace or take a PaaS like Heroku or AWS Beanstalk which scales based on pre-set parameters. Speed is all that matters for the customer to wait for your site to show up.

These are the few of the common steps required when building a website from scratch. Also note that, SEO is important too for the website to be search engine friendly.

The Indian E-commerce – Part 1

The current trend in India is e-commerce websites. MySmartPrice (a price comparison site for Indian e-commerce sites) compiled a list of 343 websites (as of May 2012). There are more than 813 seller listings on Junglee.com. There are so many that are not listed 

I found 24 websites(as of April 2013) which do the aggregation of prices from pretty old to the latest Indian e-commerce websites. I found all these through a quick 15 minute search. Well, Junglee is the most famous because its made by Amazon. A base for attracting customers towards amazon.in probably.

From my personal experiences of searching for books and buying in the last 2 months of around 10k spent in total.

Flipkart has a great service, Literally a 2-day delivery to Hyderabad. Though an incorrect pincode might lead it to a different city which you should ensure before clicking on ‘Order’.

SnapDeal spends a great fortune to speed up the site to everyone. Their customer service is a nightmare when you email them. They get back to you only after few days and they prefer to talk to you over phone for things that can be done on email. Adobe and Akamai services for their websites.

Infibeam still offers free shipping for any price and had a headstart on getting up 3rd party sellers.You cannot move an item from the cart to a wishlist.

BookAdda has a lot of books in stock which I needed (OReilly books and Pearson) for a fairly lower price tag and in availability. I had many bad experiences with the website like losing the items in the cart. 

BuyThePrice was shutdown about a month ago.

Shroff Publishers displays the wishlist (w/o truncating it) and items in cart on each and every page. The shipping costs you about 30% more to the value of items in your cart. They use DTDC ( the not-so great courier company which takes 2 days to deliver a package that is < 1km away from the target). You can create a wishlist even though you are not logged in. ( No other site Indian e-commerce does that currently)

The big sites (Flipkart, Infibeam etc) have their own e-commerce setup, the smaller ones use existing solutions which not so great options for tracking the package or estimates. 

The checkout process of Flipkart is a great one. Flipkart has its own Payment Gateway which helps it with the customer experience. PayTM is something that is worth mentioning in terms of UI and the payment gateway experience. You can pay with ease less the frustration brought to you with CC Avenue/HDFC Payment Gateways. I remember selecting the country from a big list. At the least, It could save the billing address from the history or cookies or even look up based on IP to set the country appropriately. I remember the pain of typing my address and multiple forms for each and every payment I make when I renew my domains. 

There are also quite a few payment gateways being created. There are websites being created like Stripe in India. juspay has a highly identical user experience and APIs 🙂 Indian websites – if you want to know how not to do and the most frustrating side for customers – choose CCAvenue, if not, choose something like Flipkart/PayTM does. 

The toughest thing to solve in a PG is Fraud Detection. I am not sure if PGs in India have to deal with fraud. I have an e-mail from CCAvenue(through a merchant) that it does not pay the merchant if the bank does not release the amount. Paypal used to run in huge losses because of bad/no fraud handling. Amazon does ship the item to the customer only after it goes through an initial Fraud Check).

Finally! The Blog

I have been planning since over an year to restart writing a blog on few other domains I own. And I lost count how many times I procrastinate writing (and working out too). Finally I am the owner of the awesome domain sairam.com. (yay! dot com, but just when ICANN started the new gTLD revolution) I set myself higher priority this time for writing and reading now that my past project (Bookish) was launched in early February 2013.

I have learned a great deal on things while working since the past 5 years in a product based multi national corporation and a service based company. (Past is past, I dont want to get there now.) Starting March 2013, I have been experiencing rather an unexpected life every day. Rather than a fairly straightforward job, I am looking forward to a new life as a freelancer 😀