SlideShare a Scribd company logo
Professional Software
Professional Software
Development
Development
Shorter Schedules, Higher Quality
Shorter Schedules, Higher Quality
Products, More Successful
Products, More Successful
Projects, Enhanced Careers
Projects, Enhanced Careers
by Steve McConnell
by Steve McConnell
Matt Sawka
Matt Sawka
Purpose
Purpose
► What is software engineering?
What is software engineering?
► How does software engineering relate to computer science?
How does software engineering relate to computer science?
► Why isn’t regular computer programming good enough?
Why isn’t regular computer programming good enough?
► Why do we need a profession of software engineering?
Why do we need a profession of software engineering?
► Why is engineering the best model for a software development
Why is engineering the best model for a software development
profession?
profession?
► In what ways do effective practices vary from project to project (or
In what ways do effective practices vary from project to project (or
company to company), and in what ways are they usually the
company to company), and in what ways are they usually the
same?
same?
► What can organizations do to support a professional approach to
What can organizations do to support a professional approach to
software development?
software development?
► What can individual software developers do to become full-fledged
What can individual software developers do to become full-fledged
professionals?
professionals?
► What can the software industry as a whole do to create a true
What can the software industry as a whole do to create a true
profession of software engineering?
profession of software engineering?
Organization
Organization
The Software Tarpit
The Software Tarpit
Wrestling with Dinosaurs
Wrestling with Dinosaurs
Fool’s Gold
Fool’s Gold
Cargo Cult Software
Cargo Cult Software
Engineering
Engineering
Body of Knowledge
Body of Knowledge
Novum Organum
Novum Organum
Individual Professionalism
Individual Professionalism
Orphans Preferred
Orphans Preferred
Raising Your Software
Raising Your Software
Consciousness
Consciousness
Building the Community
Building the Community
Programmer Writing
Programmer Writing
Organizational Professionalism
Organizational Professionalism
Software Gold Rushes
Software Gold Rushes
Business Case for Better Software
Business Case for Better Software
Practices
Practices
Ptolemaic Reasoning
Ptolemaic Reasoning
Quantifying Personnel Factors
Quantifying Personnel Factors
Construx’s Professional
Construx’s Professional
Development Program
Development Program
Industry Professionalism
Industry Professionalism
Engineering a Profession
Engineering a Profession
Hard Knocks
Hard Knocks
Stinking Badges
Stinking Badges
The Professional’s Code
The Professional’s Code
Alchemy
Alchemy
Part One
Part One
The Software Tar Pit
The Software Tar Pit
Chapter 1:
Chapter 1:
Wrestling with Dinosaurs
Wrestling with Dinosaurs
“
“He that will not apply new remedies
He that will not apply new remedies
must expect new evils,
must expect new evils,
for time is the greatest innovator.”
for time is the greatest innovator.”
–
–Francis Bacon
Francis Bacon
Wrestling with Dinosaurs
Wrestling with Dinosaurs
► “
“No scene from prehistory is quite so vivid as that of the moral
No scene from prehistory is quite so vivid as that of the moral
struggles of great beasts in the tar pits. In the mind’s eye one sees
struggles of great beasts in the tar pits. In the mind’s eye one sees
dinosaurs, mammoths, and sabertoothed tigers struggling against
dinosaurs, mammoths, and sabertoothed tigers struggling against
the grip of the tar. The fiercer the struggle, the more entangling the
the grip of the tar. The fiercer the struggle, the more entangling the
tar, and no beast is so strong and so skillfully but that he ultimately
tar, and no beast is so strong and so skillfully but that he ultimately
sinks.
sinks.
Large-system programming has over the past decade been such a
Large-system programming has over the past decade been such a
tar pit, and many great and powerful beasts have thrashed violently
tar pit, and many great and powerful beasts have thrashed violently
in it Most have emerged with running systems – few have met
in it Most have emerged with running systems – few have met
goals, schedules, and budgets Large and small, massive or wiry,
goals, schedules, and budgets Large and small, massive or wiry,
team after team has become entangled in the tar No one thing
team after team has become entangled in the tar No one thing
seems to cause the difficulty – any particular paw can be pulled
seems to cause the difficulty – any particular paw can be pulled
away. But the accumulation of simultaneous and interacting factors
away. But the accumulation of simultaneous and interacting factors
brings slower and slower motion. Everyone seems to have been
brings slower and slower motion. Everyone seems to have been
surprised by the stickiness of the problem, and it is hard to discern
surprised by the stickiness of the problem, and it is hard to discern
the nature of it But we must try to understand it if we are to solve it.
the nature of it But we must try to understand it if we are to solve it.
-
-The Mythical Man-Month
The Mythical Man-Month (p. 3), Fred Brooks. 1975
(p. 3), Fred Brooks. 1975
Wrestling with Dinosaurs
Wrestling with Dinosaurs
► Has anything changed?
Has anything changed?
 ~75% of all medium-sized projects and 90% of or more of large
~75% of all medium-sized projects and 90% of or more of large
projects are subject to excessive schedule pressure.
projects are subject to excessive schedule pressure.
 Overtime is the standard.
Overtime is the standard.
► “
“In many companies, programmers faced with deadlines have
In many companies, programmers faced with deadlines have
been known to spend nights in the offices.” –
been known to spend nights in the offices.” – Fortune
Fortune, 1967
, 1967
 Windows NT was projected to take 1500 staff-years to
Windows NT was projected to take 1500 staff-years to
complete.
complete.
► OS/360 took more than 3 times this amount in 1966.
OS/360 took more than 3 times this amount in 1966.
 The advent of web-development poses the question is
The advent of web-development poses the question is
delivering software quickly better than delivering quality
delivering software quickly better than delivering quality
software? McConnell argues that this is not a new phenomena.
software? McConnell argues that this is not a new phenomena.
Chapter 2:
Chapter 2:
Fool’s Gold
Fool’s Gold
“
“Hope is a good breakfast,
Hope is a good breakfast,
but it is a bad supper.”
but it is a bad supper.”
–
–Francis Bacon
Francis Bacon
Fool’s Gold
Fool’s Gold
► During the California Gold Rush of the late
During the California Gold Rush of the late
1800s, many were deceived by fool’s gold – iron
1800s, many were deceived by fool’s gold – iron
pyrite, which has the same appearance as Gold.
pyrite, which has the same appearance as Gold.
► The last fifty years in software development has
The last fifty years in software development has
produced similar results. Software Engineers
produced similar results. Software Engineers
seeking solid processes and standards have
seeking solid processes and standards have
mostly found fool’s gold, software practices that
mostly found fool’s gold, software practices that
appear useless on first glance, but are actually
appear useless on first glance, but are actually
flaky, brittle, and virtually valueless.
flaky, brittle, and virtually valueless.
Fool’s Gold
Fool’s Gold
► Problem: Looking back further in history, how
Problem: Looking back further in history, how
could we build one of the ancient pyramids
could we build one of the ancient pyramids
from ancient Egypt?
from ancient Egypt?
 The stone blocks need to be moved 10,000 meters
The stone blocks need to be moved 10,000 meters
from the river to their final resting place.
from the river to their final resting place.
 You have 100 days to move the blocks.
You have 100 days to move the blocks.
 You have 20 people to move the blocks.
You have 20 people to move the blocks.
 You are allowed to use any method you’d like.
You are allowed to use any method you’d like.
► On average, you must move the blocks 100
On average, you must move the blocks 100
meters a day (or have a method that will speed
meters a day (or have a method that will speed
up the process later on).
up the process later on).
► How would you accomplish this?
How would you accomplish this?
Fool’s Gold
Fool’s Gold
► Option 1:
Option 1:
 Immediately start pushing the blocks with brute
Immediately start pushing the blocks with brute
force.
force.
 Result: You move the block 10 meters a day and fall
Result: You move the block 10 meters a day and fall
90 meters/day behind.
90 meters/day behind.
Fool’s Gold
Fool’s Gold
► Option 2:
Option 2:
 Analyze the problem. You decide to cut down several trees and
Analyze the problem. You decide to cut down several trees and
use them as rollers to move the block. Create a smooth, level
use them as rollers to move the block. Create a smooth, level
roadway to push forward.
roadway to push forward.
 Result: Although there is an initial investment to find the trees,
Result: Although there is an initial investment to find the trees,
it still will pay off.
it still will pay off.
Fool’s Gold
Fool’s Gold
► Option 3:
Option 3:
 Implement option 2, but balance the pushers with pullers and
Implement option 2, but balance the pushers with pullers and
add log-movers, so that a group is always moving extra logs in
add log-movers, so that a group is always moving extra logs in
front of the block.
front of the block.
 Result: An improvement on option 2, the block will be
Result: An improvement on option 2, the block will be
continuously moving.
continuously moving.
Fool’s Gold
Fool’s Gold
► How does software development relate to
How does software development relate to
ancient Egyptian pyramids?
ancient Egyptian pyramids?
 Change the pyramid block to a software
Change the pyramid block to a software
development project.
development project.
► You have 100 days to complete a project. This means you
You have 100 days to complete a project. This means you
either have to complete 1/100 of the source code each day
either have to complete 1/100 of the source code each day
or you need to schedule some parts taking less time than
or you need to schedule some parts taking less time than
others.
others.
 Avoid “last-minute” syndrome (Option 1)
Avoid “last-minute” syndrome (Option 1)
► The development team has little concern near the
The development team has little concern near the
beginning of the project, but has a frenzied push at the end
beginning of the project, but has a frenzied push at the end
of the development cycle.
of the development cycle.
Fool’s Gold
Fool’s Gold
► How does software development relate to ancient
How does software development relate to ancient
Egyptian pyramids?
Egyptian pyramids?
 Also avoid “code-and-fix” development (Option 2)
Also avoid “code-and-fix” development (Option 2)
► Put a brute force of programmers on the project without properly
Put a brute force of programmers on the project without properly
planning or design of the software. The project team will show
planning or design of the software. The project team will show
initial progress but will be unable to finish strong. Most effort will
initial progress but will be unable to finish strong. Most effort will
go into defects.
go into defects.
Fool’s Gold
Fool’s Gold
► The Silver Bullet Syndrome
The Silver Bullet Syndrome
 An elephant could be capture to pull block. However, after it
An elephant could be capture to pull block. However, after it
is captured, it tramples 2 workers and runs off. The
is captured, it tramples 2 workers and runs off. The
managers then think they should’ve spent time learning to
managers then think they should’ve spent time learning to
handle the elephant.
handle the elephant.
Fool’s Gold
Fool’s Gold
► As project planning matures, the amount of effort
As project planning matures, the amount of effort
spent on later stages should be manageable.
spent on later stages should be manageable.
► Despite the downfalls, “code-and-fix” is still heavily
Despite the downfalls, “code-and-fix” is still heavily
used today for two reasons:
used today for two reasons:
 It provides initial signs of progress
It provides initial signs of progress
 It requires no training
It requires no training
Fool’s Gold
Fool’s Gold
► Focusing on Quality
Focusing on Quality
 If an organization can remove ~95% of their
If an organization can remove ~95% of their
defects before a release, they can minimize the
defects before a release, they can minimize the
amount of effort spent on correcting them later.
amount of effort spent on correcting them later.
Fool’s Gold
Fool’s Gold
►Software isn’t “soft”.
Software isn’t “soft”.
► Let’s suppose you are designing a system to
Let’s suppose you are designing a system to
print a set of 5 reports, and eventually 10
print a set of 5 reports, and eventually 10
reports.
reports.
 How the reports can be “soft”:
How the reports can be “soft”:
► Is ten an upper limit on thee number of reports?
Is ten an upper limit on thee number of reports?
► Will the future reports be similar to the initial five reports?
Will the future reports be similar to the initial five reports?
► Will all of the reports always be printed?
Will all of the reports always be printed?
► Will they always be printed in the same order?
Will they always be printed in the same order?
► To what extent will the user be able to customize the reports?
To what extent will the user be able to customize the reports?
► Will users be allowed to define their own reports?
Will users be allowed to define their own reports?
► Will the reports be customizable and definable on the fly?
Will the reports be customizable and definable on the fly?
► Will the repots be translate to other languages?
Will the repots be translate to other languages?
Fool’s Gold
Fool’s Gold
 How the reports can be “hard”:
How the reports can be “hard”:
► Defining more than 10 reports.
Defining more than 10 reports.
► Defining a new report that is different form the initial set of
Defining a new report that is different form the initial set of
reports.
reports.
► Printing a subset of the reports.
Printing a subset of the reports.
► Printing the reports in a user-defined order.
Printing the reports in a user-defined order.
► Allowing the user to customize reports.
Allowing the user to customize reports.
► Translating the repots to another language that users the Latin
Translating the repots to another language that users the Latin
alphabet.
alphabet.
► Translating the reports to a another language that uses a non-
Translating the reports to a another language that uses a non-
Latin alphabet or reads right-to-left.
Latin alphabet or reads right-to-left.
► Bottom Line: Flexibility costs money. Limiting
Bottom Line: Flexibility costs money. Limiting
flexibility can save money in the short term, but can
flexibility can save money in the short term, but can
incur higher costs later on the development life-cycle.
incur higher costs later on the development life-cycle.
Chapter 3:
Chapter 3:
Cargo Cult Software Engineering
Cargo Cult Software Engineering
“
“In the South seas there is a cargo cult of people. During the war they
In the South seas there is a cargo cult of people. During the war they
saw airplanes with lots of good materials, and they want the same
saw airplanes with lots of good materials, and they want the same
thing to happen now. So they’ve arranged to make things like
thing to happen now. So they’ve arranged to make things like
runaways, to put fires along the sides of runways to make a
runaways, to put fires along the sides of runways to make a
wooden hut for a man to sit in, with two wooden pieces on his
wooden hut for a man to sit in, with two wooden pieces on his
head for headphones and bars of bamboo sticking out like
head for headphones and bars of bamboo sticking out like
antennas – he’s the controller – and they wait for the airplanes to
antennas – he’s the controller – and they wait for the airplanes to
land They’re doing everything right. The form is perfect. It looks
land They’re doing everything right. The form is perfect. It looks
exactly the way it looked before. But it doesn’t work. No airplanes
exactly the way it looked before. But it doesn’t work. No airplanes
land. So I call these things cargo cult science, because they follow
land. So I call these things cargo cult science, because they follow
all the apparent precepts and forms of scientific investigation, but
all the apparent precepts and forms of scientific investigation, but
they’re missing something essential, because the planes don’t
they’re missing something essential, because the planes don’t
land.”
land.”
–
–Richard Feynman
Richard Feynman
Cargo Cult Software
Cargo Cult Software
Engineering
Engineering
► Process-oriented vs. Commitment-oriented
Process-oriented vs. Commitment-oriented
Development styles
Development styles
 Process-oriented
Process-oriented
► Relies on a carefully defined process, planning,
Relies on a carefully defined process, planning,
scheduling, and directly application of Software
scheduling, and directly application of Software
Engineering best-practices.
Engineering best-practices.
► This succeeds because the organization is constantly
This succeeds because the organization is constantly
improving on their best practices.
improving on their best practices.
 Commitment-oriented
Commitment-oriented
► Also known as “hero-oriented” or “individual
Also known as “hero-oriented” or “individual
empowerment”, this style relies on hiring the best people
empowerment”, this style relies on hiring the best people
and asking them for total commitment to a project. They
and asking them for total commitment to a project. They
work with completely autonomy something work 60-100
work with completely autonomy something work 60-100
hours a week until a project is completed.
hours a week until a project is completed.
► This style succeeds because it utilizes individual
This style succeeds because it utilizes individual
motivation.
motivation.
Cargo Cult Software
Cargo Cult Software
Engineering
Engineering
► Imposters:
Imposters:
 Process-oriented imposter (Bureaucratic)
Process-oriented imposter (Bureaucratic)
► Observes successful companies using best-practices (such
Observes successful companies using best-practices (such
as NASA’s Software Engineering Laboratory), see that they
as NASA’s Software Engineering Laboratory), see that they
have many meetings and documents and emulate the
have many meetings and documents and emulate the
deliverables only.
deliverables only.
 Commitment-oriented imposter
Commitment-oriented imposter
► Observe successful companies like Microsoft, and
Observe successful companies like Microsoft, and
emphasize the long hours and large compensation
emphasize the long hours and large compensation
packages, not the fact that the employees of Microsoft
packages, not the fact that the employees of Microsoft
love to create software.
love to create software.
► Cargo-cult engineering is simply using a
Cargo-cult engineering is simply using a
development style “just because” or “because
development style “just because” or “because
the company requires it”, rather than using
the company requires it”, rather than using
the style advantageously.
the style advantageously.
Chapter 4:
Chapter 4:
Software Engineering, Not
Software Engineering, Not
Computer Science
Computer Science
“
“A scientist builds in order to learn; an
A scientist builds in order to learn; an
engineer learns in order to build.”
engineer learns in order to build.”
–
–Fred Brooks
Fred Brooks
SE not CS
SE not CS
► Like other engineering disciplines, Software
Like other engineering disciplines, Software
Engineering can be tailored for several objectives:
Engineering can be tailored for several objectives:
 Minimal defects
Minimal defects
 Maximum user satisfaction
Maximum user satisfaction
 Minimal response time
Minimal response time
 Good maintainability
Good maintainability
 Good extendibility
Good extendibility
 High robustness
High robustness
 High correctness.
High correctness.
► Unlike other disciplines in which risk relies on the
Unlike other disciplines in which risk relies on the
physical materials, Software Engineering carries risk
physical materials, Software Engineering carries risk
in optimizing the project goals.
in optimizing the project goals.
 Short schedule
Short schedule
 Predictable delivery date
Predictable delivery date
 Low cost
Low cost
 Small team size
Small team size
 Flexibility to make mid-project feature-set changes.
Flexibility to make mid-project feature-set changes.
SE not CS
SE not CS
► What is the best way to think of software
What is the best way to think of software
development? Is it a science? Art? Craft?
development? Is it a science? Art? Craft?
Something else?
Something else?
 ~40% of developers today have degrees in
~40% of developers today have degrees in
Computer Science.
Computer Science.
 Scientists learn what is true, how to test
Scientists learn what is true, how to test
hypotheses, and how to extend their knowledge.
hypotheses, and how to extend their knowledge.
 Engineers learn what is true, useful, and how to
Engineers learn what is true, useful, and how to
apply their knowledge to solve a problem.
apply their knowledge to solve a problem.
► Is Software Engineering just a buzzword?
Is Software Engineering just a buzzword?
 Some object to Software development being
Some object to Software development being
classified as engineering because the commercial
classified as engineering because the commercial
market doesn’t allow for the careful, time-
market doesn’t allow for the careful, time-
consuming engineering process to be completed.
consuming engineering process to be completed.
Chapter 5:
Chapter 5:
Body of Knowledge
Body of Knowledge
“
“Truth will sooner come out of error than
Truth will sooner come out of error than
from confusion.”
from confusion.”
–
–Francis Bacon
Francis Bacon
Body of Knowledge
Body of Knowledge
► To be an expert in a field, a person needs to
To be an expert in a field, a person needs to
know around 50,000 pieces of information.
know around 50,000 pieces of information.
► But with software engineering evolving, how
But with software engineering evolving, how
can anyone know enough to be considered an
can anyone know enough to be considered an
expert?
expert?
► Essence vs. Accident
Essence vs. Accident
 No Silver Bullet – Essence and Accidents of Software
No Silver Bullet – Essence and Accidents of Software
Engineering
Engineering – Fred Brooks, 1987.
– Fred Brooks, 1987.
 Essence – properties that something must have.
Essence – properties that something must have.
► Wheels on a car
Wheels on a car
► Software engineering: Specification, Design, and
Software engineering: Specification, Design, and
Verification.
Verification.
 Accident – optional properties.
Accident – optional properties.
► Air-Conditioning
Air-Conditioning
► Software Engineering: Coding and testing.
Software Engineering: Coding and testing.
Body of Knowledge
Body of Knowledge
► Computer programs are complex.
Computer programs are complex.
 At the center, the goal is to define underlying real-
At the center, the goal is to define underlying real-
world concepts and debugging that
world concepts and debugging that
understanding.
understanding.
► Software must be flexible and have the ability
Software must be flexible and have the ability
to change.
to change.
 If a program is successful, more people will use it
If a program is successful, more people will use it
and it will be adapted to be used outside of its
and it will be adapted to be used outside of its
original scope.
original scope.
► Software is “invisible.”
Software is “invisible.”
 It’s not possible to create a 2-d or 3-d geometric
It’s not possible to create a 2-d or 3-d geometric
model of the system.
model of the system.
Body of Knowledge
Body of Knowledge
► In 1968, NATO held
In 1968, NATO held
its first conference on
its first conference on
Software Engineering.
Software Engineering.
► McConnell estimates
McConnell estimates
that in 1968, the
that in 1968, the
average half-life of
average half-life of
knowledge was about
knowledge was about
10 years, with only
10 years, with only
about 20% of that
about 20% of that
knowledge at the
knowledge at the
Stable Core.
Stable Core.
Body of Knowledge
Body of Knowledge
►By 2003,
By 2003,
McConnell
McConnell
estimates that the
estimates that the
average half-life of
average half-life of
knowledge was
knowledge was
about 30 years,
about 30 years,
with about 50% of
with about 50% of
that knowledge at
that knowledge at
the Stable Core.
the Stable Core.
Body of Knowledge
Body of Knowledge
►How can we categorize the Software
How can we categorize the Software
Engineering “body of knowledge”
Engineering “body of knowledge”
(SWEBOK)?
(SWEBOK)?
Body of Knowledge
Body of Knowledge
►What sources contribute to the SWEBOK?
What sources contribute to the SWEBOK?
Body of Knowledge
Body of Knowledge
► What information is contained within SWEBOK?
What information is contained within SWEBOK?
► SWEBOK Knowledge Areas
SWEBOK Knowledge Areas
 Software Requirements
Software Requirements
► The discovery, documentation, and analysis of the functions
The discovery, documentation, and analysis of the functions
to be implemented in software.
to be implemented in software.
 Software Design
Software Design
► Definition of the basic structure of the system at the
Definition of the basic structure of the system at the
architectural and detailed levels, division into modules,
architectural and detailed levels, division into modules,
definition of interfaces for modules, and choice of
definition of interfaces for modules, and choice of
algorithms within modules.
algorithms within modules.
 Software Construction
Software Construction
► Implementation of the software including detailed design,
Implementation of the software including detailed design,
coding, debugging, unit testing, technical reviews, and
coding, debugging, unit testing, technical reviews, and
performance optimization. This area overlaps somewhat
performance optimization. This area overlaps somewhat
with Software Design and Software Testing.
with Software Design and Software Testing.
Body of Knowledge
Body of Knowledge
► SWEBOK Knowledge Areas
SWEBOK Knowledge Areas
 Software Testing
Software Testing
► All activities associated with executing software to detect
All activities associated with executing software to detect
defects and evaluate features. This includes planning,
defects and evaluate features. This includes planning,
test-case design as well as the tests themselves:
test-case design as well as the tests themselves:
development, unit, component, integration, system,
development, unit, component, integration, system,
regression, stress, and acceptance.
regression, stress, and acceptance.
 Software Maintenance
Software Maintenance
► Revision and enhancement of existing software, related
Revision and enhancement of existing software, related
documentation, and tests.
documentation, and tests.
 Software Configuration Management
Software Configuration Management
► Identification, documentation, change control of all
Identification, documentation, change control of all
deliverables generated on a project (source code, content,
deliverables generated on a project (source code, content,
requirements, etc…).
requirements, etc…).
 Software Quality
Software Quality
► All activities associated with providing confidence that a
All activities associated with providing confidence that a
software item conforms or will conform to technical
software item conforms or will conform to technical
requirements.
requirements.
Body of Knowledge
Body of Knowledge
►SWEBOK Knowledge Areas
SWEBOK Knowledge Areas
 Software Engineering Management Plan
Software Engineering Management Plan
►Planning, tracking and controlling of software
Planning, tracking and controlling of software
projects, work, and organizations.
projects, work, and organizations.
 Software Engineering Tools and Methods
Software Engineering Tools and Methods
►Tolls and methodologies support (CASE tools,
Tolls and methodologies support (CASE tools,
reusable libraries, formal methods and practices,
reusable libraries, formal methods and practices,
etc…).
etc…).
 Software Engineering Process
Software Engineering Process
►Activities related to improving development
Activities related to improving development
quality, timeliness, productivity, and other
quality, timeliness, productivity, and other
characteristics.
characteristics.
 http://www.swebok.org/
http://www.swebok.org/
Chapter 6:
Chapter 6:
Novum Organum
Novum Organum
“
“A prudent question is one-half of wisdom.”
A prudent question is one-half of wisdom.”
–
–Francis Bacon
Francis Bacon
Novum Organum
Novum Organum
► In the 1620s, Francis Bacon
In the 1620s, Francis Bacon
published Instauratio Magna
published Instauratio Magna
which attempted to redefine
which attempted to redefine
scientific inquiry. Within this
scientific inquiry. Within this
work is an essay,
work is an essay, Novum
Novum
Organum
Organum which challenges his
which challenges his
colleagues to focus on scientific
colleagues to focus on scientific
methodologies rather than
methodologies rather than
deductive reasoning when
deductive reasoning when
studying the world. His view of
studying the world. His view of
the scientific method had three
the scientific method had three
steps:
steps:
 Purge your mind of prejudices
Purge your mind of prejudices
(superstition)
(superstition)
 Collect observations and
Collect observations and
experiences systematically.
experiences systematically.
 Stop, survey what you’ve seen, and
Stop, survey what you’ve seen, and
draw an initial conclusion.
draw an initial conclusion.
Novum Organum
Novum Organum
► What does it mean to have a Software
What does it mean to have a Software
Engineering “profession”?
Engineering “profession”?
 According to the Code of Federal Regulations, a
According to the Code of Federal Regulations, a
profession has:
profession has:
► A requirement for extensive learning and training
A requirement for extensive learning and training
► A code of ethics imposing standards higher than those
A code of ethics imposing standards higher than those
normally tolerated in the marketplace.
normally tolerated in the marketplace.
► A disciplinary system for professionals who breach the code
A disciplinary system for professionals who breach the code
► A primary emphasis on social responsibility over strictly
A primary emphasis on social responsibility over strictly
individual gain, and a corresponding duty of its members to
individual gain, and a corresponding duty of its members to
behave as members f a disciplined and honorable
behave as members f a disciplined and honorable
profession.
profession.
► A prerequisite of a license priori to admission to practice.
A prerequisite of a license priori to admission to practice.
Novum Organum
Novum Organum
► Is Software
Is Software
Engineering a
Engineering a
profession?
profession?
 The Software
The Software
Engineering Institute
Engineering Institute
(SEI) has identified 8
(SEI) has identified 8
elements of a mature
elements of a mature
profession.
profession.
Novum Organum
Novum Organum
► Elements to a mature profession:
Elements to a mature profession:
 Initial Professional Education
Initial Professional Education
► Completing a university program in their field.
Completing a university program in their field.
 Accreditation
Accreditation
► The university program is accredited by an oversight body that
The university program is accredited by an oversight body that
determines if the program provides adequate education.
determines if the program provides adequate education.
Accreditation Board for Engineering and Technology (ABET)
Accreditation Board for Engineering and Technology (ABET)
oversees American engineering programs.
oversees American engineering programs.
 Skills Development
Skills Development
► Education is not enough to develop full professional
Education is not enough to develop full professional
capabilities, some type of further experience is needed to
capabilities, some type of further experience is needed to
perform the job individually with a satisfactory level of
perform the job individually with a satisfactory level of
competence.
competence.
Novum Organum
Novum Organum
► Elements to a mature profession:
Elements to a mature profession:
 Certification
Certification
► A professional is requirements to pass one or more exams
A professional is requirements to pass one or more exams
that ensures they have a minimum level of knowledge.
that ensures they have a minimum level of knowledge.
 Licensing
Licensing
► Similar to certification, this is a mandatory exam administered
Similar to certification, this is a mandatory exam administered
by a overrunning authority.
by a overrunning authority.
 Professional Development
Professional Development
► Ongoing professional education to maintain or improve a
Ongoing professional education to maintain or improve a
worker’s knowledge and skills.
worker’s knowledge and skills.
Novum Organum
Novum Organum
► Elements to a mature profession:
Elements to a mature profession:
 Professional Societies
Professional Societies
► A Community of like-minded individuals who put their
A Community of like-minded individuals who put their
professional standards above their self-interest.
professional standards above their self-interest.
 Code of Ethics
Code of Ethics
► Ensures that a profession’s practitioners behave responsibly.
Ensures that a profession’s practitioners behave responsibly.
 *Organizational Certification
*Organizational Certification
► Organizations must also be certified.
Organizations must also be certified.
Novum Organum
Novum Organum
► Maturity Levels for the elements
Maturity Levels for the elements
 Nonexistence
Nonexistence
► The element simply doesn’t exist.
The element simply doesn’t exist.
 Ad Hoc
Ad Hoc
► The element exists, but only in isolated instances
The element exists, but only in isolated instances
 Established
Established
► The element exists and is clearly identifiable.
The element exists and is clearly identifiable.
 Maturing
Maturing
► The element has existed for many years and is being
The element has existed for many years and is being
maintained and improved.
maintained and improved.
Novum Organum
Novum Organum
► How does Software Engineering rank?
How does Software Engineering rank?
 Initial Professional Education – Ad Hoc to Established
Initial Professional Education – Ad Hoc to Established
 Accreditation – Established
Accreditation – Established
 Skills Development – Established
Skills Development – Established
 Licensing – Ad Hoc
Licensing – Ad Hoc
 Professional Development – Ad Hoc
Professional Development – Ad Hoc
 Professional Societies – Established
Professional Societies – Established
 Code of Ethics – Established
Code of Ethics – Established
 Organizational Certification - Established
Organizational Certification - Established
The Software Tar Pit Summary
The Software Tar Pit Summary
► Wrestling with Dinosaurs
Wrestling with Dinosaurs
 Has anything changed?
Has anything changed?
► Fool’s Gold
Fool’s Gold
 Building the Egyptian Pyramids
Building the Egyptian Pyramids
 Code-And-Fix, Last-Minute, Silver-Bullet
Code-And-Fix, Last-Minute, Silver-Bullet
 Software isn’t “soft.”
Software isn’t “soft.”
► Cargo Cult Software Engineering
Cargo Cult Software Engineering
 Process-Oriented vs. Commitment-oriented
Process-Oriented vs. Commitment-oriented
► Software Engineering Not Computer Science
Software Engineering Not Computer Science
► Body of Knowledge
Body of Knowledge
 SWEBOK
SWEBOK
► Novum Organum
Novum Organum
 What is a profession?
What is a profession?
Part Two
Part Two
Individual Professionalism
Individual Professionalism
Chapter 7:
Chapter 7:
Orphans Preferred
Orphans Preferred
“
“Wanted: Young, skinny, wirey fellows not over 18. Must
Wanted: Young, skinny, wirey fellows not over 18. Must
be expert riders willing to risk death daily. Orphans
be expert riders willing to risk death daily. Orphans
preferred. Wages $25/week.”
preferred. Wages $25/week.”
-Pony Express, 1860
-Pony Express, 1860
“
“We realize the skills, intellect, and personality we seek are
We realize the skills, intellect, and personality we seek are
rare, and our compensation plan reflects that. In return,
rare, and our compensation plan reflects that. In return,
we expect TOTAL AND ABSOLUTE COMMITMENT to
we expect TOTAL AND ABSOLUTE COMMITMENT to
project success – overcoming all obstacles to create
project success – overcoming all obstacles to create
applications on time and within budget.”
applications on time and within budget.”
–
–Jobs Rated Almanac
Jobs Rated Almanac, 1995 for an SE posting.
, 1995 for an SE posting.
Orphans Preferred
Orphans Preferred
► “
“The stereotypical programmer is a shy young man who works in a
The stereotypical programmer is a shy young man who works in a
darkened room, intensely concentrating on magical incantations
darkened room, intensely concentrating on magical incantations
that make the computer do his bidding. He can concentrate for 12
that make the computer do his bidding. He can concentrate for 12
to 16 hours at a time, often working through the night to make his
to 16 hours at a time, often working through the night to make his
artistic vision a reality. He subsists on pizza and Twinkies. When
artistic vision a reality. He subsists on pizza and Twinkies. When
interrupted, the programming creature responds violently, hurling
interrupted, the programming creature responds violently, hurling
strings of cryptic acronyms at his interrupter – “TCP/IP, RPC, RCS,
strings of cryptic acronyms at his interrupter – “TCP/IP, RPC, RCS,
ACM, and IEEE!” he yells. The programmer breaks his intense
ACM, and IEEE!” he yells. The programmer breaks his intense
concentration only to attend Star Trek conventions and watch Monty
concentration only to attend Star Trek conventions and watch Monty
Python reruns. He is sometimes regarded as an indispensable
Python reruns. He is sometimes regarded as an indispensable
genius, sometimes as an eccentric artist. Vital information is stored
genius, sometimes as an eccentric artist. Vital information is stored
in his head and his head alone. He is secure in his job, knowing that,
in his head and his head alone. He is secure in his job, knowing that,
valuable as he is, precious few people compete for his job.”
valuable as he is, precious few people compete for his job.”
Orphans Preferred
Orphans Preferred
► Meyers-Briggs Type Indicator
Meyers-Briggs Type Indicator
 Extroversion (E) vs. Introversion (I)
Extroversion (E) vs. Introversion (I)
► Extroverts are focused on the outside world, people. Introverts
Extroverts are focused on the outside world, people. Introverts
focus on the world of ideas.
focus on the world of ideas.
 Sensing (S) vs. Intuition (N)
Sensing (S) vs. Intuition (N)
► How a person deals with decision-making data. Sensing persons
How a person deals with decision-making data. Sensing persons
focus on facts, concrete data and experience. Intuitive people look
focus on facts, concrete data and experience. Intuitive people look
for possibilities and focus on conceptual theories.
for possibilities and focus on conceptual theories.
 Thinking (T) vs. Feeling (F)
Thinking (T) vs. Feeling (F)
► How a person makes a decision. The thinkers make objective,
How a person makes a decision. The thinkers make objective,
analytic decisions, where as feelers rely on emotions and feelings.
analytic decisions, where as feelers rely on emotions and feelings.
 Perceiving (P) vs. Judging (J)
Perceiving (P) vs. Judging (J)
► The perceiving person is flexible and likes open-ended possibilities,
The perceiving person is flexible and likes open-ended possibilities,
where as the judging person prefers control and order.
where as the judging person prefers control and order.
Orphans Preferred
Orphans Preferred
► Meyers-Briggs and Software Developers
Meyers-Briggs and Software Developers
 Most Software Developers (25-40%) are ISTJ.
Most Software Developers (25-40%) are ISTJ.
► 50-75% of programmers are introverts, compared to 25%
50-75% of programmers are introverts, compared to 25%
in the general population.
in the general population.
 About 60% of software developers have at least a Bachelors,
About 60% of software developers have at least a Bachelors,
compared to 30% of the general population.
compared to 30% of the general population.
► 80-90% of programmers are Thinking (T) compared to
80-90% of programmers are Thinking (T) compared to
50% of the general population.
50% of the general population.
► There’s a 50-50% split of programmers between Sensing
There’s a 50-50% split of programmers between Sensing
(S) and Intuition (N).
(S) and Intuition (N).
Orphans Preferred
Orphans Preferred
► Meyers-Briggs and Designers
Meyers-Briggs and Designers
 Great Designers…
Great Designers…
► can general move in-between categories.
can general move in-between categories.
► have a mastery of common tools.
have a mastery of common tools.
► aren’t afraid of complexity.
aren’t afraid of complexity.
► seek out constructive criticism.
seek out constructive criticism.
► have experienced failed projects.
have experienced failed projects.
► are not afraid of the brute-force approach.
are not afraid of the brute-force approach.
► must be creative.
must be creative.
► have a restless desire to create.
have a restless desire to create.
Orphans Preferred
Orphans Preferred
► Total and Absolute Commitment
Total and Absolute Commitment
 Although working 12 to 16 hours may seem extreme,
Although working 12 to 16 hours may seem extreme,
it’s not out of the realm of possibility. Many
it’s not out of the realm of possibility. Many
Microsoft programmers working this or more during
Microsoft programmers working this or more during
the development of Windows NT.
the development of Windows NT.
► “
“Work pervades their existence. Friends fade into the
Work pervades their existence. Friends fade into the
background. The ties of marriage fray or rip apart. Children
background. The ties of marriage fray or rip apart. Children
are neglected or deferred. Hobbies wither. Computer code
are neglected or deferred. Hobbies wither. Computer code
comes to mean everything. If private dreams are nursed at
comes to mean everything. If private dreams are nursed at
al, it is only to ease the pain of creating NT.” – P. Zachary
al, it is only to ease the pain of creating NT.” – P. Zachary
 Programmers tend to show a loyalty to the project,
Programmers tend to show a loyalty to the project,
even if their loyalty to the company is waning.
even if their loyalty to the company is waning.
 Some programmers aim to be “hero” programmers,
Some programmers aim to be “hero” programmers,
who take on mountains of work and hours.
who take on mountains of work and hours.
Orphans Preferred
Orphans Preferred
► Demographics
Demographics
 The average programmer
The average programmer
age peaks between 30-35
age peaks between 30-35
years old (which is about
years old (which is about
10 years younger than
10 years younger than
most professions).
most professions).
 72% of computer and
72% of computer and
information science BSs
information science BSs
and 83% of Ph. D’s were
and 83% of Ph. D’s were
men.
men.
 Only 17% of high-
Only 17% of high-
schoolers taking the AP
schoolers taking the AP
Computer Science test
Computer Science test
were female. This is the
were female. This is the
lowest % of all AP tests.
lowest % of all AP tests.
Highest level of
Highest level of
Education
Education
% of
% of
developer
developer
s
s
High school or less
High school or less 11.8%
11.8%
Some college,
Some college,
no degree
no degree
17.2%
17.2%
Associate’s degree
Associate’s degree 11.0%
11.0%
Bachelor’s degree
Bachelor’s degree 47.4%
47.4%
Graduate degree
Graduate degree 12.8%
12.8%
Orphans Preferred
Orphans Preferred
► Job Prospects
Job Prospects
Job breakdown for software workers
Job breakdown for software workers Current Software prsnl in US
Current Software prsnl in US
Computer and information scientists,
Computer and information scientists,
research
research
28,000
28,000
Computer programmers
Computer programmers 585,000
585,000
Computer software engineers, applications
Computer software engineers, applications 380,000
380,000
Computer software engineers, systems
Computer software engineers, systems
software
software
317,000
317,000
Computer systems analysts
Computer systems analysts 431,000
431,000
Network systems and data comm. analysts
Network systems and data comm. analysts 119,000
119,000
Other computer specialists
Other computer specialists 203,000
203,000
Total
Total 2,063,000
2,063,000
Chapter 8:
Chapter 8:
Raising Your Software
Raising Your Software
Consciousness
Consciousness
“
“If a man will begin with certainties, he
If a man will begin with certainties, he
shall end in doubts; but if he will be
shall end in doubts; but if he will be
content to begin with doubts, he shall
content to begin with doubts, he shall
end in certainties”
end in certainties”
-Francis Bacon
-Francis Bacon
Raising Your Software
Raising Your Software
Consciousness
Consciousness
► In the 1970s, Charles Reich published,
In the 1970s, Charles Reich published, The
The
Greening of America
Greening of America, which identified 3 types of
, which identified 3 types of
awareness
awareness
 Consciousness I (Con I): Pioneer mentality
Consciousness I (Con I): Pioneer mentality
► Great emphasis on independence and self-satisfaction
Great emphasis on independence and self-satisfaction
 Consciousness II (Con II): Gray flannel suit mentality
Consciousness II (Con II): Gray flannel suit mentality
► The corporate man. Knowing how to get along with other
The corporate man. Knowing how to get along with other
and playing by the rules
and playing by the rules
 Consciousness III (Con III): Enlightened
Consciousness III (Con III): Enlightened
Independence
Independence
► Operates on the basis of principles, with little regard for the
Operates on the basis of principles, with little regard for the
rules of Con II and without the selfishness of Con I.
rules of Con II and without the selfishness of Con I.
Raising Your Software
Raising Your Software
Consciousness
Consciousness
► In the 1970s, Charles Reich published,
In the 1970s, Charles Reich published, The
The
Greening of America
Greening of America, which identified 3 types of
, which identified 3 types of
awareness
awareness
 Consciousness I (Con I): Pioneer mentality
Consciousness I (Con I): Pioneer mentality
► Great emphasis on independence and self-satisfaction
Great emphasis on independence and self-satisfaction
 Consciousness II (Con II): Gray flannel suit mentality
Consciousness II (Con II): Gray flannel suit mentality
► The corporate man. Knowing how to get along with other
The corporate man. Knowing how to get along with other
and playing by the rules
and playing by the rules
 Consciousness III (Con III): Enlightened
Consciousness III (Con III): Enlightened
Independence
Independence
► Operates on the basis of principles, with little regard for the
Operates on the basis of principles, with little regard for the
rules of Con II and without the selfishness of Con I.
rules of Con II and without the selfishness of Con I.
Raising Your Software
Raising Your Software
Consciousness
Consciousness
► Consciousness and Software Development
Consciousness and Software Development
 Con I – Self Reliance
Con I – Self Reliance
► Software developers who are “Lone Rangers”. They have
Software developers who are “Lone Rangers”. They have
little tolerance for other ideas.
little tolerance for other ideas.
► Little training is needed. This approach works adequately in
Little training is needed. This approach works adequately in
small projects.
small projects.
 Con II – Rules
Con II – Rules
► Rules allow programmers to work with others.
Rules allow programmers to work with others.
 Con III – Principles
Con III – Principles
► Programmers understand that the rules from Con II are
Programmers understand that the rules from Con II are
based on principle. Programmers focus on the underlying
based on principle. Programmers focus on the underlying
effective of their actions on software development.
effective of their actions on software development.
Chapter 9:
Chapter 9:
Building the Community
Building the Community
“
“If any human being earnestly desires to push on
If any human being earnestly desires to push on
the new discoveries instead of just retaining
the new discoveries instead of just retaining
and using the old; to win victories over Nature
and using the old; to win victories over Nature
as a worker rather than over hostile critics as a
as a worker rather than over hostile critics as a
disputant; to attain, in fact, clear and
disputant; to attain, in fact, clear and
demonstrative knowledge instead of attractive
demonstrative knowledge instead of attractive
and probable theory; we invite him as a true
and probable theory; we invite him as a true
son of Science to join our ranks.”
son of Science to join our ranks.”
-Francis Bacon
-Francis Bacon
Building the Community
Building the Community
► It’s important to remember that we’re not
It’s important to remember that we’re not
simply lone-ranger programmers, or even
simply lone-ranger programmers, or even
programmers for one company, but rather a
programmers for one company, but rather a
community of professionals.
community of professionals.
 IEEE
IEEE
 ACM
ACM
► These organizations can provide solutions to
These organizations can provide solutions to
common problems or articles to further your
common problems or articles to further your
understanding of the field.
understanding of the field.
Chapter 10:
Chapter 10:
Architects and Carpenters
Architects and Carpenters
“
“Engineers produce plans Builders
Engineers produce plans Builders
implement the plans to produce a
implement the plans to produce a
product.”
product.”
-Terri Maginnis
-Terri Maginnis
Architects and Carpenters
Architects and Carpenters
► As Software Engineering continues to develop, a wider
As Software Engineering continues to develop, a wider
range of abilities will begin to distinguish itself.
range of abilities will begin to distinguish itself.
 Average software developers
Average software developers
 Highly skilled software developers
Highly skilled software developers
 Unlicensed software engineers/certified software technologists
Unlicensed software engineers/certified software technologists
(coders).
(coders).
 Professional Software Engineers
Professional Software Engineers
► The average person who earns a professional degree
The average person who earns a professional degree
earns 50% more than someone without.
earns 50% more than someone without.
► The average person who earns a master’s degree will
The average person who earns a master’s degree will
earn 25% more than someone without.
earn 25% more than someone without.
Architects and Carpenters
Architects and Carpenters
► Job Specialization
Job Specialization
 The Surgical
The Surgical
Team, proposed
Team, proposed
by Fred Brooks in
by Fred Brooks in
The Mythical Man-
The Mythical Man-
Month
Month
Architects and Carpenters
Architects and Carpenters
► Job specializations today
Job specializations today
 Technology
Technology
► Software Technologist
Software Technologist
 Knowledge of specific technologies (Microsoft, Novell, Oracle, Apple)
Knowledge of specific technologies (Microsoft, Novell, Oracle, Apple)
 Software Engineering
Software Engineering
► Software Engineers
Software Engineers
 Architecture, configuration control, cost estimation, customer
Architecture, configuration control, cost estimation, customer
support, database administration, education and training, function
support, database administration, education and training, function
point counting, human factors, information systems, integration,
point counting, human factors, information systems, integration,
maintenance and enhancement, measurement, network, package
maintenance and enhancement, measurement, network, package
acquisition, performance, planning, process improvement, quality
acquisition, performance, planning, process improvement, quality
assurance, requirements, reusability, standards, systems software
assurance, requirements, reusability, standards, systems software
support, technical writing, testing, tools development.
support, technical writing, testing, tools development.
Architects and Carpenters
Architects and Carpenters
► Team Specializations
Team Specializations
 Construction lead
Construction lead
 Design lead
Design lead
 Planning and tracking lead
Planning and tracking lead
 Project business manager
Project business manager
 Quality assurance lead
Quality assurance lead
 Requirements lead
Requirements lead
Chapter 11:
Chapter 11:
Programmer Writing
Programmer Writing
“
“Read not to contradict and confute, nor to
Read not to contradict and confute, nor to
believe and tae for granted, nor to find
believe and tae for granted, nor to find
talk and discourse, but to weigh and
talk and discourse, but to weigh and
consider.”
consider.”
-Francis Bacon
-Francis Bacon
Programmer Writing
Programmer Writing
► “
“The gap between the best software engineering
The gap between the best software engineering
practice and the average practice is very wide – perhaps
practice and the average practice is very wide – perhaps
wider than in any other engineering discipline. A tool
wider than in any other engineering discipline. A tool
that disseminates good practice would be important.”
that disseminates good practice would be important.”
–
– No Silver Bullet
No Silver Bullet, Fred Brooks
, Fred Brooks
► According to McConnell, there are six types of authors:
According to McConnell, there are six types of authors:
 Recent retirees
Recent retirees
 University professors
University professors
 Seminar instructors
Seminar instructors
 Consultants
Consultants
 Think-tank developers
Think-tank developers
 Developers working on production software.
Developers working on production software.
► Who should be writing our documentation?
Who should be writing our documentation?
Programmer Writing
Programmer Writing
► “
“In this distribution of functions, the scholar is the delegated
In this distribution of functions, the scholar is the delegated
intellect. In the right state, he is,
intellect. In the right state, he is, Man Thinking
Man Thinking. In the degenerate
. In the degenerate
state, when the victim of society, he tends to become a mere
state, when the victim of society, he tends to become a mere
thinker, or, still worse, the parrot of other men's thinking.
thinker, or, still worse, the parrot of other men's thinking.
…
…I learn immediately from any speaker how much he has already
I learn immediately from any speaker how much he has already
lived, through the poverty or the splendor of his speech. Life lies
lived, through the poverty or the splendor of his speech. Life lies
behind us as the quarry from whence we get tiles and copestones
behind us as the quarry from whence we get tiles and copestones
for the masonry of today. This is the way to learn grammar.
for the masonry of today. This is the way to learn grammar.
Colleges and books only copy the language which the field and the
Colleges and books only copy the language which the field and the
work-yard made.“
work-yard made.“
-Excepts from ’The American Scholar’ by Ralph Waldo
-Excepts from ’The American Scholar’ by Ralph Waldo
Emerson (1837),
Emerson (1837), http://www.emersoncentral.com/amscholar.htm
► Is there a disconnect between academia and the work-force? Are
Is there a disconnect between academia and the work-force? Are
we still thinking for ourselves? Or merely “thinking” of what others
we still thinking for ourselves? Or merely “thinking” of what others
have thought through?
have thought through?
Programmer Writing
Programmer Writing
► “
“James Fenimore Cooper syndrome”
James Fenimore Cooper syndrome”
 In
In The Deerslayer
The Deerslayer, Cooper writes that 6 Indians climbed onto
, Cooper writes that 6 Indians climbed onto
sapling to board a scow coming downstream.
sapling to board a scow coming downstream.
 Mark Twain described this as a fantasy situation. Because of
Mark Twain described this as a fantasy situation. Because of
his knowledge of riverboat piloting, he knew this situation was
his knowledge of riverboat piloting, he knew this situation was
not plausible with the sapling or with the dimensions of the
not plausible with the sapling or with the dimensions of the
scow.
scow.
 This syndrome represents a practitioner calling into the
This syndrome represents a practitioner calling into the
question the writings of a scholar.
question the writings of a scholar.
► Does the Software Engineering literature suffer from James
Does the Software Engineering literature suffer from James
Fenimore Cooper Syndrome?
Fenimore Cooper Syndrome?
Individual Professionalism
Individual Professionalism
► Orphans Preferred
Orphans Preferred
 Meyers Briggs and Software Engineering demographics
Meyers Briggs and Software Engineering demographics
► Raising your Software Consciousness
Raising your Software Consciousness
 The Greening of America
The Greening of America
► Building the Community
Building the Community
 IEEE and ACM
IEEE and ACM
► Architects and Carpenters
Architects and Carpenters
 Specializations
Specializations
► Programmer Writing
Programmer Writing
 ‘
‘The American Scholar’
The American Scholar’
 James Fenimore Cooper Syndrome
James Fenimore Cooper Syndrome
Part Three
Part Three
Organizational Professionalism
Organizational Professionalism
Chapter 12:
Chapter 12:
Software Gold Rushes
Software Gold Rushes
“
“Prosperity doth best discover vice, but
Prosperity doth best discover vice, but
adversity doth best discover virtue.”
adversity doth best discover virtue.”
-Francis Bacon
-Francis Bacon
“
“The root of all superstition is that men
The root of all superstition is that men
observe when a thing hits,
observe when a thing hits,
but not when it misses.”
but not when it misses.”
-Francis Bacon
-Francis Bacon
Software Gold Rushes
Software Gold Rushes
► In 1848, gold was discovered in riverbeds in California.
In 1848, gold was discovered in riverbeds in California.
Many self-proclaimed entrepreneurs set out to make
Many self-proclaimed entrepreneurs set out to make
their fortune. This made up the California Gold Rush.
their fortune. This made up the California Gold Rush.
But, by mid-1849, the majority of the easily found gold
But, by mid-1849, the majority of the easily found gold
was collected. Many miners would spent hours a day
was collected. Many miners would spent hours a day
digging through freezing water looking for any traces of
digging through freezing water looking for any traces of
the metal. By the 1850s, most miners had joined
the metal. By the 1850s, most miners had joined
corporations to continue their hunts.
corporations to continue their hunts.
► Software development experienced a similar
Software development experienced a similar
phenomena. There are a few success stories (Bill Gates
phenomena. There are a few success stories (Bill Gates
and Paul Allen of Microsoft; Steve Jobs and Steve
and Paul Allen of Microsoft; Steve Jobs and Steve
Wozniak of Apple, Bob Frankston and Dan Bricklin of
Wozniak of Apple, Bob Frankston and Dan Bricklin of
VisiCalc), but many failures as well.
VisiCalc), but many failures as well.
Software Gold Rushes
Software Gold Rushes
► Much of the “software gold rush” is characterized by
Much of the “software gold rush” is characterized by
high-risk projects, long hours, hacking, informal or no
high-risk projects, long hours, hacking, informal or no
processes, little-to-no documentation, and very little
processes, little-to-no documentation, and very little
quality assurance.
quality assurance.
► Post-gold rush development has en emphasis on lower-
Post-gold rush development has en emphasis on lower-
risk, high capital projects, larger teams, formal
risk, high capital projects, larger teams, formal
processes, and general standards. There isn’t an effort
processes, and general standards. There isn’t an effort
to rush projects out the door, but rather do thorough
to rush projects out the door, but rather do thorough
testing.
testing.
► Post-gold rush consumers are generally more
Post-gold rush consumers are generally more
demanding on the products that they are looking to buy.
demanding on the products that they are looking to buy.
► Many companies that survive a gold-rush would not be
Many companies that survive a gold-rush would not be
able to survive a second.
able to survive a second.
Chapter 13:
Chapter 13:
Business Case for Better Software Practices
Business Case for Better Software Practices
“
“When you can measure what you are
When you can measure what you are
speaking about, and express it in
speaking about, and express it in
numbers, you know something about it;
numbers, you know something about it;
but when you cannot measure it, when
but when you cannot measure it, when
you cannot express it in numbers, your
you cannot express it in numbers, your
knowledge is of a meager and
knowledge is of a meager and
unsatisfactory kind.”
unsatisfactory kind.”
-Lord Kelvin, 1893
-Lord Kelvin, 1893
Business Case for Better Software Practices
Business Case for Better Software Practices
► Development practices pay off
Development practices pay off
 In 1994 James Herbsleb prepared a study of 13
In 1994 James Herbsleb prepared a study of 13
organizations’ “business value” (similar to Return On
organizations’ “business value” (similar to Return On
Investment).
Investment).
► In 1995, systemic improvements increased the ROI anywhere
In 1995, systemic improvements increased the ROI anywhere
from 500-900%.
from 500-900%.
 In 1997, Rini van Solingen found an increase ranging
In 1997, Rini van Solingen found an increase ranging
from 700-1900%.
from 700-1900%.
 In 2000, Caspers Jones found that the ROI could easily
In 2000, Caspers Jones found that the ROI could easily
be in the double digits (over 1000%).
be in the double digits (over 1000%).
 In 2001, Watts Humphrey found an ROI increase of
In 2001, Watts Humphrey found an ROI increase of
500%.
500%.
Business Case for Better Software Practices
Business Case for Better Software Practices
► Current organizational effectiveness
Current organizational effectiveness
 A study funded by the SEI found that those organizations who
A study funded by the SEI found that those organizations who
implemented a change to their development practice found an average
implemented a change to their development practice found an average
of 35% gain in productivity, 19% schedule reduction, and post-release
of 35% gain in productivity, 19% schedule reduction, and post-release
defects were reduced by 39%.
defects were reduced by 39%.
 The same study found that for the best-case scenarios, 58% productivity
The same study found that for the best-case scenarios, 58% productivity
could be gained over 4 years, a compounded gain of 500% was achieved,
could be gained over 4 years, a compounded gain of 500% was achieved,
a 23%/year schedule reduction (with a 91% reduction over 6 years), and
a 23%/year schedule reduction (with a 91% reduction over 6 years), and
post-release defects were reduced by 99%.
post-release defects were reduced by 99%.
Business Case for Better Software Practices
Business Case for Better Software Practices
Organization
Organization Results
Results
BDN International
BDN International ROI 300%
ROI 300%
Boeing Information System
Boeing Information System Estimates within ~20%, $5.5 million saved
Estimates within ~20%, $5.5 million saved
in 1 year, ROI 775%
in 1 year, ROI 775%
Computer Sciences Corporation
Computer Sciences Corporation 65% reduction in error rate
65% reduction in error rate
General Dynamics Decision
General Dynamics Decision
Systems
Systems
70% reduction in rework; 94% defect rate
70% reduction in rework; 94% defect rate
reduction (drr), 2.9*productivity gain
reduction (drr), 2.9*productivity gain
Harris ISD DPL
Harris ISD DPL 90% drr, 2.5*productivity gain, ROI 900%
90% drr, 2.5*productivity gain, ROI 900%
Hughes
Hughes $2 million reduction in costs, ROI 500%
$2 million reduction in costs, ROI 500%
IBM Toronto
IBM Toronto 90% drr, 80% reduction in rework
90% drr, 80% reduction in rework
Motorola GED
Motorola GED 2-3*productivity gain, 2-7*cycle reduction
2-3*productivity gain, 2-7*cycle reduction
time, ROI 677%
time, ROI 677%
Philips
Philips ROI 750%
ROI 750%
Raytheon
Raytheon ROI 770%
ROI 770%
Schlumberger
Schlumberger 4*reduction in released defects
4*reduction in released defects
Business Case for Better Software Practices
Business Case for Better Software Practices
Organization
Organization Results
Results
Siemens
Siemens 90% reduction in released defects
90% reduction in released defects
Telcorida
Telcorida Defect 1/10 industry aver, customer
Defect 1/10 industry aver, customer
satisfaction up from 60% to 91%
satisfaction up from 60% to 91%
Texas Instruments – Systems
Texas Instruments – Systems 90% reduction in delivered defects
90% reduction in delivered defects
Thomson CSF
Thomson CSF ROI 360%
ROI 360%
U.S. Navy
U.S. Navy ROI 410%
ROI 410%
USAF Ogden Air Logistics Center
USAF Ogden Air Logistics Center ROI 1,900%
ROI 1,900%
USAF Oklahoma City Air Logistics
USAF Oklahoma City Air Logistics ROI 635%
ROI 635%
USAF Tinker Air Force Base
USAF Tinker Air Force Base ROI 600%
ROI 600%
Business Case for Better Software Practices
Business Case for Better Software Practices
Practice
Practice 12-month ROI
12-month ROI 36-month ROI
36-month ROI
Formal code inspections
Formal code inspections 250%
250% 1,200%
1,200%
Formal design inspections
Formal design inspections 350%
350% 1,000%
1,000%
Long-range technology planning
Long-range technology planning 100%
100% 1,000%
1,000%
Cost and quality estimation tools
Cost and quality estimation tools 250%
250% 1,200%
1,200%
Productivity measurements
Productivity measurements 150%
150% 600%
600%
Process assessments
Process assessments 150%
150% 600%
600%
Management training
Management training 120%
120% 550%
550%
Technical staff training
Technical staff training 90%
90% 550%
550%
Business Case for Better Software Practices
Business Case for Better Software Practices
► Performance improvements with the Capability
Performance improvements with the Capability
Maturity Model (CMM)
Maturity Model (CMM)
Business Case for Better Software Practices
Business Case for Better Software Practices
► Performance improvements with the Capability Maturity Model
Performance improvements with the Capability Maturity Model
(CMM)
(CMM)
 In general for average organizations,
In general for average organizations,
Effort = 2.94 * (KLOC)^1.10
Effort = 2.94 * (KLOC)^1.10
 NASA’s Software Engineering Laboratory’s (SEL) effort calculation
NASA’s Software Engineering Laboratory’s (SEL) effort calculation
has
has
Effort = 1.27 * (KLOC)^.986
Effort = 1.27 * (KLOC)^.986
 The .986 is especially important because it means they are
The .986 is especially important because it means they are
achieving a slight economy of scale.
achieving a slight economy of scale.
► COCOMO II
COCOMO II
 Only three of the 22 factors used to calculate effort were
Only three of the 22 factors used to calculate effort were
changeable at the individual project management level: Level of
changeable at the individual project management level: Level of
Documentation, Architecture and Risk Resolution, and
Documentation, Architecture and Risk Resolution, and
Development for Reuse. Most of these factors are at the
Development for Reuse. Most of these factors are at the
organizational level and cannot be easily changed.
organizational level and cannot be easily changed.
Business Case for Better Software Practices
Business Case for Better Software Practices
10 questions to ask about software activities
10 questions to ask about software activities
1.
1. How much are you spending on software development?
How much are you spending on software development?
2.
2. What percentage of your projects are currently on time and on
What percentage of your projects are currently on time and on
budget?
budget?
3.
3. What is the average schedule and budget overrun for your
What is the average schedule and budget overrun for your
projects?
projects?
4.
4. Which of your current projects are most likely to fail outright?
Which of your current projects are most likely to fail outright?
5.
5. What percentage of your project costs arises from avoidable
What percentage of your project costs arises from avoidable
rework?
rework?
6.
6. How satisfied (quantitatively) are users of your software?
How satisfied (quantitatively) are users of your software?
7.
7. How do the skills of your staff compare to the industry averages?
How do the skills of your staff compare to the industry averages?
8.
8. How do the capabilities of your organization compare to similar
How do the capabilities of your organization compare to similar
organizations?
organizations?
9.
9. How much (quantitatively) has your productivity improved in the
How much (quantitatively) has your productivity improved in the
past 12 months?
past 12 months?
10.
10. What is your plan for improving the skills of your staff and the
What is your plan for improving the skills of your staff and the
Chapter 14:
Chapter 14:
Ptolemaic Reasoning
Ptolemaic Reasoning
“
“All models are wrong;
All models are wrong;
some models are useful.”
some models are useful.”
-George Box
-George Box
“
“Knowledge itself is power.”
Knowledge itself is power.”
-Francis Bacon
-Francis Bacon
Ptolemaic Reasoning
Ptolemaic Reasoning
► Ptolemy was an astronomer who lived around
Ptolemy was an astronomer who lived around
A.D. 100 and theorized that the sun revolved
A.D. 100 and theorized that the sun revolved
around the earth.
around the earth.
► His theory was eventually replaced by
His theory was eventually replaced by
Copernicus when his data showed findings
Copernicus when his data showed findings
that contradicted Ptolemy.
that contradicted Ptolemy.
► In the same way, real-world data supports an
In the same way, real-world data supports an
object-oriented development process.
object-oriented development process.
Ptolemaic Reasoning
Ptolemaic Reasoning
► Capability Maturity Model
Capability Maturity Model
 Developed by the Software Engineering Institute.
Developed by the Software Engineering Institute.
 There are five software levels:
There are five software levels:
► Level 1: Initial
Level 1: Initial
 Software development is chaotic. This is the default level
Software development is chaotic. This is the default level
where the organization generally relies on the “code-and-fix
where the organization generally relies on the “code-and-fix
development” model.
development” model.
► Level 2: Repeatable
Level 2: Repeatable
 Basic project management practices are established on a
Basic project management practices are established on a
project-by-project basis. The strength of the organization
project-by-project basis. The strength of the organization
lies on its ability to repeated experiences.
lies on its ability to repeated experiences.
Ptolemaic Reasoning
Ptolemaic Reasoning
► Capability Maturity Model
Capability Maturity Model
► Level 3: Defined
Level 3: Defined
 The organization adopts standardized technical and
The organization adopts standardized technical and
management processes across the organization. A group is
management processes across the organization. A group is
assigned to monitor the software process.
assigned to monitor the software process.
► Level 4: Managed
Level 4: Managed
 Project outcomes become highly predictable. A standard
Project outcomes become highly predictable. A standard
process is identified and variations can be detected.
process is identified and variations can be detected.
► Level 5: Optimizing
Level 5: Optimizing
 The focus of the organization is on proactive identification of
The focus of the organization is on proactive identification of
process improvements. It has the ability to measure changes
process improvements. It has the ability to measure changes
to the process and identify their strengths and weaknesses.
to the process and identify their strengths and weaknesses.
 Conway’s Law: The structure of a computer program
Conway’s Law: The structure of a computer program
reflects the structure of the organization that built it.
reflects the structure of the organization that built it.
Ptolemaic Reasoning
Ptolemaic Reasoning
► Navigating the Capability Maturity Model
Navigating the Capability Maturity Model
1991
1991 2002
2002
Ptolemaic Reasoning
Ptolemaic Reasoning
► Navigating the Capability Maturity Model
Navigating the Capability Maturity Model
Ptolemaic Reasoning
Ptolemaic Reasoning
► CMM and Risk Management
CMM and Risk Management
 Cheyenne Mountain ATAMS project
Cheyenne Mountain ATAMS project
► The project team was able to…
The project team was able to…
 complete the project in 1/5
complete the project in 1/5th
th
of the projected time.
of the projected time.
 complete the project in ½ of the estimated time.
complete the project in ½ of the estimated time.
► Overall, they were able to deliver the software one month ahead
Overall, they were able to deliver the software one month ahead
of schedule and within budget.
of schedule and within budget.
► Eighteen months after release, only two defects were discovered.
Eighteen months after release, only two defects were discovered.
► Would developers like CMM?
Would developers like CMM?
 In a survey of 50 organizations, 20% of level 1 organization
In a survey of 50 organizations, 20% of level 1 organization
rated staff morale as “good” or “excellent”.
rated staff morale as “good” or “excellent”.
 At Level 2, 50% of the staff rated morale as “good” or
At Level 2, 50% of the staff rated morale as “good” or
“excellent”.
“excellent”.
 At Level 3, 60% of the staff rated morale as “good” or
At Level 3, 60% of the staff rated morale as “good” or
“excellent”.
“excellent”.
 Most developers working in a level 5 environment don’t want
Most developers working in a level 5 environment don’t want
to work for an organization that is less than level 5.
to work for an organization that is less than level 5.
Ptolemaic Reasoning
Ptolemaic Reasoning
► What does it take to implement CMM?
What does it take to implement CMM?
 Commitment from top management (and follow-
Commitment from top management (and follow-
through)
through)
 Establishment of a Software Engineering process
Establishment of a Software Engineering process
group (sometimes multiple groups).
group (sometimes multiple groups).
 Appropriate training in middle management and
Appropriate training in middle management and
various technical positions.
various technical positions.
► What is success?
What is success?
 Success = Planning * Execution
Success = Planning * Execution
 As an organization moves up CMM levels, they will
As an organization moves up CMM levels, they will
find that lower levels seem valuable and less
find that lower levels seem valuable and less
effective.
effective.
Chapter 15:
Chapter 15:
Quantifying Personnel Factors
Quantifying Personnel Factors
“
“Personnel attributes and human relations
Personnel attributes and human relations
activities provide by far the largest source
activities provide by far the largest source
of opportunity for improving software
of opportunity for improving software
productivity.
productivity.
-Barry W. Boehm
-Barry W. Boehm
Quantifying Personnel Factors
Quantifying Personnel Factors
► Personnel Experience
Personnel Experience
 In a study conducted by Sackman, Eriskon, and Grant, they
In a study conducted by Sackman, Eriskon, and Grant, they
found that the variance in time-to-completion for a
found that the variance in time-to-completion for a
programming problem varied almost 20-to-1 among a
programming problem varied almost 20-to-1 among a
programmers with 7+ years of experience.
programmers with 7+ years of experience.
 Other studies have found similar findings ranging anywhere
Other studies have found similar findings ranging anywhere
from 5-to-1 to 10-to-1.
from 5-to-1 to 10-to-1.
 In some cases, the programmers were unable to complete
In some cases, the programmers were unable to complete
the problem.
the problem.
 In a group of 7 random programmers, there’s a 50/50 change
In a group of 7 random programmers, there’s a 50/50 change
that at least one of the programmers will produce negative
that at least one of the programmers will produce negative
productivity.
productivity.
► COCOMO II
COCOMO II
 There are 7 factors that are influenced by experience:
There are 7 factors that are influenced by experience:
Application experience (1.51), Communications factors (1.53),
Application experience (1.51), Communications factors (1.53),
Language and tool experience (1.43), Personnel continuity
Language and tool experience (1.43), Personnel continuity
(1.51), Platform experience (1.40), Programmer capability
(1.51), Platform experience (1.40), Programmer capability
(1.76), Analyst capability (2.00).
(1.76), Analyst capability (2.00).
Quantifying Personnel Factors
Quantifying Personnel Factors
► Physical Environment
Physical Environment
 In these war-games, the environment played a factor. Of the
In these war-games, the environment played a factor. Of the
top 25% of programmers, most have bigger, private offices
top 25% of programmers, most have bigger, private offices
(~78 ft
(~78 ft2
2
) with fewer interruptions
) with fewer interruptions
► Motivation
Motivation
 Microsoft provides each group with a “morale budget” which
Microsoft provides each group with a “morale budget” which
the team can spend on anything from plaques, to t-shirts, to
the team can spend on anything from plaques, to t-shirts, to
dinner and movies.
dinner and movies.
 Microsoft allows programmers to accommodate family
Microsoft allows programmers to accommodate family
situations.
situations.
► Seniority
Seniority
 Because programming experience plays such a large factor in
Because programming experience plays such a large factor in
development, many companies have found success in have
development, many companies have found success in have
senior personnel help with each project.
senior personnel help with each project.
Chapter 16:
Chapter 16:
Construx’s Professional Development
Construx’s Professional Development
Program
Program
Construx’s Professional Development
Construx’s Professional Development
Program
Program
► Construx’s Software Development objectives
Construx’s Software Development objectives
 Skills enhancement
Skills enhancement
► Improve the skills of the employees
Improve the skills of the employees
 Career pathing
Career pathing
► Provides a structured path for improvement and career choice.
Provides a structured path for improvement and career choice.
 Support for common software job titles
Support for common software job titles
► Have a full list of titles: software developers, testers, business
Have a full list of titles: software developers, testers, business
analysts, project managers, architects, etc…
analysts, project managers, architects, etc…
 Consistency
Consistency
► Provide a consistent means for evaluation
Provide a consistent means for evaluation
 Generlizability beyond Contrux
Generlizability beyond Contrux
► Provide a generic framework for other companies to model.
Provide a generic framework for other companies to model.
Construx’s Professional Development
Construx’s Professional Development
Program
Program
► Construx’s Knowledge Areas (SWEBOK)
Construx’s Knowledge Areas (SWEBOK)
 Software Requirements
Software Requirements
 Software Design
Software Design
 Software Construction
Software Construction
 Software Testing
Software Testing
 Software Maintenance
Software Maintenance
 Software Configuration Management
Software Configuration Management
 Software Quality
Software Quality
 Software Engineering Management
Software Engineering Management
 Software Engineering Tools and Methods
Software Engineering Tools and Methods
 Software Engineering Process
Software Engineering Process
Construx’s Professional Development
Construx’s Professional Development
Program
Program
► Construx’s Capability Levels
Construx’s Capability Levels
 Introductory
Introductory
► Employee can perform basic functions in an area under
Employee can perform basic functions in an area under
supervision. Professional development is occurring.
supervision. Professional development is occurring.
 Competency
Competency
► Employ can perform effective, independent work and serve as
Employ can perform effective, independent work and serve as
a role model for the less experienced. Occasionally mentors
a role model for the less experienced. Occasionally mentors
 Leadership
Leadership
► Employee performs exemplary work and regularly coaches
Employee performs exemplary work and regularly coaches
employees and provides some leadership direction.
employees and provides some leadership direction.
 Mastery
Mastery
► Employee can perform reference work and has deep
Employee can perform reference work and has deep
experience. Usually, the employee has taught classes or
experience. Usually, the employee has taught classes or
written papers. They are recognized outside of Construx.
written papers. They are recognized outside of Construx.
Construx’s Professional Development
Construx’s Professional Development
Program
Program
► Construx’s Capability Levels
Construx’s Capability Levels
Introductor
Introductor
y
y
Competenc
Competenc
y
y
Leadership
Leadership Mastery
Mastery
Introductor
Introductor
y
y
Introductor
Introductor
y
y
Competenc
Competenc
y
y
Competency
Competency -
-
Competenc
Competenc
y
y
Competenc
Competenc
y
y
Competenc
Competenc
y
y
Competency
Competency -
-
Leadership
Leadership Competenc
Competenc
y
y
Competenc
Competenc
y
y
Leadership
Leadership Mastery
Mastery
Mastery
Mastery -
- -
- Mastery
Mastery Mastery
Mastery
Experience
Knowledg
e
Construx’s Professional Development
Construx’s Professional Development
Program
Program
► Construx’s Professional Development Ladder
Construx’s Professional Development Ladder
 Each engineer is giving a rating between 9-15, based
Each engineer is giving a rating between 9-15, based
on their knowledge and experience. A 12 is
on their knowledge and experience. A 12 is
considered to by a full professional.
considered to by a full professional.
 Most engineers don’t go beyond because it requires
Most engineers don’t go beyond because it requires
career-long commitments to the company to the
career-long commitments to the company to the
Software Engineering field.
Software Engineering field.
► Construx’s Culture
Construx’s Culture
 Professional Development Plan, Mentoring Program,
Professional Development Plan, Mentoring Program,
Professional Development Plaques, Training
Professional Development Plaques, Training
Program, Salary Structure, SE Discussion groups,
Program, Salary Structure, SE Discussion groups,
Level-12 recognition.
Level-12 recognition.
Organizational Professionalism
Organizational Professionalism
► Software Gold Rushes
Software Gold Rushes
 Gold Rush vs. Post-Gold Rush software
Gold Rush vs. Post-Gold Rush software
► Business Case for Better Software Practices
Business Case for Better Software Practices
 Process improvements and their effect on business
Process improvements and their effect on business
► Ptolemaic Reasoning
Ptolemaic Reasoning
 CMM
CMM
► Quantifying Personnel Factors
Quantifying Personnel Factors
 COCOMO II
COCOMO II
 Environment, Motivation, etc…
Environment, Motivation, etc…
► Contrux’s Professional Development Program
Contrux’s Professional Development Program
 Development objectives
Development objectives
 CKAs
CKAs
 Capability Levels
Capability Levels
 Ladder-based Careers
Ladder-based Careers
Part Four
Part Four
Industry Professionalism
Industry Professionalism
Chapter 17:
Chapter 17:
Engineering a Profession
Engineering a Profession
“
“Engineering can provide a life of genuine
Engineering can provide a life of genuine
satisfaction in many ways, especially
satisfaction in many ways, especially
through ministering in a practical manner
through ministering in a practical manner
to the needs and welfare of mankind.”
to the needs and welfare of mankind.”
-Vannevar Bush
-Vannevar Bush
Engineering a Profession
Engineering a Profession
► Engineering feats of the past
Engineering feats of the past
Reims Cathedral
Reims Cathedral
Sydney Opera House
Sydney Opera House
Engineering a Profession
Engineering a Profession
► Maturation Cycle of an Engineering Discipline
Maturation Cycle of an Engineering Discipline
 There are 3 stages in the development of a discipline
There are 3 stages in the development of a discipline
► Craft
Craft
 Work is performed by talented amateurs. There is little-to-no concept
Work is performed by talented amateurs. There is little-to-no concept
of scalability.
of scalability.
► Commercial
Commercial
 Workers are more economically driven. The focus is on quality in the
Workers are more economically driven. The focus is on quality in the
products and production processes.
products and production processes.
► Professional Engineering
Professional Engineering
 A corresponding science is developed to better understand the
A corresponding science is developed to better understand the
engineering problem and this science is then applied on a wider scale
engineering problem and this science is then applied on a wider scale
to many of the common engineering problems of the discipline.
to many of the common engineering problems of the discipline.
 As a discipline matures, solutions to common problems are
As a discipline matures, solutions to common problems are
codified (equations, models, components) so that they can be
codified (equations, models, components) so that they can be
reused.
reused.
Engineering a Profession
Engineering a Profession
► The science behind software
The science behind software
 Unlike Physics, the science behind the Civil Engineering that
Unlike Physics, the science behind the Civil Engineering that
built the Reims Cathedral, Software Engineering doesn’t have an
built the Reims Cathedral, Software Engineering doesn’t have an
exact science behind it.
exact science behind it.
 Software Engineering artifacts
Software Engineering artifacts
► Architectures, software design procedures
Architectures, software design procedures
► Design patterns
Design patterns
► Requirements
Requirements
► User Interface elements and procedures
User Interface elements and procedures
► Estimates
Estimates
► Planning data (project plans, procedures)
Planning data (project plans, procedures)
► Test plans, cases, data, procedures
Test plans, cases, data, procedures
► Technical review procedures
Technical review procedures
► Source code, construction procedures, integration procedures
Source code, construction procedures, integration procedures
► Software configuration management procedures
Software configuration management procedures
► Post-project reports
Post-project reports
► Organizational structures
Organizational structures
Chapter 18:
Chapter 18:
Hard Knocks
Hard Knocks
“
“Natural abilities like natural plants, that
Natural abilities like natural plants, that
need pruning by study; and studies
need pruning by study; and studies
themselves do give forth directions too
themselves do give forth directions too
much at large, except they be bounded in
much at large, except they be bounded in
by experience.”
by experience.”
-Francis Bacon
-Francis Bacon
Hard Knocks
Hard Knocks
Hard Knocks
Hard Knocks
► Is Computer Science relevant to Software
Is Computer Science relevant to Software
Engineering?
Engineering?
 Notice the decline of Computer Science and IS
Notice the decline of Computer Science and IS
degrees from 1985-1997.
degrees from 1985-1997.
► The decline was due to Computer Science curriculum's
The decline was due to Computer Science curriculum's
becoming irrelevant to the workplace.
becoming irrelevant to the workplace.
 There’s an upsurge from 1998-2000.
There’s an upsurge from 1998-2000.
► The Gold Rush and dot-com booms fueled a resurgence
The Gold Rush and dot-com booms fueled a resurgence
interested for incoming freshmen.
interested for incoming freshmen.
Hard Knocks
Hard Knocks
► Should Software Engineering follow the same
Should Software Engineering follow the same
path as other engineering disciplines?
path as other engineering disciplines?
Hard Knocks
Hard Knocks
► Academic development of Software Engineering
Academic development of Software Engineering
 The first Master’s degree in Software Engineering was offered by
The first Master’s degree in Software Engineering was offered by
Seattle University in 1982.
Seattle University in 1982.
 University of Sheffield’s Computer Science department (UK)
University of Sheffield’s Computer Science department (UK)
offered an undergraduate Software Engineering degree in 1988.
offered an undergraduate Software Engineering degree in 1988.
 Rochester Institute of Technology offered the first US
Rochester Institute of Technology offered the first US
undergraduate course in 1996.
undergraduate course in 1996.
 25% of Software Engineering programs are offered in the US.
25% of Software Engineering programs are offered in the US.
 In 2003, ~24 institutions offered an undergraduate Software
In 2003, ~24 institutions offered an undergraduate Software
Engineering degree.
Engineering degree.
 Should Software Engineering focus on software or engineering?
Should Software Engineering focus on software or engineering?
► Accreditation
Accreditation
 The Computer Science accrediting board requires that their
The Computer Science accrediting board requires that their
students make a ”scholarly contribution” to computer science,
students make a ”scholarly contribution” to computer science,
but no industry experience.
but no industry experience.
 ABET requires “non-academic engineering experience.”
ABET requires “non-academic engineering experience.”
Chapter 19:
Chapter 19:
Stinking Badges
Stinking Badges
“
“Badges? We ain’t got no badges. We don’t
Badges? We ain’t got no badges. We don’t
need no badges. I don’t have to show
need no badges. I don’t have to show
you any stinking badges.”
you any stinking badges.”
-Gold Hat Bandito,
-Gold Hat Bandito,
The Treasure of the Sierra Madre
The Treasure of the Sierra Madre
Stinking Badges
Stinking Badges
► Certification
Certification
 A voluntary process culminating in an exam that is
A voluntary process culminating in an exam that is
administered by a professional society.
administered by a professional society.
 Typically, both education and experience are required.
Typically, both education and experience are required.
 There are some certifications that are available.
There are some certifications that are available.
► Institute for Certification of Computing Professionals’ Associate
Institute for Certification of Computing Professionals’ Associate
Computing Professional and Certified Computing Professional
Computing Professional and Certified Computing Professional
► Microsoft’s Microsoft Certified Professional
Microsoft’s Microsoft Certified Professional
► Novel’s Certified Network Engineer
Novel’s Certified Network Engineer
► Oracle’s Oracle Certified Professional
Oracle’s Oracle Certified Professional
► Apple’s Apple Certified Server Engineer
Apple’s Apple Certified Server Engineer
► IEEE’s Certified Software Development Professional.
IEEE’s Certified Software Development Professional.
Stinking Badges
Stinking Badges
► Licensing
Licensing
 A mandatory legal process culminating in an exam that is
A mandatory legal process culminating in an exam that is
administered by a governing agency.
administered by a governing agency.
 Typically, this is required to protect the public (doctors,
Typically, this is required to protect the public (doctors,
architects, lawyers).
architects, lawyers).
► Can Software Engineering be licensed?
Can Software Engineering be licensed?
 ‘
‘There is no generally agreed upon body of knowledge for
There is no generally agreed upon body of knowledge for
software engineering.’
software engineering.’
► SWEBOK
SWEBOK
 ‘
‘Knowledge is software engineering changes so quickly that
Knowledge is software engineering changes so quickly that
exams will be out of date by the time they’re offered.’
exams will be out of date by the time they’re offered.’
► Review the contents of SWEBOK.
Review the contents of SWEBOK.
Stinking Badges
Stinking Badges
► Can Software Engineering be licensed?
Can Software Engineering be licensed?
 ‘
‘No reasonable test for software engineering skill could be put
No reasonable test for software engineering skill could be put
into a multiple-choice format. Indeed, no exam-based practices
into a multiple-choice format. Indeed, no exam-based practices
could adequately ensure competency of software engineers.’
could adequately ensure competency of software engineers.’
► Other complex disciplines already have exams (medicine, law, etc…).
Other complex disciplines already have exams (medicine, law, etc…).
Why is this any different?
Why is this any different?
 ‘
‘The breadth of sub-disciplines involved in software would make
The breadth of sub-disciplines involved in software would make
licensing all of the sub-disciplines impractical.’
licensing all of the sub-disciplines impractical.’
► The medical profession has several exams for different specialties.
The medical profession has several exams for different specialties.
Only software development that will impact the public’s health
Only software development that will impact the public’s health
and/or welfare would need to be explicitly licensed.
and/or welfare would need to be explicitly licensed.
 ‘
‘The fundamentals of Engineering Exam required for licensing
The fundamentals of Engineering Exam required for licensing
existing professional engineers is inappropriate for those
existing professional engineers is inappropriate for those
receiving a computer science degree.’
receiving a computer science degree.’
► Some undergraduate degree programs focus on the engineering
Some undergraduate degree programs focus on the engineering
discipline, but more work would need to be done to adopt this exam.
discipline, but more work would need to be done to adopt this exam.
Stinking Badges
Stinking Badges
► Is licensing a bad idea?
Is licensing a bad idea?
 ‘
‘Licenses would unduly restrict the number of people who could
Licenses would unduly restrict the number of people who could
practice software engineering at a time when demand for
practice software engineering at a time when demand for
software engineers is increasing.’
software engineers is increasing.’
► Not all Software Engineers would be required to have a license.
Not all Software Engineers would be required to have a license.
 ‘
‘When an engineer receives a license, it will be good for life,
When an engineer receives a license, it will be good for life,
which is inappropriate considering that software engineering’s
which is inappropriate considering that software engineering’s
body of knowledge is changing so rapidly.’
body of knowledge is changing so rapidly.’
► Review SWEBOK and note that other licenses help keep
Review SWEBOK and note that other licenses help keep
professionals up-to-date.
professionals up-to-date.
 ‘
‘Licensing can’t guarantee that every individual who’s licensed
Licensing can’t guarantee that every individual who’s licensed
will actually be competent. Licensing will give the public a false
will actually be competent. Licensing will give the public a false
sense of security.’
sense of security.’
► Like other disciplines, only certain Software Engineers would need
Like other disciplines, only certain Software Engineers would need
to be licensed.
to be licensed.
Stinking Badges
Stinking Badges
► More on Licensing
More on Licensing
 Texas currently offers a “bootstrap” Professional Engineering
Texas currently offers a “bootstrap” Professional Engineering
license for Software Engineers.
license for Software Engineers.
 One side-effect of being licensed is that you’re legally
One side-effect of being licensed is that you’re legally
accountable for your work.
accountable for your work.
 Licensed engineers would have the final say on methodology
Licensed engineers would have the final say on methodology
choices.
choices.
 3 paths to general licensing
3 paths to general licensing
► Specialty in engineering that focus on software
Specialty in engineering that focus on software
► Create a software engineering specialty exam
Create a software engineering specialty exam
► Create a Professional Software Engineering credential.
Create a Professional Software Engineering credential.
► Engineering students in Canada receive an iron ring to
Engineering students in Canada receive an iron ring to
symbolize their commitment to society.
symbolize their commitment to society.
Chapter 20:
Chapter 20:
The Professional’s Code
The Professional’s Code
“
“Although there is a little bit of Peter Pan in
Although there is a little bit of Peter Pan in
each of us, maturity brings with it the
each of us, maturity brings with it the
desire to contribute to the communal
desire to contribute to the communal
welfare. The fulfillment of this yearning, I
welfare. The fulfillment of this yearning, I
repeat, provides the engineer with his
repeat, provides the engineer with his
primary existential pleasure.”
primary existential pleasure.”
-Samuel C. Florman
-Samuel C. Florman
The Professional’s Code
The Professional’s Code
► A code of ethics is required for all professions.
A code of ethics is required for all professions.
► Software Engineering Code of Ethics and
Software Engineering Code of Ethics and
Professional Practice (joint venture with ACM/IEEE)
Professional Practice (joint venture with ACM/IEEE)
 http://www.acm.org/serving/se/code.htm
 There are two guiding philosophies…
There are two guiding philosophies…
► “
“Software engineers shall commit themselves to making the
Software engineers shall commit themselves to making the
analysis, specification, design, development, testing and
analysis, specification, design, development, testing and
maintenance of software a beneficial and respected profession.
maintenance of software a beneficial and respected profession.
In accordance with their commitment to the health, safety and
In accordance with their commitment to the health, safety and
welfare of the public, software engineers shall adhere to the
welfare of the public, software engineers shall adhere to the
following Eight Principles: “ (Preamble short-version)
following Eight Principles: “ (Preamble short-version)
The Professional’s Code
The Professional’s Code
► Software Engineering Code of Ethics and
Software Engineering Code of Ethics and
Professional Practice
Professional Practice
 There are eight guiding principles…
There are eight guiding principles…
1.
1. Public: Software engineers shall act consistently with the
Public: Software engineers shall act consistently with the
public interest.
public interest.
2.
2. Client and Employer: Software engineers shall act in a
Client and Employer: Software engineers shall act in a
manner that is in the best interests of their client and
manner that is in the best interests of their client and
employer, consistent with the public interest.
employer, consistent with the public interest.
3.
3. Product: Software engineers shall ensure that their
Product: Software engineers shall ensure that their
products and related modifications meet the highest
products and related modifications meet the highest
professional standards possible.
professional standards possible.
4.
4. Judgment: Software engineers shall maintain integrity and
Judgment: Software engineers shall maintain integrity and
independence in their professional judgment.
independence in their professional judgment.
The Professional’s Code
The Professional’s Code
► Software Engineering Code of Ethics and
Software Engineering Code of Ethics and
Professional Practice
Professional Practice
 There are eight guiding principles…
There are eight guiding principles…
5.
5. Management: Software engineering managers and leaders
Management: Software engineering managers and leaders
shall subscribe to and promote an ethical approach to the
shall subscribe to and promote an ethical approach to the
management of software development and maintenance .
management of software development and maintenance .
6.
6. Profession: Software engineers shall advance the integrity and
Profession: Software engineers shall advance the integrity and
reputation of the profession consistent with the public interest.
reputation of the profession consistent with the public interest.
7.
7. Colleagues: Software engineers shall be fair to and supportive
Colleagues: Software engineers shall be fair to and supportive
of their colleagues.
of their colleagues.
8.
8. Self: Software engineers shall participate in lifelong learning
Self: Software engineers shall participate in lifelong learning
regarding the practice of their profession and shall promote an
regarding the practice of their profession and shall promote an
ethical approach to the practice of the profession.
ethical approach to the practice of the profession.
The Professional’s Code
The Professional’s Code
► Why is the Code needed?
Why is the Code needed?
 All professions are required to have a Code.
All professions are required to have a Code.
 Death-march projects
Death-march projects
► Developers debate unachievable schedules.
Developers debate unachievable schedules.
 Low-ball bidding
Low-ball bidding
► Developers should provide realistic estimates.
Developers should provide realistic estimates.
 Code-and-fix development
Code-and-fix development
► Inconsistent with developing quality code.
Inconsistent with developing quality code.
 Knowledge stagnation
Knowledge stagnation
► Developers cannot perform professionally without keeping
Developers cannot perform professionally without keeping
up-to-date on professional issues.
up-to-date on professional issues.
Chapter 22:
Chapter 22:
Alchemy
Alchemy
“
“Q: What are the most exciting/promising software
Q: What are the most exciting/promising software
engineering ideas or techniques on the horizon?
engineering ideas or techniques on the horizon?
A: I don’t think that the most promising ideas are
A: I don’t think that the most promising ideas are
on the horizen. They are already here and have
on the horizen. They are already here and have
been here for years but are not being used
been here for years but are not being used
properly.”
properly.”
-David L. Parnas
-David L. Parnas
Alchemy
Alchemy
Best Practices
Best Practices Year Described
Year Described
Automated estimation tools
Automated estimation tools 1973
1973
Evolutionary delivery
Evolutionary delivery 1988
1988
Measurement
Measurement 1977
1977
Productivity environments
Productivity environments 1984
1984
Risk management planing
Risk management planing 1981
1981
Change board
Change board 1978
1978
Throwaway user interface prototyping
Throwaway user interface prototyping 1975
1975
JAD sessions
JAD sessions 1985
1985
Information hiding
Information hiding 1972
1972
Design for change
Design for change 1979
1979
Source code control
Source code control 1980
1980
Incremental integration
Incremental integration 1979
1979
Branch-coverage testing
Branch-coverage testing 1979
1979
Inspections
Inspections 1976
1976
SEI’s CMM
SEI’s CMM 1987
1987
Software Engineering Process Groups
Software Engineering Process Groups 1989
1989
Alchemy
Alchemy
► If so many of the best-practices have been in existing
If so many of the best-practices have been in existing
for 15+ years, why haven’t they been implemented on
for 15+ years, why haven’t they been implemented on
a wide-spread scale?
a wide-spread scale?
 Many organizations fear changing what’s worked previously.
Many organizations fear changing what’s worked previously.
 Not all best-practices work in practice.
Not all best-practices work in practice.
 Many companies fear the risk involved in changing.
Many companies fear the risk involved in changing.
Alchemy
Alchemy
► How can we diffuse information?
How can we diffuse information?
 The Agricultural Extension
The Agricultural Extension
► Research Subsystem
Research Subsystem
 Research professors producing innovative results that are
Research professors producing innovative results that are
later diffused to the group.
later diffused to the group.
► State Extension Agents
State Extension Agents
 Connect the Research Subsystem to the County agents.
Connect the Research Subsystem to the County agents.
► County Extension Agents
County Extension Agents
 Persons who help local farmers choose what innovations that
Persons who help local farmers choose what innovations that
should use.
should use.
► SEI acts as software’s Research Subsystem
SEI acts as software’s Research Subsystem
 NASA’s SEL producing guidebooks ad training
NASA’s SEL producing guidebooks ad training
courses.
courses.
Industry Professionalism
Industry Professionalism
► Engineering a Profession
Engineering a Profession
 What is a profession?
What is a profession?
 Is Software Engineering a profession?
Is Software Engineering a profession?
► Hard Knocks
Hard Knocks
 History of Software Engineering
History of Software Engineering
► Stinking Badges
Stinking Badges
 Certification vs. Licensing
Certification vs. Licensing
► The Professional’s Code
The Professional’s Code
 Software Engineering Code of Ethics and Professional Practice
Software Engineering Code of Ethics and Professional Practice
► Alchemy
Alchemy
 Best-practices
Best-practices
 Diffusing information
Diffusing information
Overview
Overview
The Software Tarpit
The Software Tarpit
Wrestling with Dinosaurs
Wrestling with Dinosaurs
Fool’s Gold
Fool’s Gold
Cargo Cult Software
Cargo Cult Software
Engineering
Engineering
Body of Knowledge
Body of Knowledge
Novum Organum
Novum Organum
Individual Professionalism
Individual Professionalism
Orphans Preferred
Orphans Preferred
Raising Your Software
Raising Your Software
Consciousness
Consciousness
Building the Community
Building the Community
Programmer Writing
Programmer Writing
Organizational Professionalism
Organizational Professionalism
Software Gold Rushes
Software Gold Rushes
Business Case for Better Software
Business Case for Better Software
Practices
Practices
Ptolemaic Reasoning
Ptolemaic Reasoning
Quantifying Personnel Factors
Quantifying Personnel Factors
Construx’s Professional
Construx’s Professional
Development Program
Development Program
Industry Professionalism
Industry Professionalism
Engineering a Profession
Engineering a Profession
Hard Knocks
Hard Knocks
Stinking Badges
Stinking Badges
The Professional’s Code
The Professional’s Code
Alchemy
Alchemy

More Related Content

PDF
Modern Software Engineering Doing What Works To Build Better Software Faster ...
PDF
A question of craftsmanship
PDF
A Question of Craftsmanship
PPT
Bits of Evidence
PDF
Making software
PPT
Agile software development
PPTX
why agile?
Modern Software Engineering Doing What Works To Build Better Software Faster ...
A question of craftsmanship
A Question of Craftsmanship
Bits of Evidence
Making software
Agile software development
why agile?

Similar to Professional Software Development for t.ppt (20)

PPTX
Web Operations
PDF
Chasing Elephants - Alberto Brandolini - Codemotion Rome 2017
PDF
Chasing elephants
PDF
On Becoming a Technical Lead
PDF
Going All XP On Your Business
PDF
Going All XP On Your Business
PPTX
QA is Broken, Fix it!
PPTX
AgileNCR 2019 _ The Soft Side of Software Development.pptx
PDF
Velocity. Agility. Python. (Pycon APAC 2017)
PDF
Big guns for small guys (reloaded)
PPTX
How to think smarter about software development
PPT
Agile Software Development.ppt
KEY
Software and all that comes with it
PDF
Why Is Managing Software So Hard?
PDF
Improving software economics - Top 10 principles of achieving agility at scale
PDF
How Did We End up Here?
PPTX
Lecture 01
PPTX
A Software Engineer
PDF
Software development is hard
PPTX
Is Software Engineering A Profession?
Web Operations
Chasing Elephants - Alberto Brandolini - Codemotion Rome 2017
Chasing elephants
On Becoming a Technical Lead
Going All XP On Your Business
Going All XP On Your Business
QA is Broken, Fix it!
AgileNCR 2019 _ The Soft Side of Software Development.pptx
Velocity. Agility. Python. (Pycon APAC 2017)
Big guns for small guys (reloaded)
How to think smarter about software development
Agile Software Development.ppt
Software and all that comes with it
Why Is Managing Software So Hard?
Improving software economics - Top 10 principles of achieving agility at scale
How Did We End up Here?
Lecture 01
A Software Engineer
Software development is hard
Is Software Engineering A Profession?
Ad

More from AssadLeo1 (20)

PPT
Chagal chagal with khatch khatch model with detail
PPT
E commerce busin and some important issues
PPTX
What is SEO in pakistan with main components
PPT
business model and some other things that
PPTX
Software Evolution all in Mehmoona.pptx
PPTX
Behavioral Model with Maniha Butt and many More
PPTX
Software Quality Assurance Qurat ul ain.pptx
PPTX
UML Samra Bs it 4th all about aspire college
PPTX
Process Structure and some other important
PPT
Process importance with full detail about
PPTX
IPM Chapter 1 Complete detail and chapeter
PPTX
Hardware Firewall with all the detail of
PPTX
Law and Order in PK in a country is most important
PPTX
Types of Multipule things and other things
PPTX
Model_of_Heterogeneous_System and other things
PPTX
what a knowledge and other things in this slide
PPTX
full with knowledge and other things with
PPT
that is the most important part of this topic
PPT
Discrete and other examples with great intrest
PPTX
Decoding Insights and some extra examples
Chagal chagal with khatch khatch model with detail
E commerce busin and some important issues
What is SEO in pakistan with main components
business model and some other things that
Software Evolution all in Mehmoona.pptx
Behavioral Model with Maniha Butt and many More
Software Quality Assurance Qurat ul ain.pptx
UML Samra Bs it 4th all about aspire college
Process Structure and some other important
Process importance with full detail about
IPM Chapter 1 Complete detail and chapeter
Hardware Firewall with all the detail of
Law and Order in PK in a country is most important
Types of Multipule things and other things
Model_of_Heterogeneous_System and other things
what a knowledge and other things in this slide
full with knowledge and other things with
that is the most important part of this topic
Discrete and other examples with great intrest
Decoding Insights and some extra examples
Ad

Recently uploaded (20)

PDF
102 student loan defaulters named and shamed – Is someone you know on the list?
PDF
Microbial disease of the cardiovascular and lymphatic systems
PPTX
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
PPTX
Final Presentation General Medicine 03-08-2024.pptx
PDF
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
PPTX
Cell Types and Its function , kingdom of life
PDF
01-Introduction-to-Information-Management.pdf
PPTX
Presentation on HIE in infants and its manifestations
PDF
FourierSeries-QuestionsWithAnswers(Part-A).pdf
PDF
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
PPTX
Institutional Correction lecture only . . .
PPTX
Microbial diseases, their pathogenesis and prophylaxis
PDF
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
PDF
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
PDF
VCE English Exam - Section C Student Revision Booklet
PDF
STATICS OF THE RIGID BODIES Hibbelers.pdf
PDF
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
PDF
Classroom Observation Tools for Teachers
PPTX
Tissue processing ( HISTOPATHOLOGICAL TECHNIQUE
PPTX
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx
102 student loan defaulters named and shamed – Is someone you know on the list?
Microbial disease of the cardiovascular and lymphatic systems
1st Inaugural Professorial Lecture held on 19th February 2020 (Governance and...
Final Presentation General Medicine 03-08-2024.pptx
OBE - B.A.(HON'S) IN INTERIOR ARCHITECTURE -Ar.MOHIUDDIN.pdf
Cell Types and Its function , kingdom of life
01-Introduction-to-Information-Management.pdf
Presentation on HIE in infants and its manifestations
FourierSeries-QuestionsWithAnswers(Part-A).pdf
Chapter 2 Heredity, Prenatal Development, and Birth.pdf
Institutional Correction lecture only . . .
Microbial diseases, their pathogenesis and prophylaxis
3rd Neelam Sanjeevareddy Memorial Lecture.pdf
Saundersa Comprehensive Review for the NCLEX-RN Examination.pdf
VCE English Exam - Section C Student Revision Booklet
STATICS OF THE RIGID BODIES Hibbelers.pdf
The Lost Whites of Pakistan by Jahanzaib Mughal.pdf
Classroom Observation Tools for Teachers
Tissue processing ( HISTOPATHOLOGICAL TECHNIQUE
Introduction-to-Literarature-and-Literary-Studies-week-Prelim-coverage.pptx

Professional Software Development for t.ppt

  • 1. Professional Software Professional Software Development Development Shorter Schedules, Higher Quality Shorter Schedules, Higher Quality Products, More Successful Products, More Successful Projects, Enhanced Careers Projects, Enhanced Careers by Steve McConnell by Steve McConnell Matt Sawka Matt Sawka
  • 2. Purpose Purpose ► What is software engineering? What is software engineering? ► How does software engineering relate to computer science? How does software engineering relate to computer science? ► Why isn’t regular computer programming good enough? Why isn’t regular computer programming good enough? ► Why do we need a profession of software engineering? Why do we need a profession of software engineering? ► Why is engineering the best model for a software development Why is engineering the best model for a software development profession? profession? ► In what ways do effective practices vary from project to project (or In what ways do effective practices vary from project to project (or company to company), and in what ways are they usually the company to company), and in what ways are they usually the same? same? ► What can organizations do to support a professional approach to What can organizations do to support a professional approach to software development? software development? ► What can individual software developers do to become full-fledged What can individual software developers do to become full-fledged professionals? professionals? ► What can the software industry as a whole do to create a true What can the software industry as a whole do to create a true profession of software engineering? profession of software engineering?
  • 3. Organization Organization The Software Tarpit The Software Tarpit Wrestling with Dinosaurs Wrestling with Dinosaurs Fool’s Gold Fool’s Gold Cargo Cult Software Cargo Cult Software Engineering Engineering Body of Knowledge Body of Knowledge Novum Organum Novum Organum Individual Professionalism Individual Professionalism Orphans Preferred Orphans Preferred Raising Your Software Raising Your Software Consciousness Consciousness Building the Community Building the Community Programmer Writing Programmer Writing Organizational Professionalism Organizational Professionalism Software Gold Rushes Software Gold Rushes Business Case for Better Software Business Case for Better Software Practices Practices Ptolemaic Reasoning Ptolemaic Reasoning Quantifying Personnel Factors Quantifying Personnel Factors Construx’s Professional Construx’s Professional Development Program Development Program Industry Professionalism Industry Professionalism Engineering a Profession Engineering a Profession Hard Knocks Hard Knocks Stinking Badges Stinking Badges The Professional’s Code The Professional’s Code Alchemy Alchemy
  • 4. Part One Part One The Software Tar Pit The Software Tar Pit
  • 5. Chapter 1: Chapter 1: Wrestling with Dinosaurs Wrestling with Dinosaurs “ “He that will not apply new remedies He that will not apply new remedies must expect new evils, must expect new evils, for time is the greatest innovator.” for time is the greatest innovator.” – –Francis Bacon Francis Bacon
  • 6. Wrestling with Dinosaurs Wrestling with Dinosaurs ► “ “No scene from prehistory is quite so vivid as that of the moral No scene from prehistory is quite so vivid as that of the moral struggles of great beasts in the tar pits. In the mind’s eye one sees struggles of great beasts in the tar pits. In the mind’s eye one sees dinosaurs, mammoths, and sabertoothed tigers struggling against dinosaurs, mammoths, and sabertoothed tigers struggling against the grip of the tar. The fiercer the struggle, the more entangling the the grip of the tar. The fiercer the struggle, the more entangling the tar, and no beast is so strong and so skillfully but that he ultimately tar, and no beast is so strong and so skillfully but that he ultimately sinks. sinks. Large-system programming has over the past decade been such a Large-system programming has over the past decade been such a tar pit, and many great and powerful beasts have thrashed violently tar pit, and many great and powerful beasts have thrashed violently in it Most have emerged with running systems – few have met in it Most have emerged with running systems – few have met goals, schedules, and budgets Large and small, massive or wiry, goals, schedules, and budgets Large and small, massive or wiry, team after team has become entangled in the tar No one thing team after team has become entangled in the tar No one thing seems to cause the difficulty – any particular paw can be pulled seems to cause the difficulty – any particular paw can be pulled away. But the accumulation of simultaneous and interacting factors away. But the accumulation of simultaneous and interacting factors brings slower and slower motion. Everyone seems to have been brings slower and slower motion. Everyone seems to have been surprised by the stickiness of the problem, and it is hard to discern surprised by the stickiness of the problem, and it is hard to discern the nature of it But we must try to understand it if we are to solve it. the nature of it But we must try to understand it if we are to solve it. - -The Mythical Man-Month The Mythical Man-Month (p. 3), Fred Brooks. 1975 (p. 3), Fred Brooks. 1975
  • 7. Wrestling with Dinosaurs Wrestling with Dinosaurs ► Has anything changed? Has anything changed?  ~75% of all medium-sized projects and 90% of or more of large ~75% of all medium-sized projects and 90% of or more of large projects are subject to excessive schedule pressure. projects are subject to excessive schedule pressure.  Overtime is the standard. Overtime is the standard. ► “ “In many companies, programmers faced with deadlines have In many companies, programmers faced with deadlines have been known to spend nights in the offices.” – been known to spend nights in the offices.” – Fortune Fortune, 1967 , 1967  Windows NT was projected to take 1500 staff-years to Windows NT was projected to take 1500 staff-years to complete. complete. ► OS/360 took more than 3 times this amount in 1966. OS/360 took more than 3 times this amount in 1966.  The advent of web-development poses the question is The advent of web-development poses the question is delivering software quickly better than delivering quality delivering software quickly better than delivering quality software? McConnell argues that this is not a new phenomena. software? McConnell argues that this is not a new phenomena.
  • 8. Chapter 2: Chapter 2: Fool’s Gold Fool’s Gold “ “Hope is a good breakfast, Hope is a good breakfast, but it is a bad supper.” but it is a bad supper.” – –Francis Bacon Francis Bacon
  • 9. Fool’s Gold Fool’s Gold ► During the California Gold Rush of the late During the California Gold Rush of the late 1800s, many were deceived by fool’s gold – iron 1800s, many were deceived by fool’s gold – iron pyrite, which has the same appearance as Gold. pyrite, which has the same appearance as Gold. ► The last fifty years in software development has The last fifty years in software development has produced similar results. Software Engineers produced similar results. Software Engineers seeking solid processes and standards have seeking solid processes and standards have mostly found fool’s gold, software practices that mostly found fool’s gold, software practices that appear useless on first glance, but are actually appear useless on first glance, but are actually flaky, brittle, and virtually valueless. flaky, brittle, and virtually valueless.
  • 10. Fool’s Gold Fool’s Gold ► Problem: Looking back further in history, how Problem: Looking back further in history, how could we build one of the ancient pyramids could we build one of the ancient pyramids from ancient Egypt? from ancient Egypt?  The stone blocks need to be moved 10,000 meters The stone blocks need to be moved 10,000 meters from the river to their final resting place. from the river to their final resting place.  You have 100 days to move the blocks. You have 100 days to move the blocks.  You have 20 people to move the blocks. You have 20 people to move the blocks.  You are allowed to use any method you’d like. You are allowed to use any method you’d like. ► On average, you must move the blocks 100 On average, you must move the blocks 100 meters a day (or have a method that will speed meters a day (or have a method that will speed up the process later on). up the process later on). ► How would you accomplish this? How would you accomplish this?
  • 11. Fool’s Gold Fool’s Gold ► Option 1: Option 1:  Immediately start pushing the blocks with brute Immediately start pushing the blocks with brute force. force.  Result: You move the block 10 meters a day and fall Result: You move the block 10 meters a day and fall 90 meters/day behind. 90 meters/day behind.
  • 12. Fool’s Gold Fool’s Gold ► Option 2: Option 2:  Analyze the problem. You decide to cut down several trees and Analyze the problem. You decide to cut down several trees and use them as rollers to move the block. Create a smooth, level use them as rollers to move the block. Create a smooth, level roadway to push forward. roadway to push forward.  Result: Although there is an initial investment to find the trees, Result: Although there is an initial investment to find the trees, it still will pay off. it still will pay off.
  • 13. Fool’s Gold Fool’s Gold ► Option 3: Option 3:  Implement option 2, but balance the pushers with pullers and Implement option 2, but balance the pushers with pullers and add log-movers, so that a group is always moving extra logs in add log-movers, so that a group is always moving extra logs in front of the block. front of the block.  Result: An improvement on option 2, the block will be Result: An improvement on option 2, the block will be continuously moving. continuously moving.
  • 14. Fool’s Gold Fool’s Gold ► How does software development relate to How does software development relate to ancient Egyptian pyramids? ancient Egyptian pyramids?  Change the pyramid block to a software Change the pyramid block to a software development project. development project. ► You have 100 days to complete a project. This means you You have 100 days to complete a project. This means you either have to complete 1/100 of the source code each day either have to complete 1/100 of the source code each day or you need to schedule some parts taking less time than or you need to schedule some parts taking less time than others. others.  Avoid “last-minute” syndrome (Option 1) Avoid “last-minute” syndrome (Option 1) ► The development team has little concern near the The development team has little concern near the beginning of the project, but has a frenzied push at the end beginning of the project, but has a frenzied push at the end of the development cycle. of the development cycle.
  • 15. Fool’s Gold Fool’s Gold ► How does software development relate to ancient How does software development relate to ancient Egyptian pyramids? Egyptian pyramids?  Also avoid “code-and-fix” development (Option 2) Also avoid “code-and-fix” development (Option 2) ► Put a brute force of programmers on the project without properly Put a brute force of programmers on the project without properly planning or design of the software. The project team will show planning or design of the software. The project team will show initial progress but will be unable to finish strong. Most effort will initial progress but will be unable to finish strong. Most effort will go into defects. go into defects.
  • 16. Fool’s Gold Fool’s Gold ► The Silver Bullet Syndrome The Silver Bullet Syndrome  An elephant could be capture to pull block. However, after it An elephant could be capture to pull block. However, after it is captured, it tramples 2 workers and runs off. The is captured, it tramples 2 workers and runs off. The managers then think they should’ve spent time learning to managers then think they should’ve spent time learning to handle the elephant. handle the elephant.
  • 17. Fool’s Gold Fool’s Gold ► As project planning matures, the amount of effort As project planning matures, the amount of effort spent on later stages should be manageable. spent on later stages should be manageable. ► Despite the downfalls, “code-and-fix” is still heavily Despite the downfalls, “code-and-fix” is still heavily used today for two reasons: used today for two reasons:  It provides initial signs of progress It provides initial signs of progress  It requires no training It requires no training
  • 18. Fool’s Gold Fool’s Gold ► Focusing on Quality Focusing on Quality  If an organization can remove ~95% of their If an organization can remove ~95% of their defects before a release, they can minimize the defects before a release, they can minimize the amount of effort spent on correcting them later. amount of effort spent on correcting them later.
  • 19. Fool’s Gold Fool’s Gold ►Software isn’t “soft”. Software isn’t “soft”. ► Let’s suppose you are designing a system to Let’s suppose you are designing a system to print a set of 5 reports, and eventually 10 print a set of 5 reports, and eventually 10 reports. reports.  How the reports can be “soft”: How the reports can be “soft”: ► Is ten an upper limit on thee number of reports? Is ten an upper limit on thee number of reports? ► Will the future reports be similar to the initial five reports? Will the future reports be similar to the initial five reports? ► Will all of the reports always be printed? Will all of the reports always be printed? ► Will they always be printed in the same order? Will they always be printed in the same order? ► To what extent will the user be able to customize the reports? To what extent will the user be able to customize the reports? ► Will users be allowed to define their own reports? Will users be allowed to define their own reports? ► Will the reports be customizable and definable on the fly? Will the reports be customizable and definable on the fly? ► Will the repots be translate to other languages? Will the repots be translate to other languages?
  • 20. Fool’s Gold Fool’s Gold  How the reports can be “hard”: How the reports can be “hard”: ► Defining more than 10 reports. Defining more than 10 reports. ► Defining a new report that is different form the initial set of Defining a new report that is different form the initial set of reports. reports. ► Printing a subset of the reports. Printing a subset of the reports. ► Printing the reports in a user-defined order. Printing the reports in a user-defined order. ► Allowing the user to customize reports. Allowing the user to customize reports. ► Translating the repots to another language that users the Latin Translating the repots to another language that users the Latin alphabet. alphabet. ► Translating the reports to a another language that uses a non- Translating the reports to a another language that uses a non- Latin alphabet or reads right-to-left. Latin alphabet or reads right-to-left. ► Bottom Line: Flexibility costs money. Limiting Bottom Line: Flexibility costs money. Limiting flexibility can save money in the short term, but can flexibility can save money in the short term, but can incur higher costs later on the development life-cycle. incur higher costs later on the development life-cycle.
  • 21. Chapter 3: Chapter 3: Cargo Cult Software Engineering Cargo Cult Software Engineering “ “In the South seas there is a cargo cult of people. During the war they In the South seas there is a cargo cult of people. During the war they saw airplanes with lots of good materials, and they want the same saw airplanes with lots of good materials, and they want the same thing to happen now. So they’ve arranged to make things like thing to happen now. So they’ve arranged to make things like runaways, to put fires along the sides of runways to make a runaways, to put fires along the sides of runways to make a wooden hut for a man to sit in, with two wooden pieces on his wooden hut for a man to sit in, with two wooden pieces on his head for headphones and bars of bamboo sticking out like head for headphones and bars of bamboo sticking out like antennas – he’s the controller – and they wait for the airplanes to antennas – he’s the controller – and they wait for the airplanes to land They’re doing everything right. The form is perfect. It looks land They’re doing everything right. The form is perfect. It looks exactly the way it looked before. But it doesn’t work. No airplanes exactly the way it looked before. But it doesn’t work. No airplanes land. So I call these things cargo cult science, because they follow land. So I call these things cargo cult science, because they follow all the apparent precepts and forms of scientific investigation, but all the apparent precepts and forms of scientific investigation, but they’re missing something essential, because the planes don’t they’re missing something essential, because the planes don’t land.” land.” – –Richard Feynman Richard Feynman
  • 22. Cargo Cult Software Cargo Cult Software Engineering Engineering ► Process-oriented vs. Commitment-oriented Process-oriented vs. Commitment-oriented Development styles Development styles  Process-oriented Process-oriented ► Relies on a carefully defined process, planning, Relies on a carefully defined process, planning, scheduling, and directly application of Software scheduling, and directly application of Software Engineering best-practices. Engineering best-practices. ► This succeeds because the organization is constantly This succeeds because the organization is constantly improving on their best practices. improving on their best practices.  Commitment-oriented Commitment-oriented ► Also known as “hero-oriented” or “individual Also known as “hero-oriented” or “individual empowerment”, this style relies on hiring the best people empowerment”, this style relies on hiring the best people and asking them for total commitment to a project. They and asking them for total commitment to a project. They work with completely autonomy something work 60-100 work with completely autonomy something work 60-100 hours a week until a project is completed. hours a week until a project is completed. ► This style succeeds because it utilizes individual This style succeeds because it utilizes individual motivation. motivation.
  • 23. Cargo Cult Software Cargo Cult Software Engineering Engineering ► Imposters: Imposters:  Process-oriented imposter (Bureaucratic) Process-oriented imposter (Bureaucratic) ► Observes successful companies using best-practices (such Observes successful companies using best-practices (such as NASA’s Software Engineering Laboratory), see that they as NASA’s Software Engineering Laboratory), see that they have many meetings and documents and emulate the have many meetings and documents and emulate the deliverables only. deliverables only.  Commitment-oriented imposter Commitment-oriented imposter ► Observe successful companies like Microsoft, and Observe successful companies like Microsoft, and emphasize the long hours and large compensation emphasize the long hours and large compensation packages, not the fact that the employees of Microsoft packages, not the fact that the employees of Microsoft love to create software. love to create software. ► Cargo-cult engineering is simply using a Cargo-cult engineering is simply using a development style “just because” or “because development style “just because” or “because the company requires it”, rather than using the company requires it”, rather than using the style advantageously. the style advantageously.
  • 24. Chapter 4: Chapter 4: Software Engineering, Not Software Engineering, Not Computer Science Computer Science “ “A scientist builds in order to learn; an A scientist builds in order to learn; an engineer learns in order to build.” engineer learns in order to build.” – –Fred Brooks Fred Brooks
  • 25. SE not CS SE not CS ► Like other engineering disciplines, Software Like other engineering disciplines, Software Engineering can be tailored for several objectives: Engineering can be tailored for several objectives:  Minimal defects Minimal defects  Maximum user satisfaction Maximum user satisfaction  Minimal response time Minimal response time  Good maintainability Good maintainability  Good extendibility Good extendibility  High robustness High robustness  High correctness. High correctness. ► Unlike other disciplines in which risk relies on the Unlike other disciplines in which risk relies on the physical materials, Software Engineering carries risk physical materials, Software Engineering carries risk in optimizing the project goals. in optimizing the project goals.  Short schedule Short schedule  Predictable delivery date Predictable delivery date  Low cost Low cost  Small team size Small team size  Flexibility to make mid-project feature-set changes. Flexibility to make mid-project feature-set changes.
  • 26. SE not CS SE not CS ► What is the best way to think of software What is the best way to think of software development? Is it a science? Art? Craft? development? Is it a science? Art? Craft? Something else? Something else?  ~40% of developers today have degrees in ~40% of developers today have degrees in Computer Science. Computer Science.  Scientists learn what is true, how to test Scientists learn what is true, how to test hypotheses, and how to extend their knowledge. hypotheses, and how to extend their knowledge.  Engineers learn what is true, useful, and how to Engineers learn what is true, useful, and how to apply their knowledge to solve a problem. apply their knowledge to solve a problem. ► Is Software Engineering just a buzzword? Is Software Engineering just a buzzword?  Some object to Software development being Some object to Software development being classified as engineering because the commercial classified as engineering because the commercial market doesn’t allow for the careful, time- market doesn’t allow for the careful, time- consuming engineering process to be completed. consuming engineering process to be completed.
  • 27. Chapter 5: Chapter 5: Body of Knowledge Body of Knowledge “ “Truth will sooner come out of error than Truth will sooner come out of error than from confusion.” from confusion.” – –Francis Bacon Francis Bacon
  • 28. Body of Knowledge Body of Knowledge ► To be an expert in a field, a person needs to To be an expert in a field, a person needs to know around 50,000 pieces of information. know around 50,000 pieces of information. ► But with software engineering evolving, how But with software engineering evolving, how can anyone know enough to be considered an can anyone know enough to be considered an expert? expert? ► Essence vs. Accident Essence vs. Accident  No Silver Bullet – Essence and Accidents of Software No Silver Bullet – Essence and Accidents of Software Engineering Engineering – Fred Brooks, 1987. – Fred Brooks, 1987.  Essence – properties that something must have. Essence – properties that something must have. ► Wheels on a car Wheels on a car ► Software engineering: Specification, Design, and Software engineering: Specification, Design, and Verification. Verification.  Accident – optional properties. Accident – optional properties. ► Air-Conditioning Air-Conditioning ► Software Engineering: Coding and testing. Software Engineering: Coding and testing.
  • 29. Body of Knowledge Body of Knowledge ► Computer programs are complex. Computer programs are complex.  At the center, the goal is to define underlying real- At the center, the goal is to define underlying real- world concepts and debugging that world concepts and debugging that understanding. understanding. ► Software must be flexible and have the ability Software must be flexible and have the ability to change. to change.  If a program is successful, more people will use it If a program is successful, more people will use it and it will be adapted to be used outside of its and it will be adapted to be used outside of its original scope. original scope. ► Software is “invisible.” Software is “invisible.”  It’s not possible to create a 2-d or 3-d geometric It’s not possible to create a 2-d or 3-d geometric model of the system. model of the system.
  • 30. Body of Knowledge Body of Knowledge ► In 1968, NATO held In 1968, NATO held its first conference on its first conference on Software Engineering. Software Engineering. ► McConnell estimates McConnell estimates that in 1968, the that in 1968, the average half-life of average half-life of knowledge was about knowledge was about 10 years, with only 10 years, with only about 20% of that about 20% of that knowledge at the knowledge at the Stable Core. Stable Core.
  • 31. Body of Knowledge Body of Knowledge ►By 2003, By 2003, McConnell McConnell estimates that the estimates that the average half-life of average half-life of knowledge was knowledge was about 30 years, about 30 years, with about 50% of with about 50% of that knowledge at that knowledge at the Stable Core. the Stable Core.
  • 32. Body of Knowledge Body of Knowledge ►How can we categorize the Software How can we categorize the Software Engineering “body of knowledge” Engineering “body of knowledge” (SWEBOK)? (SWEBOK)?
  • 33. Body of Knowledge Body of Knowledge ►What sources contribute to the SWEBOK? What sources contribute to the SWEBOK?
  • 34. Body of Knowledge Body of Knowledge ► What information is contained within SWEBOK? What information is contained within SWEBOK? ► SWEBOK Knowledge Areas SWEBOK Knowledge Areas  Software Requirements Software Requirements ► The discovery, documentation, and analysis of the functions The discovery, documentation, and analysis of the functions to be implemented in software. to be implemented in software.  Software Design Software Design ► Definition of the basic structure of the system at the Definition of the basic structure of the system at the architectural and detailed levels, division into modules, architectural and detailed levels, division into modules, definition of interfaces for modules, and choice of definition of interfaces for modules, and choice of algorithms within modules. algorithms within modules.  Software Construction Software Construction ► Implementation of the software including detailed design, Implementation of the software including detailed design, coding, debugging, unit testing, technical reviews, and coding, debugging, unit testing, technical reviews, and performance optimization. This area overlaps somewhat performance optimization. This area overlaps somewhat with Software Design and Software Testing. with Software Design and Software Testing.
  • 35. Body of Knowledge Body of Knowledge ► SWEBOK Knowledge Areas SWEBOK Knowledge Areas  Software Testing Software Testing ► All activities associated with executing software to detect All activities associated with executing software to detect defects and evaluate features. This includes planning, defects and evaluate features. This includes planning, test-case design as well as the tests themselves: test-case design as well as the tests themselves: development, unit, component, integration, system, development, unit, component, integration, system, regression, stress, and acceptance. regression, stress, and acceptance.  Software Maintenance Software Maintenance ► Revision and enhancement of existing software, related Revision and enhancement of existing software, related documentation, and tests. documentation, and tests.  Software Configuration Management Software Configuration Management ► Identification, documentation, change control of all Identification, documentation, change control of all deliverables generated on a project (source code, content, deliverables generated on a project (source code, content, requirements, etc…). requirements, etc…).  Software Quality Software Quality ► All activities associated with providing confidence that a All activities associated with providing confidence that a software item conforms or will conform to technical software item conforms or will conform to technical requirements. requirements.
  • 36. Body of Knowledge Body of Knowledge ►SWEBOK Knowledge Areas SWEBOK Knowledge Areas  Software Engineering Management Plan Software Engineering Management Plan ►Planning, tracking and controlling of software Planning, tracking and controlling of software projects, work, and organizations. projects, work, and organizations.  Software Engineering Tools and Methods Software Engineering Tools and Methods ►Tolls and methodologies support (CASE tools, Tolls and methodologies support (CASE tools, reusable libraries, formal methods and practices, reusable libraries, formal methods and practices, etc…). etc…).  Software Engineering Process Software Engineering Process ►Activities related to improving development Activities related to improving development quality, timeliness, productivity, and other quality, timeliness, productivity, and other characteristics. characteristics.  http://www.swebok.org/ http://www.swebok.org/
  • 37. Chapter 6: Chapter 6: Novum Organum Novum Organum “ “A prudent question is one-half of wisdom.” A prudent question is one-half of wisdom.” – –Francis Bacon Francis Bacon
  • 38. Novum Organum Novum Organum ► In the 1620s, Francis Bacon In the 1620s, Francis Bacon published Instauratio Magna published Instauratio Magna which attempted to redefine which attempted to redefine scientific inquiry. Within this scientific inquiry. Within this work is an essay, work is an essay, Novum Novum Organum Organum which challenges his which challenges his colleagues to focus on scientific colleagues to focus on scientific methodologies rather than methodologies rather than deductive reasoning when deductive reasoning when studying the world. His view of studying the world. His view of the scientific method had three the scientific method had three steps: steps:  Purge your mind of prejudices Purge your mind of prejudices (superstition) (superstition)  Collect observations and Collect observations and experiences systematically. experiences systematically.  Stop, survey what you’ve seen, and Stop, survey what you’ve seen, and draw an initial conclusion. draw an initial conclusion.
  • 39. Novum Organum Novum Organum ► What does it mean to have a Software What does it mean to have a Software Engineering “profession”? Engineering “profession”?  According to the Code of Federal Regulations, a According to the Code of Federal Regulations, a profession has: profession has: ► A requirement for extensive learning and training A requirement for extensive learning and training ► A code of ethics imposing standards higher than those A code of ethics imposing standards higher than those normally tolerated in the marketplace. normally tolerated in the marketplace. ► A disciplinary system for professionals who breach the code A disciplinary system for professionals who breach the code ► A primary emphasis on social responsibility over strictly A primary emphasis on social responsibility over strictly individual gain, and a corresponding duty of its members to individual gain, and a corresponding duty of its members to behave as members f a disciplined and honorable behave as members f a disciplined and honorable profession. profession. ► A prerequisite of a license priori to admission to practice. A prerequisite of a license priori to admission to practice.
  • 40. Novum Organum Novum Organum ► Is Software Is Software Engineering a Engineering a profession? profession?  The Software The Software Engineering Institute Engineering Institute (SEI) has identified 8 (SEI) has identified 8 elements of a mature elements of a mature profession. profession.
  • 41. Novum Organum Novum Organum ► Elements to a mature profession: Elements to a mature profession:  Initial Professional Education Initial Professional Education ► Completing a university program in their field. Completing a university program in their field.  Accreditation Accreditation ► The university program is accredited by an oversight body that The university program is accredited by an oversight body that determines if the program provides adequate education. determines if the program provides adequate education. Accreditation Board for Engineering and Technology (ABET) Accreditation Board for Engineering and Technology (ABET) oversees American engineering programs. oversees American engineering programs.  Skills Development Skills Development ► Education is not enough to develop full professional Education is not enough to develop full professional capabilities, some type of further experience is needed to capabilities, some type of further experience is needed to perform the job individually with a satisfactory level of perform the job individually with a satisfactory level of competence. competence.
  • 42. Novum Organum Novum Organum ► Elements to a mature profession: Elements to a mature profession:  Certification Certification ► A professional is requirements to pass one or more exams A professional is requirements to pass one or more exams that ensures they have a minimum level of knowledge. that ensures they have a minimum level of knowledge.  Licensing Licensing ► Similar to certification, this is a mandatory exam administered Similar to certification, this is a mandatory exam administered by a overrunning authority. by a overrunning authority.  Professional Development Professional Development ► Ongoing professional education to maintain or improve a Ongoing professional education to maintain or improve a worker’s knowledge and skills. worker’s knowledge and skills.
  • 43. Novum Organum Novum Organum ► Elements to a mature profession: Elements to a mature profession:  Professional Societies Professional Societies ► A Community of like-minded individuals who put their A Community of like-minded individuals who put their professional standards above their self-interest. professional standards above their self-interest.  Code of Ethics Code of Ethics ► Ensures that a profession’s practitioners behave responsibly. Ensures that a profession’s practitioners behave responsibly.  *Organizational Certification *Organizational Certification ► Organizations must also be certified. Organizations must also be certified.
  • 44. Novum Organum Novum Organum ► Maturity Levels for the elements Maturity Levels for the elements  Nonexistence Nonexistence ► The element simply doesn’t exist. The element simply doesn’t exist.  Ad Hoc Ad Hoc ► The element exists, but only in isolated instances The element exists, but only in isolated instances  Established Established ► The element exists and is clearly identifiable. The element exists and is clearly identifiable.  Maturing Maturing ► The element has existed for many years and is being The element has existed for many years and is being maintained and improved. maintained and improved.
  • 45. Novum Organum Novum Organum ► How does Software Engineering rank? How does Software Engineering rank?  Initial Professional Education – Ad Hoc to Established Initial Professional Education – Ad Hoc to Established  Accreditation – Established Accreditation – Established  Skills Development – Established Skills Development – Established  Licensing – Ad Hoc Licensing – Ad Hoc  Professional Development – Ad Hoc Professional Development – Ad Hoc  Professional Societies – Established Professional Societies – Established  Code of Ethics – Established Code of Ethics – Established  Organizational Certification - Established Organizational Certification - Established
  • 46. The Software Tar Pit Summary The Software Tar Pit Summary ► Wrestling with Dinosaurs Wrestling with Dinosaurs  Has anything changed? Has anything changed? ► Fool’s Gold Fool’s Gold  Building the Egyptian Pyramids Building the Egyptian Pyramids  Code-And-Fix, Last-Minute, Silver-Bullet Code-And-Fix, Last-Minute, Silver-Bullet  Software isn’t “soft.” Software isn’t “soft.” ► Cargo Cult Software Engineering Cargo Cult Software Engineering  Process-Oriented vs. Commitment-oriented Process-Oriented vs. Commitment-oriented ► Software Engineering Not Computer Science Software Engineering Not Computer Science ► Body of Knowledge Body of Knowledge  SWEBOK SWEBOK ► Novum Organum Novum Organum  What is a profession? What is a profession?
  • 47. Part Two Part Two Individual Professionalism Individual Professionalism
  • 48. Chapter 7: Chapter 7: Orphans Preferred Orphans Preferred “ “Wanted: Young, skinny, wirey fellows not over 18. Must Wanted: Young, skinny, wirey fellows not over 18. Must be expert riders willing to risk death daily. Orphans be expert riders willing to risk death daily. Orphans preferred. Wages $25/week.” preferred. Wages $25/week.” -Pony Express, 1860 -Pony Express, 1860 “ “We realize the skills, intellect, and personality we seek are We realize the skills, intellect, and personality we seek are rare, and our compensation plan reflects that. In return, rare, and our compensation plan reflects that. In return, we expect TOTAL AND ABSOLUTE COMMITMENT to we expect TOTAL AND ABSOLUTE COMMITMENT to project success – overcoming all obstacles to create project success – overcoming all obstacles to create applications on time and within budget.” applications on time and within budget.” – –Jobs Rated Almanac Jobs Rated Almanac, 1995 for an SE posting. , 1995 for an SE posting.
  • 49. Orphans Preferred Orphans Preferred ► “ “The stereotypical programmer is a shy young man who works in a The stereotypical programmer is a shy young man who works in a darkened room, intensely concentrating on magical incantations darkened room, intensely concentrating on magical incantations that make the computer do his bidding. He can concentrate for 12 that make the computer do his bidding. He can concentrate for 12 to 16 hours at a time, often working through the night to make his to 16 hours at a time, often working through the night to make his artistic vision a reality. He subsists on pizza and Twinkies. When artistic vision a reality. He subsists on pizza and Twinkies. When interrupted, the programming creature responds violently, hurling interrupted, the programming creature responds violently, hurling strings of cryptic acronyms at his interrupter – “TCP/IP, RPC, RCS, strings of cryptic acronyms at his interrupter – “TCP/IP, RPC, RCS, ACM, and IEEE!” he yells. The programmer breaks his intense ACM, and IEEE!” he yells. The programmer breaks his intense concentration only to attend Star Trek conventions and watch Monty concentration only to attend Star Trek conventions and watch Monty Python reruns. He is sometimes regarded as an indispensable Python reruns. He is sometimes regarded as an indispensable genius, sometimes as an eccentric artist. Vital information is stored genius, sometimes as an eccentric artist. Vital information is stored in his head and his head alone. He is secure in his job, knowing that, in his head and his head alone. He is secure in his job, knowing that, valuable as he is, precious few people compete for his job.” valuable as he is, precious few people compete for his job.”
  • 50. Orphans Preferred Orphans Preferred ► Meyers-Briggs Type Indicator Meyers-Briggs Type Indicator  Extroversion (E) vs. Introversion (I) Extroversion (E) vs. Introversion (I) ► Extroverts are focused on the outside world, people. Introverts Extroverts are focused on the outside world, people. Introverts focus on the world of ideas. focus on the world of ideas.  Sensing (S) vs. Intuition (N) Sensing (S) vs. Intuition (N) ► How a person deals with decision-making data. Sensing persons How a person deals with decision-making data. Sensing persons focus on facts, concrete data and experience. Intuitive people look focus on facts, concrete data and experience. Intuitive people look for possibilities and focus on conceptual theories. for possibilities and focus on conceptual theories.  Thinking (T) vs. Feeling (F) Thinking (T) vs. Feeling (F) ► How a person makes a decision. The thinkers make objective, How a person makes a decision. The thinkers make objective, analytic decisions, where as feelers rely on emotions and feelings. analytic decisions, where as feelers rely on emotions and feelings.  Perceiving (P) vs. Judging (J) Perceiving (P) vs. Judging (J) ► The perceiving person is flexible and likes open-ended possibilities, The perceiving person is flexible and likes open-ended possibilities, where as the judging person prefers control and order. where as the judging person prefers control and order.
  • 51. Orphans Preferred Orphans Preferred ► Meyers-Briggs and Software Developers Meyers-Briggs and Software Developers  Most Software Developers (25-40%) are ISTJ. Most Software Developers (25-40%) are ISTJ. ► 50-75% of programmers are introverts, compared to 25% 50-75% of programmers are introverts, compared to 25% in the general population. in the general population.  About 60% of software developers have at least a Bachelors, About 60% of software developers have at least a Bachelors, compared to 30% of the general population. compared to 30% of the general population. ► 80-90% of programmers are Thinking (T) compared to 80-90% of programmers are Thinking (T) compared to 50% of the general population. 50% of the general population. ► There’s a 50-50% split of programmers between Sensing There’s a 50-50% split of programmers between Sensing (S) and Intuition (N). (S) and Intuition (N).
  • 52. Orphans Preferred Orphans Preferred ► Meyers-Briggs and Designers Meyers-Briggs and Designers  Great Designers… Great Designers… ► can general move in-between categories. can general move in-between categories. ► have a mastery of common tools. have a mastery of common tools. ► aren’t afraid of complexity. aren’t afraid of complexity. ► seek out constructive criticism. seek out constructive criticism. ► have experienced failed projects. have experienced failed projects. ► are not afraid of the brute-force approach. are not afraid of the brute-force approach. ► must be creative. must be creative. ► have a restless desire to create. have a restless desire to create.
  • 53. Orphans Preferred Orphans Preferred ► Total and Absolute Commitment Total and Absolute Commitment  Although working 12 to 16 hours may seem extreme, Although working 12 to 16 hours may seem extreme, it’s not out of the realm of possibility. Many it’s not out of the realm of possibility. Many Microsoft programmers working this or more during Microsoft programmers working this or more during the development of Windows NT. the development of Windows NT. ► “ “Work pervades their existence. Friends fade into the Work pervades their existence. Friends fade into the background. The ties of marriage fray or rip apart. Children background. The ties of marriage fray or rip apart. Children are neglected or deferred. Hobbies wither. Computer code are neglected or deferred. Hobbies wither. Computer code comes to mean everything. If private dreams are nursed at comes to mean everything. If private dreams are nursed at al, it is only to ease the pain of creating NT.” – P. Zachary al, it is only to ease the pain of creating NT.” – P. Zachary  Programmers tend to show a loyalty to the project, Programmers tend to show a loyalty to the project, even if their loyalty to the company is waning. even if their loyalty to the company is waning.  Some programmers aim to be “hero” programmers, Some programmers aim to be “hero” programmers, who take on mountains of work and hours. who take on mountains of work and hours.
  • 54. Orphans Preferred Orphans Preferred ► Demographics Demographics  The average programmer The average programmer age peaks between 30-35 age peaks between 30-35 years old (which is about years old (which is about 10 years younger than 10 years younger than most professions). most professions).  72% of computer and 72% of computer and information science BSs information science BSs and 83% of Ph. D’s were and 83% of Ph. D’s were men. men.  Only 17% of high- Only 17% of high- schoolers taking the AP schoolers taking the AP Computer Science test Computer Science test were female. This is the were female. This is the lowest % of all AP tests. lowest % of all AP tests. Highest level of Highest level of Education Education % of % of developer developer s s High school or less High school or less 11.8% 11.8% Some college, Some college, no degree no degree 17.2% 17.2% Associate’s degree Associate’s degree 11.0% 11.0% Bachelor’s degree Bachelor’s degree 47.4% 47.4% Graduate degree Graduate degree 12.8% 12.8%
  • 55. Orphans Preferred Orphans Preferred ► Job Prospects Job Prospects Job breakdown for software workers Job breakdown for software workers Current Software prsnl in US Current Software prsnl in US Computer and information scientists, Computer and information scientists, research research 28,000 28,000 Computer programmers Computer programmers 585,000 585,000 Computer software engineers, applications Computer software engineers, applications 380,000 380,000 Computer software engineers, systems Computer software engineers, systems software software 317,000 317,000 Computer systems analysts Computer systems analysts 431,000 431,000 Network systems and data comm. analysts Network systems and data comm. analysts 119,000 119,000 Other computer specialists Other computer specialists 203,000 203,000 Total Total 2,063,000 2,063,000
  • 56. Chapter 8: Chapter 8: Raising Your Software Raising Your Software Consciousness Consciousness “ “If a man will begin with certainties, he If a man will begin with certainties, he shall end in doubts; but if he will be shall end in doubts; but if he will be content to begin with doubts, he shall content to begin with doubts, he shall end in certainties” end in certainties” -Francis Bacon -Francis Bacon
  • 57. Raising Your Software Raising Your Software Consciousness Consciousness ► In the 1970s, Charles Reich published, In the 1970s, Charles Reich published, The The Greening of America Greening of America, which identified 3 types of , which identified 3 types of awareness awareness  Consciousness I (Con I): Pioneer mentality Consciousness I (Con I): Pioneer mentality ► Great emphasis on independence and self-satisfaction Great emphasis on independence and self-satisfaction  Consciousness II (Con II): Gray flannel suit mentality Consciousness II (Con II): Gray flannel suit mentality ► The corporate man. Knowing how to get along with other The corporate man. Knowing how to get along with other and playing by the rules and playing by the rules  Consciousness III (Con III): Enlightened Consciousness III (Con III): Enlightened Independence Independence ► Operates on the basis of principles, with little regard for the Operates on the basis of principles, with little regard for the rules of Con II and without the selfishness of Con I. rules of Con II and without the selfishness of Con I.
  • 58. Raising Your Software Raising Your Software Consciousness Consciousness ► In the 1970s, Charles Reich published, In the 1970s, Charles Reich published, The The Greening of America Greening of America, which identified 3 types of , which identified 3 types of awareness awareness  Consciousness I (Con I): Pioneer mentality Consciousness I (Con I): Pioneer mentality ► Great emphasis on independence and self-satisfaction Great emphasis on independence and self-satisfaction  Consciousness II (Con II): Gray flannel suit mentality Consciousness II (Con II): Gray flannel suit mentality ► The corporate man. Knowing how to get along with other The corporate man. Knowing how to get along with other and playing by the rules and playing by the rules  Consciousness III (Con III): Enlightened Consciousness III (Con III): Enlightened Independence Independence ► Operates on the basis of principles, with little regard for the Operates on the basis of principles, with little regard for the rules of Con II and without the selfishness of Con I. rules of Con II and without the selfishness of Con I.
  • 59. Raising Your Software Raising Your Software Consciousness Consciousness ► Consciousness and Software Development Consciousness and Software Development  Con I – Self Reliance Con I – Self Reliance ► Software developers who are “Lone Rangers”. They have Software developers who are “Lone Rangers”. They have little tolerance for other ideas. little tolerance for other ideas. ► Little training is needed. This approach works adequately in Little training is needed. This approach works adequately in small projects. small projects.  Con II – Rules Con II – Rules ► Rules allow programmers to work with others. Rules allow programmers to work with others.  Con III – Principles Con III – Principles ► Programmers understand that the rules from Con II are Programmers understand that the rules from Con II are based on principle. Programmers focus on the underlying based on principle. Programmers focus on the underlying effective of their actions on software development. effective of their actions on software development.
  • 60. Chapter 9: Chapter 9: Building the Community Building the Community “ “If any human being earnestly desires to push on If any human being earnestly desires to push on the new discoveries instead of just retaining the new discoveries instead of just retaining and using the old; to win victories over Nature and using the old; to win victories over Nature as a worker rather than over hostile critics as a as a worker rather than over hostile critics as a disputant; to attain, in fact, clear and disputant; to attain, in fact, clear and demonstrative knowledge instead of attractive demonstrative knowledge instead of attractive and probable theory; we invite him as a true and probable theory; we invite him as a true son of Science to join our ranks.” son of Science to join our ranks.” -Francis Bacon -Francis Bacon
  • 61. Building the Community Building the Community ► It’s important to remember that we’re not It’s important to remember that we’re not simply lone-ranger programmers, or even simply lone-ranger programmers, or even programmers for one company, but rather a programmers for one company, but rather a community of professionals. community of professionals.  IEEE IEEE  ACM ACM ► These organizations can provide solutions to These organizations can provide solutions to common problems or articles to further your common problems or articles to further your understanding of the field. understanding of the field.
  • 62. Chapter 10: Chapter 10: Architects and Carpenters Architects and Carpenters “ “Engineers produce plans Builders Engineers produce plans Builders implement the plans to produce a implement the plans to produce a product.” product.” -Terri Maginnis -Terri Maginnis
  • 63. Architects and Carpenters Architects and Carpenters ► As Software Engineering continues to develop, a wider As Software Engineering continues to develop, a wider range of abilities will begin to distinguish itself. range of abilities will begin to distinguish itself.  Average software developers Average software developers  Highly skilled software developers Highly skilled software developers  Unlicensed software engineers/certified software technologists Unlicensed software engineers/certified software technologists (coders). (coders).  Professional Software Engineers Professional Software Engineers ► The average person who earns a professional degree The average person who earns a professional degree earns 50% more than someone without. earns 50% more than someone without. ► The average person who earns a master’s degree will The average person who earns a master’s degree will earn 25% more than someone without. earn 25% more than someone without.
  • 64. Architects and Carpenters Architects and Carpenters ► Job Specialization Job Specialization  The Surgical The Surgical Team, proposed Team, proposed by Fred Brooks in by Fred Brooks in The Mythical Man- The Mythical Man- Month Month
  • 65. Architects and Carpenters Architects and Carpenters ► Job specializations today Job specializations today  Technology Technology ► Software Technologist Software Technologist  Knowledge of specific technologies (Microsoft, Novell, Oracle, Apple) Knowledge of specific technologies (Microsoft, Novell, Oracle, Apple)  Software Engineering Software Engineering ► Software Engineers Software Engineers  Architecture, configuration control, cost estimation, customer Architecture, configuration control, cost estimation, customer support, database administration, education and training, function support, database administration, education and training, function point counting, human factors, information systems, integration, point counting, human factors, information systems, integration, maintenance and enhancement, measurement, network, package maintenance and enhancement, measurement, network, package acquisition, performance, planning, process improvement, quality acquisition, performance, planning, process improvement, quality assurance, requirements, reusability, standards, systems software assurance, requirements, reusability, standards, systems software support, technical writing, testing, tools development. support, technical writing, testing, tools development.
  • 66. Architects and Carpenters Architects and Carpenters ► Team Specializations Team Specializations  Construction lead Construction lead  Design lead Design lead  Planning and tracking lead Planning and tracking lead  Project business manager Project business manager  Quality assurance lead Quality assurance lead  Requirements lead Requirements lead
  • 67. Chapter 11: Chapter 11: Programmer Writing Programmer Writing “ “Read not to contradict and confute, nor to Read not to contradict and confute, nor to believe and tae for granted, nor to find believe and tae for granted, nor to find talk and discourse, but to weigh and talk and discourse, but to weigh and consider.” consider.” -Francis Bacon -Francis Bacon
  • 68. Programmer Writing Programmer Writing ► “ “The gap between the best software engineering The gap between the best software engineering practice and the average practice is very wide – perhaps practice and the average practice is very wide – perhaps wider than in any other engineering discipline. A tool wider than in any other engineering discipline. A tool that disseminates good practice would be important.” that disseminates good practice would be important.” – – No Silver Bullet No Silver Bullet, Fred Brooks , Fred Brooks ► According to McConnell, there are six types of authors: According to McConnell, there are six types of authors:  Recent retirees Recent retirees  University professors University professors  Seminar instructors Seminar instructors  Consultants Consultants  Think-tank developers Think-tank developers  Developers working on production software. Developers working on production software. ► Who should be writing our documentation? Who should be writing our documentation?
  • 69. Programmer Writing Programmer Writing ► “ “In this distribution of functions, the scholar is the delegated In this distribution of functions, the scholar is the delegated intellect. In the right state, he is, intellect. In the right state, he is, Man Thinking Man Thinking. In the degenerate . In the degenerate state, when the victim of society, he tends to become a mere state, when the victim of society, he tends to become a mere thinker, or, still worse, the parrot of other men's thinking. thinker, or, still worse, the parrot of other men's thinking. … …I learn immediately from any speaker how much he has already I learn immediately from any speaker how much he has already lived, through the poverty or the splendor of his speech. Life lies lived, through the poverty or the splendor of his speech. Life lies behind us as the quarry from whence we get tiles and copestones behind us as the quarry from whence we get tiles and copestones for the masonry of today. This is the way to learn grammar. for the masonry of today. This is the way to learn grammar. Colleges and books only copy the language which the field and the Colleges and books only copy the language which the field and the work-yard made.“ work-yard made.“ -Excepts from ’The American Scholar’ by Ralph Waldo -Excepts from ’The American Scholar’ by Ralph Waldo Emerson (1837), Emerson (1837), http://www.emersoncentral.com/amscholar.htm ► Is there a disconnect between academia and the work-force? Are Is there a disconnect between academia and the work-force? Are we still thinking for ourselves? Or merely “thinking” of what others we still thinking for ourselves? Or merely “thinking” of what others have thought through? have thought through?
  • 70. Programmer Writing Programmer Writing ► “ “James Fenimore Cooper syndrome” James Fenimore Cooper syndrome”  In In The Deerslayer The Deerslayer, Cooper writes that 6 Indians climbed onto , Cooper writes that 6 Indians climbed onto sapling to board a scow coming downstream. sapling to board a scow coming downstream.  Mark Twain described this as a fantasy situation. Because of Mark Twain described this as a fantasy situation. Because of his knowledge of riverboat piloting, he knew this situation was his knowledge of riverboat piloting, he knew this situation was not plausible with the sapling or with the dimensions of the not plausible with the sapling or with the dimensions of the scow. scow.  This syndrome represents a practitioner calling into the This syndrome represents a practitioner calling into the question the writings of a scholar. question the writings of a scholar. ► Does the Software Engineering literature suffer from James Does the Software Engineering literature suffer from James Fenimore Cooper Syndrome? Fenimore Cooper Syndrome?
  • 71. Individual Professionalism Individual Professionalism ► Orphans Preferred Orphans Preferred  Meyers Briggs and Software Engineering demographics Meyers Briggs and Software Engineering demographics ► Raising your Software Consciousness Raising your Software Consciousness  The Greening of America The Greening of America ► Building the Community Building the Community  IEEE and ACM IEEE and ACM ► Architects and Carpenters Architects and Carpenters  Specializations Specializations ► Programmer Writing Programmer Writing  ‘ ‘The American Scholar’ The American Scholar’  James Fenimore Cooper Syndrome James Fenimore Cooper Syndrome
  • 72. Part Three Part Three Organizational Professionalism Organizational Professionalism
  • 73. Chapter 12: Chapter 12: Software Gold Rushes Software Gold Rushes “ “Prosperity doth best discover vice, but Prosperity doth best discover vice, but adversity doth best discover virtue.” adversity doth best discover virtue.” -Francis Bacon -Francis Bacon “ “The root of all superstition is that men The root of all superstition is that men observe when a thing hits, observe when a thing hits, but not when it misses.” but not when it misses.” -Francis Bacon -Francis Bacon
  • 74. Software Gold Rushes Software Gold Rushes ► In 1848, gold was discovered in riverbeds in California. In 1848, gold was discovered in riverbeds in California. Many self-proclaimed entrepreneurs set out to make Many self-proclaimed entrepreneurs set out to make their fortune. This made up the California Gold Rush. their fortune. This made up the California Gold Rush. But, by mid-1849, the majority of the easily found gold But, by mid-1849, the majority of the easily found gold was collected. Many miners would spent hours a day was collected. Many miners would spent hours a day digging through freezing water looking for any traces of digging through freezing water looking for any traces of the metal. By the 1850s, most miners had joined the metal. By the 1850s, most miners had joined corporations to continue their hunts. corporations to continue their hunts. ► Software development experienced a similar Software development experienced a similar phenomena. There are a few success stories (Bill Gates phenomena. There are a few success stories (Bill Gates and Paul Allen of Microsoft; Steve Jobs and Steve and Paul Allen of Microsoft; Steve Jobs and Steve Wozniak of Apple, Bob Frankston and Dan Bricklin of Wozniak of Apple, Bob Frankston and Dan Bricklin of VisiCalc), but many failures as well. VisiCalc), but many failures as well.
  • 75. Software Gold Rushes Software Gold Rushes ► Much of the “software gold rush” is characterized by Much of the “software gold rush” is characterized by high-risk projects, long hours, hacking, informal or no high-risk projects, long hours, hacking, informal or no processes, little-to-no documentation, and very little processes, little-to-no documentation, and very little quality assurance. quality assurance. ► Post-gold rush development has en emphasis on lower- Post-gold rush development has en emphasis on lower- risk, high capital projects, larger teams, formal risk, high capital projects, larger teams, formal processes, and general standards. There isn’t an effort processes, and general standards. There isn’t an effort to rush projects out the door, but rather do thorough to rush projects out the door, but rather do thorough testing. testing. ► Post-gold rush consumers are generally more Post-gold rush consumers are generally more demanding on the products that they are looking to buy. demanding on the products that they are looking to buy. ► Many companies that survive a gold-rush would not be Many companies that survive a gold-rush would not be able to survive a second. able to survive a second.
  • 76. Chapter 13: Chapter 13: Business Case for Better Software Practices Business Case for Better Software Practices “ “When you can measure what you are When you can measure what you are speaking about, and express it in speaking about, and express it in numbers, you know something about it; numbers, you know something about it; but when you cannot measure it, when but when you cannot measure it, when you cannot express it in numbers, your you cannot express it in numbers, your knowledge is of a meager and knowledge is of a meager and unsatisfactory kind.” unsatisfactory kind.” -Lord Kelvin, 1893 -Lord Kelvin, 1893
  • 77. Business Case for Better Software Practices Business Case for Better Software Practices ► Development practices pay off Development practices pay off  In 1994 James Herbsleb prepared a study of 13 In 1994 James Herbsleb prepared a study of 13 organizations’ “business value” (similar to Return On organizations’ “business value” (similar to Return On Investment). Investment). ► In 1995, systemic improvements increased the ROI anywhere In 1995, systemic improvements increased the ROI anywhere from 500-900%. from 500-900%.  In 1997, Rini van Solingen found an increase ranging In 1997, Rini van Solingen found an increase ranging from 700-1900%. from 700-1900%.  In 2000, Caspers Jones found that the ROI could easily In 2000, Caspers Jones found that the ROI could easily be in the double digits (over 1000%). be in the double digits (over 1000%).  In 2001, Watts Humphrey found an ROI increase of In 2001, Watts Humphrey found an ROI increase of 500%. 500%.
  • 78. Business Case for Better Software Practices Business Case for Better Software Practices ► Current organizational effectiveness Current organizational effectiveness  A study funded by the SEI found that those organizations who A study funded by the SEI found that those organizations who implemented a change to their development practice found an average implemented a change to their development practice found an average of 35% gain in productivity, 19% schedule reduction, and post-release of 35% gain in productivity, 19% schedule reduction, and post-release defects were reduced by 39%. defects were reduced by 39%.  The same study found that for the best-case scenarios, 58% productivity The same study found that for the best-case scenarios, 58% productivity could be gained over 4 years, a compounded gain of 500% was achieved, could be gained over 4 years, a compounded gain of 500% was achieved, a 23%/year schedule reduction (with a 91% reduction over 6 years), and a 23%/year schedule reduction (with a 91% reduction over 6 years), and post-release defects were reduced by 99%. post-release defects were reduced by 99%.
  • 79. Business Case for Better Software Practices Business Case for Better Software Practices Organization Organization Results Results BDN International BDN International ROI 300% ROI 300% Boeing Information System Boeing Information System Estimates within ~20%, $5.5 million saved Estimates within ~20%, $5.5 million saved in 1 year, ROI 775% in 1 year, ROI 775% Computer Sciences Corporation Computer Sciences Corporation 65% reduction in error rate 65% reduction in error rate General Dynamics Decision General Dynamics Decision Systems Systems 70% reduction in rework; 94% defect rate 70% reduction in rework; 94% defect rate reduction (drr), 2.9*productivity gain reduction (drr), 2.9*productivity gain Harris ISD DPL Harris ISD DPL 90% drr, 2.5*productivity gain, ROI 900% 90% drr, 2.5*productivity gain, ROI 900% Hughes Hughes $2 million reduction in costs, ROI 500% $2 million reduction in costs, ROI 500% IBM Toronto IBM Toronto 90% drr, 80% reduction in rework 90% drr, 80% reduction in rework Motorola GED Motorola GED 2-3*productivity gain, 2-7*cycle reduction 2-3*productivity gain, 2-7*cycle reduction time, ROI 677% time, ROI 677% Philips Philips ROI 750% ROI 750% Raytheon Raytheon ROI 770% ROI 770% Schlumberger Schlumberger 4*reduction in released defects 4*reduction in released defects
  • 80. Business Case for Better Software Practices Business Case for Better Software Practices Organization Organization Results Results Siemens Siemens 90% reduction in released defects 90% reduction in released defects Telcorida Telcorida Defect 1/10 industry aver, customer Defect 1/10 industry aver, customer satisfaction up from 60% to 91% satisfaction up from 60% to 91% Texas Instruments – Systems Texas Instruments – Systems 90% reduction in delivered defects 90% reduction in delivered defects Thomson CSF Thomson CSF ROI 360% ROI 360% U.S. Navy U.S. Navy ROI 410% ROI 410% USAF Ogden Air Logistics Center USAF Ogden Air Logistics Center ROI 1,900% ROI 1,900% USAF Oklahoma City Air Logistics USAF Oklahoma City Air Logistics ROI 635% ROI 635% USAF Tinker Air Force Base USAF Tinker Air Force Base ROI 600% ROI 600%
  • 81. Business Case for Better Software Practices Business Case for Better Software Practices Practice Practice 12-month ROI 12-month ROI 36-month ROI 36-month ROI Formal code inspections Formal code inspections 250% 250% 1,200% 1,200% Formal design inspections Formal design inspections 350% 350% 1,000% 1,000% Long-range technology planning Long-range technology planning 100% 100% 1,000% 1,000% Cost and quality estimation tools Cost and quality estimation tools 250% 250% 1,200% 1,200% Productivity measurements Productivity measurements 150% 150% 600% 600% Process assessments Process assessments 150% 150% 600% 600% Management training Management training 120% 120% 550% 550% Technical staff training Technical staff training 90% 90% 550% 550%
  • 82. Business Case for Better Software Practices Business Case for Better Software Practices ► Performance improvements with the Capability Performance improvements with the Capability Maturity Model (CMM) Maturity Model (CMM)
  • 83. Business Case for Better Software Practices Business Case for Better Software Practices ► Performance improvements with the Capability Maturity Model Performance improvements with the Capability Maturity Model (CMM) (CMM)  In general for average organizations, In general for average organizations, Effort = 2.94 * (KLOC)^1.10 Effort = 2.94 * (KLOC)^1.10  NASA’s Software Engineering Laboratory’s (SEL) effort calculation NASA’s Software Engineering Laboratory’s (SEL) effort calculation has has Effort = 1.27 * (KLOC)^.986 Effort = 1.27 * (KLOC)^.986  The .986 is especially important because it means they are The .986 is especially important because it means they are achieving a slight economy of scale. achieving a slight economy of scale. ► COCOMO II COCOMO II  Only three of the 22 factors used to calculate effort were Only three of the 22 factors used to calculate effort were changeable at the individual project management level: Level of changeable at the individual project management level: Level of Documentation, Architecture and Risk Resolution, and Documentation, Architecture and Risk Resolution, and Development for Reuse. Most of these factors are at the Development for Reuse. Most of these factors are at the organizational level and cannot be easily changed. organizational level and cannot be easily changed.
  • 84. Business Case for Better Software Practices Business Case for Better Software Practices 10 questions to ask about software activities 10 questions to ask about software activities 1. 1. How much are you spending on software development? How much are you spending on software development? 2. 2. What percentage of your projects are currently on time and on What percentage of your projects are currently on time and on budget? budget? 3. 3. What is the average schedule and budget overrun for your What is the average schedule and budget overrun for your projects? projects? 4. 4. Which of your current projects are most likely to fail outright? Which of your current projects are most likely to fail outright? 5. 5. What percentage of your project costs arises from avoidable What percentage of your project costs arises from avoidable rework? rework? 6. 6. How satisfied (quantitatively) are users of your software? How satisfied (quantitatively) are users of your software? 7. 7. How do the skills of your staff compare to the industry averages? How do the skills of your staff compare to the industry averages? 8. 8. How do the capabilities of your organization compare to similar How do the capabilities of your organization compare to similar organizations? organizations? 9. 9. How much (quantitatively) has your productivity improved in the How much (quantitatively) has your productivity improved in the past 12 months? past 12 months? 10. 10. What is your plan for improving the skills of your staff and the What is your plan for improving the skills of your staff and the
  • 85. Chapter 14: Chapter 14: Ptolemaic Reasoning Ptolemaic Reasoning “ “All models are wrong; All models are wrong; some models are useful.” some models are useful.” -George Box -George Box “ “Knowledge itself is power.” Knowledge itself is power.” -Francis Bacon -Francis Bacon
  • 86. Ptolemaic Reasoning Ptolemaic Reasoning ► Ptolemy was an astronomer who lived around Ptolemy was an astronomer who lived around A.D. 100 and theorized that the sun revolved A.D. 100 and theorized that the sun revolved around the earth. around the earth. ► His theory was eventually replaced by His theory was eventually replaced by Copernicus when his data showed findings Copernicus when his data showed findings that contradicted Ptolemy. that contradicted Ptolemy. ► In the same way, real-world data supports an In the same way, real-world data supports an object-oriented development process. object-oriented development process.
  • 87. Ptolemaic Reasoning Ptolemaic Reasoning ► Capability Maturity Model Capability Maturity Model  Developed by the Software Engineering Institute. Developed by the Software Engineering Institute.  There are five software levels: There are five software levels: ► Level 1: Initial Level 1: Initial  Software development is chaotic. This is the default level Software development is chaotic. This is the default level where the organization generally relies on the “code-and-fix where the organization generally relies on the “code-and-fix development” model. development” model. ► Level 2: Repeatable Level 2: Repeatable  Basic project management practices are established on a Basic project management practices are established on a project-by-project basis. The strength of the organization project-by-project basis. The strength of the organization lies on its ability to repeated experiences. lies on its ability to repeated experiences.
  • 88. Ptolemaic Reasoning Ptolemaic Reasoning ► Capability Maturity Model Capability Maturity Model ► Level 3: Defined Level 3: Defined  The organization adopts standardized technical and The organization adopts standardized technical and management processes across the organization. A group is management processes across the organization. A group is assigned to monitor the software process. assigned to monitor the software process. ► Level 4: Managed Level 4: Managed  Project outcomes become highly predictable. A standard Project outcomes become highly predictable. A standard process is identified and variations can be detected. process is identified and variations can be detected. ► Level 5: Optimizing Level 5: Optimizing  The focus of the organization is on proactive identification of The focus of the organization is on proactive identification of process improvements. It has the ability to measure changes process improvements. It has the ability to measure changes to the process and identify their strengths and weaknesses. to the process and identify their strengths and weaknesses.  Conway’s Law: The structure of a computer program Conway’s Law: The structure of a computer program reflects the structure of the organization that built it. reflects the structure of the organization that built it.
  • 89. Ptolemaic Reasoning Ptolemaic Reasoning ► Navigating the Capability Maturity Model Navigating the Capability Maturity Model 1991 1991 2002 2002
  • 90. Ptolemaic Reasoning Ptolemaic Reasoning ► Navigating the Capability Maturity Model Navigating the Capability Maturity Model
  • 91. Ptolemaic Reasoning Ptolemaic Reasoning ► CMM and Risk Management CMM and Risk Management  Cheyenne Mountain ATAMS project Cheyenne Mountain ATAMS project ► The project team was able to… The project team was able to…  complete the project in 1/5 complete the project in 1/5th th of the projected time. of the projected time.  complete the project in ½ of the estimated time. complete the project in ½ of the estimated time. ► Overall, they were able to deliver the software one month ahead Overall, they were able to deliver the software one month ahead of schedule and within budget. of schedule and within budget. ► Eighteen months after release, only two defects were discovered. Eighteen months after release, only two defects were discovered. ► Would developers like CMM? Would developers like CMM?  In a survey of 50 organizations, 20% of level 1 organization In a survey of 50 organizations, 20% of level 1 organization rated staff morale as “good” or “excellent”. rated staff morale as “good” or “excellent”.  At Level 2, 50% of the staff rated morale as “good” or At Level 2, 50% of the staff rated morale as “good” or “excellent”. “excellent”.  At Level 3, 60% of the staff rated morale as “good” or At Level 3, 60% of the staff rated morale as “good” or “excellent”. “excellent”.  Most developers working in a level 5 environment don’t want Most developers working in a level 5 environment don’t want to work for an organization that is less than level 5. to work for an organization that is less than level 5.
  • 92. Ptolemaic Reasoning Ptolemaic Reasoning ► What does it take to implement CMM? What does it take to implement CMM?  Commitment from top management (and follow- Commitment from top management (and follow- through) through)  Establishment of a Software Engineering process Establishment of a Software Engineering process group (sometimes multiple groups). group (sometimes multiple groups).  Appropriate training in middle management and Appropriate training in middle management and various technical positions. various technical positions. ► What is success? What is success?  Success = Planning * Execution Success = Planning * Execution  As an organization moves up CMM levels, they will As an organization moves up CMM levels, they will find that lower levels seem valuable and less find that lower levels seem valuable and less effective. effective.
  • 93. Chapter 15: Chapter 15: Quantifying Personnel Factors Quantifying Personnel Factors “ “Personnel attributes and human relations Personnel attributes and human relations activities provide by far the largest source activities provide by far the largest source of opportunity for improving software of opportunity for improving software productivity. productivity. -Barry W. Boehm -Barry W. Boehm
  • 94. Quantifying Personnel Factors Quantifying Personnel Factors ► Personnel Experience Personnel Experience  In a study conducted by Sackman, Eriskon, and Grant, they In a study conducted by Sackman, Eriskon, and Grant, they found that the variance in time-to-completion for a found that the variance in time-to-completion for a programming problem varied almost 20-to-1 among a programming problem varied almost 20-to-1 among a programmers with 7+ years of experience. programmers with 7+ years of experience.  Other studies have found similar findings ranging anywhere Other studies have found similar findings ranging anywhere from 5-to-1 to 10-to-1. from 5-to-1 to 10-to-1.  In some cases, the programmers were unable to complete In some cases, the programmers were unable to complete the problem. the problem.  In a group of 7 random programmers, there’s a 50/50 change In a group of 7 random programmers, there’s a 50/50 change that at least one of the programmers will produce negative that at least one of the programmers will produce negative productivity. productivity. ► COCOMO II COCOMO II  There are 7 factors that are influenced by experience: There are 7 factors that are influenced by experience: Application experience (1.51), Communications factors (1.53), Application experience (1.51), Communications factors (1.53), Language and tool experience (1.43), Personnel continuity Language and tool experience (1.43), Personnel continuity (1.51), Platform experience (1.40), Programmer capability (1.51), Platform experience (1.40), Programmer capability (1.76), Analyst capability (2.00). (1.76), Analyst capability (2.00).
  • 95. Quantifying Personnel Factors Quantifying Personnel Factors ► Physical Environment Physical Environment  In these war-games, the environment played a factor. Of the In these war-games, the environment played a factor. Of the top 25% of programmers, most have bigger, private offices top 25% of programmers, most have bigger, private offices (~78 ft (~78 ft2 2 ) with fewer interruptions ) with fewer interruptions ► Motivation Motivation  Microsoft provides each group with a “morale budget” which Microsoft provides each group with a “morale budget” which the team can spend on anything from plaques, to t-shirts, to the team can spend on anything from plaques, to t-shirts, to dinner and movies. dinner and movies.  Microsoft allows programmers to accommodate family Microsoft allows programmers to accommodate family situations. situations. ► Seniority Seniority  Because programming experience plays such a large factor in Because programming experience plays such a large factor in development, many companies have found success in have development, many companies have found success in have senior personnel help with each project. senior personnel help with each project.
  • 96. Chapter 16: Chapter 16: Construx’s Professional Development Construx’s Professional Development Program Program
  • 97. Construx’s Professional Development Construx’s Professional Development Program Program ► Construx’s Software Development objectives Construx’s Software Development objectives  Skills enhancement Skills enhancement ► Improve the skills of the employees Improve the skills of the employees  Career pathing Career pathing ► Provides a structured path for improvement and career choice. Provides a structured path for improvement and career choice.  Support for common software job titles Support for common software job titles ► Have a full list of titles: software developers, testers, business Have a full list of titles: software developers, testers, business analysts, project managers, architects, etc… analysts, project managers, architects, etc…  Consistency Consistency ► Provide a consistent means for evaluation Provide a consistent means for evaluation  Generlizability beyond Contrux Generlizability beyond Contrux ► Provide a generic framework for other companies to model. Provide a generic framework for other companies to model.
  • 98. Construx’s Professional Development Construx’s Professional Development Program Program ► Construx’s Knowledge Areas (SWEBOK) Construx’s Knowledge Areas (SWEBOK)  Software Requirements Software Requirements  Software Design Software Design  Software Construction Software Construction  Software Testing Software Testing  Software Maintenance Software Maintenance  Software Configuration Management Software Configuration Management  Software Quality Software Quality  Software Engineering Management Software Engineering Management  Software Engineering Tools and Methods Software Engineering Tools and Methods  Software Engineering Process Software Engineering Process
  • 99. Construx’s Professional Development Construx’s Professional Development Program Program ► Construx’s Capability Levels Construx’s Capability Levels  Introductory Introductory ► Employee can perform basic functions in an area under Employee can perform basic functions in an area under supervision. Professional development is occurring. supervision. Professional development is occurring.  Competency Competency ► Employ can perform effective, independent work and serve as Employ can perform effective, independent work and serve as a role model for the less experienced. Occasionally mentors a role model for the less experienced. Occasionally mentors  Leadership Leadership ► Employee performs exemplary work and regularly coaches Employee performs exemplary work and regularly coaches employees and provides some leadership direction. employees and provides some leadership direction.  Mastery Mastery ► Employee can perform reference work and has deep Employee can perform reference work and has deep experience. Usually, the employee has taught classes or experience. Usually, the employee has taught classes or written papers. They are recognized outside of Construx. written papers. They are recognized outside of Construx.
  • 100. Construx’s Professional Development Construx’s Professional Development Program Program ► Construx’s Capability Levels Construx’s Capability Levels Introductor Introductor y y Competenc Competenc y y Leadership Leadership Mastery Mastery Introductor Introductor y y Introductor Introductor y y Competenc Competenc y y Competency Competency - - Competenc Competenc y y Competenc Competenc y y Competenc Competenc y y Competency Competency - - Leadership Leadership Competenc Competenc y y Competenc Competenc y y Leadership Leadership Mastery Mastery Mastery Mastery - - - - Mastery Mastery Mastery Mastery Experience Knowledg e
  • 101. Construx’s Professional Development Construx’s Professional Development Program Program ► Construx’s Professional Development Ladder Construx’s Professional Development Ladder  Each engineer is giving a rating between 9-15, based Each engineer is giving a rating between 9-15, based on their knowledge and experience. A 12 is on their knowledge and experience. A 12 is considered to by a full professional. considered to by a full professional.  Most engineers don’t go beyond because it requires Most engineers don’t go beyond because it requires career-long commitments to the company to the career-long commitments to the company to the Software Engineering field. Software Engineering field. ► Construx’s Culture Construx’s Culture  Professional Development Plan, Mentoring Program, Professional Development Plan, Mentoring Program, Professional Development Plaques, Training Professional Development Plaques, Training Program, Salary Structure, SE Discussion groups, Program, Salary Structure, SE Discussion groups, Level-12 recognition. Level-12 recognition.
  • 102. Organizational Professionalism Organizational Professionalism ► Software Gold Rushes Software Gold Rushes  Gold Rush vs. Post-Gold Rush software Gold Rush vs. Post-Gold Rush software ► Business Case for Better Software Practices Business Case for Better Software Practices  Process improvements and their effect on business Process improvements and their effect on business ► Ptolemaic Reasoning Ptolemaic Reasoning  CMM CMM ► Quantifying Personnel Factors Quantifying Personnel Factors  COCOMO II COCOMO II  Environment, Motivation, etc… Environment, Motivation, etc… ► Contrux’s Professional Development Program Contrux’s Professional Development Program  Development objectives Development objectives  CKAs CKAs  Capability Levels Capability Levels  Ladder-based Careers Ladder-based Careers
  • 103. Part Four Part Four Industry Professionalism Industry Professionalism
  • 104. Chapter 17: Chapter 17: Engineering a Profession Engineering a Profession “ “Engineering can provide a life of genuine Engineering can provide a life of genuine satisfaction in many ways, especially satisfaction in many ways, especially through ministering in a practical manner through ministering in a practical manner to the needs and welfare of mankind.” to the needs and welfare of mankind.” -Vannevar Bush -Vannevar Bush
  • 105. Engineering a Profession Engineering a Profession ► Engineering feats of the past Engineering feats of the past Reims Cathedral Reims Cathedral Sydney Opera House Sydney Opera House
  • 106. Engineering a Profession Engineering a Profession ► Maturation Cycle of an Engineering Discipline Maturation Cycle of an Engineering Discipline  There are 3 stages in the development of a discipline There are 3 stages in the development of a discipline ► Craft Craft  Work is performed by talented amateurs. There is little-to-no concept Work is performed by talented amateurs. There is little-to-no concept of scalability. of scalability. ► Commercial Commercial  Workers are more economically driven. The focus is on quality in the Workers are more economically driven. The focus is on quality in the products and production processes. products and production processes. ► Professional Engineering Professional Engineering  A corresponding science is developed to better understand the A corresponding science is developed to better understand the engineering problem and this science is then applied on a wider scale engineering problem and this science is then applied on a wider scale to many of the common engineering problems of the discipline. to many of the common engineering problems of the discipline.  As a discipline matures, solutions to common problems are As a discipline matures, solutions to common problems are codified (equations, models, components) so that they can be codified (equations, models, components) so that they can be reused. reused.
  • 107. Engineering a Profession Engineering a Profession ► The science behind software The science behind software  Unlike Physics, the science behind the Civil Engineering that Unlike Physics, the science behind the Civil Engineering that built the Reims Cathedral, Software Engineering doesn’t have an built the Reims Cathedral, Software Engineering doesn’t have an exact science behind it. exact science behind it.  Software Engineering artifacts Software Engineering artifacts ► Architectures, software design procedures Architectures, software design procedures ► Design patterns Design patterns ► Requirements Requirements ► User Interface elements and procedures User Interface elements and procedures ► Estimates Estimates ► Planning data (project plans, procedures) Planning data (project plans, procedures) ► Test plans, cases, data, procedures Test plans, cases, data, procedures ► Technical review procedures Technical review procedures ► Source code, construction procedures, integration procedures Source code, construction procedures, integration procedures ► Software configuration management procedures Software configuration management procedures ► Post-project reports Post-project reports ► Organizational structures Organizational structures
  • 108. Chapter 18: Chapter 18: Hard Knocks Hard Knocks “ “Natural abilities like natural plants, that Natural abilities like natural plants, that need pruning by study; and studies need pruning by study; and studies themselves do give forth directions too themselves do give forth directions too much at large, except they be bounded in much at large, except they be bounded in by experience.” by experience.” -Francis Bacon -Francis Bacon
  • 110. Hard Knocks Hard Knocks ► Is Computer Science relevant to Software Is Computer Science relevant to Software Engineering? Engineering?  Notice the decline of Computer Science and IS Notice the decline of Computer Science and IS degrees from 1985-1997. degrees from 1985-1997. ► The decline was due to Computer Science curriculum's The decline was due to Computer Science curriculum's becoming irrelevant to the workplace. becoming irrelevant to the workplace.  There’s an upsurge from 1998-2000. There’s an upsurge from 1998-2000. ► The Gold Rush and dot-com booms fueled a resurgence The Gold Rush and dot-com booms fueled a resurgence interested for incoming freshmen. interested for incoming freshmen.
  • 111. Hard Knocks Hard Knocks ► Should Software Engineering follow the same Should Software Engineering follow the same path as other engineering disciplines? path as other engineering disciplines?
  • 112. Hard Knocks Hard Knocks ► Academic development of Software Engineering Academic development of Software Engineering  The first Master’s degree in Software Engineering was offered by The first Master’s degree in Software Engineering was offered by Seattle University in 1982. Seattle University in 1982.  University of Sheffield’s Computer Science department (UK) University of Sheffield’s Computer Science department (UK) offered an undergraduate Software Engineering degree in 1988. offered an undergraduate Software Engineering degree in 1988.  Rochester Institute of Technology offered the first US Rochester Institute of Technology offered the first US undergraduate course in 1996. undergraduate course in 1996.  25% of Software Engineering programs are offered in the US. 25% of Software Engineering programs are offered in the US.  In 2003, ~24 institutions offered an undergraduate Software In 2003, ~24 institutions offered an undergraduate Software Engineering degree. Engineering degree.  Should Software Engineering focus on software or engineering? Should Software Engineering focus on software or engineering? ► Accreditation Accreditation  The Computer Science accrediting board requires that their The Computer Science accrediting board requires that their students make a ”scholarly contribution” to computer science, students make a ”scholarly contribution” to computer science, but no industry experience. but no industry experience.  ABET requires “non-academic engineering experience.” ABET requires “non-academic engineering experience.”
  • 113. Chapter 19: Chapter 19: Stinking Badges Stinking Badges “ “Badges? We ain’t got no badges. We don’t Badges? We ain’t got no badges. We don’t need no badges. I don’t have to show need no badges. I don’t have to show you any stinking badges.” you any stinking badges.” -Gold Hat Bandito, -Gold Hat Bandito, The Treasure of the Sierra Madre The Treasure of the Sierra Madre
  • 114. Stinking Badges Stinking Badges ► Certification Certification  A voluntary process culminating in an exam that is A voluntary process culminating in an exam that is administered by a professional society. administered by a professional society.  Typically, both education and experience are required. Typically, both education and experience are required.  There are some certifications that are available. There are some certifications that are available. ► Institute for Certification of Computing Professionals’ Associate Institute for Certification of Computing Professionals’ Associate Computing Professional and Certified Computing Professional Computing Professional and Certified Computing Professional ► Microsoft’s Microsoft Certified Professional Microsoft’s Microsoft Certified Professional ► Novel’s Certified Network Engineer Novel’s Certified Network Engineer ► Oracle’s Oracle Certified Professional Oracle’s Oracle Certified Professional ► Apple’s Apple Certified Server Engineer Apple’s Apple Certified Server Engineer ► IEEE’s Certified Software Development Professional. IEEE’s Certified Software Development Professional.
  • 115. Stinking Badges Stinking Badges ► Licensing Licensing  A mandatory legal process culminating in an exam that is A mandatory legal process culminating in an exam that is administered by a governing agency. administered by a governing agency.  Typically, this is required to protect the public (doctors, Typically, this is required to protect the public (doctors, architects, lawyers). architects, lawyers). ► Can Software Engineering be licensed? Can Software Engineering be licensed?  ‘ ‘There is no generally agreed upon body of knowledge for There is no generally agreed upon body of knowledge for software engineering.’ software engineering.’ ► SWEBOK SWEBOK  ‘ ‘Knowledge is software engineering changes so quickly that Knowledge is software engineering changes so quickly that exams will be out of date by the time they’re offered.’ exams will be out of date by the time they’re offered.’ ► Review the contents of SWEBOK. Review the contents of SWEBOK.
  • 116. Stinking Badges Stinking Badges ► Can Software Engineering be licensed? Can Software Engineering be licensed?  ‘ ‘No reasonable test for software engineering skill could be put No reasonable test for software engineering skill could be put into a multiple-choice format. Indeed, no exam-based practices into a multiple-choice format. Indeed, no exam-based practices could adequately ensure competency of software engineers.’ could adequately ensure competency of software engineers.’ ► Other complex disciplines already have exams (medicine, law, etc…). Other complex disciplines already have exams (medicine, law, etc…). Why is this any different? Why is this any different?  ‘ ‘The breadth of sub-disciplines involved in software would make The breadth of sub-disciplines involved in software would make licensing all of the sub-disciplines impractical.’ licensing all of the sub-disciplines impractical.’ ► The medical profession has several exams for different specialties. The medical profession has several exams for different specialties. Only software development that will impact the public’s health Only software development that will impact the public’s health and/or welfare would need to be explicitly licensed. and/or welfare would need to be explicitly licensed.  ‘ ‘The fundamentals of Engineering Exam required for licensing The fundamentals of Engineering Exam required for licensing existing professional engineers is inappropriate for those existing professional engineers is inappropriate for those receiving a computer science degree.’ receiving a computer science degree.’ ► Some undergraduate degree programs focus on the engineering Some undergraduate degree programs focus on the engineering discipline, but more work would need to be done to adopt this exam. discipline, but more work would need to be done to adopt this exam.
  • 117. Stinking Badges Stinking Badges ► Is licensing a bad idea? Is licensing a bad idea?  ‘ ‘Licenses would unduly restrict the number of people who could Licenses would unduly restrict the number of people who could practice software engineering at a time when demand for practice software engineering at a time when demand for software engineers is increasing.’ software engineers is increasing.’ ► Not all Software Engineers would be required to have a license. Not all Software Engineers would be required to have a license.  ‘ ‘When an engineer receives a license, it will be good for life, When an engineer receives a license, it will be good for life, which is inappropriate considering that software engineering’s which is inappropriate considering that software engineering’s body of knowledge is changing so rapidly.’ body of knowledge is changing so rapidly.’ ► Review SWEBOK and note that other licenses help keep Review SWEBOK and note that other licenses help keep professionals up-to-date. professionals up-to-date.  ‘ ‘Licensing can’t guarantee that every individual who’s licensed Licensing can’t guarantee that every individual who’s licensed will actually be competent. Licensing will give the public a false will actually be competent. Licensing will give the public a false sense of security.’ sense of security.’ ► Like other disciplines, only certain Software Engineers would need Like other disciplines, only certain Software Engineers would need to be licensed. to be licensed.
  • 118. Stinking Badges Stinking Badges ► More on Licensing More on Licensing  Texas currently offers a “bootstrap” Professional Engineering Texas currently offers a “bootstrap” Professional Engineering license for Software Engineers. license for Software Engineers.  One side-effect of being licensed is that you’re legally One side-effect of being licensed is that you’re legally accountable for your work. accountable for your work.  Licensed engineers would have the final say on methodology Licensed engineers would have the final say on methodology choices. choices.  3 paths to general licensing 3 paths to general licensing ► Specialty in engineering that focus on software Specialty in engineering that focus on software ► Create a software engineering specialty exam Create a software engineering specialty exam ► Create a Professional Software Engineering credential. Create a Professional Software Engineering credential. ► Engineering students in Canada receive an iron ring to Engineering students in Canada receive an iron ring to symbolize their commitment to society. symbolize their commitment to society.
  • 119. Chapter 20: Chapter 20: The Professional’s Code The Professional’s Code “ “Although there is a little bit of Peter Pan in Although there is a little bit of Peter Pan in each of us, maturity brings with it the each of us, maturity brings with it the desire to contribute to the communal desire to contribute to the communal welfare. The fulfillment of this yearning, I welfare. The fulfillment of this yearning, I repeat, provides the engineer with his repeat, provides the engineer with his primary existential pleasure.” primary existential pleasure.” -Samuel C. Florman -Samuel C. Florman
  • 120. The Professional’s Code The Professional’s Code ► A code of ethics is required for all professions. A code of ethics is required for all professions. ► Software Engineering Code of Ethics and Software Engineering Code of Ethics and Professional Practice (joint venture with ACM/IEEE) Professional Practice (joint venture with ACM/IEEE)  http://www.acm.org/serving/se/code.htm  There are two guiding philosophies… There are two guiding philosophies… ► “ “Software engineers shall commit themselves to making the Software engineers shall commit themselves to making the analysis, specification, design, development, testing and analysis, specification, design, development, testing and maintenance of software a beneficial and respected profession. maintenance of software a beneficial and respected profession. In accordance with their commitment to the health, safety and In accordance with their commitment to the health, safety and welfare of the public, software engineers shall adhere to the welfare of the public, software engineers shall adhere to the following Eight Principles: “ (Preamble short-version) following Eight Principles: “ (Preamble short-version)
  • 121. The Professional’s Code The Professional’s Code ► Software Engineering Code of Ethics and Software Engineering Code of Ethics and Professional Practice Professional Practice  There are eight guiding principles… There are eight guiding principles… 1. 1. Public: Software engineers shall act consistently with the Public: Software engineers shall act consistently with the public interest. public interest. 2. 2. Client and Employer: Software engineers shall act in a Client and Employer: Software engineers shall act in a manner that is in the best interests of their client and manner that is in the best interests of their client and employer, consistent with the public interest. employer, consistent with the public interest. 3. 3. Product: Software engineers shall ensure that their Product: Software engineers shall ensure that their products and related modifications meet the highest products and related modifications meet the highest professional standards possible. professional standards possible. 4. 4. Judgment: Software engineers shall maintain integrity and Judgment: Software engineers shall maintain integrity and independence in their professional judgment. independence in their professional judgment.
  • 122. The Professional’s Code The Professional’s Code ► Software Engineering Code of Ethics and Software Engineering Code of Ethics and Professional Practice Professional Practice  There are eight guiding principles… There are eight guiding principles… 5. 5. Management: Software engineering managers and leaders Management: Software engineering managers and leaders shall subscribe to and promote an ethical approach to the shall subscribe to and promote an ethical approach to the management of software development and maintenance . management of software development and maintenance . 6. 6. Profession: Software engineers shall advance the integrity and Profession: Software engineers shall advance the integrity and reputation of the profession consistent with the public interest. reputation of the profession consistent with the public interest. 7. 7. Colleagues: Software engineers shall be fair to and supportive Colleagues: Software engineers shall be fair to and supportive of their colleagues. of their colleagues. 8. 8. Self: Software engineers shall participate in lifelong learning Self: Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an regarding the practice of their profession and shall promote an ethical approach to the practice of the profession. ethical approach to the practice of the profession.
  • 123. The Professional’s Code The Professional’s Code ► Why is the Code needed? Why is the Code needed?  All professions are required to have a Code. All professions are required to have a Code.  Death-march projects Death-march projects ► Developers debate unachievable schedules. Developers debate unachievable schedules.  Low-ball bidding Low-ball bidding ► Developers should provide realistic estimates. Developers should provide realistic estimates.  Code-and-fix development Code-and-fix development ► Inconsistent with developing quality code. Inconsistent with developing quality code.  Knowledge stagnation Knowledge stagnation ► Developers cannot perform professionally without keeping Developers cannot perform professionally without keeping up-to-date on professional issues. up-to-date on professional issues.
  • 124. Chapter 22: Chapter 22: Alchemy Alchemy “ “Q: What are the most exciting/promising software Q: What are the most exciting/promising software engineering ideas or techniques on the horizon? engineering ideas or techniques on the horizon? A: I don’t think that the most promising ideas are A: I don’t think that the most promising ideas are on the horizen. They are already here and have on the horizen. They are already here and have been here for years but are not being used been here for years but are not being used properly.” properly.” -David L. Parnas -David L. Parnas
  • 125. Alchemy Alchemy Best Practices Best Practices Year Described Year Described Automated estimation tools Automated estimation tools 1973 1973 Evolutionary delivery Evolutionary delivery 1988 1988 Measurement Measurement 1977 1977 Productivity environments Productivity environments 1984 1984 Risk management planing Risk management planing 1981 1981 Change board Change board 1978 1978 Throwaway user interface prototyping Throwaway user interface prototyping 1975 1975 JAD sessions JAD sessions 1985 1985 Information hiding Information hiding 1972 1972 Design for change Design for change 1979 1979 Source code control Source code control 1980 1980 Incremental integration Incremental integration 1979 1979 Branch-coverage testing Branch-coverage testing 1979 1979 Inspections Inspections 1976 1976 SEI’s CMM SEI’s CMM 1987 1987 Software Engineering Process Groups Software Engineering Process Groups 1989 1989
  • 126. Alchemy Alchemy ► If so many of the best-practices have been in existing If so many of the best-practices have been in existing for 15+ years, why haven’t they been implemented on for 15+ years, why haven’t they been implemented on a wide-spread scale? a wide-spread scale?  Many organizations fear changing what’s worked previously. Many organizations fear changing what’s worked previously.  Not all best-practices work in practice. Not all best-practices work in practice.  Many companies fear the risk involved in changing. Many companies fear the risk involved in changing.
  • 127. Alchemy Alchemy ► How can we diffuse information? How can we diffuse information?  The Agricultural Extension The Agricultural Extension ► Research Subsystem Research Subsystem  Research professors producing innovative results that are Research professors producing innovative results that are later diffused to the group. later diffused to the group. ► State Extension Agents State Extension Agents  Connect the Research Subsystem to the County agents. Connect the Research Subsystem to the County agents. ► County Extension Agents County Extension Agents  Persons who help local farmers choose what innovations that Persons who help local farmers choose what innovations that should use. should use. ► SEI acts as software’s Research Subsystem SEI acts as software’s Research Subsystem  NASA’s SEL producing guidebooks ad training NASA’s SEL producing guidebooks ad training courses. courses.
  • 128. Industry Professionalism Industry Professionalism ► Engineering a Profession Engineering a Profession  What is a profession? What is a profession?  Is Software Engineering a profession? Is Software Engineering a profession? ► Hard Knocks Hard Knocks  History of Software Engineering History of Software Engineering ► Stinking Badges Stinking Badges  Certification vs. Licensing Certification vs. Licensing ► The Professional’s Code The Professional’s Code  Software Engineering Code of Ethics and Professional Practice Software Engineering Code of Ethics and Professional Practice ► Alchemy Alchemy  Best-practices Best-practices  Diffusing information Diffusing information
  • 129. Overview Overview The Software Tarpit The Software Tarpit Wrestling with Dinosaurs Wrestling with Dinosaurs Fool’s Gold Fool’s Gold Cargo Cult Software Cargo Cult Software Engineering Engineering Body of Knowledge Body of Knowledge Novum Organum Novum Organum Individual Professionalism Individual Professionalism Orphans Preferred Orphans Preferred Raising Your Software Raising Your Software Consciousness Consciousness Building the Community Building the Community Programmer Writing Programmer Writing Organizational Professionalism Organizational Professionalism Software Gold Rushes Software Gold Rushes Business Case for Better Software Business Case for Better Software Practices Practices Ptolemaic Reasoning Ptolemaic Reasoning Quantifying Personnel Factors Quantifying Personnel Factors Construx’s Professional Construx’s Professional Development Program Development Program Industry Professionalism Industry Professionalism Engineering a Profession Engineering a Profession Hard Knocks Hard Knocks Stinking Badges Stinking Badges The Professional’s Code The Professional’s Code Alchemy Alchemy