Professional Software Development: Shorter Schedules, Higher Quality Products, More Successful Projects, Enhanced Careers Gregory (Greg) Maltby, PMP, BSCS April 30, 2012 EECS 810 1 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 2 Introduction (2) • Book consists of four parts – The Software Tar Pit – Individual Professionalism – Organizational Professionalism – Industry Professionalism 3 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 4 Introduction (4) • Presentation - 10 topics / thoughts (continued) – Code of Ethics – Software Development Productivity – Software Development Job Specialization – Teamwork – Process Improvement 5 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 6 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 7 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 8 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 9 Code & Fix Programming (2) • Building a Pyramid Analogy 10 Code & Fix Programming (3) • Building a Pyramid – Block Moving 11 Code & Fix Programming (4) • Building a Pyramid – Block Moving 12 Code & Fix Programming (5) • Building a Pyramid – Block Moving 13 Code & Fix Programming (6) • Problems with Code & Fix Programming – Quick movement off starting line doesn’t 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 project’s budget goes into fixing defects that were created earlier on, in the project development efforts. 14 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 15 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 16 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. 17 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 don’t have to be regulated because they are chiefly accountable to other Scientists 18 Software Programming: Is it Art or Science? (3) • Wrong Question: “What is Software Development?” • Right Question: “What should Software Development be? The Answer : Engineering 19 Software Programming: Is it Art or Science? (4) • Definition: Engineering: The application of scientific and mathematical principles towards practical ends. 20 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 21 Software Programming: Is it Art or Science? (6) Should professional Software Development be Engineering? • Questions that should be answered: – What is the Software Engineer’s core body of knowledge? – What needs to be done before professional software developers can use that knowledge? 22 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? 23 Software Programming: Is it Art or Science? (8) Big question: • What will the software industry look like after all these questions have been answered? 24 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 25 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 26 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 27 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. 28 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 29 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 30 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 31 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 32 Software Development as a Profession (4) 33 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 34 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. 35 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 36 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. 37 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) 38 Software Development Certification (5) • Next few slides are from the ICCP web-site – www.iccp.org/certification.html Copyright 2007 by the Institute for Certification of Computing Professionals Incorporated not-for-profit, in the State of Delaware All rights reserved, including the right of reproduction, in whole or in part, in any form, without the expressed permission of the ICCP. 39 Software Development Certification (6) Forces Driving Growth in IT Professional Certification Adapted from “The Complete Guide to Certification for Computing Professionals” Sylvan (formerly Sylvan Prometric) New York: The McGraw-Hill Companies, Inc. 40 Software Development Certification (7) Why People Certify Other 11.4% Credential 38.3% Financial Reward 0.4% Self-Evaluation 5.1% Company Requirement 0.4% Professional Growth 46.3% 41 Software Development Certification (8) Primary Achievement Resulting from Certification "Solve Problems Quicker" 19% "Increase in Salary" 11% "More Credibility within Organization" 24% "Greater SelfEsteem" 22% "More Credibility with Customers" 24% 42 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. 43 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. 44 Software Development Certification (11) IEEE CSDP (Certified Software Development Professional) distribution of Questions per knowledge area 1. 2. 3. 4. 5. Business Practices & Engineering Economics (3-4%) Software Requirements (13-15%) Software Design (22-24%) Software Construction (10-12%) Software Testing (15-17%) 45 Software Development Certification (12) IEEE CSDP (Certified Software Development Professional) distribution of Questions per knowledge area (continued) 6. 7. 8. 9. 10. 11. 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%) 46 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. 47 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 48 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. 49 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 they’re 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. 50 Software Development Licensing (3) • Arguments Against Licensing (continued) – The breadth of sub-disciplines involved in developing software would make licensing all of the subdisciplines impractical. – The Fundamentals of Engineering Exams required for licensing existing professional engineers is inappropriate for those receiving a computer science degree. 51 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 engineering’s body of knowledge is changing rapidly. – Licensing can’t guarantee that every individual who is licensed will actually be competent. Licensing will give the public a false sense of security. 52 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 53 Software Development Licensing (6) Percentage of licensed engineering graduates in the US as of 1996 Discipline Licensed Civil 44% Mechanical 23% Electrical 9% Chemical 8% All Engineers 18% Ford, Gary, and Norman E. Gibbs, “A Mature Profession of Software Engineering”, SEI CMU, CMU/SEI-96-TR-004, January 1996 54 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 55 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 56 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 57 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 58 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 59 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 60 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 } 61 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 62 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 engineer’s Code of Ethics • Use of code-and-fix development, however, is inconsistent with a Software Engineer’s ethical duty to produce highquality products for acceptable costs and within reasonable schedules. • Continued use of code-and-fix also undermines the advancement of software engineering as a profession 63 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 64 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 65 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 66 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/ProSim04/SoftwareProductivity.ppt 67 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 68 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 69 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 70 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 71 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. 72 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 1960’s have shown that teams using a high degree of specialization are more productive than teams that do not. 73 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 74 Software Development Job Specialization • Specialization is an important element of a mature profession. • Two Categories of Specialization are emerging – Technology Specialization – Software Engineering Specialization 75 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. 76 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 industry’s 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 enterprise’s 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 Oracle’s Business applications are also available • Hyperion (Financial Forecasting) • PeopleSoft (ERP – HR, Payroll, Financials, etc.) • Oracle E-Business Suite (ERP – HR, Payroll, Financials) 77 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. 78 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 79 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. 80 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 81 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 82 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. 83 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 84 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 85 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 86 Teamwork (3) http://www.construx.com CxOne Basic Team structure Team Specialization 87 Teamwork (4) • Author sites a study by Gerald M. McCue, “Architectural Design for Program Development”, while he worked at IBM’s 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 88 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. 89 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 90 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 91 Process Improvement (2) Benefits of Process Improvement Results of software process improvement efforts Factor Median Improvement Best Sustained Improvement Productivity 35% year 58% year Schedule 19% year 23% year Post-release defect reports 39% year 39% year* 5 to 1 8.8 to 1 Business value of organizational improvement Herbsleb, James, et. al., “Benefits of CMM Based Software Process Improvements: Initial Results”, Pittsburg: Software Engineering Institute, August 2004 92 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 93 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) 94 Process Improvement (5) Improving Software Practices – Where to Start • 10 Tough Questions 1. How much are you spending on software development? 2. What percentage of your projects is currently on time and on budget? 3. What is the average schedule and budget overrun for your projects? 95 Process Improvement (6) Improving Software Practices – Where to Start • 10 Tough Questions (continued) 4. Which of your current projects are most likely to fail outright? 5. What percentage of your project cost arises from avoidable rework? 6. How satisfied (quantitatively) are users of your software? 96 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? 97 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? 98 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. 99 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. 100 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. 101 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. 102 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 103 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. 104 Additional Information • The company he founded Construx‘s website http://www.construx.com • Construx was founded in 1996 by Steve McConnell to provide industry-leading support for software development best practices. 105