|
Martin Schedlbauer is President of Technology Resource Group, Inc. (Maynard, MA) a full-service
IT training organization committed to helping companies successfully adopt new technologies.
He can be contacted at
[email protected].
David Udin is a Senior Technologist at Technology Resource Group, Inc. He can be contacted at
[email protected].
JAVA HAS RAPIDLY emerged as an important tool for the development of cross-platform,
distributed applications. While Java has been primarily associated with the Web, it is a
much broader technology with applications far beyond the Internet. To take advantage of
the capabilities of Java and its wide range of application programming services, an
organization must enhance the skill base of its workforce in several critical areas,
among them object-oriented programming, interactive and event-driven application development,
distributed (client/server) systems architecture, and coming up rapidly, design and use of
components (beans) for Javas component architecture, JavaBeans.
To create an effective and successful migration strategy for its development and project
management staff, a company must consider several factors. These factors are discussed
in detail in this article.
AUDIENCE
Each group of potential Java users will likely need a different migration strategy. While
one group, such as software developers, may need in-depth knowledge of the Java programming
facilities, another group, such as project managers, need only a superficial understanding
of the language features but a strong understanding of the impact that the use of Java has
on a project. The audience for a migration effort can be broken into five distinct groups:
- Software Developers
- Web Masters
- Software Architects
- Project Managers
- Business Analysts
This report will closely examine how each group can successfully migrate to Java.
EXPERIENCE
The technical background that a person migrating to Java brings to the table has a significant
impact on the training approach to be taken. For example, developers that have experience in C++
or another object-oriented language tend to understand Java much faster than those migrating
from traditional languages, such as COBOL. Similarly, the event-driven nature of the Java user
interface packages AWT and Swing are easier to comprehend if one has exposure to event-driven
GUI development, such as with Visual Basic or PowerBuilder. Finally, Java is an object-oriented
language that requires a solid understanding of object technology to be used effectively.
Overall, the following dimensions impact any migration strategy to Java:
- Language background: 4GL (Visual Basic, PowerBuilder), C++, COBOL
- GUI development experience
- Distributed system development, including client/server development
- Object-oriented analysis & design
OBJECTIVES
Java has several roles in distributed application development: Web-based applets, remote business
objects, stand-alone client/server applications, and components (beans), each of which greatly
influences how a migration strategy to Java must be planned. Commonly, Java can be used to develop:
- Intranet or Internet client services in the form of applets
- Server objects to provide shared business services (Servlets)
- Component-based development (JavaBeans)
- Stand-alone applications
COMPANY CONTEXT
The environment in which Java will be deployed also influences the migration strategy, particularly
if legacy systems must be integrated. For example, a mainframe application may need to be accessed
through an object broker, such as CORBA.
We have identified the following company context variables that can sway the direction and scope of
any migration strategy to Java:
- Legacy system integration
- Existing database management systems
- Security requirements
- Management and operations strategies
TRAINING APPROACHES
Migration to Java is possible with a variety of approaches, each with its benefits and drawbacks:
- Instructor-led training
- Web-based or computer-based courses
- Mentoring
- Self-study
The remainder of this article will address how to evaluate the current skills of a development team and
how to design and implement an effective migration strategy for the development team that incorporates
an appropriate mix of training, self-education, and mentoring.
WHAT ARE YOUR GOALS?
What do you want to train your staff to do? Build large-scale platform-independent distributed
applications? Replace Visual Basic front ends in client-server applications? Replace CGI scripts
with Java Servlets? Spice up a Web page with singing and dancing applets? Java has a role in all
of these, but the training emphasis ranges from learning component assembly tools (bean assemblers)
to the Java language and object-oriented development.
Your initial training goal should be to understand the new possibilities provided by Java and its
family of packages. This requires an overview of the language and context, explaining the role it
can play in network clients and servers, in embedded processing, on portability, in interfacing
to legacy databases, and on component-based development. This training should be directed to system
architects and IT managers. Because of the very broad subject area and the wide range of potential
emphasis, such material is best delivered by instructor-led training. This allows maximum flexibility
in adapting to your organizations background and needs.
WHERE ARE YOU STARTING FROM?
For the developerprogrammer, architect, and even project managerthe most critical
success factor for anything but the simplest application is understanding object-oriented and
component-based programming. The programmer must understand programming with classes; the architect,
object-oriented analysis and design; the business analyst, use case analysis; and the manager,
evaluating and measuring progress in an object-oriented development project. One of the critical
lessons learned from experience in adopting C++ is that learning the language is not the same as
learning how to do object-oriented development. Java has many advantages over C++ in terms of its
accessibility to the novice, but that will only reduce the time to learn the languageonly
part of the time required to learn the paradigm.
If a companys staff has experience with object-oriented programming, learning the Java language
is relatively straightforward, but Java adds something to the mix: learning the ins and outs of its many
packages. Java has powerful support for interactive and event-driven programming, multi-threaded
applications, distributed applications, component architecture, database access, to name a few. Again,
if one is coming from a background with experience in these areas, but using another language such as
C++, learning a new set of interfaces is relatively straightforward. For developers with a related
technological background in other programming languages, Web-based or computer-based training or
self-training may suffice.
A background in Visual Basic is helpful if your goal is to adopt Javas event-driven component
architectureJavaBeans. C++ programmers may require extra training in this development paradigm.
Furthermore, in our experience, there are many C++ programmers out there who have mainly learned to
use C++ as a better C and lack a fundamental understanding of object-oriented development.
If one is trying to learn to write interactive, multi-threaded, Web-based applications at the same
time one is learning Java and its packages, take great care not to multiply the risks in a major
development project. As a rule, no project should try to adopt more than one new technology, and
a Java project can be deceptivetwo or three new technologies can sneak in under
the cover of learning a new language.
Evaluation of your current situation is thus more complicated than just language experience. Evaluate
the depth of experience in object-oriented programming, in interactive and event-driven applications,
and in distributed applications. Pay special attention to project experience as opposed to simply
having taken a course somewhere. With little project experience under your belt, a
combination of preliminary instructor-led training and mentoring on pilot projects is the best
combination. Developers who participate in the pilot projects can act as mentors in subsequent
projects, with new developers requiring just preliminary classroom training.
WHO NEEDS TRAINING?
Where migrating to Java includes migrating to object-oriented development, or where the contemplated
projects use significant new technology, managers as well as developers need to be trained. Managing
an object-oriented project requires an understanding of at least the requirements definition aspect
of object-oriented analysis, an understanding of iterative development, and a different set of progress
measures and milestone evaluation metrics.
Staffing for object-oriented development requires software architects and class designers to acquire a
thorough grounding in object-oriented analysis and design as well as the Java language and packages.
Again, a simple language course covers only a fraction of the material.
Architects must understand a new application organization and a long list of issues: Web architecture
and its architecture patterns, security of network transactions, and database integration.
WHAT IS THE BEST TRAINING MEDIUM?
For an experienced object-oriented developer with project experience in the kind of development you
wish to undertake in Java, the simplest and most direct approach is often to use Web-based or
computer-based training. Such a developer knows exactly what he needs to do; he is primarily interested
in a quick overview of language and library features and pointers to where to find the details. Because
of the very wide range of potential material, however, instructor-led training has the advantage that
the instructor can adapt the material to the specific interests of the audience.
Learning to assemble applications out of beans with a bean editor and interface designer requires
training in the principlesmost easily acquired in a short period of instructor-led
trainingfollowed by extensively familiarizing oneself with the available components. This can
be found in various repositories and vendor home pages around the Web.
TRAINING ALTERNATIVES
For one who is experienced in the technology area, whether it is object-oriented programming,
interactive and event-driven application development, client-server architecture, or component-based
development, the best medium is one that quickly imparts an overview of the newly-available means to
familiar ends. For this person, self-directed learning: Web-based, computer-based, book-based (remember those?), or a short, focused, instructor-led course is often the best approach.
For one who is learning both a new means and a new end, instructor-led training is important because
the instructor can adjust the material to the students experience and mind-set. Most students
need to see a new concept expressed in a variety of ways before the penny drops.
Experienced instructors accumulate a large repertory of examples and analogies to get students
over the many thresholds in learning a new topic.
When a whole new paradigm is being taught, instructor-led training goes only so far. Experience is
the necessary teacher, and an experienced mentor guiding a pilot project will accelerate the process
of absorbing a new discipline. In this approach, development staff usually participates in
instructor-led training appropriate to their role before beginning the development project;
thereafter a mentor will assist at each stage of development in adopting the lessons of the course.
MIGRATION PATERNS
To clarify the training and migration approaches that can be taken, several migration patterns
can be described. Each migration pattern addresses the unique training requirements for different
groups. Well present the different migration patterns by giving examples from our client base.
For each pattern, well define the background of the group, their objectives, and a suggested
migration strategy.
PATTERN 1: WEB-BASED APPLICATION DEVELOPMENT
Audience: Mainframe developers with COBOL experience.
Objectives: Develop applets and Java-based CGI programs or Servlets.
Company Context: Read data from a DB2 mainframe database.
Migration Strategy: Combination of CBT and Instructor-led training with mentoring.
- CBT: Internet Development and HTML.
- Instructor-led course: Introduction to Java Programming for developers and
Fundamentals of Java for project managers.
- Instructor-led course: Object-Oriented Development for developers.
- Instructor-led course: Advanced Java and Web Programming for developers.
- Weekly meetings during which recently published material is presented in seminar form.
PATTERN 2: BROAD-BASED CLIENT/SERVER APPLICATIONS AND NETWORK MANAGEMENT
Audience: Systems and applications developers, most with C and some with C++ experience.
Objectives: Use Java applets in Web clients, Servlets in Web servers; write portable applications.
Company Context: Large range of hardware, software, and networking products requiring Web-based
management; extensive use of Internet internally and externally.
Migration Strategy: Periodic internal course offerings; general availability of CBT and WBT.
- Instructor-led courses: Introduction to Java Programming for developers and
Fundamentals of Java for project managers.
- WBT: Intranet and Distributed Web Application Architecture Patterns.
- Instructor-led course: Object-Oriented Development in Java for developers.
- Instructor-led courses: Half-day Advanced Topics (Threads, Coding and Design Patterns,
JDBC, JavaBeans, RMI, Security, Management, Network Programming, etc.), as required for the specific
project tasks at hand, for developers who have learned the Java basics.
PATTERN 3: CLIENT/SERVER CUSTOMER SERVICE APPLICATIONS
Audience: Analysts, architects, and developers primarily using Visual Basic and
PowerBuilder for front ends, and using C and some C++ in servers.
Objectives: Use Java in clients and servers where appropriate. Adopt applets and Servlets
for Intranet and Extranet applications.
Company Context: Developer of client/server database applications. Large internal
investment in relational database skills and library support. Legacy relational databases that
need to be accessed.
Migration Strategy: Broad adoption of object-oriented development; carefully targeted
adoption of Java in specific client projects. Training usually applied in the context of specific
projects using the new technology.
- Instructor-led course: Object-Oriented Analysis and Design for analysts, architects,
and developers.
- Mentoring and workshops during requirements analysis.
- Instructor-led course: Introduction to Java Programming for developers and
Fundamentals of Java for project managers.
- CBT or WBT: HTML Programming and Web Page Design.
- Instructor-led course: Java Applet Programming for Web GUI developers.
- Instructor-led course: Distributed Application Development in Java for developers with
emphasis on JDBC, component technology, and JavaBeans.
CONCLUSION
The challenge in migrating to Java is the very wide range of technologies covered by the Java
packages and the wide range of applications that can benefit from them. The keys to success are
systematic exploration of the possibilities and a multi-faceted approach to training your staff
that leverages their current skill set and background.
|