Products are a mess

181
-1

Published on

Thoughts on how you should do your product development in a startup.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
181
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Products are a mess

    1. 1. Products == MessHow to avoid it?-By Suman Mukherjee
    2. 2. Is your product becoming like this? Courtesy - http://www.flickr.com/photos/adamcathro/1035741023/sizes/m/in/photostream/
    3. 3. SymptomsTakes 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 corefeatures in your app?Developers are more interested in working on newfeatures than modifying of existing ones?You are not aware of how to use certain features inyour app?
    4. 4. Stay on the same pageUnderstand your domainCapture the language of the domainFormulate a vocabularyManagement, marketing and tech team - all on thesame page
    5. 5. Specify specify specifyDo not jump into featuresInvest time to gather all information for a featureSpecify behavior of the systemUnspecified behavior leads to bugs
    6. 6. Lessons from specificationBehavior is too complicated to specify == Hard to useToo many preconditions == Hard to useToo many fail safes == Numerous bugsDon’t know what to specify == Take a nap & rethink
    7. 7. Core should be SOLIDSingle Responsibility - A class should have one andonly one reason to changeOpen Closed - Open for extension, closed formodificationLiskov substitution - Derived objects should be ableto substitute parent objectsInterface Segregation - Small interfaces that cater tospecific clientsDependency Inversion - Depend on abstractions notconcretions
    8. 8. Quick Code reviewClasses with single responsibilitiesSmall methodsMeaningful method and variable namesCommon classes reside in single namespaceMinimal use of global states and/or singletons
    9. 9. Code for humansAvoid super smart code that only you understandAvoid monkey patchesRaise meaningful errorsKeep things private unless needed publiclyDocument the code
    10. 10. Build like a framework developerIdentify common reusable behaviorsBuild libraries/interfaces to support themLeave callbacks for customizationsTest your libs thoroughlyUse your libs for customized app specific logic
    11. 11. Why so Anti YAGNI?Cause the product grows and complexities creep inCause you will always have good developers and notso good developers in your teamCause at some point of time you will have scalabilityissuesCause you might out source some of your workCause you might want to open source some stuff
    12. 12. Test test testDo not behave like a caveman and do manual QABe always ready to deployBe confident of what you buildHumans are more intelligent than machines, makethem do something usefulDo not rush features without tests cause they’ll comeback and bite you
    13. 13. Deploy deploy deployLet every one in your team deployLet everyone have access to the serversDeploy multiple times a day or at least once a dayDo not deploy right before the week end
    14. 14. Project managementUse a tool that you know wellFollow a school that you understandDo not get excited like a kid with every new toolDo not change workflow all of a sudden. Make slowand continuous changes
    15. 15. MetricsCollect metrics that matterData can be both quantitative and qualitativeDon’t collect and forget. Monitor and learn.
    16. 16. Successful technical teams deliver good qualitysoftware consistently.Successful entrepreneurs solve problems ofcustomers, not their own.
    17. 17. Thank You Follow me - @mukherjeesuman orEmail me - sumanmukherjee03@gmail.com
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×