products = mess - how to avoid it? by suman mukherjee

17
Products == Mess How to avoid it? -By Suman Mukherjee Saturday, September 29, 12

Upload: webgeek-philippines

Post on 01-Nov-2014

1.123 views

Category:

Documents


4 download

DESCRIPTION

 

TRANSCRIPT

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

Products == Mess

How to avoid it?

-By Suman Mukherjee

Saturday, September 29, 12

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

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

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

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

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

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

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

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

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

Core should be SOLID

Single Responsibility - A class should have one and only one reason to changeOpen Closed - Open for extension, closed for modificationLiskov substitution - Derived objects should be able to substitute parent objectsInterface Segregation - Small interfaces that cater to specific clientsDependency Inversion - Depend on abstractions not concretions

Saturday, September 29, 12

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Metrics

Collect metrics that matter

Data can be both quantitative and qualitative

Don’t collect and forget. Monitor and learn.

Saturday, September 29, 12

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

Successful technical teams deliver good quality software consistently.

Successful entrepreneurs solve problems of customers, not their own.

Saturday, September 29, 12

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

Thank You

Follow me - @mukherjeesumanor

Email me - [email protected]

Saturday, September 29, 12