Tuesday, August 11, 2015

Ask - Why? How? What?

Do you ask these questions  when developing a consumer internet application?

Why a User  has to use my application?

How a  User identify my application ?

What  actions Users do in my application?

By finding the answer,

You can understand the user's motivation in using the product.

You can understand the user behavior.

You can measure the performance of a campaign and see which suits.

You can visualize the user data with different dimensions like demographics, device .etc

& many more.

All these findings leads to a better Customer Analytics.

Customer Analytics aids the product strategy,  product road map and overall product management.

Sunday, August 9, 2015

Product Management Checklist

How you execute the project, best practices you follow is crucial for overall success of the project.  I'm sharing here some pointers for a better product management. I write this more on a consumer web/mobile application perspective but it can be applied to other kind of projects as well.

Lean Startup  - Understand the Lean Startup & Lean UX principles. 
Specifically understand these things - MVP, Continuous Deployment, A/B Test, Build Measure Learn.

Take Decisions & Release Early  - Take decision fast.  Have a shorter iteration and release early.

Metrics & Forecasting  -  Maintain a simple project metrics which conveys the overall progress of the project. What I mean simple here is have a document which have only the crucial metrics which track project deliverable, user adoption .etc. You can have a metric on various levels depending on the business but have this as a separate document where everyone in the company can easily relate to  and understand. Similarly have a project forecast document. Things can change quickly but keeping this in place can avoid unnecessary deviation from the product priorities.

Single Team - Its time for the designers, front end developers,  back end developers, business analyst, marketing folks to work together in a single team.
Lines between the functions are getting blurred due to change in business models and technology.

Place for new ideas and innovation - Create a culture in your team to share new ideas, new business models and talk innovation.   

Edge Cases - Make developers think about the edge cases in a project. Imposing test cases and code review helps to achieve this.

User Journey & Workflow  -  Make your team to think in terms of  a workflow and user's journey  with your product.

Code Review -  Code Review is a must to have which can increase the overall quality of product and improve developer productivity.

Analytics as stack -  Have analytics as part of your project stack as you have front end, back end, database .etc. 

Benchmarks -  Maintain a benchmark for Performance, Security, Usability .etc from start and improve iteratively.

Refactoring & Iteration - Refactor when necessary. Particularly this is very crucial in initial phases of the project.

Quality Expectation  -  Have a quality expectation in your team. Most likely everyone adhere to it.

Automate -  Look for automating the processes wherever you can. Use CI.  Automate - builds, testing.etc

Move Fast  -  Team / Companies that move fast succeed . Take decisions, measure & move fast.

This is all I have now.  I'll add to this list if I there is anything I missed out..

What to choose?. Java, Javscript, Python, Scala ... - Feeling confused?

When you start a new project, the important question  pops in your mind is choosing the technology stack.

This blog post is not about comparing  different languages and databases rather I'm going to highlight some general principles and understanding which helps to take a better decision in choosing the technology stack.

Think as modules /components

Different portion of application can use different language and database. Visualize your application as a group of components, modules and services. Now choose the best technology which suits your need.

I'm just listing down some possibilities for using different technologies  in same application

You can have a web-service written on Java, Some can run on Python
You can use Node JS/Javascipt on server side.
You can use Javascript framework like Angular JS for front-end
You can use Python for the scripting needs.
User data can be stored in MongoDB,
Cache data can be stored in Redis,
Analytics Data can come from Redshift.
You can implement your search layer using ElasticSearch.
You can use Big Data technologies like Spark, Kafka .etc for your data processing requirements.

How to approach?

Approach like this to take better decision in choosing the technology.

What experience I'm going to give to the end user?. What problem I'm going to solve?

List down the workflows, use cases, performance requirement, access patterns. (Access pattern may be the types of queries, query frequency, is it dynamic? .etc)

Now see which language, database, tools, framework suits your need.

Your team's current tech expertise is also an important factor to consider but create a atmosphere where they are open to new technology and willing to try it out.

Product Architecture  is important

How you architecture your app is very important.  Generally  it is the architecture which scales not the language. Also how you architecture makes your application maintainable in a longer run. For instance choosing between Java (or) Scala  may not relate to project's overall success.

Comparison with successful products

You may come across people saying, "Even Facebook uses PHP as back-end". "Netflix uses Microservices" etc and try to apply to your project . But the level of optimization they do, expertise they have for it and the maturity of their business model  is important factor to consider. You can consume these kind of information but apply whichever suits your project.

For example, you can take a middle path between monolothic and microservice. As you project matures  you will be in a a better position to convert it completely to microservices.

Refactoring is not harm 

If you able to get traction for your  project, you can always refactor your code . Even big companies do it often. Refactoring  is not harm.

Thursday, July 9, 2015

Are you curious about Data Sets to deliver better Analytics?

Analytics should be in your project stack similar to other parts like front end, mobile, web services, databases.

Now what curiosity has to do with Data Analytics?. I believe  a general curiosity over data set is the starting to deliver better analytics which in-turn helps to take better decisions in product management and development.

Let's take some scenario,

Scenario 1: You get data set of student information from a university since its inception.

What you can think of?.  Do you get curious and visualize various insights like -

To see how year wise performance of students vary..

To see how students joining from various demographics vary and what impact does it do with performance..

To see how to use other readily available data sets like government released dataset to get meaningful insight..

There are many possibilities. Next steps is to do data collection, transformation & Analytic on top of the processed data.

But the starting point is to get curious and think about the possibilities and new ideas.

Scenario 2:  You are are developer in a internet startup and have access to back-end datastore. Do you get curious to see,map the data and see how things going?

You can get many meaningful insights like below by just doing a simple mapping of the user actions from the available data-sets.

What is actual impact of a marketing campaign?
What is the usage pattern?. Can we able to understand costumer experience & behavior?
Do the signed up users are active?.  When they are active?
Can we compare with other dataset like Google Analytics?

Again the possibilities are more. Logically the next step is to use a right tool.

Get Curious, Do better Analytics.

Wednesday, August 27, 2014

Packaging strategies can break or make your business

How you package the offering is the most important aspect of  any business.

I explain packaging with two successful product. I follow dropbox and dropcam from their beginning stage, I use dropbox regularly. These products package things to make it more attractive though their core offering is not entirely unique.

When dropbox came, there are many products out in market to store your data to the external server and cloud. But seamless integration across devices, free plans to go and simplicity makes Dropbox, a compelling product. In case of Dropcam, many products were selling monitoring video product, but packaging things like connecting to WiFi, live streaming, cloud storage and ecosystem make it a compelling product. How you package your core service with other things matter most to make the product successful.

Packaging is not limited to digital world, it applies to all type of business. You may run a physical store, a gas station. Now, to make your business distinct from the crowd and to make it successful you need to think and work on your packaging part along with your core service.

Wednesday, July 23, 2014

Tweaking Agile/Scrum

I'm working with agile/scrum methodologies for quite some years. Generally I like Agile/Scrum , but I think some of its aspects can be tweaked to suit better.

First, I share the problems I see with agile. Especially, this is very important when you are doing a new product (or) development

1) Free thinking, experimenting environment and sharing ideas can become limited as individuals concentrate more on their current user story and tasks on hand.

2) May not fit everyone's working style.  I will explain the "working style" what I'm talking about.

Take, Person A, Person B working on your project. Now, the way they approach a same problem may be different

Person  A   -   do research --> read through API's --> do the coding--> quality deliverables.

Person B    -   do some dirty coding --> read API's --> make something works --> do the coding --> iteratively improves --> quality deliverables

Here we are more concerned about the output rather than their working style, the last step "quality deliverable" is important than anything else. We need  to see how we can make the agile/scrum fit with the different working style's like this.

3) Problems in Time sheet. I have explained about this in detail below.  Though, Time-sheet may not be tied with Agile/Scrum entirely, I'm sharing as a general perspective of product management.

4) Visibility to big picture related with company, product, vision .etc are limited to selected few who do the tasks like sprint planning.

What we can do?

I have put few suggestions to address these problems

Sprint Planning

Macro thinking, Big Picture, Overall Business/product objectives has to be part of every sprint planning meeting. Tell them where this sprint  fit in overall business/product goals. In this way, everyone get motivated towards the task in hand thinking the big picture.  It also encourages innovation, new ideas and out of box thinking from team members.

Daily Sprint Call

Daily sprint call  need not be a place to discuss only about your current sprint and work. Don't make mandatory for team members to share the status of their current work unless there is a real dependency with other team members (or) something important to share. Again, creating daily dependency between project members is not a good project planning.  Daily sprint call can also be just a causal greeting and discussion with coffee.

Time sheet

Time-sheet may be needed to see the effort spent by project members which may be needed for some  metrics (or) to raise invoice (or) for other organizational needs.

This is my take on time-sheet

1) Time-sheet need not be a daily task of the project members.

2) Encourage developers to track the things they are working daily which helps to fill time-sheet end of sprint (Most sprints are fortnightly). So in a way,  it fit's everyone's working style I was talking about. Also, it will not make them to fill just for the sake of filling.

3) Don't put micro tasks with micro time which are trivial. For example, from software development perspective, don't create a task like 'Installing xyz software' and put 1 hour for that .  Idea is overall output from a project member is important  rather than tasks in daily time-sheet.

4) Let the project lead/manger and team member sit together and fill time-sheet at the end of every sprint.  By doing so, it helps to get consistency and uniformity. It also helps in getting useful metrics and  make things more readable,manageable for future references.

Monday, March 31, 2014

Pattern Mining - The crucial link for your product alignment

Patterns emerge from the way consumer interacts with your product.  These patterns tells how users use the product  to do what they want.

Now, do your product stick to the existing patterns? (or) you go and seek for new patterns and trends?

The product has to evolve with new patterns and possibilities. Sticking to a pattern may make your company/product complacent. For this, You have to hunt and mine for new patterns. Based  upon the new patterns, you can alter your existing offering (or) you can give entirely a new offering.  How fast you align the product with external circumstances and audience sentiment is more crucial than ever before.

Now, how you can mine a new pattern?. Some of the possible ways you can to do this are...

See your customers - Data Analytics

See your customers. See how they are using your app.  For this, Data Analytics has to be part of your product development and management. For efficient data analytics, you need to have a good data set
and customer actions has to be captured with efficient logging .etc . So Data Analytics has to be factored out in product design and development.

Talk to your customer

Go and just talk to some random customers. You'll be surprised to get more insights by knowing how they are using your app and the suggestions they give. It would be even better if you able to segregate your customer segment something like - customer discarded your product, customer actively using your product, new customers, customers from different locality.. etc. and talk to them. You can do this as an monthly exercise.

Mine the pattern from the outside world 

Seek the pattern in the outside world.  This can be general consumption of information in your space (or) through a proper  research conducted by surveys and feedback.

Follow your competitors

Another way of doing this by following your competitor (or) the companies in your space.  If you see some trends, you can also align with the that.

For example, Facebook introduced places which is similar to Foursquare Checkin, Facebook introduced hashtags which is from twitter

Crunch data to get insights

Crunching and combining the above data points helps you to mine new patterns which guides your overall product alignment.

Apart from these data points, your ability to foresee the things and your intuition also helps here.

Why we need?

New trends and patterns are emerging very fast and your product/offering may become obsolete sooner than before.

Who needs this?

  • Even if you are a start-up (or) an established player, you have to do this.
  • Do this even if your business is doing good (or) you are a leader in your space.  At times, you miss the changing tide and things may change very fast.
  • Do this if your business is not doing good. Even a small change in your offering may work in your favour.
  • Also mining new patterns is not something restricted with product development (or) product management alone.  For example, digital marketing is becoming more dynamic. Your strategy for last month may not work this month. You may need to sell entirely in a new Platform. So you have to mine the patterns and see the trends here as well.

May be,  BBM could have achieved what WhatsApp did. (or)  Nokia could have capitalized the smart phone market if they aligned their product strategy and offering at the right time by mining the new patterns and see the trends.

Saturday, January 18, 2014

Proposing - Context Intelligence System(CIS)

Website/App has to adapt and behave in accordance with the Context. I'm sharing a design  idea of  a software component to achieve this context aware behavior. For now, I name this component as "Context Intelligence System(CIS)".

What is Context?

User may be a registered user (or) who visits your site without signing in which can be identified by a cookie.  User's are mapped to location , device,  time stamp, social media data, interests etc. to form a context.

Context can also be any other circumstantial data relevant to the product. For example,
- User Affinity to the product  like first time user, active user can be a context
-  Data from outside circumstances and surroundings which are relevant to your business.  For example, weather data, stock market data etc. can also be part of a context.


You can see from above picture, CIS has two components - CIS - Data Store and  CIS -Engine.

CIS - Data Store

CIS will be the central location for all context related data.  Below I have listed down the various types of data that can go into this CIS datastore.

This is a sample data set, selection of this data are highly specific to your business.
1) User location, device, time-stamp data are stored and manged here.
2) Data from your third party data stores like Janrain(user social media data) are pulled and stored here.
3) External available data like weather information, stock market data.etc can be stored here.
4) User actions, User Product affinity are aggregated and stored here.
We can use Hadoop or any other big data solution to collect, crunch and store this data.

CIS also captures and mange the data real time when user interacts with your app. Real time data can be device info, location info .etc

CIS datastore has very good data-set, so this data can be used by other components in your system like recommendation engine, BI.

Point to consider  - Data Duplication.  Make careful decision when you have a requirement to duplicate the data from original data store.

CIS - Engine

CIS Engine is the core component of CIS System.  It performs the below operations

Context specific API Facade

CIS Engine add context specific parameters to your API call via API facade layer. CIS gives personalized context aware behavior to the API.  ( You can read this eBook to know about API facade -http://apigee.com/about/content/api-fa%C3%A7ade-pattern)

For example,

We can pass the context like device, location to the API call  to make your API context aware.
Search API call for the default search page can have items related with the context.
Notification API call can get the context (device =mobile and location) to display context aware notification

Context Rules

CIS Engine have context rules to perform context specific decision making.

For example,

Rule1 - If the context = (device=mobile) --->send notification about the nearest store offer.
Rule2 - If the context = (location=Boston,weather=raining) ---> run the Google Adwords campaign in this locality for a product/food that people like in rainy days.
Rule3 - If the context = (action=discarded shopping cart) ---> send the mail and run the re-marketing campaign
Rule4 -  If the context = (user affinity=first time user) ---> display the notifications for first time users
Rule 5-  If the context = (user affinity=active user, location=Los Angeles) ---> roll out a new feature (This helps to roll out a new feature for selective audience.)

Rule2 talks about Google Adwords. Google Adwords provides API's to manage campaigns. Here depending on a context, you can pause or restart a campaign.  Campaign management can be automated to a extent to be in-line with the context. ( Other marketing platform like facebook, twitter works in similar way.)

Adaptive User Interface(AUI)

Adaptive UI/ website itself is a broad topic with separate design patterns and principle, so I didn't put the adaptive UI design in this CIS scope. As CIS stores and manages all context information, I believe it can also manage the functionality/code for adaptive website. 

What's new about CIS?

Having the context aware system at the center place helps to better mange, have control and visualize the things. CIS gather all useful information about users, actions, context at one place for better decision making and applying rules. Like any other development, you can build CIS iteratively and improve.

This is the initial design of CIS and there may be scope of improvement.

Tuesday, January 7, 2014

A simple solution for better product development and management

I'm coming to my point straight, the simple solution I mentioned in the title is "Right Metrics". Having-  "Right Metrics" results in better product development and management  It may look obvious, but many didn't get this right. . We all have some type of metrics to track our product development and  progress. But whether our metrics are in-line with the product goals?  Does it reflects the actual reality?.

To explain this, let's take an example that you are going to develop a youtube style app for kids called "KidsVid" and assuming you have enough resources to start your project.

I'm giving you some fictional situation to explain what could be a Right Metrics in this product life-cycle.

Situation 1:  Product Development Metrics

Suppose if you are taking the metrics after first month to track the progress on the product development of this KidsVid app, the metrics has to reflect the progress on core aspects of product development like.

1)  API  Delivery ( All product functionality are exposed as API)
2)  Product Spec Delivery
3)  Zeroing of Minimum viable product
4)  Wireframes, Design documents and delivery for UI
5)  Product Technical Framework
6)  Core Technical  block of  the project like adaptive website, video streaming .etc
7)  Delivery of workflows and modules which are in-line with your spec (or) minimum viable product.
8)  Implementation of best practices like product management tools, test driven development, continuous integration.etc

These metrics are highly specific to your project and business. But the core idea here is get the metrics that matter.

Situation 2:  User Adoption Metrics

Now assuming you have successfully launched your product  and you want to see the user adoption for your product. Metrics which talks only about  user visits (or) sign up with your site is not saying the entire story. Your metrics has to reflect - how many users actually using your product , what actions they performed .etc so that you can track the real user adoption. Basically your metric has to see from different dimesionsions

Situation 3:  Analytic Metrics

You may want to see the analytics of videos in your site. Here, Video Retention Rate is the right metrics to have rather than  just tracking how many user clicking the video.

Having a right metric helps to track the actual progress and adoption of your product.  A Right Metric has to tell the truth in simple terms.

Sharing some tips on having right metrics.

Dimensions and View Point

We have to see from different dimensions and view points to have a right metric..

Dimesions - Dimension covers all aspects of a situation/problem. Product Development Metrics cited above covers different dimensions of product development.
View Point-  We have to see from the view point of customer, developer, product owner, business .etc.

Time Period for Metrics

Preparing the metrics may not be a day-today activity for all use cases. For marketing, it may be daily. For Product development metrics, you can have it monthly . This time period  also plays an important role in having a right metrics.

Accept the Shortcomings

If your  are not satisfactory with the metrics, just accept the shortcomings. Especially this is very important if you are at a higher level of your organization like investor, advisor, cxo, co-founder, product manager. etc.

Improve Iteratively

Good if you are not satisfied with the metrics.  Now go-ahead and create appropriate tasks for your team to achieve a satisfactory metric, thus you are iteratively improving to build a better product.

Get your metrics right to build a successful product with a wonderful customer experience!.

Tuesday, November 26, 2013

The C factor!

If we receive wrapped gift, it generates a curiosity in our mind. It gives sense of mystic feel to the whole experience. Can we use this type of curiosity factor to create a genuine interest in the audience mind?. Understanding user behavior plays a role here. (  Related Post - Psychology in Product Design : http://www.juststartit.in/2013/02/psychology-in-product-management-part-1.html)

Let me give some examples to explain this.

Consider the below headlines in a news/content website.

Headline1 - Tom Cruise has Date with Laura
Headline2 - Check who's dating Tom Cruise

Naturally Headline2 triggers more interest than Headline1 and prompts us to click the article.

While writing this post,  just came across this article in Mashable -  "World Leaders Tweet Support for Iran Nuclear Deal — Except One"  ( http://mashable.com/2013/11/24/iran-nuclear-world-leaders/). This headline triggers an interest to read the article to know that person.

In another scenario, take a link inside a website

Link1   -  Get 10 % discount on purchase
Link2   -  Click and claim your discount.

Likelihood of clicking the Link2 is more .

This also applies to marketing emails where an apt subject can trigger curiosity to open and read the content. But  we  need to make sure not to use this everywhere  and make the entire product/website mystic :).

This curiosity factor plays a role predominantly in marketing and in designing the content. But we can explore this curiosity factor to use in workflow and in UI to generate interest.

As with any other technique, it all depends on the context and implementation. 

Saturday, August 24, 2013

Recommendation - Its all about the possibilities

Recommendation engine plays a crucial role in consumer websites/apps. Some applications like pandora are driven entirely based on the recommendation.

If we  take an example of consumer website like eCommerce, news website., there are various factors that can be taken into account for recommendation engine development.

I'll list down these possibilities for a better understanding and share some tips on implementation...

Collaborative Filtering and ML

Recommendation Engine can leverage Machine Learning frameworks like Mahout  for the below types of recommendations.

User Based - Recommendation engine can give recommendation by mapping the similar user and their preference.

Item Similarity - Similarity between items are calculated and recommended

User based and Item Similarity recommendations comes under Collaborative Filtering technique.

Content Based - We can compare the attributes between items and users to provide similarity. It is especially useful when we don't have sufficient data to perform collaborative filtering. We can use some similarity algorithm from ML library like Mahout or we can use search system like SOLR for this.

Clustering - Clustering techniques can be used to group the similar items

Other Possibilities:

Below I'm listing other factors that can be considered for recommendation. I believe these things are more intuitive and we can identify them when we see from an audience view point.

Out of user boundary / Opposing Views -   We can recommend something fresh out of an user boundary.  Something user never explored before. It can also be a content from others with opposing views.

History - Recommend an item by tracking user's viewing history. Views can also be tracked by a heat map or attention to particular area of web page by the user.

Top selling  Items - Recommending Top selling items, Top 10 items .etc

Trending Items - Trending/Most shared item in social media like facebook, youtube, twitter

New Releases -  New release may trigger user interest. This is highly relevant in fashion world.

Friend's actions - Recommend an item based on the friends actions by leveraging social media. But this is not always relevant. I may not want to buy the same shirt my friend wear but I like to read the news he commented.   In the section  - "On Implementation" - Uniqueness and Weightage talks about this

Location based - Some purchase decisions may be location based. When a user located in Mumbai and if it is a monsoon, we can recommend rain accessories applicable to that location.

Map user personality - We can map user personality  and recommend an item. We can pull information  from social media sites like likes, favorites etc and map the user personality. We can also map a personality by mapping user's past actions with the product. A hybrid of both approach also works.

Personalities can be like this - One who try new things, One who spend on premium/expensive stuff,  One who always purchase on deals .etc

Time based - Decision making may be different from starting of the week, end of the week, month starting. etc.

Screens - Recommendation may be different on various screens like laptop, mobile, tablet. For example, if your customer using your mobile app and you able to access his location, you can recommend an nearest store deals, distance to nearest store .etc

Still there  may be many  things to factor, more techniques &algorithms that can be useful to give a better recommendation to the user.

On Implementation

How to factor all these possibilities on the implementation?. I'm sharing some tips on the implementation front...

Unique Approach -  Unique approach for each usecase. If we take this recommendation example, recommending an article in news website is different from recommending a shirt in an online apparel store.

Hybrid Models-  Combining the various approaches/possibilities may work. Here we can combine multiple ways of recommendation.  It can be a combination of user based  +location based +something else.
Its not always Yes or No, try to find alternative paths.

Weightage - Weigh the features, have a strategy and incrementally build and release the features. For instance, you can build the basic recommendation engine using item based or content based and incrementally add the features based upon user testing and feedback.

Right Metrics - Have a right metrics.  For the above example, the metrics would be how a consumer reacts to the recommendation, what is the change of traffic pattern .etc.

Place for Experimentation - Have a place for experimentation. Check and measure with labeled or test data. You you can also experiment with A/B testing to test which approach actually works better.

Wednesday, August 21, 2013

Going Lean will save your time in Software Development Lifecycle

Eliminate wastage is a Lean software principle. In the software product development life-cycle, we can avoid the wastage of time and resources in many ways and in-turn we can invest our time productively in building a product and give a better customer experience. This post covers some basic things we can implement in project to save our time and  also improve the overall quality of the product.

No Grepping

Having a better log analysis and monitoring mechanism saves overall project time. Don't waste time in grepping or FTP ing the log files. You can have a look on Splunk Log Management (http://www.splunk.com/view/log-management/SP-CAAAC6F/) to get an understanding of log collection, analysis and monitoring. You can also build your own implementation.

Some technical pointers if you want to build your own implementation..

Log everything in same time stamp, preferably UTC.
Have a common  log data  format everywhere from server logs, audit logs, application logs. etc.  Explore JSON logging
Log Processing - Check Logstash (http://logstash.net/).  Hadoop can be used in specific use cases.            
Searchable Log Repository - Elasticsearch. can be a good choice
For Analytics and Insights - You can use Pig/Hive, Hbase, RedShift, Impala, Google BigQuery  or any other relevant tool
Have an alert Mechanism for important events specifically on error scenario, suspicious events.

Searchable Product Repository /WIKI & moderate it

Have a product repository with WIKI along with a good search feature (Example: https://www.atlassian.com/software/confluence/features). Don't maintain the project documents in the file system or in version control systems like svn. Lot of time would be wasted in searching  and maintaining it.

What can go into this repository?.

- Project functional/ requirement documents
- Technical/architectural documents
- Specific problem encountered during development and ways to resolve .
- Reason for technical /functional design decisions
- Important project/business insights
- Research documents
- Problem encountered at system level( Examples: Memory /Space Issues in the environment) and the resolution
- Environment related like server information, background processes .etc
- Code Workflow

and any other relevant documents

Have this repository without moderation is of no use. Avoid unwanted articles dumped into it and maintain the overall quality.

Don't be a human keyboard

There are tasks like this in every project

- FTP ing the files
- Clear temporary files to retrieve disk space
- Monitor the CPU/Memory
- Apply software patches
- Install software
- Replicate the environment
- Look something specific in logs and alert

 Build some handy tools to accomplish these types of task. Automate the process if necessary.

Continuous Integration, Deployments - with automated tests

Automate the whole deployment process and have a continuous integration. Use tools like bamboo (https://www.atlassian.com/software/bamboo)  for continuous integration and to create build plans. No manual intervention should be there in any build and deployment process. Also have your tests integrated with the build process.

Test Suites and Test Plans - Do wonders

  • Have a clear strategy when creating TestSuites, Test Plans and Unit Tests.
  • Create specific test plans for various tests like Smoke Test, Sanity Test .etc.
  • Schedule to run the test plans automatically. It helps to see the problems pro-actively and also saves considerable time in a longer run.

You can use the bamboo tool mentioned earlier to maintain the test plans and scheduling.

Code Review - A must to have & better with a tool

Code Review should be part of the development. Have a proper tool to collaboratively review and add comments. (Example: https://www.atlassian.com/software/fisheye/overview). It helps to saves considerable time in longer run and also increases the overall quality of the product.

Think beyond opensource tools

Invest in tools like Jira, wiki. etc (or)  which ever tool you can afford. Just compare the licencing cost (mostly it is pay as you go)  with overall productivity you are going to get. Also compare the cost per hour you spend for a developer with the hours eventually the tool will save for you.

Monday, February 25, 2013

Consumer Psychology in Product Development Lifecycle

Understanding Consumer Psychology plays an important role in all stages of product life-cycle.


We need to understand what user perceive and factor that into product design.  Cognitive psychology plays an important role here. If we able to foresee the customer problems and their expectation for our product, we can give a better customer experience.

I my  previous posts, I have talked about the Customer Experience in general.

Small Things  makes Good Impact

Often small things makes a good impact with the users. Some examples below,

 1) A personalized email with a name rather than 'noreply@xxxxx.com' gives a sense of comfort and closeness with the product.

 2) A human face in a web page triggers a positive emotion.

 3) Choosing a color, theme in designing the pages conveys a meaning to the product.

 4) In branding, a tagline plays a vital role and  decides on how customer relates with the product.
Some good taglines: Disney – "The happiest place on earth": Kit-Kat – "Have a break. Have a Kit-Kat.".

 5) Increase in response time by some milliseconds on a crucial page may impact the overall conversions.


We need to persuade the users to buy our product or to sell our services. There are some basic principles of persuasion coined by Robert Cialdini

I have added examples in the context of a web product.

  • Reciprocity - People tend to return a favor,
 Give a free (or) trial version. They return a favor by buying them.

  • Commitment and Consistency - Once people commit to what they think is right, orally or in writing, they are more likely to honor that commitment.

 If  there are constraints like age, location to use a product, we can make the users to declare and accept a form. Majority of them will not violate after this commitment.

  • Social Proof - People will do things that they see other people are doing. 

Show what  other people have done with your product. It can be a review or a detailed case study. It gives a sense of confidence and they get involved.

  • Authority - People will tend to obey authority figures.
Tone of FAQ and other important sections of the site can be in a little authoritative tone.

  • Liking - People are easily persuaded by other people whom they like. 

People tend to get interested in a product if it is reviewed or bought by people they like. Social Media can be leveraged here.

  • Scarcity - Perceived scarcity will generate demand.
We often see 'Limited time offer' (or) 'Limited items available'. It uses this principle.

I believe this article can be a starting point to think in the perspective of  psychology and consumer behavior

Tuesday, January 29, 2013

Really inspiring Reality TV

Reality TV is quite inspiring for their creativity and ability to sell anything from cooking, mining to house renovation.  Do some of these programs have common traits to make it appealing?.  I'm explaining this with the reality TV programs which I have watched in recent times.

Pawn Stars -  It chronicles the daily activities at the World Famous Pawn Shop.         

Property Brothers - Where Identical twin brothers  help home buyers to purchase and renovate homes                                                                              

Kitchen Nightmares - In which chef Gordon Rams spend time with the failing restaurant to revive the business.                          

Some emotions are common to most of us. These programs capture this to make it appealing. We get involved independent of theme and the background of the program. I have listed down some commonalities .
. .

Detailing with interesting stories 

We love stories.  Detailing it with interesting stories creates a genuine interest with the audience. In PawnStars, when someone walk into the store to sell an article, we hear stories and background about that article, which creates a curiosity and interest.

Show the difference of opinion

There is a difference of opinion and people debate in these programs.  In PropertyBrothers, couples have difference of opinion on which house to choose from the given options. Audience align to someone's view point due to this difference of opinion.

Build Anticipation

Audience likes a suspense factor.  In "Pawn Stars", there is an anticipation on how much the article actually worth. In "Kitchen Nightmare", there is an anticipation on how customers would react after the renovation of the restaurant

Capture the Emotion

These programs capture the emotion and make it more dramatic as possible. In PropertyBrothers, we see the happy emotions of  the couple after they found a home of their dreams. We also see the furious emotions of employees of the failing business in programs like Kitchen Nightmares.

Certain things doesn't seem to fall on patterns. But when we relate and visualize, we can see some common traits and patterns.

Saturday, January 26, 2013

Jumpstart to Big Data and Cloud

These guidelines and approaches are targeted for first time users of  Big Data(Hadoop ecosystem) and Cloud. "Cloud" here refers to public cloud  services like Amazon AWS

Big Data - Go with the Hadoop distribution

Start with the hadoop distributions like cloudera, hottonworks.  These distributions comes with all the required dependencies and packages to work. You also get an admin console to check and mange your hadoop cluster. Avoid setting up the  Hadoop cluster on your own unless absolutely needed. For development purpose, if you want to work on your windows machine, install a VM player and use the Cloudera distribution on top of it.

Big Data -  Use  Map Reduce Programs only when necessary

Do your development using Pig or Hive for your big data map reduce problems. You can handle most big data uses cases with these tools.  Don't write your own map reduce part unless you have very specific use case that cannot be handled by these tools

Big Data - Use Cloud to scale

Make your code run on your local distribution(cluster) like cloudera. Your local distribution can be of any size. You can use this for your development and test your code.  If you want to scale, you can check cloud options like amazon EMR. Important point to remember  is your big data code for data crunching,  recommendation.etc are not going to change much if you want to  run in cloud service like EMR.  If you read the documentation and follow the steps you can set up your code in the cloud in no time.

Big  Data - More handy tools

There are many handy tools and connectors available in this space. Always search for the options before you start doing  your development. For example, part of your big data problems, you may have a requirement to export the data to database. You can use a tool -  "Sqoop" for this purpose instead of writing your own.

Big Data - Understand the Use Cases

Understand all the use cases where Big Data fits in your application assuming you have large data set.

Some use-cases I have listed here for your understanding..

1) Counting and Grouping

Example: Grouping a user based on some criteria, Counting the most visited page. etc

2) Filter the data set using some parameters.

Example: Get the user list who accessed your app via Iphone.

3) Process, Filter the data and combine with various data sources like RDMBS, Mongo Db

 Example: Get the user list who accessed via Iphone and get those user's profile details from mongo db.
 Process the message with these details and put a entry into the Email delivery table of some datastore.

4) Analytics, Recommendation algorithm

Example: Finding the related items and recommend to users. What Amazon and other sites do. You can build a big data analytics solutions using Hadoop.

5) Data Pipeline ETL

You can crunch large data set and transform and store it in some data store for anlaytics.

Analytics, Machine Learning  problems are not entirely dependent on Hadoop/ Big Data 

Analytics, Machine Learning problems are not entirely dependent on Hadoop/Big Data.  Machine learning libraries like Mahout  have specific distributed algorithms which can leverage Hadoop/ Big Data for processing huge data sets. It can work without Big Data/ Hadoop as well. So learn and understand the algorithms, check which suits your need without worrying the Hadoop part.

Cloud -  Just start using it

Cloud providers like AWS abstracted the underlying virtualization part and they made easy for the end users. Read the documentation, best practices and you can start using it  without worrying much about the underlying implementation. Don't consume so much information(lot of information available in this space) without proceeding with your product/project goal.. More can be learnt, great insights and knowledge can be acquired as and when you start using it.

Cloud -  More offering apart from Scaling and Cost

Cloud services like Amazon, Rackspace are not only usedul to scale your app or to reduce the cost. You can  explore their ecosystem and check various services they provide with storage, cache,CDN .etc and leverage in your app

Cloud  - Things Fail.  Don't investigate. Have a fail-over strategy

If a instance or virtual machine fails,  hardly you can restore it.  Have a good failover strategy(Load Balancers, Backup.etc) .

Cloud  - Application Abstraction Layer

Have a abstraction layer in your application wherever possible when you use cloud services like cache, CDN. etc. All your program interacts with this abstraction layer and real implementation should be hidden. So there will be minimal change,  if you switch over to a different cloud provider in future.

Cloud  -  Collect Metrics and Analyze

Collect the essential metrics, analyze and check how your application performs in cloud. Amazon has a excellent service - CloudWatch for this. Even you use best practices, it is better to analyze how your application performs in cloud and do the necessary tuning.