Training/Education
Our Philosophy
The link that got you to this page was labeled "Training," but we don't do that. We don't instruct, either. We educate. (If we hadn't called the link "training," you might not have found the page.)
Training/instruction and education are fundamentally different activities. Training is usually done by professional "trainers," most of whom have little or no first-hand experience with their subject, presenting "courseware" developed by someone other than the trainer, to trainees. Professional trainers are just that: trainers. They are not programmers, designers, or software engineers. They read slides to you, and if you're lucky, they can answer standard questions with stock answers. Training is done with rote repetition, standardized exercises, strict agendas.
Education, on the other hand, is a relationship of peers. One expert presents what they know to other experts (who just don't happen to be experts in the particular topic that's being discussed). Educators must have the deep understanding of their subject that comes from first-hand experience, and they must have the ability to communicate that understanding effectively to their students using a variety of techniques. The must have the authority that comes from hands-on experience. They must be able to defend concepts that seem radical to their students by citing real-world experience (good and bad) in realizing those concepts. They must be able to discuss topics that aren't in the slides, but are relevant to the discussion at hand.
Our classes are unique. They're taught by a very experienced and highly skilled designer and programmer: Allen himself. His considerable hands-on experience with the subject matter gives his classes a depth of coverage unmatched in the industry. He can answer difficult questions, because he's worked through the answers himself in the context of real work. He can speak with a degree of authority that most technical educators simply cannot match.
We are confident that you will find no other provider who can bring your staff up to as high a technical level as effectively (or quickly) as can we.
Our Classes
All of classes shown here are taught in considerable technical depth,
and are
geared to professional programmers.
We can easily customize classes for you to contain any of the
topics discussed in the following course descriptions (and many
other Java topics, as well — ask us). The following "canned" classes
are available for presenation at your site or here in the San Francisco
area:
Object-Oriented Design
| The OO Workshop | This 5-day workshop is the "lite" version of what you'd get if you hire Allen for a full-scale consulting engagement. It's the best way quickly come up to speed on the skills you need to produce high-quality object-oriented software. The Workshop is unique in the industry. Short of hiring a mentor, it's the only way that you'll get hands-on experience working with an experienced architect (not a "trainer"). |
| OO Architecture: Learning Design Patterns by Looking at Code | This two-day seminar teaches you design patterns and object-oriented architecture by analyzing real-world code, not trivial examples. We'll look at the Game of Life and SQL interpreter in Allen's book as well as a server-side UI framework (that's not in the book). This approach shows you how patterns actually appear in the real world, so gives you a real-world understanding that you can't get from the more typical catalog-of-patterns approach. You'll come out of this seminar understanding good OO architecture and knowing, not only what the patterns are, but how to apply them effectively. |
| OO Analysis & UML | This class walks through the the entire Object-Oriented-Design process from requirements gathering through UML diagramming. It covers everything you need to do before implementation becomes possible. |
| Managing the OO Process | This class covers the Object-Oriented design process from the management perspective. We discuss OO concepts, the development process (RUP, Extreme Programming [XP], Agile processes), team structure, and so forth. You'll learn how to provide the support that your programmers need to do excellent work. |
Java
| Introduction to Java | This 3-day (lecture only) or 5-day (lecture and lab) class presents the entire Java language and "core" packages in considerable technical detail. |
| Programming Secure Systems in Java | This one-day class provides you with a solid introduction to security concepts, and teaches you how to apply those concepts to write secure code. |
| Programming Tiger (Java 1.5) | Java's "Tiger" release introduces several significant features to java, including generics, a completely new way to look at Java programming. Generics are not intuitive, however. This class introduces all the new language features, focusing particularly on generics. |
| Taming Java Threads | It's simply not possible to write production Java code without a through understanding of threading. Unfortunately, the topic is vastly oversimplified by most books and classes, and as a consequence, much Java code is riddled with difficult-to-find threading-related bugs. This class provides an in-depth discussion of Java threading, both the mechanics and traps-and-pitfalls. |
| Servlets, JSP, JSTL, and XML | This class addresses the various technologies available on the Java-enabled web server. It walks you through the architecture and technology of the web-based "presentation layer," covering everything you need to build server-side applications (and web sites) that expose client-side interfaces. |
C++
| Introduction to C++ | This 4-day (lecture and hands-on lab) class presents the entire C++ language in considerable technical detail. |
