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.

Cognitive


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.
http://www.juststartit.in/2013/01/approach-to-product-development.html




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.

Persuasion


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.


Thursday, January 24, 2013

Big Marketing Shift

We are seeing a major shift in how people find a business and engage. Advertising is no longer sufficient to drive customers to your business. We are seeing a big shift in how we market our business





Build Communities


Communities for or around your product plays a important role.

There are various ways to build a community. You can build a community around your product theme. For instance, if you are selling a walking gadget, form a community like "Joy of Walking" in social media and through other channels . Engage the audience and  talk about it. Don't pitch in your product directly and try to sell there. You can give out the coupons and through other means you can leverage this community. Forming a community directly with the name of the product is  also efficient in some cases.

Review Driven


First check the reviews and then decide. This is how people now make choices. We check Yelp, TripAdvisor, Play store .etc. for reviews. One good thing about this is if your product/business/service satisfies the customer,  you get positive reviews. So it all boils down in giving a good service (or) doing a great product. Rest of things are automatically taken care of.

Alternatively, you can also form a strategy to get positive reviews,

- Register your services engage and genuinely address the customer concerns in review sites and other relevant forums.

- You can also get the feedback from the customer who walks into the store and assure them you'll address the concerns they've raised. After that, it is very rare they go and put a negative review. It is the human factor of the business.

Contents..Contents..Contents..


Content rules. Put quality contents across channels. Let it be the photos of your business (or)  video tutorial in youtube (or) exhaustive Help /FAQ section in your site (or) posts in facebook/twitter.


More Engagement


Engage more with the existing and potential customer in forums, web sites, groups and social media as much as you can.


Wednesday, January 23, 2013

Explore the ecosystem by working in a Startup

Best part of being a developer in a start-up is you get exposure to core processes apart from coding. Interactions you  have with people from other divisions are mutually beneficial and  in-turn do goodies for the company. To give an idea of what I'm talking about , I'm listing some of the possible interactions you can have in a web startup



With Marketing Folks 


Understand the marketing initiatives and campaigns. Get clear visibility on how and where people interact with  your site seeing the campaign.  With this input you can design your landing page and other things more efficiently and be in line with the marketing goals and expectation of a user. You can also work out on other strategies to create further interest to the user to make them stay in your site.

On other hand, give various insights to the marketing folks on how the campaign performed like the type of  users registered, their demographics, how active are they .etc. Marketing people can use this data to align their campaign and strategies.


With Customer Support Professional


Interact with the support team. Analyze the user's queries, feedback and emails. It gives great insight on the customer's reaction to your product. You can try to address that in your future releases.

Also you can guide the support team on various workflows and help them to answer some specific queries.

With Product Managers/Owners


Interact with product mangers/owners , understand their vision and product development strategy. Give insights to them about user adoption to a feature and other things so that they can take informed decisions

You can check  forum, social media, blogs and other places where people talk about your product to get various insights. You can also set up a Google alert for your product name to not to miss any information on the web about your site/product.

Again it all boils down to your interest to participate. It is perfectly fine if you are interested in only development and coding which is the core of the business.


Sunday, January 20, 2013

Web Product Development - Start it small, Make it Big

How we approach the product development, plays a crucial role in its adoption and success. I have put some pointers here..




Minimum Viable Product


Find out the minimum viable product and start the product development.

For example, if  you want to develop a site like Yelp, then the minimum viable product would be business listing, search and review. Start detailing it and kick start the development. Other features like profile, fans, friends can be added later. Also while doing your minimum viable product, keep in mind the features that are going to come in future and make it extensible as possible

Visualize the Complete Workflow


Always visualize the complete workflow and how they are going to interact. For instance, if you  are going to design and develop an eCommerce order page, take time to understand the inventory, delivery, and support functionality. Think how all these parts would interact between each other to give a better customer experience.

Consistent across Channels


Make sure your customers get consistent experience when they interact with your application through various channels - Laptop, Tablets, TV, mobile, tablet.etc

Customer Experience is the key


Customer experience is a pretty broader sense right from designing the UI, giving them the support what they needed, understand what they expect seeing your marketing campaign. etc. Foreseeing the customer expectation and fulfilling it is the key.

Iterative Model


Product can be alliteratively developed and improved. 

Some example to understand how to think in an iterative way, 

On what level/depth I need to do this functionality/module now?. Can my design 
accommodate the additional functionality in future?.

What level of technology and time I need to allocate for scalability, security, performance .etc at this point?. Can I continuously improve this in future?.

What is required  level of  product operations and support required immediately? . .etc

Remember - Time is crucial!