Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers - PowerPoint PPT Presentation

Loading...

PPT – Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers PowerPoint presentation | free to download - id: 4b2b80-Nzc3Y



Loading


The Adobe Flash plugin is needed to view this content

Get the plugin now

View by Category
About This Presentation
Title:

Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers

Description:

Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers Gregory (Greg) Maltby, PMP, BSCS – PowerPoint PPT presentation

Number of Views:261
Avg rating:3.0/5.0

less

Write a Comment
User Comments (0)
Transcript and Presenter's Notes

Title: Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers


1
Professional Software Development Shorter
Schedules, Higher Quality Products, More
Successful Projects, Enhanced Careers
  • Gregory (Greg) Maltby, PMP, BSCS
  • April 30, 2012
  • EECS 810

2
Introduction (1)
  • Author Steve McConnell
  • CEO and Chief Software Engineer at Construx
    Software
  • Other books by Steve McConnell
  • Code Complete (1993)
  • Rapid Development (1996)
  • Software Project Survival Guide (1998)
  • On the panel of experts that advises the Software
    Engineering Body of Knowledge (SWEBOK) project

3
Introduction (2)
  • Book consists of four parts
  • The Software Tar Pit
  • Individual Professionalism
  • Organizational Professionalism
  • Industry Professionalism

4
Introduction (3)
  • Presentation - 10 topics / thoughts
  • Code and Fix programming
  • Software Programming
  • Art
  • Science
  • Software Development as a Profession
  • Software Development Certification
  • Software Development Licensing

5
Introduction (4)
  • Presentation - 10 topics / thoughts (continued)
  • Code of Ethics
  • Software Development Productivity
  • Software Development Job Specialization
  • Teamwork
  • Process Improvement

6
Introduction (5)
  • Topics are significant as standalone topics, but
    some can be viewed as interrelated.
  • I see those with a relationship as
  • Software Development as a Profession
  • Code of Ethics
  • Software Development Certification
  • Software Development Licensing

7
Introduction (6)
  • Topics are significant as standalone topics, but
    some can be viewed as interrelated.
  • I see those with a relationship as
  • Software Development Productivity
  • Software Development Job Specialization
  • Teamwork
  • Process Improvement

8
Presentation Overview
  • Presentation - 10 topics / thoughts
  • Code-and-Fix programming
  • Software Programming Art or Science
  • Software Development as a Profession
  • Software Development Certification
  • Software Development Licensing
  • Code of Ethics
  • Software Development Productivity
  • Software Development Job Specialization
  • Teamwork
  • Process Improvement

9
Code Fix Programming
  • Definition Jumping straight into coding without
    planning or designing the software first.
  • Sometimes done because
  • Developers are anxious to begin coding
  • Manager or Customers are eager to see tangible
    signs of progress
  • Over all Code Fix programming is ineffective
    on all but the tiniest projects

10
Code Fix Programming (2)
  • Building a Pyramid Analogy

11
Code Fix Programming (3)
  • Building a Pyramid Block Moving

12
Code Fix Programming (4)
  • Building a Pyramid Block Moving

13
Code Fix Programming (5)
  • Building a Pyramid Block Moving

14
Code Fix Programming (6)
  • Problems with Code Fix Programming
  • Quick movement off starting line doesnt
    necessarily translate into quick progress towards
    the finish line
  • Leads to large of defects early in the project
  • Several studies have found that 40 to 80 of a
    typical software projects budget goes into
    fixing defects that were created earlier on, in
    the project development efforts.

15
Code Fix Programming (7)
  • Why Code Fix Programming Continues to be Used
  • Appears to be appealing in 2 ways
  • Allows the project team to show signs of progress
    immediately
  • Requires no or minimal additional training

16
Presentation Overview
  • Presentation - 10 topics / thoughts
  • Code and Fix programming
  • Software Programming Art or Science
  • Software Development as a Profession
  • Software Development Certification
  • Software Development Licensing
  • Code of Ethics
  • Software Development Productivity
  • Software Development Job Specialization
  • Teamwork
  • Process Improvement

17
Software Programming Is it Art or Science?
  • There is a long tradition in the software field
    debating whether software programming is Art or
    Science.
  • Art point-of-view
  • Refer to the aesthetic aspects of Software
    Development
  • Science does not allow for inspiration and
    creative freedom
  • Science point-of-view more rigor and formal
    processes are needed to reduce the error rate in
    (current) Software Development practices.

18
Software Programming Is it Art or Science? (2)
  • Scientists learn
  • What is true
  • How to test hypotheses
  • How to extend knowledge in their field
  • Scientists must keep up to date with the latest
    research.
  • Scientist dont have to be regulated because they
    are chiefly accountable to other Scientists

19
Software Programming Is it Art or Science? (3)
  • Wrong Question
  • What is Software Development?
  • Right Question
  • What should Software Development be?
  • The Answer Engineering

20
Software Programming Is it Art or Science? (4)
  • Definition Engineering
  • The application of scientific and mathematical
    principles towards practical ends.

21
Software Programming Is it Art or Science? (5)
  • Engineers learn
  • What is true
  • What is useful
  • How to apply well-understood knowledge to solve
    problems
  • Engineers must be familiar with knowledge that
    has already proven to be reliable and effective.
  • Engineers have to be regulated because they are
    chiefly accountable to the public

22
Software Programming Is it Art or Science? (6)
  • Should professional Software Development be
    Engineering?
  • Questions that should be answered
  • What is the Software Engineers core body of
    knowledge?
  • What needs to be done before professional
    software developers can use that knowledge?

23
Software Programming Is it Art or Science? (7)
  • Should professional Software Development be
    Engineering?
  • Questions that should be answered (cont)
  • How big is the payback for practicing software
    development as an engineering discipline?
  • What are appropriate standards of professional
    conduct for Software Developers?
  • Should Software Developers be regulated?

24
Software Programming Is it Art or Science? (8)
  • Big question
  • What will the software industry look like after
    all these questions have been answered?

25
Software Programming Is it Art or Science? (9)
  • In mature engineering fields, routine design
    involves
  • solving familiar problems and reusing large
    portions of prior
  • solutions.
  • Many software project artifacts are potentially
    reusable and promote the potential to improve
    quality and productivity.
  • Architectures themselves and software design
    procedures
  • Design patterns
  • Requirements themselves and requirements
    development procedures

26
Software Programming Is it Art or Science? (10)
  • Many software project artifacts are potentially
    reusable and promote the potential to improve
    quality and productivity. (continued)
  • User interface elements and user interface design
    procedures
  • Estimates themselves and estimation procedures
  • Planning data, project plans, and planning
    procedures
  • Test Plans, test cases, test data, and test
    procedures

27
Software Programming Is it Art or Science? (11)
  • Many software project artifacts are potentially
    reusable and promote the potential to improve
    quality and productivity. (continued)
  • Technical review procedures
  • Source code, construction procedures, and
    integration procedures
  • Software configuration management procedures
  • Post-project reports and project-review
    procedures
  • Organizational structures, team structures, and
    management procedures

28
Software Programming Is it Art or Science? (12)
  • The Call for Engineering
  • Whether the goal is safety, aesthetics, or
    economics, treating software as an engineering
    discipline is an effective way to raise Software
    Development to the level of a true profession.

29
Presentation Overview
  • Presentation - 10 topics / thoughts
  • Code and Fix programming
  • Software Programming Art or Science
  • Software Development as a Profession
  • Software Development Certification
  • Software Development Licensing
  • Code of Ethics
  • Software Development Productivity
  • Software Development Job Specialization
  • Teamwork
  • Process Improvement

30
Software Development as a Profession
  • A Profession as defined by the Code of Federal
    Regulation (CFR)
  • Professional Work Requires advanced knowledge
    in science or a field of learning acquired
    through a prolonged course of specialized study.
  • Can be creative or artistic in nature
  • Requires the consistent exercise of discretion
    and judgment in its performance
  • Predominately intellectual and varied in character

31
Software Development as a Profession (2)
  • Definition from the body of knowledge of legal
    precedents (court cases)
  • A profession has
  • A requirement for extensive learning and training
  • A code of ethics imposing standards higher than
    those normally tolerated in the marketplace
  • A disciplinary system for professionals who
    breach the code

32
Software Development as a Profession (3)
  • Definition from the body of knowledge of legal
    precedents (court cases)
  • A profession has (continued)
  • A primary emphasis on social responsibility over
    strictly individual gain, and a corresponding
    duty of its members to behave as members of a
    disciplined and honorable profession
  • A perquisite of a license prior to admission to
    practice

33
Software Development as a Profession (4)
34
Presentation Overview
  • Presentation - 10 topics / thoughts
  • Code and Fix programming
  • Software Programming Art or Science
  • Software Development as a Profession
  • Software Development Certification
  • Software Development Licensing
  • Code of Ethics
  • Software Development Productivity
  • Software Development Job Specialization
  • Teamwork
  • Process Improvement

35
Software Development Certification
  • Professional Certification
  • Certification is a voluntary process administered
    by a professional society.
  • The intent of certification is to give the public
    a way of knowing who is qualified to perform
    specific kinds of work.

36
Software Development Certification (2)
  • Professional Certification
  • After completion of education and skills
    development, a professional is required to pass
    one or more exams that ensure the person has
    attained a minimum level of knowledge.
  • Examples
  • Doctors take Board Exams
  • Accountants take CPA Exams
  • Lawyers take Bar Exams

37
Software Development Certification (3)
  • The American Society for Quality Control offers a
    Software Quality Engineer designation.
  • Many Computer Hardware and Software Companies,
    such as Microsoft and Oracle, offer certification
    programs related to specific technologies.

38
Software Development Certification (4)
  • The Institute of Certification of Computing
  • Professionals (ICCP) offers various types of
    Certifications
  • Examples
  • Associate Computing Professional (ACP)
  • Certified Computing Professional (CCP)

39
Software Development Certification (5)
  • Next few slides are from the ICCP web-site
  • www.iccp.org/certification.html

40
Software Development Certification (6)
41
Software Development Certification (7)

42
Software Development Certification (8)
43
Software Development Certification (9)
  • IEEE Certification CSDP - Certified Software
    Development Professional
  • Possesses fundamental knowledge and understanding
    of computing principles and concepts and their
    application to the definition, design,
    construction and testing of software development.
  • Has met the IEEE CS CSDP education, experience,
    and examination requirements.

44
Software Development Certification (10)
  • IEEE Certification CSDP - Certified Software
    Development Professional
  • Is able to provide appropriate design with
    technical and economic tradeoffs of modules,
    subsystems, and systems in accordance with
    standards of practice, specifications, and
    principles of behavior of software as required to
    perform the functions as stated in the software
    requirements.

45
Software Development Certification (11)
  • IEEE CSDP (Certified Software Development
  • Professional) distribution of Questions per
    knowledge
  • area
  • Business Practices Engineering Economics (3-4)
  • Software Requirements (13-15)
  • Software Design (22-24)
  • Software Construction (10-12)
  • Software Testing (15-17)

46
Software Development Certification (12)
  • IEEE CSDP (Certified Software Development
  • Professional) distribution of Questions per
    knowledge
  • area (continued)
  • Software Maintenance (3-5)
  • Software Configuration Management (3-4)
  • Software Engineering Management (10-12)
  • Software Engineering Process (2-4)
  • Software Tools and Methods (2-4)
  • Software Quality (6-8)

47
Software Development Certification (13)
  • Certification offers employers and customers a
    way to recognize software professionals who have
    achieved at least some minimum level of
    qualifications.

48
Presentation Overview
  • Presentation - 10 topics / thoughts
  • Code and Fix programming
  • Software Programming Art or Science
  • Software Development as a Profession
  • Software Development Certification
  • Software Development Licensing
  • Code of Ethics
  • Software Development Productivity
  • Software Development Job Specialization
  • Teamwork
  • Process Improvement

49
Software Development Licensing
  • Professional Licensing
  • Licensing is a mandatory process that is intended
    to protect the public, and is typically
    administered by jurisdictions (States, Provinces,
    and Territories).
  • In many cases, National organizations advise the
    jurisdictions on appropriate licensing
    requirements and exam content.

50
Software Development Licensing (2)
  • Arguments Against Licensing
  • There is no generally agreed upon body of
    knowledge for software engineering
  • Knowledge in software engineering changes so
    quickly that the exams will be out of date by the
    time theyre offered.
  • No reasonable test for software engineering skill
    could be put into a multiple-choice format.
    Indeed, no exam-based practices could adequately
    ensure competency of software engineers.

51
Software Development Licensing (3)
  • Arguments Against Licensing (continued)
  • The breadth of sub-disciplines involved in
    developing software would make licensing all of
    the sub-disciplines impractical.
  • The Fundamentals of Engineering Exams required
    for licensing existing professional engineers is
    inappropriate for those receiving a computer
    science degree.

52
Software Development Licensing (4)
  • Some additional arguments against Licensing
  • Licenses would unduly restrict the number of
    people who could practice software engineering at
    a time when demand for software engineers is
    increasing.
  • When an engineer receives a license, it will be
    good for life, which is inappropriate considering
    that software engineerings body of knowledge is
    changing rapidly.
  • Licensing cant guarantee that every individual
    who is licensed will actually be competent.
    Licensing will give the public a false sense of
    security.

53
Software Development Licensing (5)
  • Not all Engineers are Licensed
  • Majority of engineers are NOT required to obtain
    licenses.
  • Engineering companies are required to employ some
    licensed engineers

54
Software Development Licensing (6)
Percentage of licensed engineering graduates in
the US as of 1996 Ford, Gary,
and Norman E. Gibbs, A Mature Profession of
Software Engineering, SEI CMU,
CMU/SEI-96-TR-004, January 1996

Discipline Licensed
Civil 44
Mechanical 23
Electrical 9
Chemical 8
All Engineers 18
55
Software Development Licensing (7)
  • Not all Software Engineers will need to be
    Licensed
  • Most software applications do not require any
    engineering
  • The applications that do require some engineering
    will require only a small percentage of the
    software staff to be licensed

56
Software Development Licensing (8)
  • Companies that may require licensed software
    engineers could include those that
  • Sell software engineering services to the public
  • Perform software work for public agencies
  • Produce safety-critical software

57
Software Development Licensing (9)
  • Benefits of Licensing
  • Organizational Perspective
  • Some companies may voluntary employ professional
    (licensed) software engineers to
  • take advantage of the market prestige of hiring
    workers with the best available credentials
  • strengthen their technical pool
  • improve their CMM rating

58
Software Development Licensing (10)
  • Benefits of Licensing
  • Individual Perspective
  • Licensed software engineers will most likely be
    placed in a leadership role helping set
    direction for the organizations they work for.
  • Licensed software engineers can use the position
    of a well-defined profession to make a stand
    against poor software development influences

59
Presentation Overview
  • Presentation - 10 topics / thoughts
  • Code and Fix programming
  • Software Programming Art or Science
  • Software Development as a Profession
  • Software Development Certification
  • Software Development Licensing
  • Code of Ethics
  • Software Development Productivity
  • Software Development Job Specialization
  • Teamwork
  • Process Improvement

60
Code of Ethics
  • Code of Ethics - Purpose is to ensure
    practitioners behave responsibility
  • States what professional should do
  • Adherence to a recognized code of conduct helps
    professionals feel they belong to a well-regarded
    community
  • Professionals can be ejected from their
    professional societies or lose their license to
    practice for violating the Code of Ethics
  • Enforcement of ethics standards helps maintain a
    minimum level of conduct

61
Code of Ethics (2)
  • Association for Computing Machinery (ACM)
  • Code of Ethics
  • 1. General Moral Imperatives
  • 2. More Specific Professional Responsibilities
  • 3. Organizational Leadership
  • 4. Compliance with the Code
  • http//www.acm.org/about/code-of-ethics
  • handout

62
Code of Ethics (3)
  • Code of Ethics Benefits
  • Provides broad support for a true profession of
    software engineering
  • Establishes minimum performance expectations
  • Gives employers and clients confidence about the
    professional standards and character of engineers
    who adhere to the code

63
Code of Ethics (4)
  • Code of Ethics Real World Benefits Example
  • Sometimes clients and management insist that
    software developers engage in Code-and-Fix
    development.
  • This conflicts with the software engineers Code
    of Ethics
  • Use of code-and-fix development, however, is
    inconsistent with a Software Engineers ethical
    duty to produce high-quality products for
    acceptable costs and within reasonable schedules.
  • Continued use of code-and-fix also undermines the
    advancement of software engineering as a
    profession

64
Presentation Overview
  • Presentation - 10 topics / thoughts
  • Code and Fix programming
  • Software Programming Art or Science
  • Software Development as a Profession
  • Software Development Certification
  • Software Development Licensing
  • Code of Ethics
  • Software Development Productivity
  • Software Development Job Specialization
  • Teamwork
  • Process Improvement

65
Software Development Productivity
  • Preview of findings
  • Most software productivity studies are inadequate
    and misleading.
  • Small-scale programming productivity has more
    than an order of magnitude variation across
    individuals and languages.
  • Understanding and Improving Software
    Productivity Walt Scacchi University of
    California, Irvine, 02/16/2005

66
Software Development Productivity (2)
  • Preview of findings
  • How and what you measure determines how much
    productivity you see.
  • We found contradictory findings (conclusions),
    and repeated shortcomings in productivity
    measurement and data analysis, among the few
    nuggets of improved understanding.
  • Understanding and Improving Software
    Productivity Walt Scacchi University of
    California, Irvine, 02/16/2005

67
Software Development Productivity (3)
  • What to measure?
  • Software products
  • Software production processes and structures
  • Software production setting / environment.
  • Understanding and Improving Software
    Productivity Walt Scacchi University of
    California, Irvine, 02/16/2005
  • http//www.ics.uci.edu/wscacchi/Presentations/Pro
    Sim04/Software-Productivity.ppt

68
Software Development Productivity (4)
  • Productivity Factors - Process-related
  • (more easily controlled)
  • Avoid hardware-software co-development
  • Development computer size (bigger is better).
  • Stable requirements and specification
  • Use of modern programming practices
  • Assign experienced personnel to team
  • Understanding and Improving Software
    Productivity Walt Scacchi University of
    California, Irvine, 02/16/2005

69
Software Development Productivity (5)
  • Productivity Factors - Product related
  • (not easily controlled)
  • Computer resource constraints (fewer is better)
  • Program complexity (less is better)
  • Customer participation (less is better)
  • Size of program product (smaller is better)
  • Understanding and Improving Software
    Productivity Walt Scacchi University of
    California, Irvine, 02/16/2005

70
Software Development Productivity (6)
  • How to improve Software Productivity (so far)
  • Get the best from well-managed people
  • Make development more efficient and more
    effective
  • Simplify, collapse, or eliminate development
    steps
  • Understanding and Improving Software
    Productivity Walt Scacchi University of
    California, Irvine, 02/16/2005

71
Software Development Productivity (7)
  • How to improve Software Productivity (so far)
    (continued)
  • Eliminate rework
  • Build simpler products or products families
    (similar products)
  • Reuse proven products, processes, and production
    settings
  • Understanding and Improving Software
    Productivity Walt Scacchi University of
    California, Irvine, 02/16/2005

72
Software Development Productivity (8)
  • Some thoughts on Productivity
  • Study after study has found that individual
    motivation is by far the largest single
    contributor to productivity.
  • Other studies have found that the greatest single
    contributor to overall productivity was team
    cohesiveness.

73
Software Development Productivity (9)
  • Some thoughts on Productivity
  • Projects that focused on achieving low defect
    counts had the best schedule and the highest
    productivity.
  • Studies as early as the 1960s have shown that
    teams using a high degree of specialization are
    more productive than teams that do not.

74
Presentation Overview
  • Presentation - 10 topics / thoughts
  • Code and Fix programming
  • Software Programming Art or Science
  • Software Development as a Profession
  • Software Development Certification
  • Software Development Licensing
  • Code of Ethics
  • Software Development Productivity
  • Software Development Job Specialization
  • Teamwork
  • Process Improvement

75
Software Development Job Specialization
  • Specialization is an important element of a
    mature profession.
  • Two Categories of Specialization are emerging
  • Technology Specialization
  • Software Engineering Specialization

76
Software Development Job Specialization (2)
  • Examples of current Technology Specializations
    offering by IT Vendors
  • Microsoft currently (Feb. 2009) offers 17
    certifications a few examples
  • Microsoft Certified Architect (MCA) - program
    recognizes and provides advanced certification to
    practicing architects in an enterprise setting.
  • Microsoft Certified Systems Administrator (MCSA)
    - administers network and systems environments
    based on the Windows operating systems.
    Specializations include the MCSA Messaging and
    the MCSA Security.
  • Microsoft Certified Database Administrator
    (MCDBA) - designs, implements, and administers
    Microsoft SQL Server databases.
  • Microsoft Office Specialist (MOS) - is globally
    recognized for demonstrating advanced skills in
    using Microsoft desktop software.

77
Software Development Job Specialization (3)
  • Oracle offers over 30 certifications a few
    examples
  • Oracle Database 11g Administrator Certification
    - combines training, experience, and testing to
    ensure that you have a strong foundation and
    expertise in the industrys most advanced
    database management system.
  • Certified Associate
  • Certified Professional
  • Certified Master
  • Oracle Application Server 10g Administrator -
    offers a comprehensive solution for developing,
    integrating, and deploying your enterprises
    applications, portals, and Web services. Oracle
    Application Server 10g Certified Administrators
    have the proven knowledge and experience to
    manage the details of this powerful software and
    are essential to help organizations succeed in
    the complex world of Internet business.
  • Certified Associate
  • Certified Professional
  • Certified Master
  • Certifications in Oracles Business applications
    are also available
  • Hyperion (Financial Forecasting)
  • PeopleSoft (ERP HR, Payroll, Financials, etc.)
  • Oracle E-Business Suite (ERP HR, Payroll,
    Financials)

78
Software Development Job Specialization (4)
  • Software Engineering specialization examples

  • Customer Support Specialists
  • Data Base Administration
  • Network specific
  • also includes specialties within this area - such
    as Security
  • Quality Assurance
  • Technical Writing
  • Author references another book Assessment and
    Control of Software Risk (1994)
  • by T. Capers Jones, which identifies 26
    specializations, and states Jones work on
  • Organizational Assessment has identified over
    100 specializations.

79
Software Development Job Specialization (5)
  • Projects can benefit from team members who are
    specialists
  • Construction Lead
  • Design Lead
  • Planning and Tracking Lead
  • Project Business Manager
  • Quality Assurance Lead
  • Requirements Lead
  • Useful to have a specific person identified to
    focus on these areas
  • Advantageous even of these are part-time roles
  • http//www.construx.com CxOne Basic
    Team structure

80
Software Development Job Specialization (6)
  • Project Business Manager
  • Overall project manager, responsible for a
    successful project outcome.
  • Performs many of the traditional management
    tasks, but generally delegates engineering issues
    to the appropriate leads.
  • Planning and Tracking Lead
  • Manages the project plan, schedule, and budget.
  • Overseas, coordinates, and tracks progress to
    planning, estimation, and scheduling.
  • Responsible for status reporting.

81
Software Development Job Specialization (7)
  • Requirements Lead
  • Owns the system requirements.
  • Oversees the identification, analysis,
    documentation, and management of system
    requirements.
  • Is responsible for ensuring that the requirements
    match business goals
  • Design Lead
  • System architect that oversees all design
    activities on the project

82
Software Development Job Specialization (8)
  • Construction Lead
  • Is responsible for ensuring that construction
    activities are carried out smoothly and
    efficiently.
  • On projects where deployment is necessary, that
    is often handled by this lead, or a dedicated
    deployment lead.
  • Quality Lead
  • Creates the quality plan an is responsible for
    ensuring the project meets its quality goals.
  • Oversees all reviews, test planning, and test
    execution

83
Software Development Job Specialization (9)
  • Software Engineer
  • Instead of a traditional rigid analyst,
    developer, tester split, each engineer executes
    based on their capabilities and interests.

84
Presentation Overview
  • Presentation - 10 topics / thoughts
  • Code and Fix programming
  • Software Programming Art or Science
  • Software Development as a Profession
  • Software Development Certification
  • Software Development Licensing
  • Code of Ethics
  • Software Development Productivity
  • Software Development Job Specialization
  • Teamwork
  • Process Improvement

85
Teamwork
  • Software Development Community
  • Become Part of the Team
  • Author advocates becoming a member of ACM or IEEE
  • These are communities that care about software
    development and take the time to share their
    experiences for the benefit of other software
    developers

86
Teamwork (2)
  • Professional organizations support numerous
    structured ways of exchanging the valuable tips
    and tricks of the trade that support Software
    Engineers
  • Membership will give you access to articles that
    provide insight into common issues
  • Examples
  • How to help customers make up their minds about /
    finalize requirements
  • How to create maintainable code
  • How to coordinate the work of multiple Software
    Developers

87
Teamwork (3)
http//www.construx.com CxOne Basic Team structure
  • Team Specialization

88
Teamwork (4)
  • Author sites a study by Gerald M. McCue,
    Architectural Design for Program Development,
    while he worked at IBMs Santa Teresa Laboratory
    that found the average programmer spends only
    about 30 of their time working alone.
  • The other 70 is working with teammates,
    customers (secondary team), and other interactive
    activities

89
Teamwork (5)
  • A study by B. Lakhanapal, Understanding the
    Factors Influencing the Performance of Software
    Development Groups An Exploratory Group Level
    Analysis analyzed 31 software projects and
    found that the greatest single contributor to
    overall productivity was team cohesiveness.

90
Presentation Overview
  • Presentation - 10 topics / thoughts
  • Code and Fix programming
  • Software Programming Art or Science
  • Software Development as a Profession
  • Software Development Certification
  • Software Development Licensing
  • Code of Ethics
  • Software Development Productivity
  • Software Development Job Specialization
  • Teamwork
  • Process Improvement

91
Process Improvement
  • Process Improvement State of Practice
  • A common assumption is that organizations
    effectiveness is distributed according to a
    typical bell curve.
  • The reality is quite different.
  • Process Maturity Profile of the Software
    Community 2001 Year End Update, Software
    Engineering Institute, March 2002


92
Process Improvement (2)
  • Benefits of Process Improvement
  • Results of software process improvement
    efforts
  • Herbsleb, James, et. al., Benefits of CMM Based
    Software Process Improvements Initial Results,
    Pittsburg Software Engineering Institute, August
    2004

93
Process Improvement (3)
  • Return on Investment for Selected Software
    Practices
  • Jones T., Capers Assessment and Control of
    Software Risks, Englewood Cliffs, NJ Yourdon
    Press, 1994

94
Process Improvement (4)
  • Indirect Benefits of Improved Software Practices
  • Better software practices lead to improvements
  • in cost predictability
  • in schedule predictability
  • that reduce risk of cost overruns
  • that reduce risk of schedule overruns
  • that provide early warnings of problems
  • Support better management (control and decision
    making)

95
Process Improvement (5)
  • Improving Software Practices Where to Start
  • 10 Tough Questions
  • How much are you spending on software
    development?
  • What percentage of your projects is currently on
    time and on budget?
  • What is the average schedule and budget overrun
    for your projects?

96
Process Improvement (6)
  • Improving Software Practices Where to Start
  • 10 Tough Questions (continued)
  • Which of your current projects are most likely to
    fail outright?
  • What percentage of your project cost arises from
    avoidable rework?
  • How satisfied (quantitatively) are users of your
    software?

97
Process Improvement (7)
  • Improving Software Practices Where to Start
  • Ten Tough Questions (cont.)
  • 7. How do the skills of your staff compare to
    industry averages?
  • 8. How do the capabilities of your organization
    compare to similar organizations?

98
Process Improvement (8)
  • Improving Software Practices Where to Start
  • Ten Tough Questions (cont.)
  • 9. How much (quantitatively) has your
    productivity improved in the past 12 months?
  • 10. What is your plan for improving the skills
    of your staff and the effectiveness of your
    organization?

99
Conclusion
  • For Software Development to be viewed as a
    profession bad practices like Code and Fix
    programming needs to be eliminated.
  • Whether the goal is safety, aesthetics, or
    economics, treating software as an engineering
    discipline and following the disciplines of
    engineering during software development would be
    an effective way to raise Software Development to
    the level of a true profession.

100
Conclusion (2)
  • Certification is valuable, it gives
  • software developer credibility.
  • employers and customers a way to recognize
    Software Professionals who have achieved a level
    of knowledge and skills.

101
Conclusion (3)
  • One key factor supporting licensing Software
    Engineering is that, today over 50 of Software
    engineering knowledge is stable.
  • Therefore the education investment a person makes
    at the beginning of a career should remain mostly
    relevant throughout their career.

102
Conclusion (4)
  • Without licensing, the public is exposed to both
    good and bad software development practices and
    potentially dangerous software.
  • Licensing would improve this condition, acting as
    a filter that would in most cases deny licenses
    to the worst software developers and grant
    licenses to the best or at least the qualified.

103
Conclusion (5)
  • There has been a slow pace to adopt the use of
    effective software development practices
  • Factors that impact productivity on software
    development projects include
  • Individual motivation
  • Use of experienced and skilled team members
  • Teamwork or team cohesiveness
  • Using a high degree of specialization

104
Additional Information
  • Steve McConnell s website
  • http//www.stevemcconnell.com/index.htm
  • Here you'll find excerpts from his books and
    articles, descriptions of his presentations,
    pointers to his consulting services, and other
    information.

105
Additional Information
  • The company he founded Construxs website
  • http//www.construx.com
  • Construx was founded in 1996 by Steve McConnell
    to provide industry-leading support for software
    development best practices.
About PowerShow.com