Analyzing a Business Idea, A Developer’s Perspective

As a tech guy, you will undoubtedly be pitched partnership opportunities in today’s startup crazed world. In agreeing to be the tech half of the venture, you will essentially be delegating the ‘business’ aspect to your partner which hopefully has domain knowledge in the problem you guys are trying to solve.

But how does one tell the difference between a genuine opportunity or a castle in the sky. This list of questions serve as my litmus test and roughly sums up my thought process, in no specific meaningful order:

People

  • What’s the nature of the relationship between the existing partners
    • Are there more than one business partners? What is the nature of their relationship?
  • Cultural fit for all partners
    • Do you like them? Do they like you? Don’t work with assholes.
  • How vested are the partners
    • Is he going to quit his full time job? He had better if you are.
  • Experience of the partners in the domain
    • Do they possess niche domain expertise that other people don’t have?
  • How trustworthy are the partners
  • Who will be doing what
  • Do they look like they are passionate in the problem they are trying to solve
    • Are they doing this for money?

Product (non tech)

  • What’s the unfair advantage
  • What is the product
  • What’s the problem being solved
  • How is the current problem being solved
  • What options are there at the moment
    • What’s the price of the product relative to the amount that’s being spent already
    • How much are they spending to solve the current problem

Execution

  • What will you be doing that is better or different from everyone else that is going to make the customers happy

Market

  • Competing products
  • Who would be the biggest competitor
    • Another startup or Google

Customers

  • Who are the buyers
    • List all the people involve in making the purchase decision
  • How many buyers are there (How big is the market)
  • How likely are they to adopt the product
  • Who are the early adopters
  • What’s the cost of adoption

Risks

  • How defensible is the product
    • What’s stopping new entrants from entering and wow to prevent them
  • What’s the main risk facing the business
    • If the business were to fail, what is the main reason, conversely, if the business were to succeed, what is the main reason
  • What’s the time to market
    • How fast can you get the product out there in front of customers

Revenue

  • How do you make money

Marketing

  • How will the product be market
    • What are the top 3 channels
  • How much spending is required
  • Who is going to manage the marketing
  • What’s the initial marketing plan
  • What’s the scalable marketing plan

Sales

  • What’s the sales cycle like
    • Is it going to take 1 year to sell the product or 1 week
  • Who is going to manage the sales process
  • What’s the initial sales plan
  • What’s the scalable sales plan

Costs

  • What are the main costs involved in the product

Product (tech)

  • How many hours does the MVP require
  • What are the complexities involved to get to MVP
  • Future complexities
  • What technical ability is needed to execute on the product
  • Is there synergy with existing code base of past/current projects

External

  • Is the product recession proof
  • Exit options
  • What other opportunities will you be passing up to undertake this venture

Growth

  • Is there potential to grow other products in adjacent spaces
    • How big are these spaces
  • Is there scope for personal growth
    • Will you be learning something cool along the way

Interest

  • Is the problem you’re solving meaningful

Compensation

  • What are the terms being offered
  • What’s the funding arrangement
  • Who’s paying for what

Milestones

  • Are there any important deadlines
  • What do you want to achieved in 3, 6, 12 months time

What Every New Python/Django Web Developer Should Know in 3 Months

This is a collection of things I think any beginner web developer working on the Python/Django stack ought to know. This assumes zero knowledge in web development or programming to begin with.

  1. Web Related
    1. What is a GET and POST request
    2. 200/301/302/403/404/500 status codes
    3. What is a cookie and how is it used
    4. Learn how to search and read documentation
    5. Basic SEO knowledge
      1. Best book to read: The Art of SEO
  2. Frontend
    1. How a page is loaded in the browser (DOM)
    2. Working/basic knowledge of HTML/CSS/JS – You will learn this by osmosis
    3. What is AJAX
    4. What is HTML5
    5. Basic UX/UI understanding
      1. Best book to read: Don’t make me Think
  3. Python
    1. Write Fizzbuzz
    2. Read Learn Python the Hard Way then an intermediate book like Dive into Python or one of the O’Reilly series
  4. Django
    1. Do the tutorial project at djangoproject.com
    2. Read Definitive Guide to Django Development Done Right
    3. Be able to setup a new project from scratch using virtualenv locally with a skeletal folder structure and settings that caters to a production and development environment
    4. What a view function does
      1. GET/POST paradigm within a view function
    5. What a model class does
    6. What does a template do
      1. What is template inheritance
    7. Basic Regex and URLS
    8. How do urls, views, models and template relate with one another
    9. Difference between model forms and forms
      1. How does form validation occur
    10. How to write a test that tests the view functions, models and utility methods
    11. How to debug and find the source of a problem
  5. Database/Models
    1. How to model Foreignkey relations
    2. How to model M2M relations
    3. Basic data types
  6. Tools in your Employ
    1. iPython
    2. South
      1. How does a migration work
      2. How to do an initial migration
      3. How to migrate subsequent changes to a schema
      4. Trouble shoot migration conflicts
    3. Git
    4. IDE of choice, preferably VIM
    5. Firebug
    6. Fabric
  7. Processes
    1. Deployment process at your team. How it works, what git hooks are used for what purposes. What fabric scripts do what etc
    2. Git Flow
      1. How to add, commit, release, rollback, fix, merg and conflict management
  8. Soft Skills
    1. Communication with product owners
    2. Communication with colleagues
    3. Cultivating a Growth mindset
  9. Graduating Project!
    1. Create a one page Django project that will allow me to:
      1. View all the users on the project
      2. Edit the details of the users
      3. Create a new user
      4. Delete a user

A note on doing too much reading:

Oftentimes as a beginner, we’re overwhelmed by the amount of information we need to do something. The knee jerk reaction, a badge of the fine education doctrines what have been ingrained in us, is to read about the topic/subject. I find this hits a wall of diminishing returns quickly.

For the reading to be truly effective, you need a certain amount of wisdom to absorb it. This can only be done by reading backwards. What this means is that say you’re tasked to create a dashboard page from scratch. In your mind you’ll probably think something like: whoaaaa, I have on idea how to do this. I need to do some research! And then you try to do random reading at djangoproject or various books and then bite off more than you can chew. The human brain has a tendency to make things more complex than it really is. The right question you should be asking in your mind is: how do I first load a page and then present a form on this page to manipulate data? This will make your reading much more directed and effective.

Display Current Git Branch for Mac Bash iTerm

As a developer using git, it’s always good to know which branch you’re currently on. I wish I’ve done this a lot earlier but I now have the following snippet pasted into my ~/.bash_profile. Some other blog posts have this snippet in ~/.bashrc, some in ~/.profile. To be honest, I’m not exactly sure of the difference between each one, even after reading stuff like his: http://stackoverflow.com/questions/415403/whats-the-difference-between-bashrc-bash-profile-and-environment.

So if you open a new terminal and nothing happens when you go into a folder that has been git initialised, you might need to paste the code in one of the other files.

parse_git_branch() {
	git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(git::\1)/'
	}

PS1="\[33[00m\]\u@\h\[33[01;34m\] \w \[33[31m\]\$(parse_git_branch) \[33[00m\]$\[33[00m\] "

Source: http://asemanfar.com/Current-Git-Branch-in-Bash-Prompt

My Secret Book for UI & UX

Everyone has a secret book. You know, that one book chock full of WHAM-WHAM-WHAM information and wisdom that leaves your mouth hanging. The one which you bring over to your co-worker and say: hey check this out, this isgood stuff! The one which you wished you read BEFORE you implemented feature XYZ..

So, this is my secret book: Designing for the Social Web by Joshua Porter

No matter what type of web site or application you’re building, social interaction among the people who use it will be key to its success. They will talk about it, invite their friends, complain, sing its high praises, and dissect it in countless ways. With the right design strategy you can use this social interaction to get people signing up, coming back regularly, and bringing others into the fold. With tons of examples from real-world interfaces and a touch of the underlying social psychology theory, Joshua Porter shows you how to design your next great social web application.

Inside, you’ll discover:
• The real reasons why people participate online and the psychology behind them
• The Usage Lifecycle—or how people use your web application over time
• How to get people past that trickiest of hurdles: sign-up
• What to do when you’ve launched a web application and nobody is using it
• How to analyze the effectiveness of your application screens and flows
• How to grow your social web application from zero users to 1000—and beyond

Designing for the social web is about much more than adding features. It’s about embracing the social interaction of the people who make you successful—and then designing smartly to encourage it.

This profoundly impacted the way I thought about viral loops, engagement loops, social objects, retention — the whole works, in the early days of my first startup, Avenue7.

It’s a very easy read, full of actionable insights which you can apply immediately. Check it out.

Useful Links: