SlideShare a Scribd company logo
1 of 41
Thinking Craftsman’s
Thumb Rules for
Common Sense
Software Development
Nitin Bhide
http://thinkingcraftsman.in
The Thumb Rules
Observe and Understand your customer
Make it Goof Proof
First, Do no Harm
Add Great Extras
Beware of Feature Creep
January 14

(C) Nitin Bhide

2
The Thumb Rules …
Strive for SIMPLICITY
Have a Backstage Pass
Common Practice is NOT ALWAYS Common
Sense

The Passion Factor - I will not Ship Shit
January 14

(C) Nitin Bhide

3
Acknowledgement



These ‘Thumb Rules’ my adaptation of
David Kelly’s Art of Innovation applied
to Software Development.

January 14

(C) Nitin Bhide

4
OBSERVE AND
UNDERSTAND YOUR
CUSTOMER

January 14

(C) Nitin Bhide

5
Find out who is your customer.


If you are developing a product, End
User is your customer



If you are developing a
library, Application Developer is your
customer

January 14

(C) Nitin Bhide

6
Understand the your customers
needs
Understand the your customers needs
and not just expectations
 Customer may have unreasonable
expectations but his needs are real.
 Needs and expectations can be totally
different.
 Once you understand the need, you can
give satisfactory solutions


January 14

(C) Nitin Bhide

7
What are the current pain areas ?


Observe how customer is using an
existing application



What are the current pain areas ?
◦ Is Performance a problem ?
◦ Is user interface /API a problem
(cryptic, confusing, too many alternatives)?
◦ Is he trying to fit rectangular peg in round
hole ?

January 14

(C) Nitin Bhide

8
MAKE IT GOOF PROOF

January 14

(C) Nitin Bhide

9
Make it Goof Proof


Remember that your Customer is Human.
◦ Hence he is bound to make mistakes at times.
◦ If you make sure that mistakes are caught
early, you are making him productive.



Don’t violate commonly accepted
conventions.
◦ E.g.. Don't put File Button at the end of Menu bar.

January 14

(C) Nitin Bhide

10
Examples of ‘Make it Goof Proof’
◦ Application Developers
 Undo,
 Error messages/recovery,
 AutoSave features

◦ Library Developers :
 Use assertions
 Give attention to error handling
 Provide logging and support for easier
debugging

January 14

(C) Nitin Bhide

11
FIRST, DO NO HARM

January 14

(C) Nitin Bhide

12
First, Do No Harm


Doctors principle applied to Software



Take the pain/struggle/frustration out
of your product, you will WIN over the
customer.



Ensure that customer doesn't loose his
data under any circumstances.

January 14

(C) Nitin Bhide

13
Examples
Clearly separate Inputs and Outputs for
functions.
 Avoid using same variable for input and
output
 If using same variable, do not change it
unless your function is successful.
 In C++, Use ‘const functions’ and ‘const
variables’.


January 14

(C) Nitin Bhide

14
ADD GREAT EXTRAS

January 14

(C) Nitin Bhide

15
Add Great Extras


At times, ‘Adding a Great Extra’ may
make or break a product.
◦ The Extra can be someone else’s product
added to your mix.
◦ The Extra can be something you have
developed.

January 14

(C) Nitin Bhide

16
Examples
Visual C++ is popular not because the
Compiler is best, but because IDE easier to
use.
 Support for multiple CAD file formats for
CAD Application.
 Add Support for writing Addins to the
application
 Giving a Installer/Uninstaller rather than
‘installation instructions sheet’.


January 14

(C) Nitin Bhide

17
Examples
Support to multiple compilers to your library
 Using a third party library (Geometry
Kernel, Standard Template Library etc).


◦ E.g. ‘This library is available on ACIS or Parasolid’ –
Great. Customer’s efforts/cost/development time
are reduced.

Adding a Debugging support.
 Making Sources available (for free or for fee)


◦ Source availability is a ‘Great Extra’ for all Open
Source software
January 14

(C) Nitin Bhide

18
BEWARE OF FEATURE
CREEP

January 14

(C) Nitin Bhide

19
Beware of Feature Creep


Adding unnecessary bells & whistles
complicates software
◦ It will make it difficult to design and implement.



If your users are struggling with manual
trying to find how to do a common task,
something is wrong with the product.



Simplicity is Essential.

January 14

(C) Nitin Bhide

20
Beware of Feature Creep


Challenge every feature.
◦ For every feature, ask
‘why?, why?, why?’



Chuck out preconceptions of ‘how
complex’ something needs to be ?

January 14

(C) Nitin Bhide

21
Beware of Feature Creep


Spend more time driving your own product.
◦ Try ‘driving’ them as if you are trying them for the
first time.
◦ Understand which features are ‘necessary’ and
which are not
◦ You are having problems using the software
definitely your users will have problems
◦ If you don’t like Unit Testing your
product, mostly likely your users won’t like to
test it either

January 14

(C) Nitin Bhide

22
STRIVE FOR SIMPLICITY

January 14

(C) Nitin Bhide

23
One click is Simple Than Two


Make your product Faster and Simpler to use
then it has a better chance of success.



Don’t let Cloud of features Blur the most
common use of your product.



Target for average common user and have
advanced features available for experts.

January 14

(C) Nitin Bhide

24
Strive for SIMPLICITY
In Architecture Design,
 In Coding
 In API Design
 In User Interface
 In Documentation


January 14

(C) Nitin Bhide

25
Examples


Amazon.com – Its simple one click ordering
process is a major of factor to make is popular



Pop Up /Context Sensitive Menu – Most
needed tasks are available on single click on
‘third button’.



Drag/Drop File Open

January 14

(C) Nitin Bhide

26
Examples


Visual Installers rather than install
scripts/documents.
◦ InstallShield and Wise created a Industry around a
simple user need.



Give a simple basic API and separately give
advanced API.



Maintain the consistency of API.

January 14

(C) Nitin Bhide

27
HAVE A BACKSTAGE PASS

January 14

(C) Nitin Bhide

28
Have a Backstage Pass


Give your customer a view of what is
happening behind the scene.



This gives them a sense of security.



Also provides them a view of what will
work and what won’t work.

January 14

(C) Nitin Bhide

29
Examples


Facility to provide detailed logs from the
application or library



Details of implemented/used algorithms



Document format of the support files



A Progress Bar is a classic example of ‘a
backstage pass’

January 14

(C) Nitin Bhide

30
COMMON PRACTICE IS
NOT ALWAYS COMMON
SENSE

January 14

(C) Nitin Bhide

31
Common Practice is NOT
ALWAYS Common Sense


Yesterdays Common Sense typically becomes
today’s Common Practice



Common Practices doesn't necessarily mean
its Common Sense in Today’s circumstances
and context



Following Common Practice WITHOUT
Understanding the Context is a recipe for
disaster

January 14

(C) Nitin Bhide

32
Classic Example


‘For Portable code, Don’t use templates
or STL’
◦ Common Sense 10 years back
◦ Common Practice Today (not a Common
Sense Any More)

January 14

(C) Nitin Bhide

33
Classic Example


Circumstances 10 years back.
◦ C++ Compiler on most of Unix platforms did not
support templates or STL
◦ Templates and STL are NOT part of C++ standard.
◦ Inconsistencies between different
implementations of templates and STL



Hence, Don’t Use STL is a Common
Sense 10 years back.

January 14

(C) Nitin Bhide

34
Classic Example


Circumstances Today
◦ Templates and STL are Part of C++ Standard
◦ All compilers support templates and STL
◦ Still few inconsistencies in template
implementation on different platforms



The Common Sense Today–
Use STL and Carefully use Templates

January 14

(C) Nitin Bhide

35
Other Examples of ‘Common
Practices’


“Starting a new Project ?”
◦
◦
◦
◦
◦
◦
◦



“Use COM”
“Use ActiveX”
“Use Java”
“Use XML”
“Use Web Services”
“Use RUP”
“Use UML”

The Latest “Use Agile”

January 14

(C) Nitin Bhide

36
PASSION FACTOR

January 14

(C) Nitin Bhide

37
The Passion Factor


All the above Thumb rules are useless if there
is NO PASSION.



Passion Fuels the Fire



‘Passion for work’, ‘Passion for Quality’ are
prerequisite to make sure that all other
Thumb Rules happen.

January 14

(C) Nitin Bhide

38
The Passion Factor


For A Passionate Team, Nothing is
Impossible.



Passionate Teams need ‘a tangible goal’.
Something to shoot for and Be Proud Of.



Passionate Teams need ‘Recognition’ of the
efforts to sustain and fuel the ‘passion’

January 14

(C) Nitin Bhide

39
The Passion Factor

Only a Passionate Leader
can
Nurture and Sustain
a Passionate Team
January 14

(C) Nitin Bhide

40
References


Art of Innovation – Tom Kelly

January 14

(C) Nitin Bhide

41

More Related Content

What's hot

DeKnowledge - Try us
DeKnowledge - Try usDeKnowledge - Try us
DeKnowledge - Try usBob Pinto
 
How To Review The Sprints Efficiently
How To Review The Sprints EfficientlyHow To Review The Sprints Efficiently
How To Review The Sprints EfficientlyLemi Orhan Ergin
 
Digital transformation testing.
Digital transformation testing. Digital transformation testing.
Digital transformation testing. Deepak Daniel
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous DeliveryJez Humble
 
How BDD enables True CI/CD
How BDD enables True CI/CDHow BDD enables True CI/CD
How BDD enables True CI/CDRoger Turnau
 
7 Wastes of Software Development
7 Wastes of Software Development7 Wastes of Software Development
7 Wastes of Software DevelopmentSunil Bajari
 
Integrating Hardware (Waterfall) and Software (Agile) Development
Integrating Hardware (Waterfall) and Software (Agile) DevelopmentIntegrating Hardware (Waterfall) and Software (Agile) Development
Integrating Hardware (Waterfall) and Software (Agile) DevelopmentIntland Software GmbH
 
Acceptance testfurureinmind
Acceptance testfurureinmindAcceptance testfurureinmind
Acceptance testfurureinmindLeanDog
 
Agile Embedded Software
Agile Embedded SoftwareAgile Embedded Software
Agile Embedded SoftwareJames Grenning
 
How testers add value to the organization appium conf
How testers add value to the organization  appium confHow testers add value to the organization  appium conf
How testers add value to the organization appium confCorina Pip
 
Andy Rachleff, Wealthfront Presentation at Lean Startup SXSW
Andy Rachleff, Wealthfront Presentation at Lean Startup SXSWAndy Rachleff, Wealthfront Presentation at Lean Startup SXSW
Andy Rachleff, Wealthfront Presentation at Lean Startup SXSW500 Startups
 
Lean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerBill Scott
 
Agile Adoption Story in LGE (Aps2010)
Agile Adoption Story in LGE (Aps2010)Agile Adoption Story in LGE (Aps2010)
Agile Adoption Story in LGE (Aps2010)Woogon Shim
 
GMO'less Software Development Practices
GMO'less Software Development PracticesGMO'less Software Development Practices
GMO'less Software Development PracticesLemi Orhan Ergin
 
Test driven development
Test driven developmentTest driven development
Test driven developmentSunil Prasad
 
Going the Next Step? Agile Values and Hardware Development by Urs Boehm
Going the Next Step? Agile Values and Hardware Development by Urs BoehmGoing the Next Step? Agile Values and Hardware Development by Urs Boehm
Going the Next Step? Agile Values and Hardware Development by Urs BoehmPeter Stevens
 
Doing agile with an ISO-20000 Telco (AgilePT 2015)
Doing agile with an ISO-20000 Telco (AgilePT 2015)Doing agile with an ISO-20000 Telco (AgilePT 2015)
Doing agile with an ISO-20000 Telco (AgilePT 2015)Manuel Padilha
 
Ilari henrik
Ilari henrikIlari henrik
Ilari henrikCodeFest
 
Embedded Extreme Programming - Embedded Systems Conference 2002-2004
Embedded Extreme Programming - Embedded Systems Conference 2002-2004Embedded Extreme Programming - Embedded Systems Conference 2002-2004
Embedded Extreme Programming - Embedded Systems Conference 2002-2004James Grenning
 

What's hot (20)

DeKnowledge - Try us
DeKnowledge - Try usDeKnowledge - Try us
DeKnowledge - Try us
 
How To Review The Sprints Efficiently
How To Review The Sprints EfficientlyHow To Review The Sprints Efficiently
How To Review The Sprints Efficiently
 
Digital transformation testing.
Digital transformation testing. Digital transformation testing.
Digital transformation testing.
 
Continuous Delivery
Continuous DeliveryContinuous Delivery
Continuous Delivery
 
How BDD enables True CI/CD
How BDD enables True CI/CDHow BDD enables True CI/CD
How BDD enables True CI/CD
 
7 Wastes of Software Development
7 Wastes of Software Development7 Wastes of Software Development
7 Wastes of Software Development
 
Integrating Hardware (Waterfall) and Software (Agile) Development
Integrating Hardware (Waterfall) and Software (Agile) DevelopmentIntegrating Hardware (Waterfall) and Software (Agile) Development
Integrating Hardware (Waterfall) and Software (Agile) Development
 
Acceptance testfurureinmind
Acceptance testfurureinmindAcceptance testfurureinmind
Acceptance testfurureinmind
 
Agile Embedded Software
Agile Embedded SoftwareAgile Embedded Software
Agile Embedded Software
 
How testers add value to the organization appium conf
How testers add value to the organization  appium confHow testers add value to the organization  appium conf
How testers add value to the organization appium conf
 
Andy Rachleff, Wealthfront Presentation at Lean Startup SXSW
Andy Rachleff, Wealthfront Presentation at Lean Startup SXSWAndy Rachleff, Wealthfront Presentation at Lean Startup SXSW
Andy Rachleff, Wealthfront Presentation at Lean Startup SXSW
 
Lean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partnerLean Engineering: How to make Engineering a full Lean UX partner
Lean Engineering: How to make Engineering a full Lean UX partner
 
Agile Adoption Story in LGE (Aps2010)
Agile Adoption Story in LGE (Aps2010)Agile Adoption Story in LGE (Aps2010)
Agile Adoption Story in LGE (Aps2010)
 
GMO'less Software Development Practices
GMO'less Software Development PracticesGMO'less Software Development Practices
GMO'less Software Development Practices
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Going the Next Step? Agile Values and Hardware Development by Urs Boehm
Going the Next Step? Agile Values and Hardware Development by Urs BoehmGoing the Next Step? Agile Values and Hardware Development by Urs Boehm
Going the Next Step? Agile Values and Hardware Development by Urs Boehm
 
Doing agile with an ISO-20000 Telco (AgilePT 2015)
Doing agile with an ISO-20000 Telco (AgilePT 2015)Doing agile with an ISO-20000 Telco (AgilePT 2015)
Doing agile with an ISO-20000 Telco (AgilePT 2015)
 
Kanban in Action
Kanban in ActionKanban in Action
Kanban in Action
 
Ilari henrik
Ilari henrikIlari henrik
Ilari henrik
 
Embedded Extreme Programming - Embedded Systems Conference 2002-2004
Embedded Extreme Programming - Embedded Systems Conference 2002-2004Embedded Extreme Programming - Embedded Systems Conference 2002-2004
Embedded Extreme Programming - Embedded Systems Conference 2002-2004
 

Similar to Common Sense Software Development

DevSecCon Boston 2018: Technical debt - why I love it by Mike Bursell
DevSecCon Boston 2018: Technical debt - why I love it by Mike BursellDevSecCon Boston 2018: Technical debt - why I love it by Mike Bursell
DevSecCon Boston 2018: Technical debt - why I love it by Mike BursellDevSecCon
 
Productionalizing Machine Learning Models: The Good, the Bad, and the Ugly
Productionalizing Machine Learning Models: The Good, the Bad, and the UglyProductionalizing Machine Learning Models: The Good, the Bad, and the Ugly
Productionalizing Machine Learning Models: The Good, the Bad, and the UglyIrina Kukuyeva, Ph.D.
 
What Are The Best Practices When Building a Back-end App With Kotlin And Spri...
What Are The Best Practices When Building a Back-end App With Kotlin And Spri...What Are The Best Practices When Building a Back-end App With Kotlin And Spri...
What Are The Best Practices When Building a Back-end App With Kotlin And Spri...Alex Fedorov
 
THE LEAN UX - SUMMARY
THE LEAN UX - SUMMARYTHE LEAN UX - SUMMARY
THE LEAN UX - SUMMARYVinsol
 
Enterprise Architecture in Practice: from Datastore to APIs and Apps
Enterprise Architecture in Practice: from Datastore to APIs and AppsEnterprise Architecture in Practice: from Datastore to APIs and Apps
Enterprise Architecture in Practice: from Datastore to APIs and AppsWSO2
 
Building Durable Software in Startups
Building Durable Software in StartupsBuilding Durable Software in Startups
Building Durable Software in StartupsDipto Chakravarty
 
Developer Experience
Developer ExperienceDeveloper Experience
Developer ExperienceThoughtworks
 
Minimal Viable Product
Minimal Viable ProductMinimal Viable Product
Minimal Viable Producttwcmad
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Interview preparation testing
Interview preparation testingInterview preparation testing
Interview preparation testingMallikarjuna G D
 
Budiness Value of User-Centered Design and Usability - Jeff Johnson
Budiness Value of User-Centered Design and Usability - Jeff JohnsonBudiness Value of User-Centered Design and Usability - Jeff Johnson
Budiness Value of User-Centered Design and Usability - Jeff JohnsonAkce Dobrého webu
 
Strategies for Implementing Aras Innovator
Strategies for Implementing Aras InnovatorStrategies for Implementing Aras Innovator
Strategies for Implementing Aras InnovatorAras
 
UX Workshop for Fin-Tech startups @ SBC
 UX Workshop for Fin-Tech startups @ SBC UX Workshop for Fin-Tech startups @ SBC
UX Workshop for Fin-Tech startups @ SBCDoralin Kelly
 
How to Get Your Product Manufactured
How to Get Your Product ManufacturedHow to Get Your Product Manufactured
How to Get Your Product ManufacturedAdam Cook
 
Data Science: Good, Bad and Ugly by Irina Kukuyeva
Data Science: Good, Bad and Ugly by Irina KukuyevaData Science: Good, Bad and Ugly by Irina Kukuyeva
Data Science: Good, Bad and Ugly by Irina KukuyevaData Con LA
 
PMI-ACP Lesson 01 Nugget 1 Introduction to Agile
PMI-ACP Lesson 01 Nugget 1 Introduction to AgilePMI-ACP Lesson 01 Nugget 1 Introduction to Agile
PMI-ACP Lesson 01 Nugget 1 Introduction to AgileThanh Nguyen
 
Productionalizing Machine Learning Models: The Good, The Bad and The Ugly
Productionalizing Machine Learning Models: The Good, The Bad and The UglyProductionalizing Machine Learning Models: The Good, The Bad and The Ugly
Productionalizing Machine Learning Models: The Good, The Bad and The UglyIrina Kukuyeva, Ph.D.
 
Perfect product architecture in a non-stop start-up
Perfect product architecture in a non-stop start-upPerfect product architecture in a non-stop start-up
Perfect product architecture in a non-stop start-upDroidConTLV
 
What makes a Strong Engineering Culture
What makes a Strong Engineering Culture What makes a Strong Engineering Culture
What makes a Strong Engineering Culture Michael Kalika
 
[DevRelCon Earth 2020] Developers, be the evangelist
[DevRelCon Earth 2020] Developers, be the evangelist[DevRelCon Earth 2020] Developers, be the evangelist
[DevRelCon Earth 2020] Developers, be the evangelistWoohyeok Kim
 

Similar to Common Sense Software Development (20)

DevSecCon Boston 2018: Technical debt - why I love it by Mike Bursell
DevSecCon Boston 2018: Technical debt - why I love it by Mike BursellDevSecCon Boston 2018: Technical debt - why I love it by Mike Bursell
DevSecCon Boston 2018: Technical debt - why I love it by Mike Bursell
 
Productionalizing Machine Learning Models: The Good, the Bad, and the Ugly
Productionalizing Machine Learning Models: The Good, the Bad, and the UglyProductionalizing Machine Learning Models: The Good, the Bad, and the Ugly
Productionalizing Machine Learning Models: The Good, the Bad, and the Ugly
 
What Are The Best Practices When Building a Back-end App With Kotlin And Spri...
What Are The Best Practices When Building a Back-end App With Kotlin And Spri...What Are The Best Practices When Building a Back-end App With Kotlin And Spri...
What Are The Best Practices When Building a Back-end App With Kotlin And Spri...
 
THE LEAN UX - SUMMARY
THE LEAN UX - SUMMARYTHE LEAN UX - SUMMARY
THE LEAN UX - SUMMARY
 
Enterprise Architecture in Practice: from Datastore to APIs and Apps
Enterprise Architecture in Practice: from Datastore to APIs and AppsEnterprise Architecture in Practice: from Datastore to APIs and Apps
Enterprise Architecture in Practice: from Datastore to APIs and Apps
 
Building Durable Software in Startups
Building Durable Software in StartupsBuilding Durable Software in Startups
Building Durable Software in Startups
 
Developer Experience
Developer ExperienceDeveloper Experience
Developer Experience
 
Minimal Viable Product
Minimal Viable ProductMinimal Viable Product
Minimal Viable Product
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Interview preparation testing
Interview preparation testingInterview preparation testing
Interview preparation testing
 
Budiness Value of User-Centered Design and Usability - Jeff Johnson
Budiness Value of User-Centered Design and Usability - Jeff JohnsonBudiness Value of User-Centered Design and Usability - Jeff Johnson
Budiness Value of User-Centered Design and Usability - Jeff Johnson
 
Strategies for Implementing Aras Innovator
Strategies for Implementing Aras InnovatorStrategies for Implementing Aras Innovator
Strategies for Implementing Aras Innovator
 
UX Workshop for Fin-Tech startups @ SBC
 UX Workshop for Fin-Tech startups @ SBC UX Workshop for Fin-Tech startups @ SBC
UX Workshop for Fin-Tech startups @ SBC
 
How to Get Your Product Manufactured
How to Get Your Product ManufacturedHow to Get Your Product Manufactured
How to Get Your Product Manufactured
 
Data Science: Good, Bad and Ugly by Irina Kukuyeva
Data Science: Good, Bad and Ugly by Irina KukuyevaData Science: Good, Bad and Ugly by Irina Kukuyeva
Data Science: Good, Bad and Ugly by Irina Kukuyeva
 
PMI-ACP Lesson 01 Nugget 1 Introduction to Agile
PMI-ACP Lesson 01 Nugget 1 Introduction to AgilePMI-ACP Lesson 01 Nugget 1 Introduction to Agile
PMI-ACP Lesson 01 Nugget 1 Introduction to Agile
 
Productionalizing Machine Learning Models: The Good, The Bad and The Ugly
Productionalizing Machine Learning Models: The Good, The Bad and The UglyProductionalizing Machine Learning Models: The Good, The Bad and The Ugly
Productionalizing Machine Learning Models: The Good, The Bad and The Ugly
 
Perfect product architecture in a non-stop start-up
Perfect product architecture in a non-stop start-upPerfect product architecture in a non-stop start-up
Perfect product architecture in a non-stop start-up
 
What makes a Strong Engineering Culture
What makes a Strong Engineering Culture What makes a Strong Engineering Culture
What makes a Strong Engineering Culture
 
[DevRelCon Earth 2020] Developers, be the evangelist
[DevRelCon Earth 2020] Developers, be the evangelist[DevRelCon Earth 2020] Developers, be the evangelist
[DevRelCon Earth 2020] Developers, be the evangelist
 

More from Nitin Bhide

2nd Techathon in Geometric - 27/28 Feb 2015
2nd Techathon in Geometric - 27/28 Feb 20152nd Techathon in Geometric - 27/28 Feb 2015
2nd Techathon in Geometric - 27/28 Feb 2015Nitin Bhide
 
Do/Doing/Done Is NOT Kanban
Do/Doing/Done Is NOT KanbanDo/Doing/Done Is NOT Kanban
Do/Doing/Done Is NOT KanbanNitin Bhide
 
Object Oriented Containers - Applying SOLID Principles to Docker/Container De...
Object Oriented Containers - Applying SOLID Principles to Docker/Container De...Object Oriented Containers - Applying SOLID Principles to Docker/Container De...
Object Oriented Containers - Applying SOLID Principles to Docker/Container De...Nitin Bhide
 
Daily Habits Of Highly Agile Developers
Daily Habits Of Highly Agile DevelopersDaily Habits Of Highly Agile Developers
Daily Habits Of Highly Agile DevelopersNitin Bhide
 
Collected Wisdom
Collected WisdomCollected Wisdom
Collected WisdomNitin Bhide
 
GUI patterns : My understanding
GUI patterns : My understandingGUI patterns : My understanding
GUI patterns : My understandingNitin Bhide
 
Code Review Checklist
Code Review ChecklistCode Review Checklist
Code Review ChecklistNitin Bhide
 
Iterator - a powerful but underappreciated design pattern
Iterator - a powerful but underappreciated design patternIterator - a powerful but underappreciated design pattern
Iterator - a powerful but underappreciated design patternNitin Bhide
 

More from Nitin Bhide (9)

2nd Techathon in Geometric - 27/28 Feb 2015
2nd Techathon in Geometric - 27/28 Feb 20152nd Techathon in Geometric - 27/28 Feb 2015
2nd Techathon in Geometric - 27/28 Feb 2015
 
Do/Doing/Done Is NOT Kanban
Do/Doing/Done Is NOT KanbanDo/Doing/Done Is NOT Kanban
Do/Doing/Done Is NOT Kanban
 
Object Oriented Containers - Applying SOLID Principles to Docker/Container De...
Object Oriented Containers - Applying SOLID Principles to Docker/Container De...Object Oriented Containers - Applying SOLID Principles to Docker/Container De...
Object Oriented Containers - Applying SOLID Principles to Docker/Container De...
 
Daily Habits Of Highly Agile Developers
Daily Habits Of Highly Agile DevelopersDaily Habits Of Highly Agile Developers
Daily Habits Of Highly Agile Developers
 
Collected Wisdom
Collected WisdomCollected Wisdom
Collected Wisdom
 
GUI patterns : My understanding
GUI patterns : My understandingGUI patterns : My understanding
GUI patterns : My understanding
 
Code Review Checklist
Code Review ChecklistCode Review Checklist
Code Review Checklist
 
CSS Basics
CSS BasicsCSS Basics
CSS Basics
 
Iterator - a powerful but underappreciated design pattern
Iterator - a powerful but underappreciated design patternIterator - a powerful but underappreciated design pattern
Iterator - a powerful but underappreciated design pattern
 

Recently uploaded

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 

Common Sense Software Development

  • 1. Thinking Craftsman’s Thumb Rules for Common Sense Software Development Nitin Bhide http://thinkingcraftsman.in
  • 2. The Thumb Rules Observe and Understand your customer Make it Goof Proof First, Do no Harm Add Great Extras Beware of Feature Creep January 14 (C) Nitin Bhide 2
  • 3. The Thumb Rules … Strive for SIMPLICITY Have a Backstage Pass Common Practice is NOT ALWAYS Common Sense The Passion Factor - I will not Ship Shit January 14 (C) Nitin Bhide 3
  • 4. Acknowledgement  These ‘Thumb Rules’ my adaptation of David Kelly’s Art of Innovation applied to Software Development. January 14 (C) Nitin Bhide 4
  • 6. Find out who is your customer.  If you are developing a product, End User is your customer  If you are developing a library, Application Developer is your customer January 14 (C) Nitin Bhide 6
  • 7. Understand the your customers needs Understand the your customers needs and not just expectations  Customer may have unreasonable expectations but his needs are real.  Needs and expectations can be totally different.  Once you understand the need, you can give satisfactory solutions  January 14 (C) Nitin Bhide 7
  • 8. What are the current pain areas ?  Observe how customer is using an existing application  What are the current pain areas ? ◦ Is Performance a problem ? ◦ Is user interface /API a problem (cryptic, confusing, too many alternatives)? ◦ Is he trying to fit rectangular peg in round hole ? January 14 (C) Nitin Bhide 8
  • 9. MAKE IT GOOF PROOF January 14 (C) Nitin Bhide 9
  • 10. Make it Goof Proof  Remember that your Customer is Human. ◦ Hence he is bound to make mistakes at times. ◦ If you make sure that mistakes are caught early, you are making him productive.  Don’t violate commonly accepted conventions. ◦ E.g.. Don't put File Button at the end of Menu bar. January 14 (C) Nitin Bhide 10
  • 11. Examples of ‘Make it Goof Proof’ ◦ Application Developers  Undo,  Error messages/recovery,  AutoSave features ◦ Library Developers :  Use assertions  Give attention to error handling  Provide logging and support for easier debugging January 14 (C) Nitin Bhide 11
  • 12. FIRST, DO NO HARM January 14 (C) Nitin Bhide 12
  • 13. First, Do No Harm  Doctors principle applied to Software  Take the pain/struggle/frustration out of your product, you will WIN over the customer.  Ensure that customer doesn't loose his data under any circumstances. January 14 (C) Nitin Bhide 13
  • 14. Examples Clearly separate Inputs and Outputs for functions.  Avoid using same variable for input and output  If using same variable, do not change it unless your function is successful.  In C++, Use ‘const functions’ and ‘const variables’.  January 14 (C) Nitin Bhide 14
  • 15. ADD GREAT EXTRAS January 14 (C) Nitin Bhide 15
  • 16. Add Great Extras  At times, ‘Adding a Great Extra’ may make or break a product. ◦ The Extra can be someone else’s product added to your mix. ◦ The Extra can be something you have developed. January 14 (C) Nitin Bhide 16
  • 17. Examples Visual C++ is popular not because the Compiler is best, but because IDE easier to use.  Support for multiple CAD file formats for CAD Application.  Add Support for writing Addins to the application  Giving a Installer/Uninstaller rather than ‘installation instructions sheet’.  January 14 (C) Nitin Bhide 17
  • 18. Examples Support to multiple compilers to your library  Using a third party library (Geometry Kernel, Standard Template Library etc).  ◦ E.g. ‘This library is available on ACIS or Parasolid’ – Great. Customer’s efforts/cost/development time are reduced. Adding a Debugging support.  Making Sources available (for free or for fee)  ◦ Source availability is a ‘Great Extra’ for all Open Source software January 14 (C) Nitin Bhide 18
  • 19. BEWARE OF FEATURE CREEP January 14 (C) Nitin Bhide 19
  • 20. Beware of Feature Creep  Adding unnecessary bells & whistles complicates software ◦ It will make it difficult to design and implement.  If your users are struggling with manual trying to find how to do a common task, something is wrong with the product.  Simplicity is Essential. January 14 (C) Nitin Bhide 20
  • 21. Beware of Feature Creep  Challenge every feature. ◦ For every feature, ask ‘why?, why?, why?’  Chuck out preconceptions of ‘how complex’ something needs to be ? January 14 (C) Nitin Bhide 21
  • 22. Beware of Feature Creep  Spend more time driving your own product. ◦ Try ‘driving’ them as if you are trying them for the first time. ◦ Understand which features are ‘necessary’ and which are not ◦ You are having problems using the software definitely your users will have problems ◦ If you don’t like Unit Testing your product, mostly likely your users won’t like to test it either January 14 (C) Nitin Bhide 22
  • 23. STRIVE FOR SIMPLICITY January 14 (C) Nitin Bhide 23
  • 24. One click is Simple Than Two  Make your product Faster and Simpler to use then it has a better chance of success.  Don’t let Cloud of features Blur the most common use of your product.  Target for average common user and have advanced features available for experts. January 14 (C) Nitin Bhide 24
  • 25. Strive for SIMPLICITY In Architecture Design,  In Coding  In API Design  In User Interface  In Documentation  January 14 (C) Nitin Bhide 25
  • 26. Examples  Amazon.com – Its simple one click ordering process is a major of factor to make is popular  Pop Up /Context Sensitive Menu – Most needed tasks are available on single click on ‘third button’.  Drag/Drop File Open January 14 (C) Nitin Bhide 26
  • 27. Examples  Visual Installers rather than install scripts/documents. ◦ InstallShield and Wise created a Industry around a simple user need.  Give a simple basic API and separately give advanced API.  Maintain the consistency of API. January 14 (C) Nitin Bhide 27
  • 28. HAVE A BACKSTAGE PASS January 14 (C) Nitin Bhide 28
  • 29. Have a Backstage Pass  Give your customer a view of what is happening behind the scene.  This gives them a sense of security.  Also provides them a view of what will work and what won’t work. January 14 (C) Nitin Bhide 29
  • 30. Examples  Facility to provide detailed logs from the application or library  Details of implemented/used algorithms  Document format of the support files  A Progress Bar is a classic example of ‘a backstage pass’ January 14 (C) Nitin Bhide 30
  • 31. COMMON PRACTICE IS NOT ALWAYS COMMON SENSE January 14 (C) Nitin Bhide 31
  • 32. Common Practice is NOT ALWAYS Common Sense  Yesterdays Common Sense typically becomes today’s Common Practice  Common Practices doesn't necessarily mean its Common Sense in Today’s circumstances and context  Following Common Practice WITHOUT Understanding the Context is a recipe for disaster January 14 (C) Nitin Bhide 32
  • 33. Classic Example  ‘For Portable code, Don’t use templates or STL’ ◦ Common Sense 10 years back ◦ Common Practice Today (not a Common Sense Any More) January 14 (C) Nitin Bhide 33
  • 34. Classic Example  Circumstances 10 years back. ◦ C++ Compiler on most of Unix platforms did not support templates or STL ◦ Templates and STL are NOT part of C++ standard. ◦ Inconsistencies between different implementations of templates and STL  Hence, Don’t Use STL is a Common Sense 10 years back. January 14 (C) Nitin Bhide 34
  • 35. Classic Example  Circumstances Today ◦ Templates and STL are Part of C++ Standard ◦ All compilers support templates and STL ◦ Still few inconsistencies in template implementation on different platforms  The Common Sense Today– Use STL and Carefully use Templates January 14 (C) Nitin Bhide 35
  • 36. Other Examples of ‘Common Practices’  “Starting a new Project ?” ◦ ◦ ◦ ◦ ◦ ◦ ◦  “Use COM” “Use ActiveX” “Use Java” “Use XML” “Use Web Services” “Use RUP” “Use UML” The Latest “Use Agile” January 14 (C) Nitin Bhide 36
  • 38. The Passion Factor  All the above Thumb rules are useless if there is NO PASSION.  Passion Fuels the Fire  ‘Passion for work’, ‘Passion for Quality’ are prerequisite to make sure that all other Thumb Rules happen. January 14 (C) Nitin Bhide 38
  • 39. The Passion Factor  For A Passionate Team, Nothing is Impossible.  Passionate Teams need ‘a tangible goal’. Something to shoot for and Be Proud Of.  Passionate Teams need ‘Recognition’ of the efforts to sustain and fuel the ‘passion’ January 14 (C) Nitin Bhide 39
  • 40. The Passion Factor Only a Passionate Leader can Nurture and Sustain a Passionate Team January 14 (C) Nitin Bhide 40
  • 41. References  Art of Innovation – Tom Kelly January 14 (C) Nitin Bhide 41