SlideShare une entreprise Scribd logo
1  sur  17
Télécharger pour lire hors ligne
Products == Mess

                             How to avoid it?

                             -By Suman Mukherjee



Saturday, September 29, 12
Is your product becoming like this?




                             Courtesy - http://www.flickr.com/photos/
                      adamcathro/1035741023/sizes/m/in/photostream/

Saturday, September 29, 12
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
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 page



Saturday, September 29, 12
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 bugs




Saturday, September 29, 12
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 & rethink




Saturday, September 29, 12
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
            concretions

Saturday, September 29, 12
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 singletons


Saturday, September 29, 12
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 code


Saturday, September 29, 12
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 logic


Saturday, September 29, 12
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 stuff

Saturday, September 29, 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 you

Saturday, September 29, 12
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 end



Saturday, September 29, 12
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 changes



Saturday, September 29, 12
Metrics

            Collect metrics that matter

            Data can be both quantitative and qualitative

            Don’t collect and forget. Monitor and learn.




Saturday, September 29, 12
Successful technical teams deliver good quality
            software consistently.

            Successful entrepreneurs solve problems of
            customers, not their own.




Saturday, September 29, 12
Thank You

                                  Follow me - @mukherjeesuman
                                               or
                             Email me - sumanmukherjee03@gmail.com




Saturday, September 29, 12

Contenu connexe

En vedette

10gen MongoDB Video Presentation at WebGeek DevCup
10gen MongoDB Video Presentation at WebGeek DevCup10gen MongoDB Video Presentation at WebGeek DevCup
10gen MongoDB Video Presentation at WebGeek DevCupWebGeek Philippines
 
Job Tumber, Llc – Partner Opportunity
Job Tumber, Llc – Partner OpportunityJob Tumber, Llc – Partner Opportunity
Job Tumber, Llc – Partner Opportunityjobtumbler
 
Eines i Característiques
Eines i CaracterístiquesEines i Característiques
Eines i CaracterístiquesSalut 2.0
 
The BlackBerry Opportunity at WebGeek DevCup
The BlackBerry Opportunity at WebGeek DevCupThe BlackBerry Opportunity at WebGeek DevCup
The BlackBerry Opportunity at WebGeek DevCupWebGeek Philippines
 

En vedette (11)

10gen MongoDB Video Presentation at WebGeek DevCup
10gen MongoDB Video Presentation at WebGeek DevCup10gen MongoDB Video Presentation at WebGeek DevCup
10gen MongoDB Video Presentation at WebGeek DevCup
 
Job Tumber, Llc – Partner Opportunity
Job Tumber, Llc – Partner OpportunityJob Tumber, Llc – Partner Opportunity
Job Tumber, Llc – Partner Opportunity
 
Comparison of 'Tilt' and NME
Comparison of 'Tilt' and NMEComparison of 'Tilt' and NME
Comparison of 'Tilt' and NME
 
Intro digi marketing2013
Intro digi marketing2013Intro digi marketing2013
Intro digi marketing2013
 
Brammer Dixon
Brammer DixonBrammer Dixon
Brammer Dixon
 
uptime is money
uptime is moneyuptime is money
uptime is money
 
Carol P. Resume
Carol P. ResumeCarol P. Resume
Carol P. Resume
 
Chamber breakfast
Chamber breakfastChamber breakfast
Chamber breakfast
 
WebGeek DevCup Theme
WebGeek DevCup ThemeWebGeek DevCup Theme
WebGeek DevCup Theme
 
Eines i Característiques
Eines i CaracterístiquesEines i Característiques
Eines i Característiques
 
The BlackBerry Opportunity at WebGeek DevCup
The BlackBerry Opportunity at WebGeek DevCupThe BlackBerry Opportunity at WebGeek DevCup
The BlackBerry Opportunity at WebGeek DevCup
 

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

Continuous development - Growing Pains
Continuous development - Growing PainsContinuous development - Growing Pains
Continuous development - Growing PainsJohn Stevenson
 
Sand camp beginner drupal development
Sand camp beginner drupal developmentSand camp beginner drupal development
Sand camp beginner drupal developmentmeghsweet
 
Agile Methodologies
Agile MethodologiesAgile Methodologies
Agile MethodologiesKenny Nguyen
 
Best Practices - Seeqnce - 23/24-02-2012
Best Practices - Seeqnce - 23/24-02-2012Best Practices - Seeqnce - 23/24-02-2012
Best Practices - Seeqnce - 23/24-02-2012Youssef Chaker
 
Ciso executive summit 2012
Ciso executive summit 2012Ciso executive summit 2012
Ciso executive summit 2012Bill Burns
 
TripCase Unit Testing with Jasmine
TripCase Unit Testing with JasmineTripCase Unit Testing with Jasmine
TripCase Unit Testing with JasmineStephen Pond
 
Building Rich User Experiences Without JavaScript Spaghetti
Building Rich User Experiences Without JavaScript SpaghettiBuilding Rich User Experiences Without JavaScript Spaghetti
Building Rich User Experiences Without JavaScript SpaghettiJared Faris
 
Introduction into Drupal site building
Introduction into Drupal site buildingIntroduction into Drupal site building
Introduction into Drupal site buildingIztok Smolic
 
Drupal campmanila 2012 (Responsive Web in Drupal with Omega Theme)
Drupal campmanila 2012 (Responsive Web in Drupal with Omega Theme)Drupal campmanila 2012 (Responsive Web in Drupal with Omega Theme)
Drupal campmanila 2012 (Responsive Web in Drupal with Omega Theme)Rick. Bahague
 
Cynefin sensemaking framework and usage examples
Cynefin sensemaking framework and usage examplesCynefin sensemaking framework and usage examples
Cynefin sensemaking framework and usage examplesLuxoftAgilePractice
 
Lightweight introduction to Scrum
Lightweight introduction to ScrumLightweight introduction to Scrum
Lightweight introduction to ScrumFlorent Biville
 
Mainframes agile2012
Mainframes agile2012Mainframes agile2012
Mainframes agile2012drewz lin
 

Similaire à Products = Mess - How to avoid it? By Suman Mukherjee (20)

Products are a mess
Products are a messProducts are a mess
Products are a mess
 
Continuous development - Growing Pains
Continuous development - Growing PainsContinuous development - Growing Pains
Continuous development - Growing Pains
 
Sand camp beginner drupal development
Sand camp beginner drupal developmentSand camp beginner drupal development
Sand camp beginner drupal development
 
Agile Methodologies
Agile MethodologiesAgile Methodologies
Agile Methodologies
 
100% JS
100% JS100% JS
100% JS
 
B-S-T Easy as 1-2-3
B-S-T Easy as 1-2-3B-S-T Easy as 1-2-3
B-S-T Easy as 1-2-3
 
Best Practices - Seeqnce - 23/24-02-2012
Best Practices - Seeqnce - 23/24-02-2012Best Practices - Seeqnce - 23/24-02-2012
Best Practices - Seeqnce - 23/24-02-2012
 
Cd syd
Cd sydCd syd
Cd syd
 
Ciso executive summit 2012
Ciso executive summit 2012Ciso executive summit 2012
Ciso executive summit 2012
 
TripCase Unit Testing with Jasmine
TripCase Unit Testing with JasmineTripCase Unit Testing with Jasmine
TripCase Unit Testing with Jasmine
 
Test Driven Development - Caleb Tutty
Test Driven Development - Caleb TuttyTest Driven Development - Caleb Tutty
Test Driven Development - Caleb Tutty
 
Game Design Process
Game Design ProcessGame Design Process
Game Design Process
 
Selenium Basics
Selenium BasicsSelenium Basics
Selenium Basics
 
Building Rich User Experiences Without JavaScript Spaghetti
Building Rich User Experiences Without JavaScript SpaghettiBuilding Rich User Experiences Without JavaScript Spaghetti
Building Rich User Experiences Without JavaScript Spaghetti
 
Introduction into Drupal site building
Introduction into Drupal site buildingIntroduction into Drupal site building
Introduction into Drupal site building
 
Screencasting
ScreencastingScreencasting
Screencasting
 
Drupal campmanila 2012 (Responsive Web in Drupal with Omega Theme)
Drupal campmanila 2012 (Responsive Web in Drupal with Omega Theme)Drupal campmanila 2012 (Responsive Web in Drupal with Omega Theme)
Drupal campmanila 2012 (Responsive Web in Drupal with Omega Theme)
 
Cynefin sensemaking framework and usage examples
Cynefin sensemaking framework and usage examplesCynefin sensemaking framework and usage examples
Cynefin sensemaking framework and usage examples
 
Lightweight introduction to Scrum
Lightweight introduction to ScrumLightweight introduction to Scrum
Lightweight introduction to Scrum
 
Mainframes agile2012
Mainframes agile2012Mainframes agile2012
Mainframes agile2012
 

Plus de WebGeek Philippines

Good Software Engineering Practices by Jesse Panganiban
Good Software Engineering Practices by Jesse PanganibanGood Software Engineering Practices by Jesse Panganiban
Good Software Engineering Practices by Jesse PanganibanWebGeek Philippines
 
WebGeek AppNimbus (Nikko Bautista)
WebGeek AppNimbus (Nikko Bautista)WebGeek AppNimbus (Nikko Bautista)
WebGeek AppNimbus (Nikko Bautista)WebGeek Philippines
 
The Next Big Thing (Freelancer.com) - WebGeek DevCup
The Next Big Thing (Freelancer.com) - WebGeek DevCupThe Next Big Thing (Freelancer.com) - WebGeek DevCup
The Next Big Thing (Freelancer.com) - WebGeek DevCupWebGeek Philippines
 
WebGeek DevCup Rules (At Pre-DevCup)
WebGeek DevCup Rules (At Pre-DevCup)WebGeek DevCup Rules (At Pre-DevCup)
WebGeek DevCup Rules (At Pre-DevCup)WebGeek Philippines
 

Plus de WebGeek Philippines (8)

Good Software Engineering Practices by Jesse Panganiban
Good Software Engineering Practices by Jesse PanganibanGood Software Engineering Practices by Jesse Panganiban
Good Software Engineering Practices by Jesse Panganiban
 
Rules at #4SQHACKPH
Rules at #4SQHACKPHRules at #4SQHACKPH
Rules at #4SQHACKPH
 
Intro at #4SQHACKPH
Intro at #4SQHACKPHIntro at #4SQHACKPH
Intro at #4SQHACKPH
 
Theme at #4SQHACKPH
Theme at #4SQHACKPHTheme at #4SQHACKPH
Theme at #4SQHACKPH
 
Foursquare API + GoRated.PH
Foursquare API + GoRated.PHFoursquare API + GoRated.PH
Foursquare API + GoRated.PH
 
WebGeek AppNimbus (Nikko Bautista)
WebGeek AppNimbus (Nikko Bautista)WebGeek AppNimbus (Nikko Bautista)
WebGeek AppNimbus (Nikko Bautista)
 
The Next Big Thing (Freelancer.com) - WebGeek DevCup
The Next Big Thing (Freelancer.com) - WebGeek DevCupThe Next Big Thing (Freelancer.com) - WebGeek DevCup
The Next Big Thing (Freelancer.com) - WebGeek DevCup
 
WebGeek DevCup Rules (At Pre-DevCup)
WebGeek DevCup Rules (At Pre-DevCup)WebGeek DevCup Rules (At Pre-DevCup)
WebGeek DevCup Rules (At Pre-DevCup)
 

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

  • 1. Products == Mess How to avoid it? -By Suman Mukherjee Saturday, September 29, 12
  • 2. Is your product becoming like this? Courtesy - http://www.flickr.com/photos/ adamcathro/1035741023/sizes/m/in/photostream/ Saturday, September 29, 12
  • 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. 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 page Saturday, September 29, 12
  • 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 bugs Saturday, September 29, 12
  • 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 & rethink Saturday, September 29, 12
  • 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 concretions Saturday, September 29, 12
  • 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 singletons Saturday, September 29, 12
  • 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 code Saturday, September 29, 12
  • 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 logic Saturday, September 29, 12
  • 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 stuff Saturday, September 29, 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 you Saturday, September 29, 12
  • 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 end Saturday, September 29, 12
  • 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 changes Saturday, September 29, 12
  • 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. Successful technical teams deliver good quality software consistently. Successful entrepreneurs solve problems of customers, not their own. Saturday, September 29, 12
  • 17. Thank You Follow me - @mukherjeesuman or Email me - sumanmukherjee03@gmail.com Saturday, September 29, 12