Julien Delhomme’s Blog

September 23, 2008

Valtech Days 2008– Paris, 21 et 22 Octobre

Filed under: Agile, Conferences, Design, Valtech — Julien @ 5:13 pm

Valtech Days 2008
Une nouvelle édition des Valtech Days se déroulera les 21 et 22 Octobre 2008 à Paris.
De nombreux séminaires le 21 et le 22, pour renouveler l’expérience réussie de l’année dernière, un Open Space Technology.

Je vais y tenir deux sessions.

Etes-vous prêts pour la production?
Certains ont peut être connu un tel projet : un logiciel correspondant (grâce aux pratiques de gestion des exigences) de façon satisfaisante aux besoins de l’utilisateur, une conception aiguisée, des métriques de tests augurant une qualité certaine… Un succès assuré !
Est-ce si certain? Hélas, pas forcément. N’oublions pas que c’est de son comportement en production que dépend le succès du logiciel. Pour l’Agilité, c’est d’une grande importance car l’une des clés est d’être capable de proposer rapidement et de façon continue un logiciel en état de fonctionnement.
Nous présenterons lors de cette session un ensemble de pratiques faites pour ne jamais perdre de vue cet objectif du projet : une vie pérenne en production.

La programmation concurrente restera-t’elle affaire d’expert?
Il est assez rare, pour la plupart des développeurs, d’être confrontés directement à l’univers intimidant du threading. C’est probablement une chance car la programmation concurrente est une activité assez complexe qui est restée jusqu’à présent réservée aux initiés. On assiste pourtant à l’apparition de nouvelles techniques destinées à un futur qu’on nous annonce fait de multiples « threads » et de multiples « cores ».
Pendant cette session, essayons d’y voir plus clair en faisant un tour des technologies en vogue (Erlang, MS Parallel Extensions, Scala…), des modèles et des paradigmes existants et émergeants et essayons de voir si ces techniques peuvent se rendre accessibles au plus grand nombre.

January 17, 2008

You are not gonna need it: isn’t that, the simplest thing that work?

Filed under: Design — Julien @ 4:52 pm

Two things brought me to write this post. The first one is the reading of a series of articles about immutability by Eric Lippert. In particular, Eric Lippert presents a clever implementation of an immutable binary tree.
This immutable binary tree has a powerful property: it does not allow creating cycles. You can’t make of an element a child of one of its descendants. It is an “emerging” structural property of the data structure. And I insist it is a simple, straightforward code. Let’s say it: Eric Lippert Kept It Simple and Smart.

Here is the second thing: last week, I attended a Coding Dojo organized by Valtech. The principle of the Coding Dojo is simple: we choose a problem on which we practice Test Driven Development and pair programming for example. The aim is to experiment, to learn and to share observations on development practices (more than to solve the problem). The pair [developer/reviewer] works in a time-boxed round under the eyes of an observer and then, alternatively, the roles are switched.
While the problem was exposed to the group, I quickly had a big picture on my head, identifying the main modules and responsibilities. (The chronometer started) I began to expose my first impressions to the team, “Perhaps we could start with..” Halt! Apparently I had gone too far. My team-mates preferred to cling to an important principle of TDD, “do the simplest thing possible that works” and do it right now. One pulled me back, stick my head towards our IDE and quite quickly, all together, we produced a piece of code. A piece of code that do.. something.., rather primitive but, well, it was there.
A concession, a compromise, a least, we had our first lines of code. Ok, a good point for TDD.

Thus, here is which my observation was: it is more difficult to make accept a vision than to do the simplest thing possible! :-)
Actually, I cannot do without a continuous test-first approach. I practice in a TDD-like manner, more strictly at the beginning of the implementation. But for me, the moments of reflection at the beginning are essential. And it takes always the time that it takes.

Then, this is the point. Let’s imagine this situation: how any TDD mates can approach the following problem: “Design a binary tree that does not allow creating cycles”
One can refactor and refactor (and refactor again), I bet tests will never drive us to an implementation such as Eric Lippert’s one. Instead, we will have a “binary tree that does not allow creating cycles” made of intricate tests, cycle detectors managed with run-time exceptions.
After all, what could justify such a specific data structure? Perhaps we ain’t gonna need it! And anyhow, is this “emerging structural property” really testable?

Sadek and I thought of this image to describe the architecture that can be produced by a TDD approach to resolve certain problems: “a building made of disparate, ill-assorted blocks which would be functional but of a completely indistinct aspect”.

November 2, 2007

Are you really sure Agile is not bad for Design?

Filed under: Agile, Design, JAOO, Lean, Scrum — Julien @ 11:47 pm

It was striking to notice the important number of speech on software architecture at JAOO. Most of them - that’s interesting - placed in a natural way (sometimes implicitly) the architectural concerns in the contexts of Agile processes.

Without basically putting back into question the progress carried out thanks to agile methods, architecture was on the front of the scene. Several speakers handed forward the role of the architect. Such an emphasis rang in my opinion as a reminder of important values to beware not to leave behind.

Eric Evans was among the ones who noted this tendency. He said during the end panel that for him, “the theme of the conference had been the balancing of agile, iterative processes with design and architectural values”.

Note: The other main subject of JAOO was “how make business experts and programmers understand each other, how make them work closer together”. Domain Driven Design, Domain Specific Languages and Model Driven Development were addressed a lot. The watchword was given by Charles Simony: “Bring domain orientation at a new level”.

“Are you really sure Agile is not bad for Design?” Actually it’s quite important, because in order to be sustainable and successful, agile methods must be able to deliver software consistently and to achieve required quality… and quality problems are often the result of inappropriate software architecture! Performance, for example, dominates the user experience. Bad performance affects the perception of quality. Thus, Agile methods must be able to deal with design and they must be able to scale.

So, would architecture and design be neglected? In particular, are Agile practices detrimental to any important things and could Agile practices make us loose the focus on these important things?

These questions are not new. It is almost a custom to mitigate practices against experience or studies, hounding weakness of On-site Customer, Pair Programming, TDD, Iterations, for example. Sometimes, it sounds like gossip or gratuitous fuss. On the other side, some claims that “of course, Agile is sustainable when things are done well”. Sometimes, it sounds like autosuggestion J.
Anyway, these are healthy challenges. Philippe Kruchten, in Voyage in the Agile Memeplex: in the world of agile development, Context is key (pdf, review on infoQ), underlines that counterbalancing beliefs and considering the context of assertions (”source and applicability”) is essential to decipher messages because they are often reduced to their “essential bones”, “to the slogan level”. Perhaps the most important is to not suffering from what Kruchten calls “Agilitis”. James Coplien talks about blindness beliefs and religious resurgences (Religion’s Newfound Restraint on Progress, review on infoQ Religious Industry).

Architecture and design won’t be neglected and Agile practices are not detrimental to design 1) if we care explicitly and consciously, 2) if we consider context. A well-known drawback is to believe that design will draw by itself. Appropriate design certainly won’t emerge thanks to the faithfully adoption of any given practice.

Exclusive bottom-up approach is a pitfall…
This is a point to be aware of: Agile processes accustomed us to deliver tangible value incrementally, and to attack pieces of code in order to gradually increase the implemented functionality. And actually, it is often difficult to divide architectural problems into small pieces and solve them bottom-up. Kevlin Henney, in his speech at JAOO called “Performance Art” underlined that some concerns are difficult to understand from a modular perspective: “For example, performance is often an emerging property of the system”.
Things are even more difficult when there is no clear shared vision of the software architecture over the team.

The comment of James Coplien during his session “Scrum Architecture” created a controversy: “TDD has been proved to erode architecture”. Hard to go against orthodoxy, isn’t it!
What he essentially criticized is TDD as a design method. An exclusive Test Driven Development is not suitable for design because of its bottom-up nature. Moreover, TDD is not known to be good at finding bugs.
The goal of Unit testing must be to define system boundaries and to specify invariants (Design Driven Testing: Using tests as specifications of system’s invariants and contracts design – Sadek Drobi)

… So, maintain a big picture of the design, by leaning on reviews…
The need for maintaining a big picture and a broad goal all along the process is obvious. Modeling meetings and architecture reviews (work on Ubiquitous Language, application domain analysis, overall design) allows adapting evolutionary design and must be supported by the development process.
Mary and Tom Poppendieck propose in their book Lean Software Development, An Agile toolkit to “see the iterations as a prototype of a piece of the overall design […]. An iteration should be considered a demonstration of a possible solution”.
Cleanroom software engineering goes further and put an emphase on quality: “the quality of each increment is measured against pre-established standards to verify that the development process is proceeding acceptably. A failure to meet quality standards results in the cessation of testing for the current increment, and a return to the design phase” (Wikipedia). According to Kevlin Henney, such pre-established standards should be ratios (e.g. 90% of the database queries must be under 0.30ms).

As a consultant, Rebecca Wirfs-Brock conducts software architecture reviews. She had a session at JAOO, “lessons learned from architecture reviews”, where she gave useful advices to software architecture reviewers and architects. Her propositions should also apply during retrospectives and design meetings.

Rebecca underlined that the important is the customer value of an architecture and to be able to evaluate it. “As a reviewer, I have to be able to visualize the benefits of the architecture”. Quality can be an operational requirement and such kind of requirements have impact on design and architecture, e.g. extensibility of the system leads to develop adapters or plug-in components. In an Agile process, quality and architecture-related requirements must appear as items in the iteration backlog and must be demonstrable.
The reviews must involve right people. Even Product Marketing can help to take a technical decision.

Rebecca recalls that architecture must support unhappy parts of business Use Cases: “Propose “rainy days scenario” early: what happens when things go wrong? What should be done? It is hard to say if not addressed at the right moment.

… And seek convergence, relying on architectural models or prototypes…
Kevlin Henney also suggests using architectural models (to get a sense of what bottlenecks might exist) and partial prototypes (they provide empirical feedback). Partial prototypes support option thinking and set-based design (Lean). Set-based design is a way to reduce criticality. It leads to convergence rather than emergence. “The entire problem is divided into segments to be addressed concurrently by small teams. The design process converges on a solution, rather than selecting one at the onset” - Mary and Tom Poppendieck, Lean Software Development, An Agile toolkit.

During the end panel of JAOO, Eric Evans described a way to design the architecture of a system. You should work from realistic scenarios that architecture should support. You choose them to illustrate the hard part of what they are doing. Over time, you evaluate if you can continue to work with these concrete scenarios. This is a key to judge if your solution is “simplistic”, or if you have excessively complicated things.
Language patterns, Architectural patterns or Integration patterns (see DDD patterns, Layered Architecture, Anti corruption layer, Shared Kernel…) must support these realistic scenarios while fitting naturally the domain. There is no « one size fits all ». For Rebecca Wirfs-Brock, the goal is to achieve right architecture quality (no over nor under-engineering).

…while supporting the requirements and domain analysis…
Requirements must drive the choices of Tools and Roles that structure the design. For James Coplien, Use Cases are an essential tool to express suitably the user’s conceptual model as a whole coherent set of behaviors, responsibilities and interactions. Here, Use Cases are most efficient than XP User Stories that are more atomic and sometimes unhappily decorrelated one from each other.
Application Domain analysis must consist of a Commonality / Variability analysis (structure, meaning, state, algorithm…), identifying families and appropriate paradigm.

… without leaving operational requirements aside…

While in Agile processes we focus on delivering value to the customer, some operational requirements are difficult to make explicit. However, leaving them aside is a dangerous pitfall.

As Kevlin Henney says, “Premature optimization is the root of all evil” is too often understood… “Optimization is the root of all evil”! The danger is that, where performance matters, it is left until too late to be able to address it. So, because performance slices and crosses functionalities it is essential to evaluate performance by iteration. Fix approach is not suitable. Prototypes can help once again.

Kevlin suggested that “Where performance matters, it needs to be clearly stated as a requirement. However, although performance requirements make for good product backlog entries, they do not make for good use cases or user stories—they are cross cutting, but we still need to be able to define what “done” means ” (Definition of Done).

He recalls that testing is a way of showing that you care. It lends significance to a requirement, making it concrete and visible. Moreover, tests reveal all assumptions you made and this is essential to improve performance.

October 2, 2007

JAOO2007 – What makes code beautiful

Filed under: Design, JAOO — Julien @ 11:23 pm

Marcel Molina Jr. – What makes code beautiful… and why does it matters?

Marcel Molina has a background in literature. He especially looks for comparisons between natural speech and programming languages.

One talks about beauty in Ruby or functional languages. What? Why?

He goes back through History to search what defines beauty.

  • Pythagoras found it in numbers. Harmony, pleasant and successful things have structural qualities (applies in music, architecture…)
  • Plato (the truth, the good and the beauty are the highest concepts)

    “The ability to grasp mere appearances cannot lead to adequate understanding. At its worst, the appreciation of beauty can mire us in the world of sense experience… but at its best it can lead to the understanding of goodness.”
  • Rousseau (well ordered nature)

    “I have always believed that good is none other than Beauty in action… and both have a common source in well-ordered nature.”
  • St Thomas Aquinas
  • [To be continued …ad lib.J]

Marcel proposes us a tool to evaluate beauty. Let’s consider:

  • Proportion (size of constituent parts)
  • Integrity (something that fulfill what is fulfilled for) [Hammer made of crystal]
  • Clarity

Evaluation of beauty is a personal process and a learning process (experience).

Learn different languages for different viewpoints.
Evaluate Picasso as well as Rembrandt
Try different viewpoints to find the appropriate expressiveness.

As an illustration, Marcel Molina used these criteria to evaluate the efficiency of a sample of code - a kind of pattern matching in Ruby.
Finally, he quoted Kent Beck for whom virtues to strive for are proportion, communicability, readability.

Marcel Molina blogs on Projectionist

If you don’t mind, I will complement by…
Expressivity makes code more powerful: increase productivity, improves quality
Try different programming paradigms; try different styles to express suitably the domain
Use metaphors, well known concepts
Readability is a relative concept (see regular expressions, complex recursions or chatty languages)

That will probably not help you to improve beauty of your code but, concerning Plato, I strongly recommend reading of The Symposium, a wonderful discourse about beauty and love.
Ok. [How these words sound strange to me in English!] Let me please switch language and say it again:
« A propos! Je recommande vivement la lecture du Banquet de Platon, un merveilleux discours sur la Beauté et l’Amour. »

(Better! J)

Valtech Days 2007 – Paris, October 23 & 24

Filed under: Agile, Conferences, DSL, Design, Software Factory, VSTS, Valtech — Julien @ 10:59 pm

Valtech hosts the 3rd edition of the Valtech Days : a 2 days conference in Paris-La Défense in October 23 & 24.

On the first day, various technical talks (24 sessions about Agile, Industrialisation & Software Factories, Frameworks & Architecture)
Among others: DSLs & Language Oriented Programming, Agile Contracts, Test Driven Requirements,… [Full Program (French)]

On the second day will take place an OpenSpace Technology event. Always exciting and friendly. Can be a great experience.

September 30, 2007

JAOO2007 – Professional Developer (Part IV)

Filed under: JAOO, Software Craftsmanship — Julien @ 10:00 pm

Part IV: Ilja Preuss – Find the Inner Doll

It is difficult to find a good definition of being a professional… Be paid for what you doing? Doing something for money? L
Ilja proposed us a metaphor about being a professional to answer what does it means.
Matrioshka: metaphor of the generations of a family. Layers of a developer / Thinking in layer.

The skills doll: your techniques, your tools, your material
The values doll (e.g. for precision mechanic: safety, appropriate precision, economy, cleanliness)
The wisdom doll: Why should I care? Perhaps to gain wisdom
The nurture doll: nurturing and that which has been lived
The inner doll is personal (spiritual?)

How to teach? Not explicitly… just be a right model.

I was touched by the performance of Ilja, and his personality. He seems to be someone discreet and prudish. He undressed the doll layer after layer. At the end, he just let us perceive the inner doll. That incited me to think to a fascinating work of introspection [just be a right model, catharsis].
This presentation was one of the most badly received. Ilja gave us material to think on. Obviously, not everybody was here to make such efforts L ["prêt-à-penser"].

JAOO2007 – Professional Developer (Part III)

Filed under: JAOO, Software Craftsmanship — Julien @ 9:57 pm

Part III: Laurent Bossavit – A journeyman’s tale

Second session of the track “Professional Developer”

Laurent established a parallel between ancient craftsman’s guilds – especially French “Compagnonnage“, cathedral builders and other workers federations since the end XIth century – and software craft community: constituent parts of their identity (traditions, legacy of values, networking structure, tools…) can be recognized in software development or project management. These associations claim mutual help, sharing, continuous improvement and transmission of skills and knowledge.

Actually, I like the social aspect of the idea (e.g. acquisition of skills by imitation and mentoring and the need for recognition of our work from the others… these things that deals with ego and society [mimesis, alterity]) but I was not totally convinced by the whole presentation… I am not sure some aspects of the comparison can apply very deeply. Others seem too universal. Lot of people walked out during the presentation, probably too focused on historical details or because they couldn’t recognize themselves in the comparison.

A point of view can be disputed – and actually, during the presentation, it was! Laurent seemed to suggest that teaching computer science at university was worthless.
The problems of education and learning returned many times during the conference. I already mentioned Bob Martin saying “unfortunately being a good developer is not taught at school” (see Professional Developer Part I).

In the industry, the lack of theoretical knowledge is obvious. Theoretical instruction must be emphasized at university as well as at high schools. Teach an implementation of an object-oriented technology (Java, C#, whatever) for example or any product is insufficient and reductive. Teach abstractions, concepts. Teach that there is something beyond objects! University as a special role to play and that’s why university is essential. Research is essential. If there is a place where software development can be a Science, it is at university, isn’t it? Productivity is the driving force behind industry. University should allow thinking out of normative power of industry and fashions.
This recall me how I was surprised when I read in James Coplien’s thesis (Multi-Paradigm Design) that “[Bjarne] Stroustrup has never called C++ an object-oriented programming language”.

JAOO2007 – Professional Developer (Part II)

Filed under: Agile, JAOO, Software Craftsmanship — Julien @ 9:48 pm

Part II: Kevlin Henney – With Economy and Elegance

Wednesday morning, Kevlin Henney opened the track on “Professional Developer”.
He really is a pleasant speaker. After the success of this first session, his following session “Performance Art” was full.
These are the main points of his speech:

Definitions
“Our job is to turn a general purpose machine into a specific one”
A nice quote: the client: “I would like something… general. (J). Be able to… do lots of different things…” – “Ok. Take a compiler!”

It is natural for any discipline to define itself by analogy with others (metaphors), however the notion of is like is not the same as is (need for breaking the metaphor).
The mistake has not been in treating software development as a kind of engineering but…

  • But in assuming that is was a form of physical engineering (it is a kind of informational engineering)
  • But in assuming that engineering was synonymous with plan driven (i.e. imposition of rigid plans)
  • But in assuming a caricature of other engineering disciplines to compare against and mimic
  • But in assuming that there was no art, craft or sense of aesthetics in engineering

An Emerging Discipline
Problem: Software has been unreasonably successful! There was money, no time for consolidation.
But after a period of expansion and experimentation, we are in a period of consolidation…
With a stable base to build on:

  • Classic topics of computer science
  • Commoditized tools and libraries
  • Patterns for capturing and communicating software architecture and development experience

With clearer thinking about how people work

An Emerging Professionalism
A clearer sense of responsibility
Ways to form communities (discussion groups, open source projects, conferences)

Shared Understanding?

Then, Kevlin began to talk about “Economy and Elegance”:
Economy and elegance are not arbitrary or whimsical concerns.

  • Effective software development involves more than just a focus on functional and operational behavior
  • Recognizing that these qualities have value is part of professionalism

Sufficiency

  • Overachieving, speculative design is weaker and more complex, not stronger and simpler
  • Clarity, ease of use and performance are often achieved by reducing both clutter and hedging

Essential versus Accidental Complexity
Complexity comes from many sources, not all of which are necessary:

  • Sometimes the problem domain is complex, which may dictate complexity in the solution
  • Sometimes it is misunderstanding or insufficient skill that creates complexity
  • Sometimes it is cleverness that creates the complexity — code by über-programmers is often based on speculative generality and gratuitous use of advanced techniques and language features

Avoid Design by committee.

Decremental development

  • Eliminate Waste (Lean Development),
  • Don’t Repeat Yourself (Pragmatic Programming),
  • Once and Once Only (Extreme Programming),
  • Omit Needless Code and Unify Duplicate Code (Programmer’s Dozen)

Refactoring, encapsulation, conversation and libraries help in the search for the minimum. These are hill-descending techniques.
Refactoring is gradual, stable and Goal Oriented.

The Value of Economy
Economy represents care, far-sightedness and elimination of waste (in code & in process)
It is not a principle on its own, but a consideration with many consequent benefits

  • If you want fast code, keep it clean. (”No. Very Clean!”)
  • If you want extensible code, keep it clean
  • If you want testable code, keep it clean

The Value of Elegance

Yes, aesthetics matters! But do not fall in love with a design because it seems particularly fine and clever.
Style is not fashion.
Elegance offers guidance in economy. It places human in the picture, encouraging comprehensibility, care and creativity.

Kevlin concluded his speech with an optimistic note: “We are moving in the right direction.” “Refactoring is mainstream!” J

JAOO2007 – Professional Developer (Part I)

Filed under: Agile, JAOO, Software Craftsmanship — Julien @ 9:30 pm

Part I: Robert C. Martin - Clean Code II: Craftsmanship and Ethics.

Do software developers feel comfortable with their profession? Many of us prefer to introduce themselves as architects or designers. Others expect to be Project Managers. Symptoms? Signs of a bad comprehension of our activity?

Bob Martin opened JAOO conference by introducing a track on the craft of software developer (Wednesday track).
We have to define our profession, elaborate an ethic, a corpus of tools and methods. For him, things are getting better, in particular with the advent of Agile practices.

Here are the main points of his speech:

What makes a Professional Developer?

Discipline
There is a lack of Discipline! L… Agile values are welcome!

Green Band (see on the picture above?)
A symbol of personal ethic and professional pride (I write good code with tests). Can’t remove it.
 

Short iterations to keep projects on track
Cycles to deployable solution (not necessary deployed)

Don’t wait for Definition
In particular, don’t wait for definitions from the customer.
Zeno and the paradox of motion: run after specifications of existing software.

Abstract away volatility (GUI / Business Rules)
No need to put business rules in JavaScript… J

Commission > Omission 
It’s better to do than not: experiment rather than wait for something (e.g. between team A and team B).

Decouple from others! Use mocks, stubs, simulators.
Never be blocked, always find some ways to progress.

Avoid Turgid Viscous Architectures, built by architects who try to solve everything. They create more problems than it solves.
Build simple, focus on problems. The architect must write code.

Incremental Improvement
Clean up day by day. Always check in code a little bit better that it was when checked it out.

No grand redesigns
Let time for usual work, fixing bugs…

Progressive Widening
Build by spikes from the GUI to data. Then, widen them.

Progressive Deepening
Go deep into layers progressively. Start with something that works (e.g. direct GUI to Data).

Don’t write bad code :-) You will immediately be slowed down by bad code. Go fast is go well.
Bad code progressively decline.

Write Clean Code:
What is clean code?? 10 lines. 5 minutes to understand. Read it is obvious. Code that do what you expect.

TDD: Nonsense! I’ve got a brain!
No… Test Driven Development is a fundamental activity. It forces to adopt a style to develop code that works minutes after minutes.
Test is what makes code flexible and maintainable. You can change and clean without breaking anything.

QA Should Find Nothing: don’t use QA to find your bugs!

100% code coverage: Not for managers!

Avoid Debugging: Temptation of leap into the debugger (« follow the debugger! »). Think & understand is better.

Manual test Scripts are Immoral: they are just big documents to put to sleep elephants.
Automate as much as possible and have testers to do exploratory testing.

Definition of done. Choose definition of done, only one definition (not “Done” and “Done done”J).

Test through right interface
Otherwise, it leads to things like « never change the GUI » to avoid break GUI tests. Don’t test business rules through the GUI.

Apprenticeship: teach to other developers (unfortunately being a good developer is not taught at school).
Pair Programming is also made for that.

Use Good Tools

September 21, 2007

Mon programme pour JAOO 2007

Filed under: Conferences, JAOO — Julien @ 4:22 pm

J’y serai ! Voici les sessions qui m’attirent à première vue… mais le choix est difficile !

Monday 

 Agility on the Edge  

 Five Things I Wish I Learned In College  

 Real-World Ruby  

 Solution Track: Virtualization for Developers  

 The .Net Road  

 The Programming Experience  

Host 

Jutta Eckstein  

Erik Meijer  

Glenn Vanderburg  

Rene W. Schmidt  

Joe Hummel

Markus Völter  

09:00 - 10:00  

Opening Keynote: Clean Code II: Craftsmanship and Ethics.

Track host: Robert C. Martin

10:00 - 10:30  

Break

10:30 - 10:45  

Introduction: Agility on the Edge

Aino Vonge Corry & Track host: Jutta Eckstein

Location: Conference Hall 2

Introduction: Five Things I Wish I Learned in College

Track host: Erik Meijer

Location: Conference Hall

Introduction: Ruby

Track host: Glenn Vanderburg

Location: SAS Nortvegia

Virtualization at JAOO

Steffen Grarup

Introduction: . Net

Trackhost: Joe Hummel, PhD

Location: SAS Dania

Introduction: The programming experience

Track host: Markus Völter

Location: Conference Hall 3

10:45 - 11:00  

Break

11:00 - 12:00

Refactoring Databases: Evolutionary Database Design

Pramod Sadalage

Location: Conference Hall 2

A Programming Language for the New Web

Shriram Krishnamurthi

Location: Conference Hall

JRuby: The Beauty and Power of Ruby on the JVM

Thomas Enebo & Charles Nutter

Location: SAS Nortvegia

Crash course on Virtualization & Virtual Appliances

Rene W. Schmidt

Writing Domain Specific Languages in Boo

Oren Eini

Location: SAS Dania

Intentional Software - Democratizing Software Creation

Charles Simonyi & Henk Kolk

Location: Conference Hall 3

12:00 - 13:00  

Lunch

13:00 - 14:00  

Organically Agile

Klaus Marquardt

Location: Conference Hall 2

Tales From The Financial Industry

Lennart Augustson

Location: Conference Hall

What makes code beautiful? (And why beauty matters)

Marcel Molina Jr

Location: SAS Nortvegia

Virtualization for Software Test and Development

Steven Kishi

Ajax on .NET: Microsoft Ajax Extensions for ASP.NET

Trackhost: Joe Hummel, PhD

Location: SAS Dania

Erlang - software for a concurrent world

Joe Armstrong

Location: Conference Hall 3

14:00 - 14:30  

Break

14:30 - 15:30  

Experiences with Agility in the Mainframe Environment

Jan Mütter

Location: Conference Hall 2

Property based testing with Quviq QuickCheck

Thomas Arts

Location: Conference Hall

Ruby in the Enterprise - A Case Study

Justin Gehtland

Location: SAS Nortvegia

LiquidVM - Better Resource Control and More Efficient Java in a Virtualized World

Mikael Vidstedt

Testing Data Access code pragmatically

Roy Osherove

Location: SAS Dania

Scala: Bringing the Future to the JVM

Lex Spoon

Location: Conference Hall 3

15:30 - 16:00  

Break

16:00 - 17:00  

Global - Yet Agile - Software Development

Track host: Jutta Eckstein

Location: Conference Hall 2

Executable Grammars

Gilad Bracha

Location: Conference Hall

Ruby and the Art of Domain Specific Languages

Rich Kilmer

Location: SAS Nortvegia

Debugging hard bugs using Record/Replay technology

Gustav Wibling

Information cards and .Net - Cardspace

René Løhde

Location: SAS Dania

Developing Software like a band plays Jazz - From Eclipse to Jazz

Erich Gamma

Location: Conference Hall 3

17:00 - 17:15  

Break

17:15 - 18:15  

Agile Retrospectives: Inspecting and Adapting In Challenging Environments

Diana Larsen

Location: Conference Hall 2

Beautiful Debugging

Andreas Zeller

Location: Conference Hall

Mingle: Building a Rails-Based Product

Neal Ford

Location: SAS Nortvegia

Virtualization: TBA (5)

Speakers: TBA  

An introduction to Spring.NET

Mark Pollack

Location: SAS Dania

Terracotta: Open Source Network-Attached Memory and JVM-level Clustering

Jonas Bonér

Location: Conference Hall 3

18:15 - 18:30  

Break

18:30 - 19:30  

Party Keynote: Charles in Space

Charles Simonyi

19:30 - 20:00  

Exhibitor Reception

20:00 - 23:59  

JAOO Conference Party

 

 

Tuesday 

 Architecture Quality (day 1)

 Enterprise Application Frameworks (day 1)  

 LINQ  

 Modeling  

 Scrum At JAOO2007  

 Solution Track : Tuesday  

 Web 2.0  

Host 

Frank Buschmann  

Eberhard Wolff  

Mads Torgersen  

Rebecca Wirfs-Brock  

Jeff Sutherland  

 

Beat Schwegler  

09:15 - 10:00

Democratizing the Cloud

Track host: Erik Meijer

10:00 - 10:30  

Break

10:30 - 10:45  

Introduction: Architecture Quality (day1)

Track host: Frank Buschmann

Location: Conference Hall

Introduction: Enterprise Application Frameworks (day 1)

Track host: Eberhard Wolff

Location: SAS Nortvegia

Introduction: LINQ

Speakers: TBA
Location: SAS Dania

Introduction: Design and Modeling

Track host: Rebecca Wirfs-Brock

Location: Conference Hall 3

Introduction: Scrum at JAOO

Track host: Jeff Sutherland

Location: Conference Hall 2

Spring SpaceCraft

Shay Banon

Introduction: Web 2.0

Track host: Beat Schwegler

Location: SAS Suecia

10:45 - 11:00  

Break

11:00 - 12:00  

Architecting for Software Product Lines

Jan Bosch

Location: Conference Hall

Painless Persistence with Castle ActiveRecord

Hamilton Verissimo & Oren Eini

Location: SAS Nortvegia

The .NET Language Integrated Query (LINQ) Framework

Luca Bolognese

Location: SAS Dania

Models that work: When Model Engineering Meets Open Source

Jean Bezivin

Location: Conference Hall 3

Planning in Large Companies

Hubert Smits

Location: Conference Hall 2

JBoss - The professional Open Source SOA Platform

Michael Martinsen

Building Rich Internet Applications for the Browser and the Desktop with Flex and AIR

Christophe Coenraets

Location: SAS Suecia

12:00 - 13:00  

Lunch

13:00 - 14:00  

Managing Variability in Product-Lines

Track host: Markus Völter

Location: Conference Hall

Leveling Persistence and State Management Technologies with Spring

Track host: Eberhard Wolff

Location: SAS Nortvegia

C# 3.0 under the hood

Track host: Mads Torgersen

Location: SAS Dania

Strategic Design

Eric Evans

Location: Conference Hall 3

Implementing Type C Scrum in different corporate models

Evan Campbell

Location: Conference Hall 2

Inside JavaBlackBelt

John Rizzo

Building Large Applications with GWT 1.4

Rajeev Dayal

Location: SAS Suecia

14:00 - 14:20  

Break

14:20 - 15:20  

Complexity Management

Klaus Marquardt

Location: Conference Hall

Active Record - Easy Living on the Golden Path

Chad Fowler

Location: SAS Nortvegia

LINQ to XML

Track host: Erik Meijer

Location: SAS Dania

Things your mother didn’t tell you about architecture and GUIs

Trygve Reenskaug

Location: Conference Hall 3

Scrum Architecture

Jim O. Coplien

Location: Conference Hall 2

The Heretic’s View of Java Persistence

Mike Fuller

From HTML to XUL, Web to Desktop

Shane Caraveo

Location: SAS Suecia

15:20 - 15:40  

Break

15:40 - 16:40  

Variability (and) Modeling

Krzysztof Czarnecki

Location: Conference Hall

Grails: Next Generation Spring plus Hibernate Development

Graeme Rocher

Location: SAS Nortvegia

Using LINQ to SQL to Access Relational Data

Luca Bolognese

Location: SAS Dania

The Adaptive Object-Model Architecture: Giving users control over their business model

Joseph Yoder

Location: Conference Hall 3

Scrum@British Telecom

Paul Goddard & Geoff Watts

Location: Conference Hall 2

CruiseControl

Chris Read & Track host: Erik Dörnenburg

JavaFX

Speakers: TBA
Location: SAS Suecia

16:40 - 16:55  

Break

16:55 - 17:55  

The Symphonia Product-Line

Wolfgang Strunk

Location: Conference Hall

JCR in the Real World

Alexandru Popescu

Location: SAS Nortvegia

LINQ for Domain Driven Design (DDD)

Kim Harding Christensen & Jimmy Nilsson

Location: SAS Dania

Muddle-Driven Marketecture or Model-Driven Tarchitecture?

Cris Kobryn

Location: Conference Hall 3

Heartbeat Retrospectives

Boris Gloger

Location: Conference Hall 2

Using the public Danish SOA Infrastructure

Mikkel Hippe Brun

The Overlooked Power of JavaScript

Track host: Glenn Vanderburg

Location: SAS Suecia

17:55 - 18:05  

Break

18:05 - 18:50  

Sun Keynote

Matt Thompson

18:50 - 19:00  

Break

19:00 - 21:00  

JAOO IT-Run

21:00 - 23:00  

Jam Session

 

Wednesday 

 Architecture Quality (day 2)  

 Enterprise Application Frameworks (day 2)  

 Professional Developer  

 Public Sector Open Source  

 Scrum at JAOO: Case Studies

 Scrum: Open Space Discussions  

 Solution Track: Wednesday  

Host 

Frank Buschmann  

Erik Doernenburg  

Bob Martin  

Mogens Kühn Pedersen  

TBA  

Facilitator: Diana Larsen & Jens Østergaard  

 

09:00 - 09:15  

Introduction: Architecture Quality (day2)

Track host: Frank Buschmann

Location: Conference Hall

Introduction: Enterprise Application Frameworks (day 2)

Track host: Erik Dörnenburg

Location: SAS Nortvegia

Introduction: Professional Developer

Track host: Robert C. Martin

Location: Conference Hall 3

Introduction: Public Sector Open Source

Mogens Kühn Pedersen

Location: SAS Dania

Introduction: Case Studies

Speakers: TBA
Location: Conference Hall 2

Introduction: Open Space

Speakers: TBA  

 

09:15 - 09:30  

Break

09:30 - 10:30  

Operational Scalability in the Next-Gen-Web World

Wayne Fenton

Location: Conference Hall

MonoRail: Building Maintainable & Testable Web Applications

Hamilton Verissimo & Oren Eini

Location: SAS Nortvegia

With Economy and Elegance

Kevlin Henney

Location: Conference Hall 3

Developing and Sustaining Local Authority Applications through

Aingaran Pillai

Location: SAS Dania

Scrum@Planon

Erik Jaspers & Maarten Smeets

Location: Conference Hall 2

Open Space (1)

Speakers: TBA  

ServiceMix 4.0, the next generation ESB

Guillaume Nodet

10:30 - 11:00  

Break

11:00 - 12:00  

Fault Tolerance

Robert S. Hanmer

Location: Conference Hall

Choosing the right technology for the web-tier

Alef Arendsen

Location: SAS Nortvegia

The Journeyman’s Tale

Laurent Bossavit

Location: Conference Hall 3

OSS Electronic Health Care Records; Vista in Denmark

Martin Sølvkjær

Location: SAS Dania

Scrum@Telenor

Peter Johansson & Arne Ahlander

Location: Conference Hall 2

Open Space (2)

Speakers: TBA

Infragistics

Speakers: TBA  

12:00 - 13:00  

Lunch

13:00 - 14:00  

Performance Art

Kevlin Henney

Location: Conference Hall

Ruby on Rails - ActionPack

Justin Gehtland

Location: SAS Nortvegia

The Ethics of Error-Prevention

Michael Feathers

Location: Conference Hall 3

An Open Source Strategy for a nation

Bruno F. Souza

Location: SAS Dania

Scrum@Yahoo

Gabrielle Benefield

Location: Conference Hall 2

Open Space (3)

Speakers: TBA  

Architecture for a European SOI for e-procurement

Christian Lanng

14:00 - 14:30  

Break

14:30 - 15:30  

Lessons Learned From Architecture Reviews

Track host: Rebecca Wirfs-Brock

Location: Conference Hall

Case Study: The New Guardian.co.uk

Track host: Erik Dörnenburg & Matthew Wall

Location: SAS Nortvegia

Applying Craftsmanship

Pete McBreen

Location: Conference Hall 3

History of B103 and ODF,OOXML Panel Discussion

Florian Reuter & René Løhde & Rachid El Mousti

Location: SAS Dania

Scrum@Nokia

Bas Vodde

Location: Conference Hall 2

Open Space (4)

Speakers: TBA  

Open UDDI

Speakers: TBA  

15:30 - 16:00  

Break

16:00 - 17:00  

Panel: Does Architecture Quality Matter?

Klaus Marquardt & Kevlin Henney & Track host: Rebecca Wirfs-Brock & Track host: Frank Buschmann & Jan Bosch

Location: Conference Hall

Panel: Enterprise Application Frameworks

Graeme Rocher & Track host: Erik Dörnenburg & Alef Arendsen & Justin Gehtland & Track host: Eberhard Wolff & Oren Eini

Location: SAS Nortvegia

Finding your Inner Doll - Layers of a Professional

Ilja Preuss

Location: Conference Hall 3

Panel: Shared Business Application Systems

Martin Niels Pedersen & Mogens Kühn Pedersen & Martin Sølvkjær

Location: SAS Dania

Scrum@Bang&Olufsen

Jørn A. Hansen & Chris Thomasen

Location: Conference Hall 2

Open Space (5)

Speakers: TBA  

 

17:00 - 17:15  

Break

17:15 - 18:15  

Final Panel

Martin Fowler

Location: Conference Hall 3

 

Older Posts »

Powered by WordPress