SlideShare a Scribd company logo
Products == Mess

How to avoid it?

-By Suman Mukherjee
Is your product becoming like this?




   Courtesy - http://www.flickr.com/photos/
adamcathro/1035741023/sizes/m/in/photostream/
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?
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
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
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
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
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
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
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
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
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
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
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
Metrics

Collect metrics that matter

Data can be both quantitative and qualitative

Don’t collect and forget. Monitor and learn.
Successful technical teams deliver good quality
software consistently.

Successful entrepreneurs solve problems of
customers, not their own.
Thank You

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

More Related Content

What's hot

Open Source Software Development Practices that Works
Open Source Software Development Practices that WorksOpen Source Software Development Practices that Works
Open Source Software Development Practices that Works
Choong Ping Teo
 
Preso #4
Preso #4Preso #4
Preso #4
Brent Wang
 
Why Your Selenium Tests are so Dang Brittle, and What to Do About It
Why Your Selenium Tests are so Dang Brittle, and What to Do About ItWhy Your Selenium Tests are so Dang Brittle, and What to Do About It
Why Your Selenium Tests are so Dang Brittle, and What to Do About It
Jay Aho
 
Productivity tools you should know about if you want to have a focused learni...
Productivity tools you should know about if you want to have a focused learni...Productivity tools you should know about if you want to have a focused learni...
Productivity tools you should know about if you want to have a focused learni...
stijn vanpoucke
 
5 mistakes
5 mistakes 5 mistakes
5 mistakes
Forte Group
 
How to build a test
How to build a testHow to build a test
How to build a test
lindastair
 
No Time for Testing: Strategies to Keep Testing Inside Your Sprints
No Time for Testing: Strategies to Keep Testing Inside Your SprintsNo Time for Testing: Strategies to Keep Testing Inside Your Sprints
No Time for Testing: Strategies to Keep Testing Inside Your Sprints
Lesley Wallace, CSP, CSM, ICP-ACC, SA
 
Module 2, video 3 step 3 identify multiple goals
Module 2, video 3  step 3 identify multiple goalsModule 2, video 3  step 3 identify multiple goals
Module 2, video 3 step 3 identify multiple goals
CEHDDCOP
 
Mind Map of Bite size is the right size: How microlearning shrinks the skills...
Mind Map of Bite size is the right size: How microlearning shrinks the skills...Mind Map of Bite size is the right size: How microlearning shrinks the skills...
Mind Map of Bite size is the right size: How microlearning shrinks the skills...
Ruthmony Hong Brininger
 
9 STEPS TO A GOOD ONBOARDING SETUP
9 STEPS TO A GOOD ONBOARDING SETUP9 STEPS TO A GOOD ONBOARDING SETUP
9 STEPS TO A GOOD ONBOARDING SETUP
Adrian Grigore
 
Collective ownership in agile teams
Collective ownership in agile teamsCollective ownership in agile teams
Collective ownership in agile teams
Jyaasa Technologies
 
Lean Responsive
Lean ResponsiveLean Responsive
Lean Responsive
Josh Jeffryes
 
Java best practices
Java best practicesJava best practices
Java best practices
Godfrey Nolan
 
Browser based testing
Browser based testingBrowser based testing
Browser based testing
Vishnu Iyengar
 
Why You're A Bad PHP Programmer
Why You're A Bad PHP ProgrammerWhy You're A Bad PHP Programmer
Why You're A Bad PHP Programmer
KLabCyscorpions-TechBlog
 
Lecture Capture: Support and Success Update
Lecture Capture: Support and Success UpdateLecture Capture: Support and Success Update
Lecture Capture: Support and Success Update
theedugeek
 
Continuous deployment
Continuous deploymentContinuous deployment
Continuous deployment
Stephen Donner
 
Software Craftsmanship @ Ntnu
Software Craftsmanship @ NtnuSoftware Craftsmanship @ Ntnu
Software Craftsmanship @ Ntnu
goeran
 

What's hot (18)

Open Source Software Development Practices that Works
Open Source Software Development Practices that WorksOpen Source Software Development Practices that Works
Open Source Software Development Practices that Works
 
Preso #4
Preso #4Preso #4
Preso #4
 
Why Your Selenium Tests are so Dang Brittle, and What to Do About It
Why Your Selenium Tests are so Dang Brittle, and What to Do About ItWhy Your Selenium Tests are so Dang Brittle, and What to Do About It
Why Your Selenium Tests are so Dang Brittle, and What to Do About It
 
Productivity tools you should know about if you want to have a focused learni...
Productivity tools you should know about if you want to have a focused learni...Productivity tools you should know about if you want to have a focused learni...
Productivity tools you should know about if you want to have a focused learni...
 
5 mistakes
5 mistakes 5 mistakes
5 mistakes
 
How to build a test
How to build a testHow to build a test
How to build a test
 
No Time for Testing: Strategies to Keep Testing Inside Your Sprints
No Time for Testing: Strategies to Keep Testing Inside Your SprintsNo Time for Testing: Strategies to Keep Testing Inside Your Sprints
No Time for Testing: Strategies to Keep Testing Inside Your Sprints
 
Module 2, video 3 step 3 identify multiple goals
Module 2, video 3  step 3 identify multiple goalsModule 2, video 3  step 3 identify multiple goals
Module 2, video 3 step 3 identify multiple goals
 
Mind Map of Bite size is the right size: How microlearning shrinks the skills...
Mind Map of Bite size is the right size: How microlearning shrinks the skills...Mind Map of Bite size is the right size: How microlearning shrinks the skills...
Mind Map of Bite size is the right size: How microlearning shrinks the skills...
 
9 STEPS TO A GOOD ONBOARDING SETUP
9 STEPS TO A GOOD ONBOARDING SETUP9 STEPS TO A GOOD ONBOARDING SETUP
9 STEPS TO A GOOD ONBOARDING SETUP
 
Collective ownership in agile teams
Collective ownership in agile teamsCollective ownership in agile teams
Collective ownership in agile teams
 
Lean Responsive
Lean ResponsiveLean Responsive
Lean Responsive
 
Java best practices
Java best practicesJava best practices
Java best practices
 
Browser based testing
Browser based testingBrowser based testing
Browser based testing
 
Why You're A Bad PHP Programmer
Why You're A Bad PHP ProgrammerWhy You're A Bad PHP Programmer
Why You're A Bad PHP Programmer
 
Lecture Capture: Support and Success Update
Lecture Capture: Support and Success UpdateLecture Capture: Support and Success Update
Lecture Capture: Support and Success Update
 
Continuous deployment
Continuous deploymentContinuous deployment
Continuous deployment
 
Software Craftsmanship @ Ntnu
Software Craftsmanship @ NtnuSoftware Craftsmanship @ Ntnu
Software Craftsmanship @ Ntnu
 

Similar to Products are a mess

Continuous Integration - Getting Your Department To Drink The Kool Aid
Continuous Integration - Getting Your Department To Drink The Kool AidContinuous Integration - Getting Your Department To Drink The Kool Aid
Continuous Integration - Getting Your Department To Drink The Kool Aid
Michael Benning
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation
Sauce Labs
 
Lessons from DevOps: Taking DevOps practices into your AppSec Life
Lessons from DevOps: Taking DevOps practices into your AppSec LifeLessons from DevOps: Taking DevOps practices into your AppSec Life
Lessons from DevOps: Taking DevOps practices into your AppSec Life
Matt Tesauro
 
Mobile media module part 6 - app development rev-mf
Mobile media module   part 6 - app development rev-mfMobile media module   part 6 - app development rev-mf
Mobile media module part 6 - app development rev-mf
Michelle Ferrier
 
Cloud Academy Webinar: Recipe for DevOps Success: Capital One Style
Cloud Academy Webinar: Recipe for DevOps Success: Capital One StyleCloud Academy Webinar: Recipe for DevOps Success: Capital One Style
Cloud Academy Webinar: Recipe for DevOps Success: Capital One Style
Mark Andersen
 
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
Jwooldridge
 
Continuous Integration: Getting your department to drink the Kool-Aid
Continuous Integration: Getting your department to drink the Kool-AidContinuous Integration: Getting your department to drink the Kool-Aid
Continuous Integration: Getting your department to drink the Kool-Aid
JenKnight
 
Margaret Menzies Intro & Scrum Overview
Margaret Menzies Intro & Scrum OverviewMargaret Menzies Intro & Scrum Overview
Margaret Menzies Intro & Scrum Overview
MargaretMenzies
 
Enterprise DevOps
Enterprise DevOps Enterprise DevOps
Enterprise DevOps
Liam McDowell
 
DOES14 - Jonny Wooldridge - The Cambridge Satchel Company - 10 Enterprise Tip...
DOES14 - Jonny Wooldridge - The Cambridge Satchel Company - 10 Enterprise Tip...DOES14 - Jonny Wooldridge - The Cambridge Satchel Company - 10 Enterprise Tip...
DOES14 - Jonny Wooldridge - The Cambridge Satchel Company - 10 Enterprise Tip...
Gene Kim
 
Matt tesauro Lessons from DevOps: Taking DevOps practices into your AppSec Li...
Matt tesauro Lessons from DevOps: Taking DevOps practices into your AppSec Li...Matt tesauro Lessons from DevOps: Taking DevOps practices into your AppSec Li...
Matt tesauro Lessons from DevOps: Taking DevOps practices into your AppSec Li...
Matt Tesauro
 
CONFidence 2015: Lessons from DevOps: Taking DevOps practices into your AppSe...
CONFidence 2015: Lessons from DevOps: Taking DevOps practices into your AppSe...CONFidence 2015: Lessons from DevOps: Taking DevOps practices into your AppSe...
CONFidence 2015: Lessons from DevOps: Taking DevOps practices into your AppSe...
PROIDEA
 
30 days or less: New Features to Production
30 days or less: New Features to Production30 days or less: New Features to Production
30 days or less: New Features to Production
Karthik Gaekwad
 
STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)
Mike Subelsky
 
What is agile?
What is agile?What is agile?
What is agile?
Joshua Render
 
Essential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile AdoptionEssential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile Adoption
Steven Mak
 
Agile testing
Agile testingAgile testing
Agile testing
Raj Indugula
 
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest IrelandMarkus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
David O'Dowd
 
Planning for Success in MDD
Planning for Success in MDDPlanning for Success in MDD
Planning for Success in MDD
Steven Kelly
 
Lessons learnt from agile in local government
Lessons learnt from agile in local governmentLessons learnt from agile in local government
Lessons learnt from agile in local government
Michele Ide-Smith
 

Similar to Products are a mess (20)

Continuous Integration - Getting Your Department To Drink The Kool Aid
Continuous Integration - Getting Your Department To Drink The Kool AidContinuous Integration - Getting Your Department To Drink The Kool Aid
Continuous Integration - Getting Your Department To Drink The Kool Aid
 
5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation5 Steps to Jump Start Your Test Automation
5 Steps to Jump Start Your Test Automation
 
Lessons from DevOps: Taking DevOps practices into your AppSec Life
Lessons from DevOps: Taking DevOps practices into your AppSec LifeLessons from DevOps: Taking DevOps practices into your AppSec Life
Lessons from DevOps: Taking DevOps practices into your AppSec Life
 
Mobile media module part 6 - app development rev-mf
Mobile media module   part 6 - app development rev-mfMobile media module   part 6 - app development rev-mf
Mobile media module part 6 - app development rev-mf
 
Cloud Academy Webinar: Recipe for DevOps Success: Capital One Style
Cloud Academy Webinar: Recipe for DevOps Success: Capital One StyleCloud Academy Webinar: Recipe for DevOps Success: Capital One Style
Cloud Academy Webinar: Recipe for DevOps Success: Capital One Style
 
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
Enterprise Devops Presentation @ Magentys Seminar London May 15 2014
 
Continuous Integration: Getting your department to drink the Kool-Aid
Continuous Integration: Getting your department to drink the Kool-AidContinuous Integration: Getting your department to drink the Kool-Aid
Continuous Integration: Getting your department to drink the Kool-Aid
 
Margaret Menzies Intro & Scrum Overview
Margaret Menzies Intro & Scrum OverviewMargaret Menzies Intro & Scrum Overview
Margaret Menzies Intro & Scrum Overview
 
Enterprise DevOps
Enterprise DevOps Enterprise DevOps
Enterprise DevOps
 
DOES14 - Jonny Wooldridge - The Cambridge Satchel Company - 10 Enterprise Tip...
DOES14 - Jonny Wooldridge - The Cambridge Satchel Company - 10 Enterprise Tip...DOES14 - Jonny Wooldridge - The Cambridge Satchel Company - 10 Enterprise Tip...
DOES14 - Jonny Wooldridge - The Cambridge Satchel Company - 10 Enterprise Tip...
 
Matt tesauro Lessons from DevOps: Taking DevOps practices into your AppSec Li...
Matt tesauro Lessons from DevOps: Taking DevOps practices into your AppSec Li...Matt tesauro Lessons from DevOps: Taking DevOps practices into your AppSec Li...
Matt tesauro Lessons from DevOps: Taking DevOps practices into your AppSec Li...
 
CONFidence 2015: Lessons from DevOps: Taking DevOps practices into your AppSe...
CONFidence 2015: Lessons from DevOps: Taking DevOps practices into your AppSe...CONFidence 2015: Lessons from DevOps: Taking DevOps practices into your AppSe...
CONFidence 2015: Lessons from DevOps: Taking DevOps practices into your AppSe...
 
30 days or less: New Features to Production
30 days or less: New Features to Production30 days or less: New Features to Production
30 days or less: New Features to Production
 
STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)STAQ Development Manual (Redacted)
STAQ Development Manual (Redacted)
 
What is agile?
What is agile?What is agile?
What is agile?
 
Essential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile AdoptionEssential practices and thinking tools for Agile Adoption
Essential practices and thinking tools for Agile Adoption
 
Agile testing
Agile testingAgile testing
Agile testing
 
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest IrelandMarkus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
Markus Clermont - Surviving in an Agile Environment - Google - SoftTest Ireland
 
Planning for Success in MDD
Planning for Success in MDDPlanning for Success in MDD
Planning for Success in MDD
 
Lessons learnt from agile in local government
Lessons learnt from agile in local governmentLessons learnt from agile in local government
Lessons learnt from agile in local government
 

Recently uploaded

Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
Zilliz
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
Pixlogix Infotech
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
TIPNGVN2
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
DianaGray10
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
Matthew Sinclair
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 

Recently uploaded (20)

Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
Full-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalizationFull-RAG: A modern architecture for hyper-personalization
Full-RAG: A modern architecture for hyper-personalization
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website20 Comprehensive Checklist of Designing and Developing a Website
20 Comprehensive Checklist of Designing and Developing a Website
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1Communications Mining Series - Zero to Hero - Session 1
Communications Mining Series - Zero to Hero - Session 1
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
20240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 202420240605 QFM017 Machine Intelligence Reading List May 2024
20240605 QFM017 Machine Intelligence Reading List May 2024
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
TrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy SurveyTrustArc Webinar - 2024 Global Privacy Survey
TrustArc Webinar - 2024 Global Privacy Survey
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 

Products are a mess

  • 1. Products == Mess How to avoid it? -By Suman Mukherjee
  • 2. Is your product becoming like this? Courtesy - http://www.flickr.com/photos/ adamcathro/1035741023/sizes/m/in/photostream/
  • 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?
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 15. Metrics Collect metrics that matter Data can be both quantitative and qualitative Don’t collect and forget. Monitor and learn.
  • 16. Successful technical teams deliver good quality software consistently. Successful entrepreneurs solve problems of customers, not their own.
  • 17. Thank You Follow me - @mukherjeesuman or Email me - sumanmukherjee03@gmail.com

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n