Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Products == Mess                             How to avoid it?                             -By Suman MukherjeeSaturday, Sep...
Is your product becoming like this?                             Courtesy - http://www.flickr.com/photos/                   ...
Symptoms            Takes too long to fix bugs?            Takes too long to deploy bug fixes?            Takes too long to ...
Stay on the same page            Understand your domain            Capture the language of the domain            Formulate...
Specify specify specify            Do not jump into features            Invest time to gather all information for a featur...
Lessons from specification            Behavior is too complicated to specify == Hard to use            Too many preconditio...
Core should be SOLID            Single Responsibility - A class should have one and            only one reason to change  ...
Quick Code review            Classes with single responsibilities            Small methods            Meaningful method an...
Code for humans            Avoid super smart code that only you understand            Avoid monkey patches            Rais...
Build like a framework developer            Identify common reusable behaviors            Build libraries/interfaces to su...
Why so Anti YAGNI?            Cause the product grows and complexities creep in            Cause you will always have good...
Test test test            Do not behave like a caveman and do manual QA            Be always ready to deploy            Be...
Deploy deploy deploy            Let every one in your team deploy            Let everyone have access to the servers      ...
Project management            Use a tool that you know well            Follow a school that you understand            Do n...
Metrics            Collect metrics that matter            Data can be both quantitative and qualitative            Don’t c...
Successful technical teams deliver good quality            software consistently.            Successful entrepreneurs solv...
Thank You                                  Follow me - @mukherjeesuman                                               or   ...
Upcoming SlideShare
Loading in …5
×

Products = Mess - How to avoid it? By Suman Mukherjee

1,139 views

Published on

  • Be the first to comment

Products = Mess - How to avoid it? By Suman Mukherjee

  1. 1. Products == Mess How to avoid it? -By Suman MukherjeeSaturday, September 29, 12
  2. 2. Is your product becoming like this? Courtesy - http://www.flickr.com/photos/ adamcathro/1035741023/sizes/m/in/photostream/Saturday, September 29, 12
  3. 3. Symptoms Takes too long to fix bugs? Takes too long to deploy bug fixes? Takes too long to build features? Spend too much time doing QA? You completely depend on one developer for core features in your app? Developers are more interested in working on new features than modifying of existing ones? You are not aware of how to use certain features in your app?Saturday, September 29, 12
  4. 4. Stay on the same page Understand your domain Capture the language of the domain Formulate a vocabulary Management, marketing and tech team - all on the same pageSaturday, September 29, 12
  5. 5. Specify specify specify Do not jump into features Invest time to gather all information for a feature Specify behavior of the system Unspecified behavior leads to bugsSaturday, September 29, 12
  6. 6. Lessons from specification Behavior is too complicated to specify == Hard to use Too many preconditions == Hard to use Too many fail safes == Numerous bugs Don’t know what to specify == Take a nap & rethinkSaturday, September 29, 12
  7. 7. Core should be SOLID Single Responsibility - A class should have one and only one reason to change Open Closed - Open for extension, closed for modification Liskov substitution - Derived objects should be able to substitute parent objects Interface Segregation - Small interfaces that cater to specific clients Dependency Inversion - Depend on abstractions not concretionsSaturday, September 29, 12
  8. 8. Quick Code review Classes with single responsibilities Small methods Meaningful method and variable names Common classes reside in single namespace Minimal use of global states and/or singletonsSaturday, September 29, 12
  9. 9. Code for humans Avoid super smart code that only you understand Avoid monkey patches Raise meaningful errors Keep things private unless needed publicly Document the codeSaturday, September 29, 12
  10. 10. Build like a framework developer Identify common reusable behaviors Build libraries/interfaces to support them Leave callbacks for customizations Test your libs thoroughly Use your libs for customized app specific logicSaturday, September 29, 12
  11. 11. Why so Anti YAGNI? Cause the product grows and complexities creep in Cause you will always have good developers and not so good developers in your team Cause at some point of time you will have scalability issues Cause you might out source some of your work Cause you might want to open source some stuffSaturday, September 29, 12
  12. 12. Test test test Do not behave like a caveman and do manual QA Be always ready to deploy Be confident of what you build Humans are more intelligent than machines, make them do something useful Do not rush features without tests cause they’ll come back and bite youSaturday, September 29, 12
  13. 13. Deploy deploy deploy Let every one in your team deploy Let everyone have access to the servers Deploy multiple times a day or at least once a day Do not deploy right before the week endSaturday, September 29, 12
  14. 14. Project management Use a tool that you know well Follow a school that you understand Do not get excited like a kid with every new tool Do not change workflow all of a sudden. Make slow and continuous changesSaturday, September 29, 12
  15. 15. Metrics Collect metrics that matter Data can be both quantitative and qualitative Don’t collect and forget. Monitor and learn.Saturday, September 29, 12
  16. 16. Successful technical teams deliver good quality software consistently. Successful entrepreneurs solve problems of customers, not their own.Saturday, September 29, 12
  17. 17. Thank You Follow me - @mukherjeesuman or Email me - sumanmukherjee03@gmail.comSaturday, September 29, 12

×