What should MVP do

MVP is minimum viable product. But what is minimum? Minimum means:

“Base use-case of the best customers”

This is the first thing that a company should identify and solve. Who are my best customers, what is their base use case. For example that is how Uber started. They did not start with offline booking to serve people on poor internet connection, or pool to serve people who want to share a ride, or cash payments for people who don’t have credit cards. Their best customer was one who had a good smart phone with a good internet connection with a credit card and without much concern for spending a little extra for convenience. They created their ideal cab booking experience for a scenario without any added friction. And then they added features to take care of the friction points and better serve everyone’s needs. I guess this is an over simplification but its a good way to think about things.

Advertisements
What should MVP do

How does “designing in browser” change design

It drastically reduces the time between thinking it and using it and that changes everything. It changes the way you think, you seamlessly switch between being a designer and being a user. When you code your idea instead of creating static mocks you are able to quickly identify what is working and what is not. You can show it to 10 people and ask them to use it.

Of course coding or programming is a skill that takes years to develop. Thats the only argument I hear against the idea of designers coding. Why spend all that time and energy learning to code when you can collaborate with someone much better than you will ever be. This argument sounds logical but there are some problems with it, something I realized only when I started to code:

  1. You don’t have be a professional programmer to code. Your code will never see the light of the day and that is fine. You just have to code enough to make it work the way you want so that you can experience it yourself and test it with users and devices. Thats it.
  2. There is a difference between when a programmer codes and when a designer codes. When a designer codes his mind his still working as a designer. He is still looking at the way the experience he had designed is shaping up. This gives him the capability to make changes in real time. It is something we have known for years. We call this WYSIWYG and all our design softwares are built on this principle. The only difference is WYSIWYG does not happen in photoshop or sketch when it comes to interactive products. It happens in the browser or on you mobile screen.

I read an interview of Pinterest founder Evan Sharp. He was talking about how the idea of Pinterest has changed for him as the company has grown. He said this in reply:

You build something and it’s like, what can I build on top of that and what can I build on top of that and what can I build on top of that.

This kind of summarizes the feeling when you code your design. Your vision become clearer and clearer as your idea becomes a reality.

How does “designing in browser” change design

Why aren’t you able to learn to code

Learning curves. This is not my idea, I saw this talk by Amit Pitaru and he talks about this at the end of the video. The idea really resonated with me so I wanted to keep it here. It is about learning curves. Learning to code is like learning any skill, it is hard work. Over the years what has happened is that the entry to code has become easy. So everyone can pick up coding and see some quick results very early. You can do that for some time. You can reach a certain level by doing that, lets say that level is point A. Most of the people are able to reach point A. Most of the online code schools take you to point A. But point A is not where you want to stop, you want to go to point B. Point B, where you dominate the medium. Point B and beyond is where your heroes are. Point B and beyond is where the people who do stuff with code in the real world are. But most courses dont take you to point B. They only take you to point A. Most courses and most people quit at point A. Why? Because point A is where the hard work starts. It is the journey between point A to point B where you have to push yourself everyday. Where the output of your code doesn’t get better easily. This is a journey that few people are able to take. Not because they find it too hard, but because it is a journey no one tells you about.

So now you know. Now you know why you “know a bit” about code but you cant write any. Thats because you quit at point A. You just thought that I completed the entire course, I understood everything they taught me in the course. Why cant I still not make anything. Why cant I still not understand half of the jargons on the internet. Then you just leave it, something is missing and I dont know what, you say to yourself. Thats because you dont know that you completed the course right when you were starting to learn. Right when things were getting interesting. Take this journey this time. Do the hard work.

 

 

 

 

Why aren’t you able to learn to code

How to get data from NYT developer network using python

Ok so here are the steps:

Step1: Go to NYT developer network. Request an API key. There are many kinds of API’s available. I’ll go with Article Search API for now.

Step2: Go to the Article Search API page, and click on to Read Me on the top right. Scroll down to “Requests” section and copy the url with q=new+york+times.

Step3: Replace the ending ### with the key you got in the mail and open the link. You’ll see something like this:

Screen Shot 2016-10-08 at 11.57.54 PM.png

Step4: You will see all the data that was exposed by the API. Download JSON Formatter extension of chrome to see a readable version of the API data. Here’s how it should look:

Screen Shot 2016-10-08 at 11.58.37 PM.png

Step5: Look at the formatted data for a second. If you collapse all you see that first of all, this is an object that starts with { and ends with }. Secondly, you’ll see that there are three main elements in this object; response, status and copyright. We’ll expand each of these one by one to understand what lies inside and where the actual data about articles is. Later on we’ll do this using python.

Step6: So inside there are two objects; meta and docs. Inside the docs object, there are 10 objects. Each object is an article. Each article has several properties like web_url, snippets, lead_paragraph, headline etc. Some of these elements are objects themselves, some are arrays, some strings, some numbers. So that’s it, we have seen and understood the data we got from NYT. It’s structured this way because we can use code to extract data from it easily and use it for our purposes. So lets see how can we do that.

Step7: Open terminal and install pip. Use the command sudo easy_install pip. You can be in any directory while you do this. We need pip because we will have to install several libraries in order to extract data from the JSON using Python.

Step8: Google search for how to extract data from JSON using python. You’ll find this stackoverflow example. We will use the code given here to extract data from our JSON using python.

Step9: Open Sublime-text and save the file as nyt.py. DOTpy is the extension for python. In the terminal, change your directory to the folder where you saved the file.

Step10: Now paste the code we found in stackoverflow. We will start by just using this:

import json, requests

url = ‘http://api.nytimes.com/svc/search/v2/articlesearch.json?q=new+york+times&page=2&sort=oldest&api-key=2310ba05bce344d98f720ae433ff8e5b’

resp = requests.get(url)
data = json.loads(resp.text)

What this does is that it imports the json and requests library. In url, we need to put the url we used to access our NYT data earlier in Step4. Next we use the get function in requests library to store data in a local variable called resp. This gives us everything in the form of a continuous string. We need to change this string into json format. So we use the loads function of json library to do that and store the json data into a variable called data.

Step11: We cant import the json and requests library unless we install them. So we’ll install these libraries using pip. In terminal, write “sudo pip install requests” and “sudo pip install json”.

Step 12: Now we are ready to parse the data using python and use the terminal to see the output of our requests. To run a simple command, we can say:

print data

in our python file. Then we can go to the terminal and say:

python nyt.py

Make sure you are in the same folder in terminal where the python file is. What the above command should do is produce the entire data we got from the api, just like we saw in the browser window without the JSON formatter. Here’s how it would look:

Screen Shot 2016-10-08 at 11.56.15 PM.png

Again a single string of data. You can clear that using cmd+K.

Step13: We can do something about the appearance of this data. We can use the pprint (called pretty print) command from the pprint library. To do that write this with the import commands on top:

from pprint import pprint

now we can use pprint(data) instead of print data. When we do python nyt.py in the terminal now we get a better formatted form of data like this:

Screen Shot 2016-10-09 at 12.05.42 AM.png

Step14: Now we want to start extracting data from it one by one, just like using the expand collapse in the browser. So for that we use the for loop in python, like this:

for key in data:

print key

What this does is prints all the keys it found in the object data. As we saw in the browser, there are three keys; status, response and copyright. When we do python nyt.py in our terminal, we should get the same thing.

Screen Shot 2016-10-09 at 12.11.09 AM.png

Step15: To get the data from each of these three keys we use this:

print data[“response”]

or

pprint(data[“response”])

This should give the data inside response object, which is inside data object. Like this:

Screen Shot 2016-10-09 at 12.17.56 AM.png

Step16: We can go like this again and again. So we can see all the keys inside response by:

for key in data[“response”]:

print key

and then

print data[“response”][“docs”]

and so on.

Step17: If we see docs, it is not an object, it is an array. We know this because it starts and ends with [] rather than {}. If we print the first element of this array by

print data[“response”][“docs”][0]

or

pprint(data[“response”][“docs”][0])

we see that it is data on an article.

Step18: Now that we have come to the list of articles and we see that there is an object called headline that has a key called main which has its value as the actual sentence of headline of the article, how do we print all the headlines of all the articles that we have? here’s how:

for key in data[“response”][“docs”]:

print key[“headline”][“main”]

This will print all the headlines when we do python nyt.py in our terminal.

Step19: How to query this database now? Remember the URL? Here how it looks:

http://api.nytimes.com/svc/search/v2/articlesearch.json?q=new+york+times&page=2&sort=oldest&api-key=###

the q=new+york+times is the query part.

so what we can do is this:

query = “Presidential”

url = “http://api.nytimes.com/svc/search/v2/articlesearch.json?q=” + query + “&page=2&sort=oldest&api-key=###”

This will search the database for query. Suppose we want all the headings with that query in them we just do what we did before:

for key in data[“response”][“docs”]:

print key[“headline”][“main”]

Step20: Lastly, what of we want to query using terminal and not change the code all the time. For example what if we want to do something like this in terminal:

python nyt.py “query”

To do this we include a library called sys by

import sys

Now if we write print sys.argv in our python code and do python nyt.py in terminal, we get nyt.py in return. What this means is that sys.argv (argv= argument value) is an array that has different words in the command given in the terminal as its elements. So if we want to do a query by doing python nyt.py “query” we need to pass sys.argv[1] in the url in our python code.

So we do this:

import requests
import json
from pprint import pprint
import sys

query= sys.argv[1]

url = “http://api.nytimes.com/svc/search/v2/articlesearch.json?q=” + query + “&page=2&sort=oldest&api-key=2310ba05bce344d98f720ae433ff8e5b”
resp = requests.get(url)
data = json.loads(resp.text)

for key in data[“response”][“docs”]:
print key[“headline”][“main”]

That’s it for now.

How to get data from NYT developer network using python

How to research for your product

Here’s what I think:

  1. Know what you want to know. Try to keep it as focused as you can. It gets narrowed down and branches out as the research continues.
  2. Keep the focus of one research endeavour to one or two points. Don’t try to find everything at the same time. Its important to find definitive answers for one point at a time and then look at them collectively rather than having no definite answer to anything.
  3. Choose your method wisely. Don’t try to find the average age of your audience with personal interviews. Don’t try to find people’s feelings in a survey.
  4. Remember that it is not a linear process. It is ongoing and iterative. Be prepared to find and accept unexpected things. Like its sometimes find new problem statements to research for during the research.
  5. Don’t plan too much, get out in the field, start playing with data as soon as possible.

 

Thats it.

 

How to research for your product

What are OLA/Uber upto and why are they not there yet

So I think OLA/Uber would be to transportation businesses what Flipkart/Amazon is for retailers. So if you transport something, be it people, animals, goods, whatever, you will have a place in OLA/Uber to do your business. A typical platform.

So what is the big deal, why can’t they just get there already? Thats because a platform is not just a way to get all the businesses online. Thats what these “make your own websites quick” businesses do. No, a platform is more than that. A platform is a promise of an experience for the end customers. For example there is a way everything is sold on Amazon. You, as a customer, have an expectation of that experience. That means, to its credit, Amazon has cracked an experience that is enough value for the customers as well as enough flexible for the sellers to sell many kinds of things. Similarly WeChat, or Messenger. They have come up with their own experience that is scalable to all kinds of businesses, not just retail, and is enough value for the end customers.

This is what OLA/Uber still have to do. They have created a superior experience of transporting people within a city. But can there be a template experience for all the transportation usecases like travelling inter city, transporting goods, travelling in a bus, train, airplane etc? Not yet. Is it possible? Not until someone does it. Is it desirable? Sure, why not. Is it really what these guys are after? Time will tell I guess.

What are OLA/Uber upto and why are they not there yet