Incoming Students for the OO Specialty Track

  1. Groups of Incoming Students
  2. Overview of Skills and Competencies
  3. Detailed Skills Lists

  4.  

1.  Groups of Incoming Students

1.2 Systems Engineers and Product Planners

1.3 Managers

2. Skills and  Competencies Taught

2.1 Overview

Software developers need three things from training in object oriented technology:
 
  1. an opportunity to learn and practice "object oriented thinking"
  2. a degree of competence in the programming languages  that they will use to create new software
  3. a set of tactics, techniques, and tools for them to use in solving software design and coding problems
Software developers can get assistance in all three of these basic areas from training courses.  Training can provide a developer with basic vocabulary, some guidance on techniques that have worked well in the past, and some rules and heuristics to fall back on when confronted with new design situations.  But software developers will only attain mastery of object oriented technology with time and experience.

The goal, as in most technical training, is to "teach a person to fish" rather than just to "give a person a fish".  Some of the specific skills that software developers will need a year from now are in brand new areas of technology, so software developers will need to be able to read and learn some things on their own.
 
 

2.2.  The top skills and competencies for software developers

 

2.2.1  Object oriented thinking

The most important skills that a software developer needs in order to exploit object oriented technology is a set of "object oriented thinking" skills.   This set of skills includes: Abstraction is a concept that is already familiar to good designers.  Good object oriented thinking will lead developers to create modular designs that follow the "open-closed principle" and other principles that permit the creation of flexible, extensible software systems.
 

2.2.2  Language technology

Software developers need to have competence in programming languages technology.  The areas that are most important to cover in the OO curriculum are: There is a relationship between the success of the use of object oriented techniques by software professionals and the number of programming languages that they know (cite the paper by IBM folks in OOPSLA '94).  Software developers need a deeper understanding of the proper use of programming languages, beyond the syntax rules of the language.  As distributed systems become more prevalent, developers need more experience working with standard frameworks for making objects work well in a distributed programming environment.
 

2.2.3  Tactics, Tools, and Techniques

Software developers need tools to help them communicate with others.
  Developers rarely work alone -- they must be able to communicate with their peers in a development project.  They need to be able to read standard analysis and design notations, and they should at least be able to use techniques such as CRC cards for doing design-level
brainstorming.  Developers on an object oriented development project must understand the benefits and problems of working in an iterative and incremental software development lifecycle.
 

2.3.  Cross-reference between existing courses and skills list

 

 

Course
Skills
OO Analysis and Design (Mancl) 1, 2, 8, (9), 10
CRC/CRH (Cope) 1, 2, 4, 8, (9), 10
Basic C++ 1, (2), (5)
Advanced C++ 1, 3, 4, (5), 6, 10
Proposed GOF/POSA 1, 3, 8, 10
1-day CORBA 1, 6

2.4.  Topics not fully covered in the current curriculum

There are three items that are only "partially" covered in existing courses:
 

3.  Detailed Skills Lists

The OO Specialty Track team is developing detailed skills lists for each group of incoming students: