you are here: Home Home Enterprise

Constant focus on quality and code health is critical for the long term viability and maintainability of software.  This focus on quality is a trademark of agile teams but you don't have to be 'doing the Agile' to focus on quality. Regardless of how you develop software, testing and in particular unit testing are an important tool to have in your toolbox.  Given the importance of unit level testing, why do so many companies struggle with unit testing and its adoption? When unit level testing is non-existent or inconsistent, the reasons fall into two main categories:

  • General misunderstanding on what a unit test provides
  • Developers aren't good / shy away from testing as it is out of their comfort zone

There is a third reason, more like a myth, that is very popular - the myth that 'we don't have time to test'.  This is false - nothing will slow you down more than writing as much code as you can without some way of constantly being able to verify you haven't broken your assumptions of the intent of the code.  We tend to hear this myth coming mostly from developers.  This comment is usually rooted in a blend of the two primary reasons with the majority of the cause coming from developers simply shying away from testing.

Del.icio.us!StumbleUpon!

You're going Agile and you couldn't be more excited.  You've read about all of the benefits and want that for your organization and you want it now.  Slow it down a little bit Buddy; realize that not only will Agile change the way you work, it will possibly require organizational and cultural changes.  Your organization only has a certain amount of change it can consume successfully in any given period - you only have so much transitional velocity.

One of my partners in crime at VersionOne, Mike DePaoli, has started a series of posts regarding using Agile to scale Agile.  I couldn't agree more with the thread and chatted with Mike briefly about adding a topic I spoke about at Agilepalooza - the idea of transitional velocity.  We know what velocity is in terms of Agile - the rate at which a team is delivering value, usually measured in average points per sprint or iteration.  Transitional velocity is how much change we can successfully introduce and make sustainable in a given timeframe.

Del.icio.us!StumbleUpon!

Regardless of the methodology you practice, continually improving should be your goal.  We want the product to be better, we want better quality, we want to work more effectively.  Agile, and retrospectives in particular, are effective in helping us improve because of the tight feedback loops and team ownership. How are we doing outside the team though?  Does your company have strange rituals that no one understands and no one can seem to change?  Do you have organizational OCD?  Say for example...

A team wants to deploy their software to another environment for testing...but they have to fill out a form and wait for a DBA to execute the SQL script to update the database.  That person executes the script and walk away, leaving the team to flail with questions. 'Did all of the data update? I don't know, I can't see it.'

Del.icio.us!StumbleUpon!

Its a little known fact that google was built by 3 staplers, a set of paperclips, and a couple of 2 by 4s.  Yep, some smart dude with a great idea had someone look at his product and that person replied, 'We can do this.  We just need about 4 dev resources and a few qa resources.'The stapler is off to the side

As ridiculous as this sounds, we still see it regularly in software development.  Not only is it amazingly demeaning to call people 'resources,' it also leads to other fallacies, such as:

Del.icio.us!StumbleUpon!

One of the most potentially dangerous states for a company to be in is where it is successful in spite of itself.  Companies that are (or once were) monopolies have a surplus of cash and little to no competition.  There is arguably little reason for them to change.  Is it possible for a company in this position to care enough about efficiency to adopt agile practices?  Historical success can cause a fear of change - if we try something else we might fail and we are fine now. Not only is this avoidance of change unhealthy culturally, the inability to seek improvement will eventually lead to drop in market position of the company. 

The past few years have seen the adoption of Agile practices in larger and larger organizations.  At last years Agile conference, Alistair Cockburn presented a keynote around the growth and spread of Agile.  One of the cornerstones of adoption is a healthy and desired feedback loop.  What can we do at organizations where competition isn't an immediate concern?  How can you address a space with a low appetite for change?  Is change possible without motivation?

We live in a time where not only can success happen quickly, but failure can happen even quicker. Beyond that, failure can happen cheaply. That fact should be a concern to market-leading organizations and  a prime motivator.  Cheap failure is equivalent to efficient, fast learning.  Your organization might be enjoying a comfortable revenue position now, and perhaps the cost of entry to your market is high - but the idea / company that becomes your largest challenger does not need to come at you from a replacement angle.  The company that challenges a financial exchange does not have to offer all of the same trading properties or strategies.  The challenger to an online auction site might not even come from commerce but from a communication channel that then makes transactions simpler and in more confidence.

Can change happen without motivation?  No. If you are having difficulty finding motivation, then look no further than the startups of the past few years along with the current boom of startups happening now.  The best of these startups are learning all market aspects very cheaply and adapting quickly.   Let this start your motivation for seeking continuous improvement and never being satisfied.  If this doesn't motivate you - just wait... someone with less to lose will help motivate you by making you lose a whole lot more.

Del.icio.us!StumbleUpon!

To the contrary of my previous post, I thought I would say what we do know. Without further ado, What we do know (an abbreviated list...well, hopefully)

  • We know that its hard to keep an architecture simple
  • We know that if you have a solution or tool in place that has a 'large impact for replacement' - boy oh boy, did you either eff up the use of the tool or did you purchase one sh1tburger of a tool to start with
  • We know that if you want your employees / team / co-workers to be engaged and highly productive, you have to allow them to be engaged and highly productive.

Perhaps I will dive into this in more detail in future posts.

Del.icio.us!StumbleUpon!

You know those conversations you have in your head that always come across sounding so awesome? Well, here is the start of one that I had in my head a few months back, and a conversation that I wanted to have but you know, at the time it might have been career limiting.

Command-and-control-director: 'You don't know my world. I've worked for 10 years to make my world just right, you can't change it. You don't know the implications of the changes you are suggesting and how it would impact the company.'

Me: 'You're absolutely right. I have no idea of the implications. And on top of that, I have no desire to know or even hear the implications.'

By no means do I claim that this is an original thought - sometimes it is prior knowledge that blinds us from seeing and understanding other opportunities. Once my daughter wanted to take off her shoes and socks and go stand on some wet rocks in this rock pond at an arboretum. It was 50 degrees out and breezy so I tried to convince her otherwise. But she was persistent and I let her. She loved it, she played in there happily skipping around for 30 minutes.

The pond water was heated.





Del.icio.us!StumbleUpon!

Who's Online

We have 25 guests online

Advertisement

Featured Links:
Joomla!
Joomla! The most popular and widely used Open Source CMS Project in the world.
JoomlaCode
JoomlaCode, development and distribution made easy.
Joomla! Extensions
Joomla! Components, Modules, Plugins and Languages by the bucket load.
Joomla! Shop
For all your Joomla! merchandise.

Login Form