Category Archives: Methodologies

Methodologies

Well-crafted and craftly tested software

A while back, I submitted my article Software Testing Craft to the Agile Record. Having coined the zeroth law of professionalism in it, ever since I heard about Uncle Bob‘s call for craftsmanship I believed that the craft of software testing had been formed far longer than the emerging software craftsmanship movement. Having followed the great work in the testing field from Michael Bolton, Cem Kaner, James Bach, Matt Heusser, and the many, many more professional testers out there, built early on the picture of a very well developed craft about software testing.

It definitely pleases me to see a blog entry from Uncle Bob listening to a talk from James Bach. Uncle Bob immediately got the point that James is talking about craftsmanship in software testing. Though, there is one point in which I disagree with him:

I like the fact that testing is becoming a craft, and that people like James are passionate about that craft.

Testing is not becoming a craft, it always was as Jon Bach put it in the comments. I share Jon’s view on this. And it pleases me to see testers talking about their craft for more than a decade now.

Another stream of thought on the comments discusses the fact, that Uncle Bob called for developers to strive to deliver software that put testers out of business. Knowing Uncle Bob as the lead developer on FitNesse, I know that he is not saying to get rid of the testers completely. Far from it. As he stated in his Craftsmanship and Ethics talk, programmers should strive to the ideal that tester do not find any problem in the software they’ve produced. Of course, this does not mean that testers will not find any problem at all. Testing is still necessary. You can’t fool yourself by skipping testing. As Weinberg put it in the Quality Software Management series:

Actually, it ain’t nothin’ ’til it’s reviewed.

Weinberg just provided half the truth. It might be nothin’ ’til it’s reviews, but it still ain’t nothin’ ’til it’s tested, too.

Uncle Bob initially called for the craftsmanship movement with the call for

Craftsmanship over crap.

At around that time, Lemmy Kilmister stated in the song “Teach You How To Sing The Blues” from his band Motörhead

There’s no excuse for bullshit.

Later on, Uncle Bob refined his fifth value to

Craftsmanship over Execution

in order to reflect the nature of the Agile manifesto. Back in November I heard a famous German quote for this from Jens Coldewey:

Operative hectic replaces windlessness of the mind.

(It doesn’t translate that well, but it basically says that shouldn’t try to run before you walk.)

Amen.

Assets of a software craftsperson

During a workshop at 8thLight Justin Martin collected assets of a software craftsperson. He published these on his apprenticeship blog, and I found the list compelling for some extensions. As I went through the list, I noticed that I included most of it in my article Software Testing Craft in the first issue of the Agile Record magazine.

Strong Enthusiasm

Always brightening everyone’s mood with your love of what you do.

Deliberate practice and the enthusiasm to learn something new anywhere are at the heart of my craft. I seek learning opportunities for testing, such as testing challenges, Weekend Testing or Testing Dojos, as well as Coding Dojos, Coding Katas, and Refactoring challenges. Skimming code to seek improvements has become as vital to me as testing a new application for flaws that may bug me later. The life of a software professional is a daily learning opportunity, if you’re open for it.

Don’t be afraid to ask for help

Especially if you feel rushed, or have bitten off more than you can chew.

Everybody tries to be helpful, all the time. Indeed, Jerry Weinberg pointed out in Becoming a Technical Leader that being helpful is a key for becoming a motivational leader. That said, there are two sides of the medal: being helpful and asking for help. In a helpful environment it’s easier to ask for help. But don’t shrug in the non-helpful environments, either. Don’t be afraid about saying “I don’t know”, since it’s vital to know what you don’t know. If you do know what you don’t know, you also know when to ask for help.

Ask a lot of questions

Even if you are already a Craftsman, if you are surrounded by other Craftsman, there will always be new things to learn.

There is a direct connection to the previous point. Asking for help is a special case of asking lots of questions. By asking questions, you start to reflect over the course of what you perceived. Over time, when you get helpful answers on your questions, you are able to learn from the answers, and grow. This is called expertise or experience. By constantly questioning not only the technical facets, but also the process aspects of your work, you develop yourself as well as your mind.

Discipline Discipline Discipline

The mark of a Craftsman is to have an unfailing discipline to do the right thing. Whether that is constantly learning new things, or never forgetting what you know, especially when it is hardest to practice.

Discipline is a key to successful learning. Giving in to feelings of pressure or mistrust is the pathway down to suffering. You need discipline to stay on your course and pursue it. Leaving the safe ground means to go awry. Discipline itself can be separated into three basic components: going slow, doing it right, and being methodical.

Go Slow

Often it is better to take your time, making sure you do every step correctly, rather than rushing for a temporary spike in productivity.

Going faster by going slow, sounds weird, but it’s the paradox key to success. Always remember that typing is not the bottleneck, otherwise we could simply pursue faster keyboards for you. Giving your mind the right amount of slack, saves you from paralysis. Rushing something to success is merely the solution of a novice. Taking the time for steady progress now, rather than a full bloat of erroneous features that you need to fix later, will not help in the long run.

Do it Right

Never stop practicing the things you know that work. Don’t stop testing first. Don’t stop refactoring.

How come we always have the time to do it over, but never the time to do it right? Going slow is the first step in order to make it right. If the software does not work, you can hit any other requirement, but it’s the “getting it to work” that’s the hardest part. Similarly, if your suite of automated checks has a lot of false positives, that is tests that pass, though they shouldn’t, then you will never know whether you can successfully deliver your software, or not. Make the tests and the checks right, or don’t make them in first place. Anything worth doing, is worth doing it right.

Being Methodical

Be thorough. Be certain you are producing the best work that you are capable of through a steady and unflinching practice of virtues.

Taking the time, and making it right, are the first steps in order to being methodical. If you give in time pressure, you are less likely to work methodical and might fall back to cowboy-coding. This does not help. Instead, remember what you learned, the TDD-cycle, the ATDD-cycle, don’t try to run before you walk. Through this you will reach steady progress that helps you and your customers.

Lists

A Craftsman knows his own productivity, and can gage how much he can get done in a certain time span. Making lists, getting metrics, and measuring your productivity will help to accomplish this.

The heart of Agile is to make progress visible. Measuring anything worth measuring, in order to prepare an informed decision later. Craftsmanship takes this a step further. In order to know how much effort a particular project may be, you need to have data from your past. Creating lists based on past experiences may help you with this. Over time you will be able to see patterns, and might no longer find the lists useful. By then you may have reached a new level of mastery – the Ri-level in the ShuHaRi model of skill acquisition or the Expert stage of the dreyfus model.

Understanding the Real Business Intent

It is important to remember you aren’t just writing code to fulfill some requirement on a note card, but you are actually creating a product that a business intends to use. Try to understand what that note card means to them as you transform the requirement into a feature.

In order to do the right thing, you have to know what the right thing is. Understanding the business behind your work is essential for any knowledge worker. This includes developers, testers, business analysts and technical writers. Without the vision of your work, you’re doing useless work. Remember the Product Principle from Weinberg’s Quality Software Management series: Anything not worth doing, is not worth doing right. Since you’re doing everything right, avoid doing anything not worth doing in first place. Of course, in order to make this decision, you need to know what your customer’s business is asking for.

Recognize your failures

Recognize your failures of the past so that you can move forward on a new level.

Taking the time for reflection is essential. Self-blindness about own failures does not help you grow. Therefore seek opportunities to realize your failures and learn from them. We all make errors at times. The aspect that makes us human, is the fact to learn from our mistakes.

Don’t be shy with your ideas

Throw your ideas out there, and then be the biggest critic of them. You only stand to gain when others see your ideas (unless youzz crazy).

Sharing your ideas is essential for the community to grow. Pay back what you get from the community by bringing in your own ideas. Of course, they might be subject to critics, but these critics will help you grow, learn from the mistakes you make, and contribute to your professional growing over time. If you’re shyly hiding your ideas in your mind, they’ll be gone when you’re gone. The other way round they may even survive.

Lessons always come at a cost

Stay positive, because if you are getting punished by your mistakes, remember that you also learning from your mistakes.

There is no such thing as a free lunch. At times you will wake up and see you have painted yourself into the corner. It’s essential to take course corrections at that time, though this might mean to switch your jobs. It’s a worthwhile lesson, but it has to come at a price. At times, you may have difficulty paying the price, though it’s the most sane thing to do. Remain positive about these changes.

Theory of Constraints at lunch

Mary Poppendieck and James Bach taught me to look out for lessons in everyday life. Everything is connected with everything else. So, as I visited today during lunch break the local McDonald’s restaurant, I started to observe while waiting for my lunch. Here is what I observed filled in with some lessons from systems-thinking and the Theory of Constraints.

So, the restaurant was unusually full today. There were three counters open, serving the enqueued and waiting people. Whenever there is a queue, there is something locally optimized and the bottleneck around it is not exploited. Therefore I started to look out for the underlying reasons. Since I had previously worked at a supermarket counter, I had a feeling for what to watch out for.

Starting with the first counter, there was a young woman serving. She was obviously helpless as I watched her using the cashier and giving out change. She seemed to be very uncertain and routine hadn’t revealed to her. Obviously for me that queue was a bad choice to wait for food, since I got hungry.

On the next counter, there was a young man serving. He had a bit more routine or experience as the young woman next to him, but he seemed to be rather inexperienced compared to others I had seen in previous visits. In addition that guy seemed to be in the role for catching up on serving the food to the tables, exchanging fries when they were finished, etc. So, this guy was really overworked, and I could sense it by observing him for maybe two minutes. No good choice to wait for, when you’re hungry, either, but I took the queue, since the colleague who went with me was on the last open counter waiting, and I found it a better mix to have us wait in two different lines.

On the last counter, there was a real senior serving. I have seen him several times there in the past, and he was really fast, compared to the others. So, my colleague got seated long before I placed my order.

Now, this isn’t yet the final story. What then happened was that the guy from the counter for the McDrive helped these three out with the cashiers and the serving. Given the fact that the drive-through is the most critical, fast-served place at such a restaurant, that guy was really up to the last cashier. Now, the McDrive guy was not helping out on every counter, but yet on a single one. So, guess where he helped out? Yes, right, on the last of the three that was already way-outperforming the other two. If I had to put a number on it, that counter had double the throughput of the other two counters without anyone helping there.

Why is this a problem? Well, after I got finally served by the last counter – the queue was empty right before I got to order at the second counter – I got to my colleague and explained him the following. There were basically three queues. There was one bottleneck station, the first counter, and the second counter had generated a bottleneck station himself by conducting all the work that the first woman was not getting to, since she was too slow at serving. Last, there is the regular station, which is not a bottleneck.

From the systems point of view the regular station got optimized when the McDrive guy started to help out. The Theory of Constraints taught me that instead everything should have worked towards the bottleneck stations. This could have been to get the McDrive guy helping the second counter guy out on the surrounding preparations with the fries or serving the food to the tables. This could also have been to free up some of the woman’s time by fetching the just ordered food from the customers in the line, so she mainly needs to take care about the coins and the change. Instead a non-bottleneck workstation got optimized, resulting in local optimization.

Another reason this optimization choice was bad, is the fact that the two others did not have the slack to learn how to work faster. The worst performers in that restaurant were constantly under pressure, since there were more and more customers queuing up all the time. Instead of providing slack time for them to be able to think about how to do their work more efficient, their thinking collapsed under the perceived pressure from the customers waiting in line to get served. Surely, they will not have learned anything during these maybe 15 minutes I could watch them, since they were permanently dealing with the next fire to take out.

Finally, how does this relate to software at all? Well, give your people the right amount of slack, the right amount of time to think, and watch out for local-optimizing. Alistair Cockburn uses the analogy of “unverified decisions” as inventory items to transport Lean processes and lessons from the Theory of Constraints to software development. So, find the workstations where these “unverified decisions” pile up. Where in your process are many decisions handed-over to someone else? Where are the most handed-over? These are your bottlenecks. After having identified the bottlenecks in your process, you may start to either exploit them, or to place in quality steps right before the decisions get handed-over (this is the major case for test-driven development), or see how others can bring in some relief for the bottleneck station by taking over some of their work. Taking the problem to the systems view helps understand the dynamics in place – for software development as well as for food serving in a fast food restaurant.

Are we Agile, yet? – Revisited

Abby Fichtner – The Hacker Chick – wrote a blog entry asking (and answering) Are we agile yet?. In essence it relates the Poppendieck’s seven principles from Lean to other Agile methodologies. Since I’m currently finishing up the Quality Software Management series from Gerald M. Weinberg, I got to know about the importance to know about many models for developing software. So, I decided to expand the thoughts of her seven key points beyond Lean, Kanban, and Scrum and strive over some of the most common Agile methodologies. In this blog entry I’m going to re-visit the seven principles and expand the view to XP, and Crystal.

Eliminate waste

Eliminating waste is at the heart of Lean. Similarly in Scrum the team is asked to just implement the items from the backlog with the highest priority. In Agile Estimating and Planning Mike Cohn describes very well, that the the items with the highest priority are realized from the backlog first. Thereby the team achieves a software product with the highest business value. In QSM Vol. 4 Jerry Weinberg denotes it as the 90% of the implementation that delivers 99.9% of the value to the customer. Similarly, by working in this manner you will drop the meaningless features if you need the core functionalities sooner. Meaningless features in the product backlog are then of course an instance of waste.

XP favors the principle of simplicity. There is an implication to eliminating waste here. Everything that is not simple, is wasteful and deteriorates the process for maintenance. By focusing on simplicity, waste is eliminated by definition. Similarly, Cockburn separated Crystal into families of methodologies to keep them simple and eliminate methodology weight from smaller teams while still preserving necessary and relevant ceremony for larger teams. Crystal therefore eliminates waste by structure of the methodologies.

Build Quality in

Tackling the quality matter for the several Agile methodologies is a bit more demanding. First, test-driven development from XP is one of the most difficult Agile practices, but it is also the most copied one. Cockburn speaks about it for Crystal, similarly it is in wide-spread use in vital Scrum and Kanban practicing teams. The Pragmatic Programmers speak about quality from the start. Pair Programming from XP is a way to review code as you go. Likewise, customer involvement from XP together with specification workshops and specification by example bring in quality right from the start. These practices are in wide use among methodology boundaries and are shared in the whole Agile community.

Create insights

Personally, I rephrased this to “create insights” from “create knowledge”. The single-most Agile practice that everyone recommends is taking the time for reflection. There are several names for the same concept. Sprint Reviews in Scrum, Kaizen in Kanban, Retrospectives in XP, Reflection Workshops in Crystal all generate insights from a time-boxed interval of the project, and set the team up for knowledge from their past iterations or sprints. Over time, the team piles up more and more knowledge created from projects, tried out ideas to improve the process for themselves. “If you need to adopt just a single practice, use retrospectives, the rest will follow up.”

In addition to regular reflection, transparency is the key to visible progress. Information Radiators, Task Boards, Story Boards, build monitor are all ways to make progress visible among Agile teams. Combined with the insights and actions from the last retrospectives, they set the team up for success. Not only in Scrum and Kanban, but also for XP and Crystal.

Last, involvement of the customer from the start is a key success for visible progress. Showing results from the last work increment to the customers and stakeholders in regular intervals is a vital part of XP, Crystal, and Scrum. Getting the feedback from the people supporting the project also sets you up to build quality in.

Defer commitment

Similarly as the previous two points, deferring actions to the last responsible moment is a common theme across Agile methodologies. The principle is in play for programmers building the programs incrementally and iteratively, for iteration planning in XP and Scrum, and even for process improvement actions to foster.

But I recommend to take care here. “Defer commitment” does not mean in any way to not commit to anything at all. The team commits regularly to the next increment to the product they grow. The team calls this the iteration, the pulse at which Agile software development operates. Like a living system, the iteration is the heart of Agile development methodologies. Accompanied with reflection about the last pulse, the Agile development organism adapts to new situations and sets themselves up for the vital learning in the team. Crystal, XP, Scrum and Pragmatic Programming names this deferred commitment. It’s even a part of Software Craftsmanship, which I personally would include to the Agile methodologies – though they made a value-shift based on the initial manifesto.

Deliver fast

Here I also need to add a note: Don’t confuse speed with progress. Note the ambiguity for delivering fast. One way to deliver fast is to deliver at a high speed, while coding yourself into the corner of Technical Debt. This is not meant. Instead, you have to keep an eye on the delivery for today, but also set yourself up for tomorrows delivery. A sustaining pace is vital for todays fast – in terms of progress – delivery, and for tomorrow’s. This insight is at the heard of the Cooperative Game principle from Cockburn and underlying the Crystal methodologies.

In fact, one key motivation for the Software Craftsmanship movement at the end of 2008 was the realization that the “setting yourself up for the next round” became a common practice for fast delivering teams. The key is not to deliver fast today, but to deliver fast today, tomorrow, next week, next year, and even in ten years. Over the course of the last decade with the widespread of Agile methodology this seems to have been forgotten.

Back to methodologies, the iteration pulse in Scrum, XP, and Crystal creates the basis for the sustainable pace. The team sets themselves sets up for a continuous flow of value for customers and stakeholders. Thereby a steady flow of progress with indeed fast delivery is achieved.

Respect people

XP defines the XP team generating the respect for the people on the project. Similarly Crystal evolved out of the respect for people. Setting up self-responsible teams that take care and pride of their process for themselves, enables them to deliver steady value and – as a side-effect – increases productivity. Leaving people with the choice for their own process, getting them motivated to succeed the project, and rewarding them for their achievements is a core Agile aspect. And there is nothing more rewarding to show a working piece of software to your customer and get the appreciation from them – at the end of every second week or every month.

Optimize the whole

Reflection workshops take insights from the team and action items from good reflection workshops create an optimizing whole. Putting the people together in cross-functional teams, removal the boundaries from decades of separate working, enables everyone on the team to see the whole picture of the project. For example, planning poker puts together the whole team to work out the scope of the next increment. Specification workshops put business analysts, developers, and testers together with customers to get their needs and form a common understanding of the product to build. One key aspect of Crystal is the easy access to expert users among teams. Without this all encompassing view on the project as a whole, there wouldn’t be a way to optimize it as a whole. In companion with self-organizing teams, this optimization becomes natural in Agile projects.

Finally

One final point I would like to raise. Why does it matter for you to be Agile or agile? Instead of hunting for a place or time you may call “Agile”, rather ask yourself, “does it work for you?” If you can seriously without any doubts state, “yes, it works for me and all my colleagues, stakeholders and customers”, then you shouldn’t bother. If not, asking “are we agile” won’t help you either, since you don’t know if you need to be Agile in your situation, of if you should be somewhere else. Following a practice or notation just because it’s the latest hype, is cargo-culting. Instead you find out where you want to be, and plan to get there, but to set yourself up to anticipate any directional changes while trying to get there.

Listen to the old ones, or re-invent the wheel

Some while back I read a blog entry from Jason Gorman on Wheel-driven reinvention. His core statement is, that there is nothing new in the world of software development. When you start to trace back any common hype in the software industry, you will most likely end up in the 1960s or 1970s finding the core idea raised by that time. When I first read his blog entry, I was going to write a follow-up describing how little the great old ones help us understand their solutions to the problems of the software industry in the last decades or so. Since I know that I had to incorporate Gorman’s thoughts into my models I decided to postpone it a bit, and get some time to think over it.

There are just a few professionals who actually did what I was claiming, but the more striking point for me is how little time we spent listening to them. One excellent example of a great old one is Gerald M. Weinberg, who worked on project Mercury for the NASA, and was part of the first testing teams when the latest hype was to do testing independently back in the 1970s. Recently I came across a paper from Edsger Dijkstra, written by hand. Into that line fits also Brook’s Mythical Man-month or the No Silver Bullet article. And I know that there are other great examples of great old ones, to which we should pay attention, in order to learn something new.

That said, I read a blog entry from James Shore yesterday on Large-scale Agile. He put up a great effort to describe how to combine the ideas from Scrum and the ideas from Kanban together to scale Agile up on a larger basis with sub-dividing teams. His ideas are interesting, and I gave up half-way through trying to understand all of his premises. Remembering back my math teacher in school when I showed him a proof that one equals two, he stated: “When working from a false premise, you can show anything.” This is even true in writing.

How come there is nothing new about large-scale Agile? The textbooks on Scrum just mention the Scrum of Scrums, but not how to apply them. XP and Kanban just work on smaller teams, so he’s actually writing something new. Really? No. Obviously not. the Crystal methodologies, and recommendations for large-scale Agile. Thought, he stated that there is a barrier to Agile and their light-weight methodologies at project size of about 500 persons. Scaling Agile up, though comes with a prize. Larger teams need other communication channels for example. You may put a team of 12 into a single room. The team can work up with osmotic communication. On a 500 person project, you may have difficulty to find a room large enough, and obviously not everyone will be able to overhear the conversations of all colleagues. There are other penalties you have to pay for scaling Agile up. Whole-heartedly I recommend reading his book on Agile Software development.

Additionally, what I learned from Cockburn is the notion of a sweet-spot of Agile methodologies. The lightweight nature of Agile methodologies has a sweet-spot on a lower team-size with fewer effort put into ceremony overhead for hand-offs. When increasing the team size, you automatically get a larger communication-need. There are non-linear increases in the amount of possible communication channels among team members, as well as slower communication channels like informations flowing across different rooms. That said, if you don’t fulfill the need for more communication, you may find yourself set up for Agile failure.

There are many other factors which need to be increased for the larger team-size in a non-linear way. In case you’re searching for an answer on these questions, I recommend to read all of the following book

  • The Mythical Man-month from Frederick P. Brooks Jr.
  • Quality Software Management Volume 1 – Systems Thinking from Gerald M. Weinberg
  • Agile Software Development – The Cooperative Game (2nd edition) from Alistair Cockburn

Listen to the old ones, or re-invent the wheel.

Ethics in Software projects

Personally, I love to relate different aspects from other areas to my life as a software professional. Today the aunt of my wife celebrated a birthday, and I got the opportunity to overhear a discussion between my father-in-law and an uncle from my wife, who are both truck drivers. Since I read Secrets of a buccaneer-scholar, I became aware of combining different areas of my life together to learn something new.

Now, German laws demand high discipline from drivers on the road – especially truck drivers. There are given rest times for truck drivers, regulated by the local police officer. These laws evolved over time, to protect innocent truck drivers and other traffic participants from fatal injuries caused by drivers with too few sleep. There are other regulations that protect trucks from getting off-track, especially on the German Autobahn, where truck speeds of 100 km/h are usual – and cars drive with as much as double this speed.

So, working as a truck driver puts a certain challenge on you. You want to deliver your wares to the destination and hit back home. Your boss wants to deliver the wares to the promised date. Traffic jams, alternative routes, and other variables may put the predetermined schedule from your boss at stake. Today
I learned that it is common that the boss will then ask the drivers to skip their rest times.

But wait, what has this to do with software development? Well, if there are delayed deliveries from third-parties, shortcuts to requirements and/or design, among other variables, your project will be put on pressure. The predetermined project plan may become out of date. As the truck drivers’ boss, your project manager may ask to skip testing.

So, what is different in the truck driving part of this analogy is the fact that there is a police checking for too long driving periods. The German law then enforces penalties to the truck driver for giving in to the demand from their boss, so they may even lose their drivers license in extreme situations.

Seriously, I doubt that most projects would deliver untested software, if there was a project police in place, that would charge penalties from developers and even project managers for skipping testing. Sure, an overtired truck driver may deliver their goods on time in 90% of the cases, but if he just naps in front of the steering wheel once, and ends up in a massive traffic accident, the results will be dramatically fatal. The same may as well go for some software projects. However, avoid to give in the temptation to say “my project won’t cause fatal accidents, if I skip testing.”

If you didn’t get my main point, I would like to finally point you out to a fable about testing from Gerald M. Weinberg. His granddaughter Camille got the point from it at the age of four, can you get it, too?

Scrum Norris

Yesterday evening there was a thread of scrumnorris going over twitter. Since these messages were in German, let me translate them.

  • Chuck Norris is ScrumMaster and ProductOwner – simultaneously.
  • Chuck Norris can do 6-month sprints.
  • Chuck Norris wears Timeboxershorts.
  • Chuck Norris does not move story cards, he moves the taskboard.
  • Chuck Norris does not estimate, he knows.
  • Chuck Norris pairs alone.
  • Chuck Norris starts project with a Roundhouse-Kickoff.
  • Chuck Norris is allowed to appear late at the stand-up.
  • Chuck Norris sits on the stand-up meeting.
  • Chuck Norris has implemented everything at the planning meeting.
  • Chuck Norris does not estimate user stories, user stories estimate him. (This doesn’t translate well.)
  • Chuck Norris writes the code first, then the test.
  • Chuck Norris is not afraid of bugs, bugs are afraid of him.
  • Chuck Norris does not do Kanban. He does not know limits.
  • Chuck Norris does not pull, he pushes.
  • When Chuck Norris says “done”, then it’s “done”.
  • Chuck Norris does not deploy, he develops on the production environment.
  • Just Chuck Norris knows, that a real burn-down requires napalm.
  • Chuck Norris has no burn-down chart. Around him everything is already burnt down.
  • Chuck Norris answers just two questions on the stand-up meeting. Chuck Norris does not know obstacles.
  • Chuck Norris does not prioritize the backlog.
  • Chuck Norris takes two baby-steps at once.
  • Chuck Norris does not use test-driven development. Chuck Norris always drives.
  • Chuck Norris is the prioritized backlog.

Any additions?

Planned conferences in 2010

Zeger van Hese‘s summary of the Agile Testing Days in 2009 reminded me to write about some of the conferences I plan to attend over the course of this year. And yes, Zeger is right, since it was my first conference presentation back in October, I was very nervous. Thanks again to Gojko Adzic and Mike Scott, who gave me great feedback the evening before during the Oktoberfest took place. On a second note, Zeger attended nearly all the presentations I was also in – despite the tutorial.

That said, I’m going to attend the Agile Testing Days from 4th to 7th of October again. The submissions are still open until end of January, but I think one of my proposals may be selected. Additionally, this year it’s going to be a four day conference. So, I plan to be fully blown afterwards.

Another great conference last year was the Software Craftsmanship Conference in London in early July. Thus far Jason Gorman has not decided upon the programme, but he’s working on the submissions. If I can make it by any means, I will attend again and maybe get one or the other book signed. I don’t plan to submit an own session.

A conference I haven’t visited last year is the XP2010 conference in Trondheim from 1st to 4th of June. I’m not sure whether to participate there. I will make this dependent on whether my submission will be taken.

Last, but not least, I plan for the XP Days Germany, though I haven’t seen any planning for the conference thus far. Last year the conference was great. Personally I had great exchanges with Alistair Cockburn on methodologies, the Agile manifesto, and a possible future for Crystal. That said, I hope to attend the conference and get to know another great keynote speaker there, hopefully.

The Craft of Software Testing

The inaugural issue of the Agile Record magazine includes an article from myself about some thoughts on the craft of software testing. In it I describe my understanding about the craft and how testers may reach a level of professionalism where they know what they’re doing. Deliberate practice is one thing in that equation.

Looking through the magazine, I spotted great articles. Dawn Cannan co-authored with Lisa Crispin an article on being the worst and why it pays off, David Evans has an article on testability and considerations on whether to invest in it or not, Lior Friedman has an article on the agile view on quality, Marc Bless has an article on Scrum forced on an organization, etc. Before listing up all the contents here, go to the Agile Record page, subscribe (it’s free), and get your personal copy.