|
Server : Apache/2.4.62 System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64 User : www ( 80) PHP Version : 8.3.8 Disable Function : NONE Directory : /domains/srakitin/OLD/newsletter/vol3/no8/ |
Upload File : |
Food for Thought-An e-newsletter published by Software Quality Consulting, Inc.
October 2006, Vol. 3 No. 8 - What�s In a Title?
What topics would you like to see in this newsletter?
Each month, this newsletter tries to provide you with useful information. This
is a two-way street and your feedback is important. Please send your thoughts
and comments to [email protected].
--------------------------------------------------------------------------------
Welcome to Food for Thought(TM), an e-newsletter from Software Quality
Consulting (http://www.swqual.com/index.html?Intro). I've created free
subscriptions for my valued business contacts. If you find this newsletter
informative, I encourage you to continue reading. Feel free to pass this
newsletter along to colleagues by clicking this Forward Email link
(http://ui.constantcontact.com/roving/sa/fp.jsp?plat=i&p=f&m=sctz69n6). If
you�ve received this newsletter from a colleague and would like to subscribe,
please click this Enter New Subscription link
(http://www.swqual.com/newsletter/Subscribe.htm?Newsletter). If you don't wish
to receive this newsletter, click the SafeUnSubscribe(TM) link at the bottom of
this newsletter, and you won�t be bothered again.
Your continued feedback on this newsletter is most welcome. Please send
your comments and suggestions to [email protected].
--------------------------------------------------------------------------------
*** In This Issue ***
In This Months� Topic, I discuss the difference between a software
engineer and a programmer...
Regular features to look for each month are:
- Monthly Morsels
Hints, tips, techniques and reference info related to this month�s topic
- Calendar
Conferences, workshops, and meetings of interest to software engineers,
QA engineers and anyone interested in software development
--------------------------------------------------------------------------------
*** This Month�s Topic ***
What�s In a Title?
And then there�s this from the New York Times:
�Have you ever wanted to be a �group idea management director�? Now you
can. How about a �chief transformation officer�? There are several of
those. Does the title �marketing evangelist� suit you? Or perhaps �chief
consumer officer�? What about �vice president for stakeholder
relations�? Executives have been appointed recently to all those titles.
For example, [the PR firm] Initiative named a �chief activation officer�
last week. Last month, [the PR firm] Arnold Worldwide promoted an
executive to �director for the department of human nature�. And Yahoo
named an executive to serve as �chief of insights�.� [1]
Do these titles mean anything? I don�t know but I believe the problem of
meaningless titles extends well beyond the companies mentioned above...
These days, many job titles seem to have the �engineer� designation
attached to them. For example, we now have:
- Domestic engineers (stay-at-home parents)
- Sanitation engineers (trash collectors)
- Railroad engineers (people who drive locomotives)
As you might expect, the software industry uses the title engineer very
loosely as well. Job titles at software companies often include:
- User interface engineer (does windows)
- Database engineer (schemas, tables, and queries, oh my!)
- Requirements engineer (makes English make sense)
- Test engineer (tests, what else?)
- SQA engineer (a fancy title for a test engineer)
- Release engineer (Bob the Builder)
- Software engineer (?)
- Programmer (?)
I want to focus on two of these titles for now - software engineer and
programmer. Specifically, I want to discuss...
What is a software engineer?
What is a programmer?
Before examining these questions, we need to understand a bit about
engineering professions.
ENGINEERING PROFESSIONS
Engineering professions generally have five characteristics [2]:
1 A professional education from an accredited institution
2 Registration of fitness to practice via voluntary certification or
mandatory licensing
3 Specialized skill development and continuing professional education
4 Communal support via professional societies
5 A commitment to norms of conduct often prescribed in a code of ethics
Does the software engineering profession have all five of these
characteristics? Let�s see:
1 We don�t have this. Even today, very few universities offer
undergraduate degrees in software engineering. Most schools offer
degrees in Computer Science. As part of that curriculum, students may
take some software engineering courses but the focus is on computer
science not software engineering.
David Parnas explains why a degree in Computer Science is not sufficient
training for software engineers. He says:
�The increasing importance of software, combined with our increased
knowledge about how to build it, has resulted in a need for graduates
who, like other engineers, have received an education that focuses on
how to design and manufacture reliable products, but who specialize in
designing, building, testing, and �maintaining� software products. We
can no longer squeeze what we know into a few courses in traditional
engineering or computer science programs.� [3]
Most people who call themselves �software engineers� (myself included)
probably have an undergraduate degree in Computer Science (or if you are
my age, it is probably in EE, Math or Physics).
2 Registration of fitness to practice via voluntary certification or
mandatory licensing
We do have this. Voluntary certification programs that assess �fitness
to practice� are offered by:
- IEEE-Computer Society - Certified Software Development Professional.
(http://www.computer.org/portal/site/ieeecs/menuitem.c5efb9b8ade9096b8a9ca0108bcd45f3/index.jsp?&pName=ieeecs_level1&path=ieeecs/education/certification&file=index.xml&xsl=generic.xsl&)
- ASQ-Software Division - Certified Software Quality Engineer.
(http://www.asq.org/softwareforum/getcertified/index.html)
Currently, Texas requires that people who use the title software
engineer be licensed in a manner similar to professional engineers.
(Note: there are currently only 65 licensed software engineers in
Texas). Canada and a few European countries also require software
engineers to be licensed in a manner similar to professional engineers.
Read more...
- IEEE � Computer Society�s position on licensing software engineers
(http://www.ieeeusa.org/policy/positions/licensure.html)
- Association for Computing Machinery�s (ACM) position on licensing
software engineers
(http://www.acm.org/serving/se_policy/selep_main.html)
3 Specialized skill development and continuing professional education
We do have this. There are thousands of specialized courses available in
highly specific areas that provide engineers with skills in .net, C#,
Java, use case modeling, etc.
The Software Engineering Institute
(http://www.sei.cmu.edu/products/courses/courses.html) offers education and
training courses in many relevant software engineering topic areas. The SEI
sponsors local chapters (called Software Process Improvement Network or SPINs)
that hold frequent meetings with guest lecturers speaking on many current
topics...
- Find a SPIN in your area...
(http://www.sei.cmu.edu/collaborating/spins/calendar.html#states)
The IEEE-Computer Society
(http://www.computer.org/portal/site/ieeecs/index.jsp) also offer many short
courses on software engineering related topics and sponsors many software
engineering conferences. The IEEE also sponsors local chapters, many of which
provide continuing professional education courses.
- Find an IEEE Chapter in your area...
(http://www.ieee.org/web/geo_activities/home/index.html)
Communal support via professional societies
We do have this. Several professional societies support the software
engineering profession. The most well-known include:
- IEEE-Computer Society
(http://www.computer.org/portal/site/ieeecs/index.jsp)
- Association for Computing Machinery (ACM)
(http://www.acm.org/)
- ASQ-Software Division
(http://www.asq.org/softwareforum/index.html)
5 A commitment to norms of conduct often prescribed in a code of ethics
We do have this. The IEEE-CS and ACM have jointly developed a Software
Engineering Code of Ethics and Professional Practices
(http://www.acm.org/serving/se/code.htm). However, not many people are aware
that it exists.
You might think that four out of five isn�t too bad. But the one we don�t
have is the most critical. Parnas says that:
�Engineers are professionals whose education prepares them to use
mathematics, science, and the technology of the day to build products
that are important to the safety and well-being of the public.� [3]
The National Society for Professional Engineers (http://www.nspe.org/) defines
engineering as:
�... the creative application of scientific principles used to plan,
build, direct, guide, manage, or work on systems to maintain and improve
our daily lives.�
These definitions paint an interesting picture of what engineers do. While
we are probably very familiar with what software engineers presently do,
we really need to understand what software engineers should do...
WHAT SOFTWARE ENGINEERS SHOULD DO
Steve McConnell observed:
�The most common approach to software development today is
code-and-fix programming � or hacking. In this approach, a development
team begins with a general idea of what they want to build. They might
have a formal specification, but probably not. They use whatever
combination of informal design, code, debug, and test methodologies
suits them. Programmers write a little code and run it to see whether it
works. If it doesn�t work, they change it until it does. The
code-and-fix approach is far from the state of the art in software
development. It costs more, takes longer, and produces lower-quality
software than other approaches; its main advantage is that it requires
little technical or managerial training. Leading organizations have
known and used effective software development practices for decades, but
the gap between average practice and best practice in software is
enormous.� [4]
The IEEE Glossary of Software Engineering Terminology defines software
engineering as:
�the application of a systematic, disciplined, quantifiable approach to
the development, operation, and maintenance of software.� [5]
Software engineering as defined above represents one end of the spectrum.
The other end of this spectrum is the code-and-fix hacking approach
described by Steve McConnell.
Given all of this, in my opinion, a software engineer should be directly
involved in a variety of tasks that may include:
- Understanding problem domains
- Establishing effective dialogues with end users or their proxies
- Performing system analyses
- Performing system safety and risk analyses
- Performing requirements analyses
- Designing user interfaces
- Estimating and scheduling software tasks
- Leading and participating in Peer Reviews
- Evaluating existing architectures, components, and tools
- Establishing standards
- Developing overall system architectures
- Developing high level designs
- Developing detailed designs
- Coding high-risk, critical components
- Unit and integration testing
- Supporting system testing
- Defect resolution and tracking
- Change Management
- Release Planning
- Creating system documentation
- Interacting with other groups on tasks such as Triage, Root Cause
Analysis, Risk Management, Project Management, etc.
- Mentoring and leadership
In my view, the role of a software engineer should be very broad and
should require education and skills in many areas. For those of you with
undergraduate degrees in Computer Science, which of the skills listed
above did you learn in college? Very few I would guess. An undergrad
degree in Software Engineering would focus on many of these topics.
Read more...2004 IEEE-ACM Joint Task Force Report on Curriculum for
Undergraduate Degree in Software Engineering
(http://sites.computer.org/ccse/SE2004Volume.pdf)
WHAT PROGRAMMERS SHOULD DO
In every engineering discipline, there exists a natural hierarchy based on
education, skills, and demonstrated mastery of basic engineering
principles. For example, electrical engineers (EEs) often work with
engineering technicians. Engineering technicians are trained to perform
specific tasks under the direction of an EE. Some engineering technicians
are pursuing an EE degree or are in an Engineer-in-training program. In
the EE profession, the responsibilities of the EE and the engineering
technician are well-established and the results of this working
relationship have proven to be very effective.
In the software engineering profession, this natural hierarchy doesn�t
exist. As a result, we lack an environment for apprenticeship and
mentoring.
In my opinion, these are tasks that programmers should be involved in:
- Reviewing requirements
- Reviewing proposed architectures and high level designs
- Estimating coding and unit and integration testing tasks
- Participating in Peer Reviews
- Developing detailed designs
- Coding of selected components
- Unit and integration testing
- Bug fixing
- Source code control
- Build control
- Documentation
By having programmers focused on these tasks, software engineers can spend
more of their time on the tasks identified above, especially mentoring,
coaching, and leadership.
I believe that programmers are to software engineers like technicians are
to EEs. They fill a very important role. Like technicians, programmers
need a subset of the training and skills required of software engineers.
Like technicians, programmers need coaching, mentoring, and formal
training before they should become software engineers. Like technicians,
programmers should have at a minimum, a two year Associates Degree in
Computer Programming � offered at many community colleges and technical
schools.
SUMMARY
Years ago we recognized the need to separate Computer Science from other
departments (such as Electrical Engineering and Physics). Unfortunately,
the recognition that Software Engineering needs to be separated from
Computer Science has been painfully slow in coming. As a result, the
formal training of people with the title �software engineer� has been
focused primarily on computer science not software engineering.
The natural hierarchy that exists in other engineering professions doesn�t
exist in the software engineering profession. Software engineering lacks
apprentice and mentoring relationships common in most every engineering
profession. Such relationships are critical if software engineering is
ever to become a true engineering profession.
And on a lighter note... if you like crossword puzzles, try this one
(http://www.swqual.com/newsletter/vol3/no8/Oct%202006%20puzzle.pdf). Send
me an e-mail ([email protected]) if you would like the answers.
Until next time...
--------------------------------------------------------------------------------
*** Monthly Morsels ***
Every month in this space you�ll find additional information related to
this month�s topic.
- References:
[1] Ellis. S., �Wanted: Experience Officer. Some Necessary�, NY Times,
Sept 13, 2006.
[2] G. Ford and N.E. Gibbs, A Mature Profession of Software Engineering
, Software Engineering Institute, Carnegie Mellon University,
Pittsburgh, Pa., tech. report CMU/SEI-96-TR-004, Jan. 1996.
[3] Parnas, D. L., �Software Engineering Programs are not Computer
Science Programs�, IEEE Software, Nov/Dec 1999.
(http://www.swqual.com/newsletter/vol3/no8/Parnas.pdf)
[4] McConnell, S. and Tripp, L., �Professional Software Engineering �
Fact or Fiction�, IEEE Software, Nov/Dec 1999.
(http://www.swqual.com/newsletter/vol3/no8/McConnell.pdf)
[5] IEEE Glossary of Software Engineering Terminology, IEEE Standard
610.12 .
- On-line Resources
Krill, P., �Are developers programmers or engineers? Software project
management pondered�, Infoworld.com, Feb 12, 2003
(http://www.infoworld.com/article/03/02/12/HNproject_1.html)
--------------------------------------------------------------------------------
*** Calendar ***
Every month you�ll find news here about local and national events that
are of interest to the software community ...
- Software Quality Calendar
There are many organizations that sponsor monthly meetings, workshops,
and conferences of interest to software professionals. Find out what�s
happening...
(http://www.swqual.com/links/upcoming.html)
- Workshops Offered by Software Quality Consulting
Software Quality Consulting offers workshops in many topics related to
software process improvement. Get more info...
(http://www.swqual.com/seminars/courses.html)
--------------------------------------------------------------------------------
*** About SQC ***
Software Quality Consulting provides consulting, training, and auditing
services tailored to meet the specific needs of clients. We help clients
fine-tune their software development processes and improve the quality of
their software products. The overall goal is to help clients achieve
Predictable Software Development(TM) � so that organizations can consistently
deliver quality software with promised features in the promised timeframe.
To learn more about how we can help your organization, visit our web site
(http://www.swqual.com/index.html?AboutSQC) or send us an email
([email protected]).
--------------------------------------------------------------------------------
I hope this newsletter has been informative and helpful. Your comments and
feedback are most welcome. Send me your feedback ([email protected])...
Thanks,
Steve Rakitin
[email protected]
Food for Thought, Predictable Software Development, Act Like a Customer,
and ALAC are trademarks of Software Quality Consulting, Inc.
Copyright 2006. Software Quality Consulting, Inc. All rights reserved.
Graphic design by Sage Studio