Instructor-led Courses#
I began teaching technical courses in the corporate-training market in 1996 when I was authorised as trainer for various Sun Microsystems training courses. Courses I have taught include:
- Java Programming Language: A five-day course aimed at introducing experienced programmers to the Java language. Participants are not assumed to have any background in Object Oriented concepts, but are expected to be familiar with standard programming language constructs.
- Java Programming Language Workshop: A five-day workshop that introduces participants to typical business-application development tasks - database connections, servlet programming, basic OO design - in a hands-on environment. The workshop consists of a small development project that delivers working code, rather than a lecture-style course, and is a hand-on experience. Participants should have prior working knowledge of the Java programming language.
- Design Patterns Workshop: A three-day workshop introducing participants to OO design patterns, with emphasis on the "Gang of Four" patterns catalogue. The workshop includes an overview of common patterns and a structure for classifying patterns, and aims to equip designers with a common vocabulary and re-usable skillset for common design cases.
- Object Oriented Analysis and Design: Introduction to OO analysis and design. Strong emphasis is given to teaching OO concepts and principles, and Mike adds value by giving strong guidance on design patterns and principals that encourage high-quality software design.
- Distributed Architecture Workshop: A seminar-format 3-day workshop, aimed at knowledge-sharing amongst highly experienced software architects and designers. Rather than a lecture-style or practical workshop, this seminar aims to provide a structured forum for participants to share their knowledge and experiences in the deployment of inter-application messaging systems, distributed-object architectures, security solutions, object-relational bridges, and deployment and distribution strategies.
- Architecting and Designing J2EE Applications: A 4-day course targeting experienced developers familiar with the mechanics of J2EE applications who wish to explore further the higher-level challenges of architecture and design. The course equips students to develop robust architectures for enterprise Java applications using the Java Enterprise Platform (J2EE). Enterprise applications developed using a strong architecture as guide can better accommodate rapid change and growth. The course is in the format of a round-table discussion workshop. Participants are expected to share their own experiences and learning.
I firmly believe that instructor-led training only really adds value if the instructor is also an experienced practitioner of the subject. That way participants gain the benefit of the instructor's experience in the field; theory becomes tempered by the real-world. The instructor is able to say "The book says x, but in practice x turns out to not be very useful unless you also do y" or, sometimes "X is really not very useful."
Full-time instructors who do not actually practice their subject are short-changing their students.
Workshops and Seminars for Experienced Practitioners#
For a long time I have been keenly aware that there is a shortage of relevant continuing education for highly-experienced technical people. Beyond a certain level of experience and expertise, almost no training is offered beyond product- or technology-specific how-to-ware.
Its almost as though the world says, "Once you reach this level of competency you're on your own."
Yet there remains a deep hunger amongst experienced practitioners to learn more, to share their experiences with similarly-experienced colleagues. Because nobody knows it all! An instructor-led lecture format is ill-suited to addressing the training needs of experienced experts: chances are that the course participants know more about the subject than the "trainer".
The solution is a workshop format where participants discuss and argue solutions, recount their own experiences and share knowledge around a given set of topics. The workshop facilitator has the tasks of providing structure to discussions, pacing and guidance, and summarising findings.
The key to these workshops lies in having participants from a variety of backgrounds and client companies in each workshop, and limiting the number of participants from any single company. The true value-add of the workshop emerges from the cross-pollination of knowledge, organisational styles, processes, constraints and problems.
I have run a number of such workshops in the past, and participants have, without exception, enjoyed the workshops and drawn fantastic benefit from them. Facilitating these is not a task for the ego-ridden or faint-of-heart, since the facilitator also needs to have a high level of expertise in the subject but can expect to be challenged by equally experienced participants. It is tremendously rewarding, and a great learning experience for everybody who takes part in the workshop.
I offer workshops on the subject-areas of
- Distributed Systems Architecture, Design and Implementation
- Service-oriented Architecture and Design
Mentoring and Consulting Services#
As much as Project and Development Managers might wish, learning "OO Thinking" takes time. Concensus among experienced teacher of OO technologies is that it takes 9 months and three lightbulb moments[1].
Software team managers might hope that sending their programmers on a five-day course will teach them "enough" of what they need to know about OO programming and design. At the (all-too-real) risk of losing business to someone with a "more flexible" sense of morals, I am sorry to report that this is nothing more than a pleasant, but misleading, fiction. There seems to be nothing anyone can do to shorten this learning time, for it truly is a different way to think about structuring software: a way of managing complexity so that we become able to build much more scalable and robust systems, more complex systems, systems with much lower error-rates. But something in the makeup of the human brain requires time to absorb the lessons.
This means that the traditional Five-Day Course on OO Stuff has limited utility. It certainly remains very useful as a "kick-start to the learning process", but, in order to be of lasting value, must be followed-up with a solid, well-planned program involving real projects[2], overseen and assisted by an experienced OO guide. Initially a mentor's involvement can be quite high, but they should not take over the design and implementation responsibilities of the development team - quite a hard thing for some people to resist. A mentor remains (always) a teacher and guide. Their involvement should be expected to taper off over time until, after 9 to 12 months, the development team should be self-sufficient.
Your team should end up with not only with straightforward design knowledge, but a sound understanding of what elements constitute "good" design - an acquired aesthetic sense of when and how to apply appropriate solutions to particular problems, because nothing is "one size fits all".
Please contact me to tailor a learning program suited to your unique requirements.
[#1] Nine Months?#
A few teachers differ in their opinions. Some say that it takes "eight to ten months". I won't argue if you prefer their version...
[#2] Real Projects...#
Real projects deliver real business value to real deadlines based upon real requirements. I don't believe that much value is delivered by doing "toy" projects. On the other hand, I strongly recommend that you don't ask your novice OO team to deliver that high-visibility, mission-critical app that everyone's been wanting for years.
CV Training
