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 Featu...
The Thumb Rules …
Strive for SIMPLICITY
Have a Backstage Pass
Common Practice is NOT ALWAYS Common
Sense

The Passion Fact...
Acknowledgement



These ‘Thumb Rules’ my adaptation of
David Kelly’s Art of Innovation applied
to Software Development.
...
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
l...
Understand the your customers
needs
Understand the your customers needs
and not just expectations
 Customer may have unre...
What are the current pain areas ?


Observe how customer is using an
existing application



What are the current pain a...
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 s...
Examples of ‘Make it Goof Proof’
◦ Application Developers
 Undo,
 Error messages/recovery,
 AutoSave features

◦ Librar...
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...
Examples
Clearly separate Inputs and Outputs for
functions.
 Avoid using same variable for input and
output
 If using sa...
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 produc...
Examples
Visual C++ is popular not because the
Compiler is best, but because IDE easier to
use.
 Support for multiple CAD...
Examples
Support to multiple compilers to your library
 Using a third party library (Geometry
Kernel, Standard Template L...
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 ...
Beware of Feature Creep


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



Chuck out preconceptio...
Beware of Feature Creep


Spend more time driving your own product.
◦ Try ‘driving’ them as if you are trying them for th...
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.



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

Januar...
Examples


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



Pop Up /Context...
Examples


Visual Installers rather than install
scripts/documents.
◦ InstallShield and Wise created a Industry around a
...
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 s...
Examples


Facility to provide detailed logs from the
application or library



Details of implemented/used algorithms

...
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...
Classic Example


‘For Portable code, Don’t use templates
or STL’
◦ Common Sense 10 years back
◦ Common Practice Today (n...
Classic Example


Circumstances 10 years back.
◦ C++ Compiler on most of Unix platforms did not
support templates or STL
...
Classic Example


Circumstances Today
◦ Templates and STL are Part of C++ Standard
◦ All compilers support templates and ...
Other Examples of ‘Common
Practices’


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



“Use COM”
“Use ActiveX”
“Use Java”
“U...
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



‘Passio...
The Passion Factor


For A Passionate Team, Nothing is
Impossible.



Passionate Teams need ‘a tangible goal’.
Something...
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
Upcoming SlideShare
Loading in …5
×

Common Sense Software Development

2,629 views

Published on

Adaption of ideas from 'Art of Innovation' by David Kelly to Software Development

Published in: Technology, Education
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,629
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Common Sense Software Development

  1. 1. Thinking Craftsman’s Thumb Rules for Common Sense Software Development Nitin Bhide http://thinkingcraftsman.in
  2. 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. 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. 4. Acknowledgement  These ‘Thumb Rules’ my adaptation of David Kelly’s Art of Innovation applied to Software Development. January 14 (C) Nitin Bhide 4
  5. 5. OBSERVE AND UNDERSTAND YOUR CUSTOMER January 14 (C) Nitin Bhide 5
  6. 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. 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. 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. 9. MAKE IT GOOF PROOF January 14 (C) Nitin Bhide 9
  10. 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. 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. 12. FIRST, DO NO HARM January 14 (C) Nitin Bhide 12
  13. 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. 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. 15. ADD GREAT EXTRAS January 14 (C) Nitin Bhide 15
  16. 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. 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. 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. 19. BEWARE OF FEATURE CREEP January 14 (C) Nitin Bhide 19
  20. 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. 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. 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. 23. STRIVE FOR SIMPLICITY January 14 (C) Nitin Bhide 23
  24. 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. 25. Strive for SIMPLICITY In Architecture Design,  In Coding  In API Design  In User Interface  In Documentation  January 14 (C) Nitin Bhide 25
  26. 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. 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. 28. HAVE A BACKSTAGE PASS January 14 (C) Nitin Bhide 28
  29. 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. 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. 31. COMMON PRACTICE IS NOT ALWAYS COMMON SENSE January 14 (C) Nitin Bhide 31
  32. 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. 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. 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. 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. 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
  37. 37. PASSION FACTOR January 14 (C) Nitin Bhide 37
  38. 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. 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. 40. The Passion Factor Only a Passionate Leader can Nurture and Sustain a Passionate Team January 14 (C) Nitin Bhide 40
  41. 41. References  Art of Innovation – Tom Kelly January 14 (C) Nitin Bhide 41

×