Each Iteration Results in a “Release”

To ensure that the project is making progress, each iteration is forced to produce something tangible: a “release.” This release can be:

  • A prototype that is used to demonstrate some specific capability
  • An “internal” release that is used to elicit feedback and that serves as the basis for further development and testing
  • An “external” release that is shipped to customers in some form

The following is our definition of release:

Release: A stable and executable version of a system.

The production of something executable during each and every iteration is so important to the iterative approach that some people even go as far as to assert that “The goal of an iteration is an iteration release: a stable, integrated and tested, partially complete system.” Read More

The Kernel Journals 6: Where to (first/next)?

The Kernel Journals 6: Where to (first/next)?We all know that we want to “cut to the chase” as soon as we can and start incrementally developing the software product through which we deliver value back to the business. But we also know that there are certain essential pre-requisites to “sprinting”, such as some kind of vision of where we are supposed to be going and the right team and tools to get us there. If we start motoring before we are ready we may head off in the wrong direction or we may find that the wheels come off as we accelerate through the gears. Read More

An Iteration Has a Distinct Set of Activities

An Iteration Has a Distinct Set of ActivitiesEach iteration is unique. It involves undertaking a unique set of activities to produce a unique version of the product that objectively demonstrates that the iteration objectives have been met.

Because of this uniqueness, each iteration requires its own iteration plan. The iteration plan contains the details of all the activities that the team is required to do to meet the iteration objectives. The amount and style of activity-level planning required for a project is dependent on many factors including the project risk, team size, experience levels, and the manager’s own preferred management style.

For some projects, an informal plan describing the goals to be achieved and listing the tasks to be undertaken is sufficient; you can leave the scheduling and allocation of the activities to the development team. Other projects require more comprehensive plans that describe the activities and their allocation in greater detail to work out the dependencies between the tasks to be performed by the various team members. Read More

What Drives Me by Ivar Jacobson

What Drives Me

“The best way to predict the future is to invent it!“ (Alan Kay)

A few days ago, a very simple but thought provoking question was raised to me: “what it is that drives me?” The simple truth is that I do not know. But I do know what it is that does not drive me. It is not about money. Actually, never has it been about money. Neither is it about power. I am happy to step aside and I am happy to delegate both up and down. It is not about popularity – but I do like to be appreciated for what I do.

No, it has to do with helping others improve themselves over and over again. I get a kick out of seeing others become successful because I helped them. It was like that in the late 1960s and the ‘70s when the Ericsson AXE system beat all competition and won every contract thanks to being component-based. Similarly, when Rational was successful because of UML and Objectory. And Telelogic because of SDL. I am happy when people are successful thanks to use cases.

Read More

What is an Iteration?

What is an Iteration?

Iteration: A self-contained mini-project, with a well-defined outcome: a stable, integrated, and tested “release”. Let’s look at the three aspects of this definition in more detail.

A software development project produces a new release of a software product by transforming a set of users’ requirements into a new or changed software product. With an iterative and incremental approach, this process is completed little by little, step by step, by splitting the overall project into several mini-projects, each of which is called an iteration.

From the perspective of the development team, each iteration can be considered to be a self-contained
project. This approach is very powerful because it enables the development team members to focus on meeting their immediate objectives and ensures that the results generated are frequently and objectively measured. The management team needs to ensure that the iteration objectives form
a credible part of the larger overall project.

The management team needs to reinforce this way of working by ensuring that each iteration has the following:

Read More

The Kernel Journals 5: Making the Invisible, Visible

The Kernel Journals 5: Making the Invisible, VisibleThe kernel Alphas are the core, key, critical, central, essential conceptual entities that we need to manage and progress in a controlled way in order to ensure a successful outcome for our project. But, like all concepts, they have the distinct disadvantage of being invisible. A project manager is convinced that his project is important and that managing its progression to a successful conclusion is critical. But if, as an outside assessor, I were to say “bring me this project of which you speak so that I may gaze upon it and assess its status” he would be stumped. He can show me plans, people, documents, but he can’t show me “the project”. These key concepts are the elephants in the room that no one can see because …  well , because they are invisible. To be useful, they need to be made visible and real, so normal people can interact with them.

Read More

Two complementary macro-trends in software engineering by Ivar Jacobson

From my horizon, I see two distinct and yet complementary macro-trends driving the way we become better at developing software. One could be called “Methods & Tools” the other could be called “Professionalism & Craftsmanship”. These two trends are not new, they have been around as long as we have built software. Both are based on the fact that it is people who develop programs, rather than methods and tools. But they take different approaches to the problem by focusing on different aspects of software development.

Trend “Methods & Tools,” exemplified by Semat Initiative (www.semat.org), of which I myself am one of the founders, drives the thesis that the way we develop software is immature and in need of being revolutionized. Yes, these are strong words, but the initiative is supported by more than 30 renowned scientists, scholars and practitioners in the software engineering field, including leaders from major industrial corporations (e.g., ABB, Ericsson, Fujitsu, IBM, Samsung, Microsoft, etc), academia (researchers, professors, institutional managers), and thousands of practitioners around the world.

Specific problems addressed are that often methods seem to be based on fashion and fads; that there are almost an infinitive number of methods that cannot be assessed or compared with each other. The number itself is not a problem. There should be many methods, however, these methods must be designed in such a way that they can be compared, assessed and improved. Finally, there exists a big barrier between academic research and industrial practices, which must be torn down.

The way forward is based on observation and understanding that:

  1. Every method is just a composition of practices, either human or technology related.
  2. Practices are reusable over many application areas and technologies.
  3. Underneath all practices is a small kernel of universals described by a small kernel language.
  4. Universals are things that we always have, do or produce when building software.  We will discover them!
  5. Practices and universals will be described by a small Process Kernel Language.

Using this kernel and the language, we can describe all known methods, and, because practices are comparable, methods that are composed from these practices can be compared. I would like to tell you a lot more now, but it can wait for later. The impact of this SEMAT initiative is that, if successful, we will streamline the entire software world: from academia to industry, from practitioners to teachers and researchers. We will become better, faster, and happier in developing software.

After all, it is people who develop software, not methods and tools. So we must address the “human” side of software development.

Trend “Professionalism & Craftsmanship”, which is popular with the original founders of the agile movement, for instance by Bob Martin (“Uncle Bob”), who takes a very different standpoint. From this perspective, the big problem is not the lack of methods or tools, but how we train, educate and mentor programmers to become professional craftsmen. Code can be written by anyone at any time, but what makes us professionals?

  1. We must be proud of what we do. We must be able to say “no” to either the boss or the customer, if necessary. We have our professional practices and these cannot be compromised.
  2. The boss and the client must accept the fact that our work is technical in nature; so let them think we are geeks, but respectable geeks.
  3. Eliminate hourly rate - doctors or lawyers are not paid by the hour (even if under pressure they may say so). There must be better ways to charge.
  4. Anything that is worth doing should be done well and with quality. When we ship code, we must know that it works. Acceptance testers should not find any errors.
  5. Become competent through an apprenticeship program. Choose a master and learn from him or her.  After some years you may select a new master and also learn from him or her.

Both trends are of course important.

Proponents of methods & tools suggest that it is clear that we must constantly improve professionalism. However, it would be much easier to be professional if we can elevate the level of our understanding of methods & tools.

Proponents of professionalism & craftsmanship are concerned that such an elevation means enforcing restrictions, and many are therefore hesitant or reluctant to work with or support initiatives related to methods & tools.

It is clear to me that we must do both. Since Bob Martin is a signatory of Semat, I think it is clear to him as well.

It is smart!

Navel gazing is not a bad thing

Navel gazing is not a bad thingI have met hundreds of organizations that are trying to improve their way-of-working. What I have found most interesting is that the vast majority of these organizations are looking for the solution outside of the company. They are either benchmarking with other similar organizations or running after the latest fashion in the industry. However the perceived benefits are not always there and the answer is usually much closer than they know.

Good industry standards are one thing, but many things that are good for a specific company are not necessarily transferable to another company with another background and culture.

In reality many solutions can be found inside the company. There are top-performers, top performing teams and projects in all companies and if we could repeat the good behavior from those individuals and teams, the organization could improve tremendously. However we need a structured way to capture that behavior so that it could be easily understood, distributed and reused; this is where using Practices makes perfect sense. Practices is a way to effectively describe the Essentials of Things to do, Things to Produce and the Competencies needed for a specific area of concern.

What good practices do you have in “your belly button”?

Model Storming by Ivar Jacobson

Model StormingLast week, I attended a workshop of a new initiative in software engineering (SEMAT see www.semat.org). This was the first real f2f meeting we've had. 28 people attended the workshop and one session with around 12 people were working on developing more detailed objectives of the entire initiative.

To develop the objectives we appointed a facilitator. He suggested that we make a usage model for the Semat initiative. But for this blog, what we modeled is not so important. It is the principles that are important. We built up the model on a large bulletin board using yellow, rectangular post-it stickers. A usage was like a use case or a user story.  Long side up for usages. Short side up for users outside the system. These were in essence all the instructions we got.

Read More

How to stop thinking about business as “the customer” and IT as “the vendor” by Ivar Jacobson

How to stop thinking about business as “the customer” and IT as “the vendor”In my last three blogs, I discussed how we can close the gap between the business and IT. I summed up the way forward with the advice to stop thinking about the business as the customer and IT as the provider. Instead, let them work together in teams (similar to members of a soccer team), responsible directly to management.

It will not be an easy journey, but here are some steps along the way:

Read More

Page 1 of 9123456789»