SlideShare a Scribd company logo
1 of 4
Download to read offline
White Paper: Improving Application Development Effectiveness
Author: Nicholas Spanos, Principal Consultant Computer Aid, Inc.
Nick_Spanos@compaid.com           717-329-9323

Purpose: Define a strategy for improving quality and reducing effort related to the
development of applications.

Background: The evolution of the Information Technology industry is following a path
that is quite similar to the evolution of the manufacturing industry. We must keep in
mind that IT is still a very young profession. Best practices and the associated roles and
responsibilities are still evolving in response to rapidly changing technology.

Let’s begin by comparing the evolution of manufacturing to the current state of IT:

The Evolution of Manufacturing:

   1. Prior to the 20th century, manufacturing involved a fabrication process employing
      highly skilled craftsman. Quality was directly linked to the professionalism and
      skill of the individual craftsman. The resulting products were individual creations
      that may have been similar but were rarely identical.

   2. Most manufacturing companies followed the lead of Henry Ford and transformed
      from a fabrication process employing highly skilled craftsmen to an assembly line
      using lower skilled workers to assemble standard components. Results: Greater
      throughput, lower costs, standardized quality.

   3. The creative abilities of skilled craftsman were no longer necessary when building
      products. Creative activities occurred during the design of the components and
      the development of the assembly processes. The effort required to assemble the
      final product was easier to control and dramatically increased the quantity,
      quality, and consistency while reducing cost.

   4. Quality problems persisted because of issues with component design and the
      assembly processes. The second revolution in manufacturing came with the
      increased use of automation to assemble components, better metrics, and better
      quality control.

   5. Results: The price of most manufactured goods continues to decline (relative to
      inflation) while the quality and features continue to increase.


The Current State of IT:

   1. Most IT organizations develop Software in response to a unique set of
      requirements. They employ skilled craftsmen who utilize their creative skills to
      develop software that is customized for the stated requirements. This approach is


                     Distribution requires permission from the author
similar to the use of craftsman by the manufacturing industry prior to the 20th
   century (with similar results). Each product is unique and quality and efficiency
   are the responsibility of the individual craftsman and difficult to measure.

2. The quality and efficiency of the design and the final product is the direct result of
   the creativity and skill level of the individual developers. Functionality is based
   on the unique requirements as defined by the requester.

3. The effort (and the cost) for designing and developing these unique “one off”
   applications is significant. As a result, new applications are rarely authorized and
   we continue to operate and maintain older legacy applications. Support costs are
   also higher because the resulting applications require special knowledge to
   operate and support because they are all uniquely different in their basic design.

4. Collecting metrics is difficult. Creative processes do not automatically generate
   metrics. Metrics generation requires additional effort that is typically resisted.
   Even if metrics are collected, they are useful in defining and measuring quality
   but the existence of metrics to not ensure quality.

5. Repeatable processes are marginally useful in defining and managing creative
   fabrication activities. They are very useful in managing repeatable assembly
   activities.

6. Development tools change frequently. The decision to utilize a new tool is very
   often made by a developer without serious consideration for the available
   knowledge base and future support challenges.

7. Current development tools provide the capability to leverage the enhanced
   infrastructure. Most of these new Object-Oriented languages are based on low-
   level rudimentary languages like C++ and Basic. They facilitate code re-
   usability at the object level (e.g. drop down boxes) but they hinder re-usability at
   the functional level. In the past, we could develop an online interactive program
   that updated a database and clone this program to develop other similar functions.
   This level of re-usability is much more difficult with Object Oriented languages.

8. These new Object Oriented Languages are more difficult to learn than their
   predecessors. Inexperienced developers are more likely to have learned the newer
   languages but they do not have the design skills required to develop new
   applications. IT organizations do not train their experienced developers on newer
   technologies. As a result, the average skill level available for newer technologies
   is not adequate for developing complex applications.




                 Distribution requires permission from the author
The Obvious Solution: Organize development teams by technology area

   1. Choose the desired development environment(s) and technology by assessing the
      benefits and limitations of the available options. The decision should also
      consider the availability of knowledgeable staff and the effort required to learn the
      technology.
   2. Create core teams that specialize in specific development environments and tools.
      The staff must be pre-trained and include a variety of skill levels to allow for
      career growth opportunities.
   3. Assign a system architect to each development environment. The architect should
      have strong design, development, and support experience with the environment.
   4. Assign an experienced manager with process development and enforcement
      experience as well as strong organizational skills.
   5. Create repeatable estimating processes that consider the unique requirements of
      each technology area.
   6. Maintain team cohesion. At the end of a project, team members are dispersed to
      other assignments. It is much more effective to retain team unity and assign them
      to the next project as a unit.
   7. Define Formal Roles and Responsibilities. The roles and responsibilities should
      consider the unique requirements of each development environment and also be
      linked to position descriptions and career development paths. Assignments
      should consider prior experience as well as the development plan of associates to
      facilitate career development that will be valuable in future projects. Sometimes,
      this choice will have a short-term negative impact on profitability that should be
      considered as an investment to increase profitability of future projects.
   8. Define standard documentation formats. Design specifications facilitate
      development but they provide limited benefits once the system is implemented in
      production. Standard Application documentation is required to assist with the
      operation and support of the application.
   9. Support considerations should receive a high priority. Design decisions can have
      significant impacts on the supportability and reliability of applications. A high
      level of manual intervention combined with inadequate data validation and
      automated error trapping account for a large number of recurring problems.
      These decisions may reduce development cost and expedite development.
      Unfortunately, the increased support costs and risks will eclipse any development
      savings.




                    Distribution requires permission from the author
The Not-So-Obvious Solution: Planned Re-Usability to manage creativity


Issue: The creation of teams that specialize in a given technology is a common practice.
These teams continue to fail because they still depend heavily on creative efforts of the
individual team members.
“Object Oriented” languages claim to provide re-usability. Unfortunately, their re-usable
components are low-level objects. They provide re-usable functions for creating a drop-
down list but do not provide a re-usable function for updating information about people.
Solution: We need to be more proactive in developing and utilizing re-usable
components. We also need to manage and control creative activities that are difficult to
estimate and can have significant impacts on the schedule, quality, risk, and cost of a
project. The following recommendations apply to each technology area:

   1. Create re-usable specifications and functions. Most systems maintain data about
      people, places, things, and processes. When designing screens and databases to
      maintain this type of information, choose design options that provide the greatest
      potential for re-use in future applications. Most applications track people and
      organizations. Unfortunately, these functions were designed to be unique to each
      application and are not re-usable across applications. Re-usability should be a
      high priority design consideration.
   2. Use bench resources and trainees to create/enhance re-usable modules.
      Gradually, an inventory of high quality modules will be available for each
      technology area that will facilitate future development.
   3. Maintain an inventory of re-usable modules. Modules cannot be re-used if
      developers are not aware of their existence. This inventory should also include
      re-usable specifications and documentation.
   4. Define requirements and functional specifications based on existing re-usable
      functions. This facilitates the rapid demonstration of the solution and maximizes
      the possibility for re-using existing functionality. By re-using specs and modules,
      we will reduce the cost of designing and developing these functions for every
      application.


Summary
These recommendations are old solutions. We have discarded these proven solutions
because newer Object Oriented technologies have claimed to be re-usable but they only
provide re-usability at the individual object level (e.g. drop down box). Re-using Object
functionality requires a proactive effort on the part of IT organizations but the benefits
can be significant. If we implement these recommendations, we will be following the
example of the manufacturing industry by assembling components to build systems and
reducing dependence on the creative skills of craftsmen.



                     Distribution requires permission from the author

More Related Content

What's hot

FISHBONE ANALYSIS ON WASTES IN SOFTWARE DEVELOPMENT USING THE LEAN I.T. PRINC...
FISHBONE ANALYSIS ON WASTES IN SOFTWARE DEVELOPMENT USING THE LEAN I.T. PRINC...FISHBONE ANALYSIS ON WASTES IN SOFTWARE DEVELOPMENT USING THE LEAN I.T. PRINC...
FISHBONE ANALYSIS ON WASTES IN SOFTWARE DEVELOPMENT USING THE LEAN I.T. PRINC...ecij
 
An Agile Software Development Framework
An Agile Software Development FrameworkAn Agile Software Development Framework
An Agile Software Development FrameworkWaqas Tariq
 
Understanding and improving software productivity
Understanding and improving software productivityUnderstanding and improving software productivity
Understanding and improving software productivityGeorge Valiyaveetil
 
Software engineering
Software engineeringSoftware engineering
Software engineeringfaisalwajid
 
Software Engineering Past Papers Notes
Software Engineering Past Papers Notes Software Engineering Past Papers Notes
Software Engineering Past Papers Notes MuhammadTalha436
 
A PROCESS QUALITY IMPROVEMENT MECHANISM FOR REDUCING THE RISK OF CI ENVIRONMENT
A PROCESS QUALITY IMPROVEMENT MECHANISM FOR REDUCING THE RISK OF CI ENVIRONMENTA PROCESS QUALITY IMPROVEMENT MECHANISM FOR REDUCING THE RISK OF CI ENVIRONMENT
A PROCESS QUALITY IMPROVEMENT MECHANISM FOR REDUCING THE RISK OF CI ENVIRONMENTijcsit
 
A FRAMEWORK FOR INTEGRATING USABILITY PRACTICES INTO SMALL-SIZED SOFTWARE DEV...
A FRAMEWORK FOR INTEGRATING USABILITY PRACTICES INTO SMALL-SIZED SOFTWARE DEV...A FRAMEWORK FOR INTEGRATING USABILITY PRACTICES INTO SMALL-SIZED SOFTWARE DEV...
A FRAMEWORK FOR INTEGRATING USABILITY PRACTICES INTO SMALL-SIZED SOFTWARE DEV...ijseajournal
 
Process Improvement for better Software Technical Quality under Global Crisis...
Process Improvement for better Software Technical Quality under Global Crisis...Process Improvement for better Software Technical Quality under Global Crisis...
Process Improvement for better Software Technical Quality under Global Crisis...Optimyth Software
 
Modern Software Productivity Measurement: The Pragmatic Guide
Modern Software Productivity Measurement: The Pragmatic GuideModern Software Productivity Measurement: The Pragmatic Guide
Modern Software Productivity Measurement: The Pragmatic GuideCAST
 
Usability Evaluation Techniques for Agile Software Model
Usability Evaluation Techniques for Agile Software Model Usability Evaluation Techniques for Agile Software Model
Usability Evaluation Techniques for Agile Software Model Saad, Ph.D (Health IT)
 
A new perspective on software factory for the development of mobile applications
A new perspective on software factory for the development of mobile applicationsA new perspective on software factory for the development of mobile applications
A new perspective on software factory for the development of mobile applicationsinventionjournals
 
Online Software development training
Online Software development trainingOnline Software development training
Online Software development trainingvibrantuser
 
Managing Large-scale Multimedia Development Projects
Managing Large-scale Multimedia Development ProjectsManaging Large-scale Multimedia Development Projects
Managing Large-scale Multimedia Development ProjectsSimon Price
 
Software Engineering Practice - Project management
Software Engineering Practice - Project managementSoftware Engineering Practice - Project management
Software Engineering Practice - Project managementRadu_Negulescu
 

What's hot (18)

FISHBONE ANALYSIS ON WASTES IN SOFTWARE DEVELOPMENT USING THE LEAN I.T. PRINC...
FISHBONE ANALYSIS ON WASTES IN SOFTWARE DEVELOPMENT USING THE LEAN I.T. PRINC...FISHBONE ANALYSIS ON WASTES IN SOFTWARE DEVELOPMENT USING THE LEAN I.T. PRINC...
FISHBONE ANALYSIS ON WASTES IN SOFTWARE DEVELOPMENT USING THE LEAN I.T. PRINC...
 
An Agile Software Development Framework
An Agile Software Development FrameworkAn Agile Software Development Framework
An Agile Software Development Framework
 
Understanding and improving software productivity
Understanding and improving software productivityUnderstanding and improving software productivity
Understanding and improving software productivity
 
Software engineering
Software engineeringSoftware engineering
Software engineering
 
Software Engineering Past Papers Notes
Software Engineering Past Papers Notes Software Engineering Past Papers Notes
Software Engineering Past Papers Notes
 
Vivek_MK
Vivek_MKVivek_MK
Vivek_MK
 
A PROCESS QUALITY IMPROVEMENT MECHANISM FOR REDUCING THE RISK OF CI ENVIRONMENT
A PROCESS QUALITY IMPROVEMENT MECHANISM FOR REDUCING THE RISK OF CI ENVIRONMENTA PROCESS QUALITY IMPROVEMENT MECHANISM FOR REDUCING THE RISK OF CI ENVIRONMENT
A PROCESS QUALITY IMPROVEMENT MECHANISM FOR REDUCING THE RISK OF CI ENVIRONMENT
 
Lecture1422914635
Lecture1422914635Lecture1422914635
Lecture1422914635
 
M017548895
M017548895M017548895
M017548895
 
A FRAMEWORK FOR INTEGRATING USABILITY PRACTICES INTO SMALL-SIZED SOFTWARE DEV...
A FRAMEWORK FOR INTEGRATING USABILITY PRACTICES INTO SMALL-SIZED SOFTWARE DEV...A FRAMEWORK FOR INTEGRATING USABILITY PRACTICES INTO SMALL-SIZED SOFTWARE DEV...
A FRAMEWORK FOR INTEGRATING USABILITY PRACTICES INTO SMALL-SIZED SOFTWARE DEV...
 
Process Improvement for better Software Technical Quality under Global Crisis...
Process Improvement for better Software Technical Quality under Global Crisis...Process Improvement for better Software Technical Quality under Global Crisis...
Process Improvement for better Software Technical Quality under Global Crisis...
 
Modern Software Productivity Measurement: The Pragmatic Guide
Modern Software Productivity Measurement: The Pragmatic GuideModern Software Productivity Measurement: The Pragmatic Guide
Modern Software Productivity Measurement: The Pragmatic Guide
 
Unit 1 OOSE
Unit 1 OOSEUnit 1 OOSE
Unit 1 OOSE
 
Usability Evaluation Techniques for Agile Software Model
Usability Evaluation Techniques for Agile Software Model Usability Evaluation Techniques for Agile Software Model
Usability Evaluation Techniques for Agile Software Model
 
A new perspective on software factory for the development of mobile applications
A new perspective on software factory for the development of mobile applicationsA new perspective on software factory for the development of mobile applications
A new perspective on software factory for the development of mobile applications
 
Online Software development training
Online Software development trainingOnline Software development training
Online Software development training
 
Managing Large-scale Multimedia Development Projects
Managing Large-scale Multimedia Development ProjectsManaging Large-scale Multimedia Development Projects
Managing Large-scale Multimedia Development Projects
 
Software Engineering Practice - Project management
Software Engineering Practice - Project managementSoftware Engineering Practice - Project management
Software Engineering Practice - Project management
 

Similar to Improving Application Development Effectiveness

Lect5 improving software economics
Lect5 improving software economicsLect5 improving software economics
Lect5 improving software economicsmeena466141
 
The Product and Process(1).pdf
The Product and Process(1).pdfThe Product and Process(1).pdf
The Product and Process(1).pdfShivareddyGangam
 
Week_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.pptWeek_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.pptRedHeart11
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software EngineeringSaqib Raza
 
Appendix AProof of effectiveness of some of the agile methods us.docx
Appendix AProof of effectiveness of some of the agile methods us.docxAppendix AProof of effectiveness of some of the agile methods us.docx
Appendix AProof of effectiveness of some of the agile methods us.docxarmitageclaire49
 
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycleAfrasiyab Haider
 
Developing reusable software components for distributed embedded systems
Developing reusable software components for distributed embedded systemsDeveloping reusable software components for distributed embedded systems
Developing reusable software components for distributed embedded systemseSAT Publishing House
 
Modern Elicitation Process
Modern Elicitation ProcessModern Elicitation Process
Modern Elicitation ProcessRajon
 
Fundamentals of Software Engineering
Fundamentals of Software Engineering Fundamentals of Software Engineering
Fundamentals of Software Engineering Madhar Khan Pathan
 
Software Engineering Basics.pdf
Software Engineering Basics.pdfSoftware Engineering Basics.pdf
Software Engineering Basics.pdfPriyajit Sen
 
Agile Project Management Methods of ERP
Agile Project Management Methods of ERPAgile Project Management Methods of ERP
Agile Project Management Methods of ERPlisa_yogi
 

Similar to Improving Application Development Effectiveness (20)

Lect5 improving software economics
Lect5 improving software economicsLect5 improving software economics
Lect5 improving software economics
 
The Product and Process(1).pdf
The Product and Process(1).pdfThe Product and Process(1).pdf
The Product and Process(1).pdf
 
Spm unit 2
Spm unit 2Spm unit 2
Spm unit 2
 
Week_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.pptWeek_03-Agile Developmnet.ppt
Week_03-Agile Developmnet.ppt
 
Introduction to Software Engineering
Introduction to Software EngineeringIntroduction to Software Engineering
Introduction to Software Engineering
 
Appendix AProof of effectiveness of some of the agile methods us.docx
Appendix AProof of effectiveness of some of the agile methods us.docxAppendix AProof of effectiveness of some of the agile methods us.docx
Appendix AProof of effectiveness of some of the agile methods us.docx
 
ppt chapter 1.ppt
ppt chapter 1.pptppt chapter 1.ppt
ppt chapter 1.ppt
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
SE Lecture 3.ppt
SE Lecture 3.pptSE Lecture 3.ppt
SE Lecture 3.ppt
 
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycle
 
Developing reusable software components for distributed embedded systems
Developing reusable software components for distributed embedded systemsDeveloping reusable software components for distributed embedded systems
Developing reusable software components for distributed embedded systems
 
Agile software process
Agile software processAgile software process
Agile software process
 
Unit2
Unit2Unit2
Unit2
 
Lab01.pptx
Lab01.pptxLab01.pptx
Lab01.pptx
 
A Software Engineer
A Software EngineerA Software Engineer
A Software Engineer
 
Modern Elicitation Process
Modern Elicitation ProcessModern Elicitation Process
Modern Elicitation Process
 
Fundamentals of Software Engineering
Fundamentals of Software Engineering Fundamentals of Software Engineering
Fundamentals of Software Engineering
 
software engineering
software engineering software engineering
software engineering
 
Software Engineering Basics.pdf
Software Engineering Basics.pdfSoftware Engineering Basics.pdf
Software Engineering Basics.pdf
 
Agile Project Management Methods of ERP
Agile Project Management Methods of ERPAgile Project Management Methods of ERP
Agile Project Management Methods of ERP
 

More from Computer Aid, Inc

A Few Interesting Observations From 2014 PMI Pulse
A Few Interesting Observations From 2014 PMI PulseA Few Interesting Observations From 2014 PMI Pulse
A Few Interesting Observations From 2014 PMI PulseComputer Aid, Inc
 
Management by Walking Around
Management by Walking AroundManagement by Walking Around
Management by Walking AroundComputer Aid, Inc
 
Automation of Information (Cyber) Security
Automation of Information (Cyber) SecurityAutomation of Information (Cyber) Security
Automation of Information (Cyber) SecurityComputer Aid, Inc
 
Knowledge Management - By Joe Hessmiller
Knowledge Management - By Joe HessmillerKnowledge Management - By Joe Hessmiller
Knowledge Management - By Joe HessmillerComputer Aid, Inc
 
Why Do CIO's Get Fired? By Joe Hessmiller
Why Do CIO's Get Fired? By Joe HessmillerWhy Do CIO's Get Fired? By Joe Hessmiller
Why Do CIO's Get Fired? By Joe HessmillerComputer Aid, Inc
 
Leadership is Simple, Followership is a Challenge - Lehigh University Guest L...
Leadership is Simple, Followership is a Challenge - Lehigh University Guest L...Leadership is Simple, Followership is a Challenge - Lehigh University Guest L...
Leadership is Simple, Followership is a Challenge - Lehigh University Guest L...Computer Aid, Inc
 
Driving Innovative IT Metrics (Project Management Institute Presentation)
Driving Innovative IT Metrics (Project Management Institute Presentation)Driving Innovative IT Metrics (Project Management Institute Presentation)
Driving Innovative IT Metrics (Project Management Institute Presentation)Computer Aid, Inc
 
APO State Government Business Brief
APO State Government Business BriefAPO State Government Business Brief
APO State Government Business BriefComputer Aid, Inc
 
White paper-management-by-walking-around
White paper-management-by-walking-aroundWhite paper-management-by-walking-around
White paper-management-by-walking-aroundComputer Aid, Inc
 
Leadership, Presented at Lehigh University
Leadership, Presented at Lehigh UniversityLeadership, Presented at Lehigh University
Leadership, Presented at Lehigh UniversityComputer Aid, Inc
 
Managing in the 21st Century
Managing in the 21st CenturyManaging in the 21st Century
Managing in the 21st CenturyComputer Aid, Inc
 
Managing in the 21st Century
Managing in the 21st CenturyManaging in the 21st Century
Managing in the 21st CenturyComputer Aid, Inc
 
APO IT Buzz Overview and Screenshots
APO IT Buzz Overview and ScreenshotsAPO IT Buzz Overview and Screenshots
APO IT Buzz Overview and ScreenshotsComputer Aid, Inc
 
Interview with Risk Management Practitioner: Robert Charette
Interview with Risk Management Practitioner: Robert CharetteInterview with Risk Management Practitioner: Robert Charette
Interview with Risk Management Practitioner: Robert CharetteComputer Aid, Inc
 

More from Computer Aid, Inc (20)

A Few Interesting Observations From 2014 PMI Pulse
A Few Interesting Observations From 2014 PMI PulseA Few Interesting Observations From 2014 PMI Pulse
A Few Interesting Observations From 2014 PMI Pulse
 
Management by Walking Around
Management by Walking AroundManagement by Walking Around
Management by Walking Around
 
Automation of Information (Cyber) Security
Automation of Information (Cyber) SecurityAutomation of Information (Cyber) Security
Automation of Information (Cyber) Security
 
Knowledge Management - By Joe Hessmiller
Knowledge Management - By Joe HessmillerKnowledge Management - By Joe Hessmiller
Knowledge Management - By Joe Hessmiller
 
Why Do CIO's Get Fired? By Joe Hessmiller
Why Do CIO's Get Fired? By Joe HessmillerWhy Do CIO's Get Fired? By Joe Hessmiller
Why Do CIO's Get Fired? By Joe Hessmiller
 
Leadership is Simple, Followership is a Challenge - Lehigh University Guest L...
Leadership is Simple, Followership is a Challenge - Lehigh University Guest L...Leadership is Simple, Followership is a Challenge - Lehigh University Guest L...
Leadership is Simple, Followership is a Challenge - Lehigh University Guest L...
 
Driving Innovative IT Metrics (Project Management Institute Presentation)
Driving Innovative IT Metrics (Project Management Institute Presentation)Driving Innovative IT Metrics (Project Management Institute Presentation)
Driving Innovative IT Metrics (Project Management Institute Presentation)
 
APO State Government Business Brief
APO State Government Business BriefAPO State Government Business Brief
APO State Government Business Brief
 
White paper-management-by-walking-around
White paper-management-by-walking-aroundWhite paper-management-by-walking-around
White paper-management-by-walking-around
 
Leadership, Presented at Lehigh University
Leadership, Presented at Lehigh UniversityLeadership, Presented at Lehigh University
Leadership, Presented at Lehigh University
 
APO ITBuzz Overview
APO ITBuzz OverviewAPO ITBuzz Overview
APO ITBuzz Overview
 
Introduction to CAI
Introduction to CAIIntroduction to CAI
Introduction to CAI
 
Managing in the 21st Century
Managing in the 21st CenturyManaging in the 21st Century
Managing in the 21st Century
 
State of Georgia
State of GeorgiaState of Georgia
State of Georgia
 
Managing in the 21st Century
Managing in the 21st CenturyManaging in the 21st Century
Managing in the 21st Century
 
APO IT Buzz Overview and Screenshots
APO IT Buzz Overview and ScreenshotsAPO IT Buzz Overview and Screenshots
APO IT Buzz Overview and Screenshots
 
AmeriHealth Case Study
AmeriHealth Case StudyAmeriHealth Case Study
AmeriHealth Case Study
 
APO Presentation
APO PresentationAPO Presentation
APO Presentation
 
Interview with Risk Management Practitioner: Robert Charette
Interview with Risk Management Practitioner: Robert CharetteInterview with Risk Management Practitioner: Robert Charette
Interview with Risk Management Practitioner: Robert Charette
 
APO 2.0
APO 2.0APO 2.0
APO 2.0
 

Improving Application Development Effectiveness

  • 1. White Paper: Improving Application Development Effectiveness Author: Nicholas Spanos, Principal Consultant Computer Aid, Inc. Nick_Spanos@compaid.com 717-329-9323 Purpose: Define a strategy for improving quality and reducing effort related to the development of applications. Background: The evolution of the Information Technology industry is following a path that is quite similar to the evolution of the manufacturing industry. We must keep in mind that IT is still a very young profession. Best practices and the associated roles and responsibilities are still evolving in response to rapidly changing technology. Let’s begin by comparing the evolution of manufacturing to the current state of IT: The Evolution of Manufacturing: 1. Prior to the 20th century, manufacturing involved a fabrication process employing highly skilled craftsman. Quality was directly linked to the professionalism and skill of the individual craftsman. The resulting products were individual creations that may have been similar but were rarely identical. 2. Most manufacturing companies followed the lead of Henry Ford and transformed from a fabrication process employing highly skilled craftsmen to an assembly line using lower skilled workers to assemble standard components. Results: Greater throughput, lower costs, standardized quality. 3. The creative abilities of skilled craftsman were no longer necessary when building products. Creative activities occurred during the design of the components and the development of the assembly processes. The effort required to assemble the final product was easier to control and dramatically increased the quantity, quality, and consistency while reducing cost. 4. Quality problems persisted because of issues with component design and the assembly processes. The second revolution in manufacturing came with the increased use of automation to assemble components, better metrics, and better quality control. 5. Results: The price of most manufactured goods continues to decline (relative to inflation) while the quality and features continue to increase. The Current State of IT: 1. Most IT organizations develop Software in response to a unique set of requirements. They employ skilled craftsmen who utilize their creative skills to develop software that is customized for the stated requirements. This approach is Distribution requires permission from the author
  • 2. similar to the use of craftsman by the manufacturing industry prior to the 20th century (with similar results). Each product is unique and quality and efficiency are the responsibility of the individual craftsman and difficult to measure. 2. The quality and efficiency of the design and the final product is the direct result of the creativity and skill level of the individual developers. Functionality is based on the unique requirements as defined by the requester. 3. The effort (and the cost) for designing and developing these unique “one off” applications is significant. As a result, new applications are rarely authorized and we continue to operate and maintain older legacy applications. Support costs are also higher because the resulting applications require special knowledge to operate and support because they are all uniquely different in their basic design. 4. Collecting metrics is difficult. Creative processes do not automatically generate metrics. Metrics generation requires additional effort that is typically resisted. Even if metrics are collected, they are useful in defining and measuring quality but the existence of metrics to not ensure quality. 5. Repeatable processes are marginally useful in defining and managing creative fabrication activities. They are very useful in managing repeatable assembly activities. 6. Development tools change frequently. The decision to utilize a new tool is very often made by a developer without serious consideration for the available knowledge base and future support challenges. 7. Current development tools provide the capability to leverage the enhanced infrastructure. Most of these new Object-Oriented languages are based on low- level rudimentary languages like C++ and Basic. They facilitate code re- usability at the object level (e.g. drop down boxes) but they hinder re-usability at the functional level. In the past, we could develop an online interactive program that updated a database and clone this program to develop other similar functions. This level of re-usability is much more difficult with Object Oriented languages. 8. These new Object Oriented Languages are more difficult to learn than their predecessors. Inexperienced developers are more likely to have learned the newer languages but they do not have the design skills required to develop new applications. IT organizations do not train their experienced developers on newer technologies. As a result, the average skill level available for newer technologies is not adequate for developing complex applications. Distribution requires permission from the author
  • 3. The Obvious Solution: Organize development teams by technology area 1. Choose the desired development environment(s) and technology by assessing the benefits and limitations of the available options. The decision should also consider the availability of knowledgeable staff and the effort required to learn the technology. 2. Create core teams that specialize in specific development environments and tools. The staff must be pre-trained and include a variety of skill levels to allow for career growth opportunities. 3. Assign a system architect to each development environment. The architect should have strong design, development, and support experience with the environment. 4. Assign an experienced manager with process development and enforcement experience as well as strong organizational skills. 5. Create repeatable estimating processes that consider the unique requirements of each technology area. 6. Maintain team cohesion. At the end of a project, team members are dispersed to other assignments. It is much more effective to retain team unity and assign them to the next project as a unit. 7. Define Formal Roles and Responsibilities. The roles and responsibilities should consider the unique requirements of each development environment and also be linked to position descriptions and career development paths. Assignments should consider prior experience as well as the development plan of associates to facilitate career development that will be valuable in future projects. Sometimes, this choice will have a short-term negative impact on profitability that should be considered as an investment to increase profitability of future projects. 8. Define standard documentation formats. Design specifications facilitate development but they provide limited benefits once the system is implemented in production. Standard Application documentation is required to assist with the operation and support of the application. 9. Support considerations should receive a high priority. Design decisions can have significant impacts on the supportability and reliability of applications. A high level of manual intervention combined with inadequate data validation and automated error trapping account for a large number of recurring problems. These decisions may reduce development cost and expedite development. Unfortunately, the increased support costs and risks will eclipse any development savings. Distribution requires permission from the author
  • 4. The Not-So-Obvious Solution: Planned Re-Usability to manage creativity Issue: The creation of teams that specialize in a given technology is a common practice. These teams continue to fail because they still depend heavily on creative efforts of the individual team members. “Object Oriented” languages claim to provide re-usability. Unfortunately, their re-usable components are low-level objects. They provide re-usable functions for creating a drop- down list but do not provide a re-usable function for updating information about people. Solution: We need to be more proactive in developing and utilizing re-usable components. We also need to manage and control creative activities that are difficult to estimate and can have significant impacts on the schedule, quality, risk, and cost of a project. The following recommendations apply to each technology area: 1. Create re-usable specifications and functions. Most systems maintain data about people, places, things, and processes. When designing screens and databases to maintain this type of information, choose design options that provide the greatest potential for re-use in future applications. Most applications track people and organizations. Unfortunately, these functions were designed to be unique to each application and are not re-usable across applications. Re-usability should be a high priority design consideration. 2. Use bench resources and trainees to create/enhance re-usable modules. Gradually, an inventory of high quality modules will be available for each technology area that will facilitate future development. 3. Maintain an inventory of re-usable modules. Modules cannot be re-used if developers are not aware of their existence. This inventory should also include re-usable specifications and documentation. 4. Define requirements and functional specifications based on existing re-usable functions. This facilitates the rapid demonstration of the solution and maximizes the possibility for re-using existing functionality. By re-using specs and modules, we will reduce the cost of designing and developing these functions for every application. Summary These recommendations are old solutions. We have discarded these proven solutions because newer Object Oriented technologies have claimed to be re-usable but they only provide re-usability at the individual object level (e.g. drop down box). Re-using Object functionality requires a proactive effort on the part of IT organizations but the benefits can be significant. If we implement these recommendations, we will be following the example of the manufacturing industry by assembling components to build systems and reducing dependence on the creative skills of craftsmen. Distribution requires permission from the author