Wednesday, 27 February 2013

MVP - Minimum Viable Product strategy

Not all good ideas turn out into great products.  There are quite a few products that fail in the market due to a variety of reasons.  But does it stop us from investing in the Products? How do we find out if a Product is going to be a hit in the market?  And more importantly how do we find that out by investing the minimum amount possible.  Enter MVP - The Minimum Viable Product.

The concept of MVP is getting acceptance throughout in the area of Product Development.  It is a concept largely used by start ups.  And it will immensely help new product design and development in larger organizations.

What is an MVP?

Our objective with a Minimum Viable Product is to provide a mechanism for maximum learning about the target audience or the target market with the minimum effort.  Does it mean that we only ship 3 out of the 10 features that is required to hit the market at the earliest.  No.  The concept is beyond just the product features.  A Minimum Viable Product takes into account the Product idea, how it generates interest among the users, what features that the customers or the market really wants, demand for the product, etc.  It is a strategy that is used for learning about the customers early into the product life cycle, so that they can make the changes for the good.

Strategies for MVP

Sunday, 24 February 2013

Software Design in the 21st Century - Martin Fowler

Great talk from Martin Fowler, focussing on 3 topics

1.  Schemaless design
2.  NoSQL and consistency
3.  Software Design



A must watch !!!

Saturday, 23 February 2013

11 Reasons why products fail in the market

Not all the product ideas get transformed into actual products.  Only a few pass that stage and get to the market as a Product.  And there are even fewer products that are actually successful.  So what are the reasons why products fail in the market.  In this post I am outlining a few reasons in my practical experience which can lead to the failure of a product.


  • Not having a directed product vision
    • A product needs to have a vision, a roadmap at least at a high level.  Product roadmaps might change depending on the feedback from the customers / prospective customers / market research, but you need to have a product vision as you go along.

  • Not enough investments for the products
    • It is highly important that all the investments need to be made for the product development, testing, marketing, sales and brand promotion.  Without investments, the product will eventually die a slow death.

  • Too late into the market
    • A product needs to be in the market at the right time.  If the product is late into the market, there will be many competitors for the same market, and hence competition will be tough.  It is highly desirable for any product to have that First Mover advantage.

  • Too early in the market
    • In my previous point, I mentioned that a product needs to be in the market at the right time.  Even though being early in the market is a highly desirable option, however being too early in the market when there is no maturity in the market will obviously lower the chance of product success.

Wednesday, 20 February 2013

What an Agile Project needs for success

In my previous posts I explained about the Attitude of a Great Software Developer and Attitude of a Great Software Tester.  I am a huge fan of Agile methodologies.  I believe, if an Agile project needs to be successful, there are certain factors that will make it happen.

  • Technical Craft
    • The technical capabilities of a team should be of top quality, if you want to run a successful Agile Project.  An Agile project is actually run by the collective strengths of the individual team members and hence they need to be highly adept at their jobs.
  • Team maturity
    • This is one of the critical success factors for an Agile Project.  Not everyone is comfortable in working in an environment where there are lot of changes.  Hence the team members and the team as a whole should be highly mature enough to understand the realities and make quick yet thoughtful decisions
  • Collaboration
    • I cannot stress this point enough.  The entire team should collaborate within themselves and also with external stakeholders.  This is actually one step ahead of an important point Communication.  It emphasizes the fact that it is a complete team game.  A developer needs to collaborate with Product Owners, Testers and vice versa.
  • Team Morale
    • Agile methodologies put a high emphasis on the people who run the projects.  It is a given that, a team with high morale will produce better quality work and with more speed.  It is important that the team is

Monday, 18 February 2013

Attitudes of a Great Software Tester

In my previous post, I explained in my own words the "Attitude of a Great Software Developer".  This post will focus on the testers.  Developers and Testers are two great personalities that work literally in the opposite direction but towards a common goal of producing good quality software.  One deals with the making aspect of the software and other with the breaking aspect of the software.

In this post, I will share the attitudes that a Great Software Tester should have, in my own views.

Attitude #1 - I want to break that software at any cost

Make no mistake about it.  A tester's job is to find out bugs and in the process, make the software better and better as time progresses.  A bug is a tester's best friend.  So his/her primary intent is to break the software at any cost, find the loop holes, find that best friend of his one way or the other.  Whether it is through a systematic process of executing test cases or adhoc testing or exploratory testing, the objective is clear.

If you want to be a Great Tester, your attitude has to be to "Break the software at any cost and find out that BUG".

Attitude #2 - Ms. Great Developer, I challenge you that I can find bugs in your code.

I seriously doubt how many testers have this attitude.  

But if a person wants to be a Great Tester,

Saturday, 16 February 2013

I want to run an Agile Project

This 2 part video clearly explains the challenges in running an "Agile Project".  Funny but very thoughful videos.

"I want to run an Agile Project" - Part 1




"I want to run an Agile Project" - Part 2




Friday, 15 February 2013

Attitudes of a Great Software Developer !!!


Software development is an art, not just a science.  You can learn all the technicalities of software development, but you need to be absolutely passionate about coding and perceive it as an art to be extremely good at it.  If you are one such person, I will introduce you to the journey of becoming a "Great Developer".  The objective of a Great Developer, as i name him/her is to make his/her art as beautiful as possible and make it the best.

In my own thoughts, I will share some attitudes which a great developer should have apart from the general expectations of being technically and analytically sound, understanding requirements in detail, good design skills, etc.

Image Courtesy: minfullychange.blogspot.com
 

Attitude #1 -  A bug is a question of my ability to write good code


Fixing bugs is part and parcel of a software developer's activities.  A bug is obviously the worst enemy of a Developer.  But how many developers think in the following lines while fixing the defects

  • What I could have done to avoid this bug in the first place?
  • How did I allow this bug to escape my eyes?
  • OK, something wrong has happened this time.  How do I avoid the same mistake next time? What steps do I need to take?
Truth is very few developers think on those lines.


A  person willing to be a great developer should consider a bug as a threat to his position, as a threat to his credibility, as a threat to his programming skills.  That is the attitude that will make him/her a great developer.

Attitude #2 - Mr. Tester, I challenge you to find bugs in my code


How many developers have this attitude?  Many developers think that the job of the testers is to find bugs.  Yes.  Obviously, but that doesn't mean as developers, we can take bugs for granted.

A great developer or a person willing to be a great developer should