Posts tagged Agile

KSCOPE 2011: What do you mean “Agile”?

Currently in Cary Millsap’s session about his agile approach on things called “My Case for Agile Methods“. Agile is (not yet) my thing, but knowing Cary, and he is in to it, when he is enthusiastic about something its probably one of those things which you should look into. If not even due to, as far as I know, the Agile context Cary is using is not the Agile context referred to I see being used out there. The “agile” thing out there is the one, is the one, I will joke about. But that said, a lot of methods are not bad at all, but people implement them wrongly so trying to keep an open mind, this session of Cary was more or less mandatory to get my vision about this back on track once more.

Cary also mentioned this emotion that probably mainly goes around in the DBA world. But as Cary mentioned during his presentation, “Agile is not undisciplined”, so if it gets the wrong emotional context, then is mainly due to people not doing it correctly. Could be thats it has to do with not being correctly trained in Agile or maybe incorrectly “managed”. So what is Cary’s feeling about this, that is, “Agile” as is…

Read the rest of this entry »

Do not register bugs, Fix them!

For years I was a proponent of bug/issue management systems and worked with open systems like Jira or Bugzilla and also with a lot of proprietary systems. I’ve used these systems during the development and production/ support phase of the products. Every time I use these systems I spend too much time registering, evaluating and sorting issues. At the end of the project I always get stuck with a dozen of unspecified issues with a vague status. Why is this? Bug tracking systems are not bad. The entire process of registering and tracking bugs is wrong.

What the most effective thing to do when you discover a bug? Registered the bug in a system and track it? Does this solve the bug? It doesn’t.  You should be busy resolving the bug, not administrating and tacking it!

Read the rest of this entry »

Compliments; Instant productivity improvement for software teams, with a small effort….

Wordle: feedback

Hello, you project manager/team leader. I expected this title to grasp your attention. Would you like to know how to improve the performance of your team members?  This can be done without massive statistics or an expensive performance improvement program. This magic pill is called positive feedback. Just give your team members the credits for their work and compliment them for their achievements.

 As a project manager we are aimed on the end result. In our day to day job we are focused on the things that are not yet done and the things that could go wrong. This focus on future result and possible impediments make us forget the past achievements of our team.

Read the rest of this entry »

Automatic testing Oracle Service Bus using Hudson, maven and SoapUI

A lot of current projects are implementing some sort of service based architecture. Testing in this architecture becomes more complex. When implementing an OSB project with Scrum you test-automation is imperative. Scrum will require more frequent testing of your system. This is only feasible (in time and money) when you automate as much as possible.
 
Using soapUI you are able to create visually SOAP tests on your OSB implementation and running them against the defined infrastructure (develop, test, acceptance).  SoapUI enables with easy tools to implements verification and validation of the responses of your OSB implementation. When running the test you are also able to set limits in SLA response times on all the calls. This way you are able to monitor depreciation of performance in older parts of your OSB implementation when adding new services.
 
You can record and edit your SOAP test easy with the soapUI interface and edit it later. When you maven-enable your project it is quite easy running your tests when you implement the “maven-soapui-plugin” (see my other posting http://technology.amis.nl/blog/3061/automated-soap-testing-with-maven).  In the meantime version 3.0 of this plugin is released.
When implementing this with Hudson you do not have to convert the results.xml into a Surefire report. Hudson will manage this for you. Hudson will also enable you with an historical overview of all your test results.

Agile software development, the principles. Principle 11: The best architectures, requirements, and designs emerge from self-organizing teams.

This is the eleventh of 12 posts about the principles of agile software development. Purpose is to go back to the start of the agile manifesto (http://agilemanifesto.org/principles.html) and discuss the implementation of the 12 principles in real life software engineering. Goals of agility are to go deliver software of higher quality, faster, with a higher acceptance to end-users and able to follow the changing business requirements to strive for competitive advantage.
 
The question is: is this going to work in practice or is this only based on a nice marketing and sales story.
 
Principle 11: The best architectures, requirements, and designs emerge from self-organizing teams.
 
For a long time the engineering expertise (and also software engineering) was based upon the condition that you worked with specialists. These specialists emerged from the principle of division of labour and made it possible for these specialists to focus their attention on their specialism and create the best solution within their field of expertise. The Interaction designer designed a user interface, the architect created a global systems model, developers created code and infrastructure specialists created the necessary environment to run the application on.
 
Everyone was specialized and delivered the best solution within their capabilities. However when all these components where put together, noting worked. It is an illusion that specialists can design and foresee everything beforehand.
 
Within agile projects the solution is to use a self organizing team to perform these tasks. This team may consist of specialist, but this is not a requirement. The requirement of this team is that they work together and self-organize all aspects of the systems to be delivered. This team is permitted to make errors and invent their solutions, provided that they deliver and evaluate frequently (retrospective) and learn from their successes (and errors).

  Read the rest of this entry »

Agile software development, the principles. Principle 10: Simplicity–the art of maximizing the amount of work not done–is essential

This is the tenth of 12 posts about the principles of agile software development. Purpose is to go back to the start of the agile manifesto (http://agilemanifesto.org/principles.html) and discuss the implementation of the 12 principles in real life software engineering. Goals of agility are to go deliver software of higher quality, faster, with a higher acceptance to end-users and able to follow the changing business requirements to strive for competitive advantage.

The question is: is this going to work in practice or is this only based on a nice marketing and sales story.
 
Principle 10: Simplicity–the art of maximizing the amount of work not done–is essential.
 
The KISS rule (Keep it stupid and simple) applies here. Simple things are easy to understand, and straightforward to implement. Simple things do not cost a lot of time (or money) to implement and are therefore also easy (painless) to revert.
 
The middle part of this principle “maximizing the amount of work not done” is harder. When implementing agility in an organization this is the cause of discussion. Maximizing the work not done implies that the agile method will skip some processes, code and steps that where necessary in the traditional way of delivering software. This is where agile is linked with Lean. Lean focuses on reducing waste and creating a lean process. Work not done (that was planned to do) with the same end-value, can be classified as waste. In a discussion about work not done, you ask the person asking the question to specify the added business value of the work relative to other tasks. When the added value is not clear this is probably waste. Here you have to discuss the added value of intensive review sessions, bureaucratic procedures, complex frameworks and other corporate rules we meet every day.
 

(Dutch) AMIS kennissessie Scrum

Datum: dinsdag 3 maart  2009
Tijd: 16:30 tot 21:00, incl. diner
Locatie: AMIS, Edisonbaan 15 in Nieuwegein
Doelgroep: Deze sessie is interessant voor zowel developers, projectmanagers, consultants als sales medewerkers.
Coördinator: Robbrecht van Amerongen

Scrum, Just enough, just in time…

Scrum is een methodiek die ons in staat stelt om snel kwalitatief hoogwaardige software op te leveren; er wordt ontwikkeld en opgeleverd wat volgens de inzichten van vandaag nodig is (in plaats van wat maanden geleden eens is bedacht).

Read the rest of this entry »

Agile software development, the principles. Principle 9 : Continuous attention to technical excellence and good design enhances agility

This is the ninth of 12 posts about the principles of agile software development. Purpose is to go back to the start of the agile manifesto (http://agilemanifesto.org/principles.html) and discuss the implementation of the 12 principles in real life software engineering. Goals of agility are to go deliver software of higher quality, faster, with a higher acceptance to end-users and able to follow the changing business requirements to strive for competitive advantage.

The question is: is this going to work in practice or is this only based on a nice marketing and sales story.

Principle 9: Continuous attention to technical excellence and good design enhances agility.

The first time I looked at this principle I thought: “How is this possible”. Agility focuses on quickly delivering working software (reading: “Quick and dirty”). I experienced this is not true. Attention to technical excellence is making the agile process working better. Technical excellence can make the development process more flexible. In this context I would like to point out that there is a difference between technical excellence / good design compared to complex design and technical complexity. How many developers, designers and architects (the ivory tower / PowerPoint architects) cannot resist creating complex designs, patterns and code with no other purpose than to show off their technical superiority? How many projects have stranded in complex designs and abstract meta-models without creating any business value? These projects are good to be displayed in the Museum Of Modern Software Development but completely useless in the real world.

Smart technology and smart design

Every developer, architect and designer must work with principles of smart design in their minds. In my opinion there are only two principles: 1) the concept must work and 2) other team members understand and are able apply the principle.

Smart technology and good design has its greatest advantage when it is used for the benefit of the whole application and the whole team. Not just for sub-optimal improvements for a single function or a single developer. Good excellent technology and good design has to make coding easy and the application modular, more flexible and adaptable. By using the right frameworks and supporting tools you are able to deliver higher quality software much faster than you where used to. In practice this means using frameworks for common tasks like authorization, persistence and navigation and tools for building, releasing and deploying your application.

In fact all tasks, that are labor intensive and demand a lot of concentration and focus, are likely candidates to be implemented via frameworks and tools.

Read the rest of this entry »

Agile software development, the principles. Principle 8: Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

This is the eight of 12 posts about the principles of agile software development. Purpose is to go back to the start of the agile manifesto (http://agilemanifesto.org/principles.html) and discuss the implementation of the 12 principles in real life software engineering. Goals of agility are to go deliver software of higher quality, faster, with a higher acceptance to end-users and able to follow the changing business requirements to strive for competitive advantage.

The question is: is this going to work in practice or is this only based on a nice marketing and sales story.

Principle 8 : Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely

Sustainable development means constant production of softwarefeatures during a long lasting period. This is done without loss of concentration within the team or a rising amount of errors as a result of fatigue or frustration. Software development is like running a marathon and not 100 meters sprint. You have to keep up to speed but not run so fast that you exhaust yourself or your team members.

I (and many of my colleagues) recall working on projects that start relaxed and easy (deadline is still 4 months in the future) and end up working long hours, nights and weekends fixing the project and delivering the end-result. During this period frustration rises and concentration falls. This often leads to situations where we have to fix errors made during last evening of hard working.

The amount of time and effort the team invests in a development process has to be more or less constant during the whole process. This is not only the case for the developers but also for the other team members / stakeholders like testers, designers, sponsors and users.  All these groups suffer when the pace varies a lot. During periods of little activity the focus and interest in the project / product demises and in periods of peek activity the stress and frustration reduces the accuracy needed to perform the work correctly(e.g. testing, deployment etc.).

 Having recognized this, why do so many projects keep their deliverables with them as long as possible and then (without announcement) throw their artefacts (designs, products, applications and test results) over the wall. Creating a sustainable development process requires your whole team to work together from the first day of the project. All efforts during the process need to be a team effort guided by the process-step expert (designer, developer, tester, application manager, end user etc.). As a project manager you have to prevent a waiting attitude with the team members. Examples of this undesirable attitude are:

  • Senior users: “so, we have stated our requirements. Let’s see what they (the developers) come up with”
  • Developers: “We have realized all features ad stated in the requirements specification. Even those requirements where that we found confusing, contradictory and wrong. We probably hear about this during the acceptance test (or not)”
  • Testers: “fortunately the requirements do not state anything about usability and performance, so we do not have to do anything about this”
  • Application managers: “I hope the architects do not use the single sing on option that is not supported on our platform”
  • Stakeholder: “So, this project has started. I do not have to do anything and delivery will be on time and on budget”

As a project manager you have to make sure the team communicates and discusses the process and the product under construction constantly. This will enforce a common ownership about the product and the process. This way you will keep all team members and stakeholders involved in your project.

You can enforce a constant ownership of the product by requiring the project to deliver a new version every week. This requires a smooth running and well oiled build, test, delivery and deployment process. By scripting these process most of these tasks can be performed automatically. Using the correct tools it is possible to compile, deploy and deliver a new version quickly. Within our factory (using maven, continuum/Hudson, Nexus and subversion) we can deploy a new version from scratch within 5 minutes. This creates a constant state of near-shipability of your software. Your team will have a constant productivity during the whole project and not just a huge productivity during the last few weeks.

Stay Alert and creative

Constant and sustainable development enforces alertness and creativity within the team. Team members are not stressed to the maximum to deliver functionality. They are given the time to come up with a creative solution and are alert on the tings happening with other team members or in the project’s environment. This means that the team has to be focussed and aware of the pace of productivity it has to meet. On the other hand, there has to be room for free time and relaxation. This is also known as the 40-hour work week. This does not mean that you have to limit your work to 40 hours a week. When you gain extra functionality (with the same quality) in 50 hours a week you save a 1 month within a project of 5 months. You have to make sure the quality, creativity and focus does not suffer under the fatigue of the team members. Working e.g. 80 hours a week is asking for errors and sub-optimal solutions in the long rung.

Deliver what the organisation can process

To be sustainable in development the user-organisation not only has to be ready to process new version frequently. The project team needs to take into account the amount of new versions and functionality the user-organisation is able to process also. The productivity of these two groups needs to be aligned with each other. This way the development team can produce software that is immediately tested and (preferably) immediately used by the end-users without stressing the end-users with an unmanageable amount of sub-version. On the other hand the user community is able to give the development team direct feedback on the new version delivered. This way the users and developers create valuable software in a combined team.

Conclusion:

To execute your agile projects you have to make sure all stakeholders in the project are constantly aligned with each other. Make sure all stakeholders are in pace with the speed of the project and they are able to participate and absorb the deliverables from the project. Do not stress the team members in such a way that creativity and alertness suffers. During the whole project’s execution keep the effort off all stakeholders as constant as possible. Make sure that running your project is not like running a 100meter sprint but more like running a marathon.

 

Good Luck!!

Other posts about the AGILE Principles (soon to come):

  1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
  2. Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
  3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
  4. Business people and developers must work together daily throughout the project.
  5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
  6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
  7. Working software is the primary measure of progress.
  8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
  9. Continuous attention to technical excellence and good design enhances agility.
  10. Simplicity–the art of maximizing the amount of work not done–is essential.
  11. The best architectures, requirements, and designs emerge from self-organizing teams.
  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Agile software development, the principles. Principle 7: Working software is the primary measure of progress.

This is the seventh of 12 posts about the principles of agile software development. Purpose is to go back to the start of the agile manifesto (http://agilemanifesto.org/principles.html) and discuss the implementation of the 12 principles in real life software engineering. Goals of agility are to go deliver software of higher quality, faster, with a higher acceptance to end-users and able to follow the changing business requirements to strive for competitive advantage.

The question is: is this going to work in practice or is this only based on a nice marketing and sales story.


Principle 7: Working software is the primary measure of progress.

How do you measure progress in agile projects? The required functionality is not fixed and the planning of construction and delivery of these requirements is done by the team, in a very late stage. This is something traditional project managers have a hard time to cope with. They think it is impossible to control a project, with an unclear outcome and a planning, that is based upon a work backlog and the duration of a sprint (iteration).


The fundamental measure of progress is measuring things that are finished. Software (in our case) is finished when it is successfully tested and delivered. Software progress is not “80% done coding”. Software is finished when it is tested and accepted by the (key) end-user. By adding the end-user to the project team, he/she will be motivated to test and accept the delivered artefact quickly. Read the rest of this entry »