Scheduled sessions (click to sign up):
The OO Workshop
3-days, hands on
The best way to learn OO is by actually doing it. The centerpiece of this 3-day workshop is an extensive hands-on exercise in which you actually design a real-world OO system from scratch under expert guidance.
The workshop is as much a mentoring opportunity as it is a "class." No courseware or online alternative guides you through the entire design process in this depth under the supervision of an acknowledged expert in the field—Allen Holub himself.
Read comments by past participants.
Background
When it comes to OO, many people just don't "get" it. Procedural ways of thinking and object-oriented ways of thinking are at odds, and many people strongly resist OO architectures when presented with them. Some of the worst (poorly structured, hard-to-maintain) "OO" systems have been built by experienced C++ and Java programmers who don't understand OO.
This workshop shows you how to do it "right." You will come away from this workshop with a sound grounding in OO concepts, process, and techniques, well able to proceed with a real design effort on your own.
The extensive hand-on exercise at the center of the workshop gives you the experience you need to master the "inside-out" thinking characteristic of OO systems. It is a proven method for coming up to speed on the concepts quickly and effectively.
The problem.
- Computer programs don't often meet the needs of their users.
- They are larger and more complex then necessary.
- They take longer to build and have more bugs than they should.
- These systems are poorly structured, and cannot accommodate new business requirements as they emerge.
- The programs are delicate and difficult to work on.
An OO approach to programming directly addresses all of these problems.
Object orientation is poorly understood by many programmers who use OO languages.
Many systems that purport to be object oriented aren't. This disconnect translates into missed delivery dates, programs that don't satisfy their users, and programs that are expensive to build and maintain. Simply writing in Java, or using EJB and Struts, does not make the system object oriented.
Why do people take the pseudo-OO route?
Programmers usually take a how-to approach to learning.
OO is a fundamentally different way to program. Many programmers learn by mimicking existing systems, but many such systems (including extremely popular libraries like Struts and EJB), are not particularly well structured. The programmers don't know that, however. Not having experienced the OO-design process, they can't see how they can modify the code that they're writing today to work in an OO fashion. The define what they do now as "right."
The solution.
To learn OO thinking, you must experience the entire OO process in a supportive hands-on environment. That's exactly what we do in the workshop, teach you the concepts and process by actually doing it.
- You will learn why OO seems to do things in a backwards way.
- You will learn how to approach programming so that these seemingly backwards concepts seem natural.
- You will learn how to approach the solution in an OO way from the very beginning, avoiding most of the traps and pitfalls that snag procedural programmers.
The workshop is taught in an informal style that encourages lots of interaction. Discuss issues intelligently in a structured environment, isolated from the religious wars that occur in online discussion groups and in the work place.
The class is small, so you have the luxury of "chewing" on a concept until it's fully digested, with a lot of one-on-one interaction with the instructor.
The Details
We start with a half-day lecture that goes through the entire process so that you can get a wholistic picture of the essential concepts and processes.
We then actually solve a real-world problem from beginning to end over the course of three days. We start with use-case analysis, and take the process through the static and dynamic modeling. (We always work on a real problem brought in by one of the students.)
We cover the entire design process, from problem definition, through use-case analysis, to a design sufficiently detailed that you can code from it. We develop a "pure" OO solution using proven techniques and tools (an Agile variant on the "Unified Process," the "Unified Modeling Language" [UML] 2.0, etc.).
We also work hard on learning the "inside-out" thinking that characterizes OO systems. You will learn how to break out of the procedural mold.
In actually pursuing the design, we perform many activities, often in parallel. Though there is a one-day introductory lecture, most of the material that you would normally learn in lecture is taught in the context of the hands-on exercise. That is, we learn a process or notation, and immediately put it into practice.
We will cover the following material over the course of the week:
- Problem Definition.
-
Working in the Problem Domain.
Developing the Problem Statement.
The UI as a design tool.
- Use-case analysis (user "stories").
-
Developing use cases.
Use-case templates.
Use-case-based UI development.
UML activity diagrams.
UML use-case diagrams.
- Dynamic Modeling.
-
Objects and message structure.
Implemenation hiding.
Eliminating unnecessary complexity and coupling.
UML sequence diagrams.
UML collaboration diagrams.
UML state diagrams.
- Static Modeling.
-
Interfaces and polymorphism.
Class organization, structure, and hierarchy.
Building associations based on dynamics behavior.
The role of the database.
UML class diagrams.
- Architecture
-
Web vs. client-side architectures.
Leveraging existing pseudo-OO libraries.
Integrating with the Database.
The OO-Design Workshop is by far the most effective way to learn OO design. The practical experience you get makes the methodology sink in. You'll come away from the workshop with the in-depth understanding required to hit the ground running.
Prerequisites
Though this class is fundamentally about creating computer programs, it is not a programming class. Programmers, technical mangers, and business analysts have all completed this class successfully.Nonetheless, at least a reading knowledge of an OO programming language such as Java will be helpful in understanding some of the concepts. (I guarantee that you will not be lost if you don't know these concepts or bored if they're familiar. We look at the concepts in a way that will probably be unfamiliar to you, and we talk extensively about the traps and pitfalls of things like derivation — topics often not covered in other classes.)
In-house Presentation
We are happy to present the workshop at your facility, and we offer a group discount. Contact us for details.Public-Class Locations, Time, Accommodations
We present public sessions of the OO Workshop periodically. We usually hold public sessions of the workshop in Berkeley, California, either at the Berkeley City Club or at our offices, depending on the class size. Classes run from 9:30 AM to 4:30 PM. If you're coming in from out of town, here's a list of accommodations that are close by.
In-house Presentation
The OO Workshop is one of our most popular classes for presenting in house. In addition to the three-day version, we also provide an extended 5-day version that covers agile process as well as OO-design issues. The 5-day version also provides more time for the hands-one exercise. We offer several discounts for in-house presentation, depending on location and class size. Call or email us for pricing.Cost, Etc.
Public sessions of the 3-day workshop cost $1495.00/student. We offer a 10% discount if you enroll four or more students. We also offer a multi-class discount if you attend both the workshop and the immediately-following design-patterns class.
Cancellation: If you cancel 30 or more days before class starts, we will refund your tution, less a 10% processing fee. For cancellations less than 30 days in advance of class, we will credit your tuition towards a future class of your choice, but will not issue a refund.
We may cancel the class if enrollments are too small. We will notify you of a cancellation at least one week before the first day of class. If you're flying in from out of town, we recommend that you purcase a refundable ticket or get trip-cancellation insurance.
