Market Uncertainties and Source Code…

February 25, 2011

My last post discussed the importance of source code and how it should be treated as an asset. The assumption that I made was that the software would be long-lived, with a continuing need to enhance it over a long period of time. In real life, we’re faced with uncertainty. We don’t know what will be accepted by the market and what won’t. The only thing that is certain is that we won’t know unless we try.

This means that a fair number of software applications die soon after initial development. An initial release of a product is meant to test the waters; and in the face of non-acceptance, it vanishes. Other applications don’t reach the levels of anticipated or desired use to warrant a high degree of care and feeding. They are maintained, but are more like zombie applications – the living dead.

Source Code: An Important, Yet Undervalued Asset

February 22, 2011

Non-developers in many organizations tend to believe that software developers have too much concern about their own universe of source code and tools and too little concern about the business. A majority of the developers that I’ve worked with genuinely care about the business. The fact that they care about the source code is a good thing. The business should care more about it, too.

Software tends to live, sometimes a lot longer than we expect. I’ve written code in years past that I believed would be made obsolete by a rewrite a lot sooner than what actually came to pass. In fact, I’ll confess to being a little frightened with the longevity of some of my code.

The Problems with Specialists on Agile Teams

February 18, 2011

As I noted in my previous post, I prefer to staff Agile teams with generalizing-specialists, using specialists on an as-needed basis by temporarily allocating them to a team or having them consult with a team. This avoids some very real problems that will impact the productivity of an Agile team.

Why? Because the very nature of specialists will create conflict that is counter-productive to Agile development.

Agile Development: Specialists versus Generalists

February 15, 2011

Vikas Hazrati’s post: Do Specialists Outperform Generalists on an Agile Team? does a great job of summarizing the divided opinions about whether specialists or generalists are better for Agile teams.

As a manager in an Agile organization this issue interests me because I want my Agile teams to perform well, which means that I need to staff them so that they are set up for success. I also need to provide career guidance to people, and the choice of being a generalist versus a specialist is pertinent to the conversation.

Book Review: Management 3.0

February 11, 2011

Management 3.0: Leading Agile Developers, Developing Agile Leaders (Addison-Wesley Signature Series (Cohn)) Jurgen Appelo's Management 3.0 is all about a major version change for management. This book contains so much research and thought that it is almost impossible to do it justice in short review. However, I’ll try to give you a flavor for the book by tackling select topics and examples…

As Jurgen outlines in his Preface, Management 1.0 was about hierarchies, and Management 2.0 was about fads, or add-ons to the hierarchal 1.0 style of management. Jurgen doesn’t discount earlier management theories, but instead makes the case that we've moved on. Management today needs to “replace the assumptions of hierarchies with networks.”

Jurgen’s goal for the book is to help everyone become a better manager – a better Agile manager in an Agile organization. Jurgen does this by weaving together his research on management and complexity theory along with his own insights based on experience, sprinkling in a little humor to provide a unique perspective on management.

Good Design is Required to Sustain Agility

February 8, 2011

One of the twelve principles of the Manifesto for Agile Software Development is: Continuous attention to technical excellence and good design enhances agility. I prefer to take this one step further: Good design doesn’t just enhance agility; good design is required to sustain agility.

Good design is essential to long-term productivity. I’m not confining design to a high-level, architectural perspective; the nuts-and-bolts design of everyday programming counts as well. We need automated unit tests to confirm that the software is executing correctly, without relying on labor-intensive manual testing. Automated tests save time and they allow us to refactor with confidence, providing immediate feedback on the results of our efforts.

Is Agile Missing Key Project Management Activities?

February 4, 2011

Arguments have been made that there are many project management activities that Agile development ignores, activities that are necessary for complete project success. To enumerate a few:
  • Business justification for the project
  • Project costs and time estimates
  • Risk Management
The observation is that Agile development has a focus on rapid development of specific features and that formal project management methodologies have their place and can work on Agile projects.

We use Scrum, and it is true that framework like Scrum doesn't explicitly include any of the above. And yes, you CAN leverage formal project management methodologies to supplement Agile development, but is this really what you want?

An Old Lesson in How to Build Trust, Respect and Support

February 1, 2011

To be effective and productive, leaders need the support and trust of those that they lead, and leaders need to support and trust those under them. A strong component of developing support and trust is mutual respect. Imagine a scenario where you need to build support, trust and respect with someone who feels that you are unqualified and incompetent to lead your organization, who expresses frustration with your decisions, who either takes action or urges you to take action that is counter to your own policies, and holds some personal animosity towards you because you hold the leadership position that he or she sought in the past. How would you deal with this situation?