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.