The ACCU 2005
Pre-conference Tutorial Day
In order to complement the impressive programme featured at the ACCU Conference 2005, we are holding a pre-conference tutorial day. Come to the event a day early, and benefit from a full-day tutorial from a leading industry figure. A new feature of the conference, this year we are proud to present tutorials by Jim Coplien, Kevlin Henney and Michele Simionato. This is a great opportunity to expand your technical knowledge, by learning from the very best.
Organizational Patterns of Agile Software Development
presented by Jim Coplien
Good agile development in fact goes hand in hand with minimalism in process and method. This perspective can lead to three unfortunate assumptions: that agility equals anarchy, that agility should be a management initiative, and that one needs to adopt wholesale practices from a canned "agile" methodology. All of these things unnecessarily make agile development a burden rather than an aid.
This seminar will teach you how organizational patterns provide a framework for agile, disciplined development that serves all roles with practical guidelines for organization and process. Historically, these principles are the foundation of contemporary Agile approaches: The organizational pattern program at Bell Laboratories was the inspiration for SCRUM, has been acknowledged as one of the foundations of Extreme Programming, and influenced other early Agile leaders such as Alistair Cockburn. These foundations convey insight into the key principles of what it means to be an agile organization. Beyond the principles are the patterns themselves--concrete, practical advice for effective software development. The patterns have a strong track record of success over the past decade, including projects whose stories have been told in the trade literature.
Last, we will examine where XP has departed from some of the early Agile foundations and why it isn't really "agile." Though many of its practices are common to the organizational patterns, it is how the practices are combined in XP that undermine agility. XP has little room for reflection about principles, values, activities, or processes; it takes an all-or-nothing stance that stifles flexibility; and it does not accord a place for design foresight or domain knowledge either at the individual or project level. Organizational patterns overcome these liabilities to offer an alternative to high-ceremony methods such as XP.
Prerequisites: experience working on or managing a software project
Consolidated C++
presented by
Kevlin Henney
So,
you've got what you feel is a good enough understanding
of much of the mechanics of C++ and the elements of OO, and your
knowledge is growing all the time. But you've still got some doubts,
some questions and some gaps that you're not totally sure about. If any
of the following concerns are yours, then this tutorial might help you
address your questions (as well as trigger a few more):
- No trouble with the mechanics and principles behind inheritance, but still have some questions concerning comprehensibility, practicality and evolution of class hierarchies?
- Still not comfortable with the idea of exceptions, or still seem to be passing error codes everywhere, even though you know the key features and keywords in C++'s exception-handling mechanism?
- Interested in
templates and the STL, or feel that
this part of C++ is for advanced programmers only, but perhaps afraid
that your code will be lost in an XML-like blizzard of angle brackets?
Class hierarchy
design, exception handling and safety,
and pragmatic, comprehensible use of the STL will be among the topics
covered during the Consolidated C++ tutorial day. Common pitfalls and
myths will be highlighted, and more advanced topics will be touched on
in context as appropriate.
Wonders of Today's Python
presented by Michele Simionato
Everything you always wanted to know about Python but were afraid to ask!
In the last few years, with the advent of the new-style object model and of iterators, generators, decorators and more, Python has undergone a silent revolution. Many of the idioms, patterns and techniques of the past have been replaced by better solutions. You may feel that the language is evolving at too rapid a pace for you, or that your Python skills are becoming obsolete. In this case don't worry: this seminar is for you!
For this lecture, I have picked some of the most interesting new paradigmas in modern Python, and I discuss them through examples big and small, together with a thorough grounding in the relevant language mechanisms.
Look at the variety of design choices that today's Python makes available to you, and learn when you should use the advanced techniques presented here and when you should not.
Iterators and Generators underlie Python's new approach to looping -- it's not your grandparents' loop any more! Learn how to encapsulate the underlying logic of your control structures and make it reusable. See how itertools can turn the "abstraction penalty" typical of other languages into an abstraction _bonus_, making your code faster at the same time as more abstract and general.
Learn about Design Patterns and other Object-Oriented idioms and mechanisms. Python is a multi-paradigm language, but OOP is its core paradigm. Understand the pros and cons of your alternatives: When should you use closures, rather than callable instances? When is inheritance OK, and when is it better to hold-and-delegate? What classical Design Patterns are built-in to Python, and which others are appropriate to consider, when?
Descriptors and Metaclasses are the underpinnings of today's Python's OOP -- Python exposes them and lets you customize them for your own purposes. Add Decorators, the new syntax just introduced in Python 2.4 (a systematic application of a crucial use case for higher-order functions), and you'll see why the working title of that chapter was "Black Magic"... Learn important use cases for each of these advanced mechanisms.
Prerequisites: you need a solid grasp of Python fundamentals to start with. Course objectives: you'll walk out of this a Python wizard!