Software Development In 21 st  Century
www.henryjacob.com www.designdrivendevelopment.org www.arrkgroup.com
Deadlines Poor Estimation Requirement Changes Immature Architecture and Design No Domain Knowledge Assumption Bad Code Quality No Documentation Death March It’s not my code-Attitude Inadequate Testing
We are not alone
41.1% of projects will be cancelled before completion 52% of projects will cost 189% of their original estimate Projects completed will contain 42% of the original proposed features and functions  The average schedule overrun is 222% of the original time estimate
“ Mythical Man Month”  -Fred Brooks  Manager of OS/360 5000 Man-Years Effort
The practices of the software engineering community have changed very little over the last 30 years, and the mistakes being made then are still being made today.
What missed in most of cases is  REALITY
Deadlines: More Software projects have gone haywire for lack of calendar time than for all other causes combined – Brooks Can we change deadlines? NO (In most cases)
Poor Estimation Assumes nothing will go wrong Large project has many smaller tasks Hard to know all in advance Hard to estimate accurately Gutless estimating Some tasks can’t be sped up Dependencies often make tasks sequential Most measures confuse effort with progress People and months are not interchangeable Not all hours devoted to project
Requirement Changes: "Writing software that fully meets its specifications is like walking on water. The former is easy only if the later is frozen, otherwise it’s near impossible."
Ours is a world where people don't know what they want. The only time you can really find the best problem definition is after you found the solution -De Bono Perception about the problem changes, sometimes the problem itself.
Architecture: Black Hole Incompleteness and inconsistencies of our ideas become clear only during implementation We can’t travel in two boats at the same time. Focus changes from Architecture to Application Delivery. Architecture requirements can be identified only when application matures.
We can’t build architecture.  it evolves.
No Domain Knowledge Assumption
Bad Code Quality: Complex, unstructured, scattered and unnecessary code blocks, huge amount of codes  Inevitable shifts in requirements and added functionality. Lack of code reviews. Lack of programming skills. Programs evolves, grows and... dies if not taken care of
No Documentation: Use cases, Design Documents, Class Diagrams, HLD, etc. How useful these documents? Software is the document
Death March: People are designed to dissatisfied Technology Trap Lack of motivation There is no such thing as a boring project. There are only boring executions. - Irene Etzkorn
It’s not my code-Attitude: Fear of touching another programmer's code as a factor in slowing down many projects.  -Kent Beck
Testing : Only 30% of tests are planned Impossible to test every aspect of code, manually.
Mediocre Approach : Only leaders can lead.
Deadlines are inevitable  Everything will take its time Requirements changes (always) We can’t build architecture. it evolves.  Programs evolves, grows and... dies if not taken care of Software is the document Impossible to test every aspect of the code, manually  Only leaders can lead
Individuals and interactions over processes and tools  Working software over comprehensive documentation  Customer collaboration over contract negotiation  Responding to change over following a plan
Scope Feedback Simplicity Test Driven Continuous Integration Refactoring Revamping Empowered Team
Feedback: Small Releases  Shorter Iterations  Stand-up Meetings Code Review – (Design Pair | Pair Programming) Automated Tests
Dream Phase: Product Definition, Behavior Engineering, Base Interaction Design  Release Plan  Iteration Plan Base Architecture: Extract Architecture Story – Estimate – Scope - Iteration Plan [Refactor] - Design – Test - Code – Refactor Continuous Test and Integration Feedback – Standup, Iteration - Release
Business Requirements  Stabilizing the Architecture  Usability Engineering
Standard Component Framework, MVC or any Variant Utilities and Support Component Exception Handling Strategy  Transaction  Persistence Frameworks Data Concurrency Control  Folder Structure and Build Processes Strategy User Mgmt, Control Flow Internalization
Building great software is easy: build a great team and they'll make the software for you.
Customer/Proxy Customer User Architect Project Lead Super Programmers Programmers Interaction Designer  Team Coordinators
Small Teams 40 Hrs Per Week Environment
Chemical engineers learned long ago that a process that works in the laboratory cannot be implemented in a factory in one step. An intermediate step called the  pilot plant  is necessary.... In most [software] projects, the first system is barely usable. It may be too slow, too big, awkward to use, or all three.   There is no alternative but to start again , smarting but smarter, and build a redesigned version in which these problems are solved.... Delivering the throwaway to customers buys time, but it does so only at the cost of agony for the user, distraction for the builders while they do the redesign, and a bad reputation for the product that the best redesign will find hard to live down. Hence,  plan to throw one away; you will, anyhow .
“ If Microsoft is good at anything, it’s avoiding the trap of worrying about criticism. Microsoft fails constantly. They’re eviscerated in public for lousy products. Yet they persist, through version after version, until they get something good enough. Then they leverage the power they’ve gained in other markets to enforce their standard.”  - Seth Godin in Zooming

Software Development in 21st Century

  • 1.
  • 2.
  • 3.
    Deadlines Poor EstimationRequirement Changes Immature Architecture and Design No Domain Knowledge Assumption Bad Code Quality No Documentation Death March It’s not my code-Attitude Inadequate Testing
  • 4.
  • 5.
    41.1% of projectswill be cancelled before completion 52% of projects will cost 189% of their original estimate Projects completed will contain 42% of the original proposed features and functions The average schedule overrun is 222% of the original time estimate
  • 6.
    “ Mythical ManMonth” -Fred Brooks Manager of OS/360 5000 Man-Years Effort
  • 7.
    The practices ofthe software engineering community have changed very little over the last 30 years, and the mistakes being made then are still being made today.
  • 8.
    What missed inmost of cases is REALITY
  • 9.
    Deadlines: More Softwareprojects have gone haywire for lack of calendar time than for all other causes combined – Brooks Can we change deadlines? NO (In most cases)
  • 10.
    Poor Estimation Assumesnothing will go wrong Large project has many smaller tasks Hard to know all in advance Hard to estimate accurately Gutless estimating Some tasks can’t be sped up Dependencies often make tasks sequential Most measures confuse effort with progress People and months are not interchangeable Not all hours devoted to project
  • 11.
    Requirement Changes: "Writingsoftware that fully meets its specifications is like walking on water. The former is easy only if the later is frozen, otherwise it’s near impossible."
  • 12.
    Ours is aworld where people don't know what they want. The only time you can really find the best problem definition is after you found the solution -De Bono Perception about the problem changes, sometimes the problem itself.
  • 13.
    Architecture: Black HoleIncompleteness and inconsistencies of our ideas become clear only during implementation We can’t travel in two boats at the same time. Focus changes from Architecture to Application Delivery. Architecture requirements can be identified only when application matures.
  • 14.
    We can’t buildarchitecture. it evolves.
  • 15.
  • 16.
    Bad Code Quality:Complex, unstructured, scattered and unnecessary code blocks, huge amount of codes Inevitable shifts in requirements and added functionality. Lack of code reviews. Lack of programming skills. Programs evolves, grows and... dies if not taken care of
  • 17.
    No Documentation: Usecases, Design Documents, Class Diagrams, HLD, etc. How useful these documents? Software is the document
  • 18.
    Death March: Peopleare designed to dissatisfied Technology Trap Lack of motivation There is no such thing as a boring project. There are only boring executions. - Irene Etzkorn
  • 19.
    It’s not mycode-Attitude: Fear of touching another programmer's code as a factor in slowing down many projects. -Kent Beck
  • 20.
    Testing : Only30% of tests are planned Impossible to test every aspect of code, manually.
  • 21.
    Mediocre Approach :Only leaders can lead.
  • 22.
    Deadlines are inevitable Everything will take its time Requirements changes (always) We can’t build architecture. it evolves. Programs evolves, grows and... dies if not taken care of Software is the document Impossible to test every aspect of the code, manually Only leaders can lead
  • 23.
    Individuals and interactionsover processes and tools Working software over comprehensive documentation Customer collaboration over contract negotiation Responding to change over following a plan
  • 24.
    Scope Feedback SimplicityTest Driven Continuous Integration Refactoring Revamping Empowered Team
  • 25.
    Feedback: Small Releases Shorter Iterations Stand-up Meetings Code Review – (Design Pair | Pair Programming) Automated Tests
  • 26.
    Dream Phase: ProductDefinition, Behavior Engineering, Base Interaction Design Release Plan Iteration Plan Base Architecture: Extract Architecture Story – Estimate – Scope - Iteration Plan [Refactor] - Design – Test - Code – Refactor Continuous Test and Integration Feedback – Standup, Iteration - Release
  • 27.
    Business Requirements Stabilizing the Architecture  Usability Engineering
  • 28.
    Standard Component Framework,MVC or any Variant Utilities and Support Component Exception Handling Strategy Transaction Persistence Frameworks Data Concurrency Control Folder Structure and Build Processes Strategy User Mgmt, Control Flow Internalization
  • 29.
    Building great softwareis easy: build a great team and they'll make the software for you.
  • 30.
    Customer/Proxy Customer UserArchitect Project Lead Super Programmers Programmers Interaction Designer Team Coordinators
  • 31.
    Small Teams 40Hrs Per Week Environment
  • 32.
    Chemical engineers learnedlong ago that a process that works in the laboratory cannot be implemented in a factory in one step. An intermediate step called the pilot plant is necessary.... In most [software] projects, the first system is barely usable. It may be too slow, too big, awkward to use, or all three. There is no alternative but to start again , smarting but smarter, and build a redesigned version in which these problems are solved.... Delivering the throwaway to customers buys time, but it does so only at the cost of agony for the user, distraction for the builders while they do the redesign, and a bad reputation for the product that the best redesign will find hard to live down. Hence, plan to throw one away; you will, anyhow .
  • 33.
    “ If Microsoftis good at anything, it’s avoiding the trap of worrying about criticism. Microsoft fails constantly. They’re eviscerated in public for lousy products. Yet they persist, through version after version, until they get something good enough. Then they leverage the power they’ve gained in other markets to enforce their standard.” - Seth Godin in Zooming