• 29Jan

    Okay… so I realize that it’s been a while since I posted…

    The  main reason is that my wife and I had a beautiful little baby girl several months back (well, I suppose she had the baby really!!) and while I have been working, no one told me how much time needs to be invested in looking after her. It’s all worth it though.

    So I suppose my first Scrum Retrospective should be - Get the food in the baby rather than on the baby :-)

    I should be back writing now. I’ve seen some good, and strange stuff over the last few months so I’ll release details shortly. Last night I attended the Phoenix Scrum User Group and saw Agile Bob (a.k.a Bob Hartman from Denver) and videod some of his session. Watch this space for more…

  • 23Jul

    This recently released book on Leadership and Strategic Approach is, basically, excellent!

    I am an advocate of taking the ego out of management and believe that managers acting as facilitators and stepping in when necessary rather than taking an ever-present command and control attitude, gain far more productivity from their teams.

    The authors of this book (Pollyanna Pixton, Neil Nickolaisen, Todd Little and Kent McDonald) have provided me with additional tools in their arguments and instruction in 150 pages than most Project Management book three times the size. They keep things simple and are concise without the patronizing tone that can be felt when reading other books of this nature.

    They explain 4 simple models that can be used today in many different industries and write in a way that motivates the reader to try these out as soon as they get back to the office. They focus on:

    Purpose Alignment Model - which allows for a clearer vision of what categories projects fall into. I have seen more generic and complex ‘Business Alignment Models’ where many projects are incorrectly categorized as ‘differentiating’ but do not add this type of value to the organization. By focussing on the purpose and using their ‘Billboard’ technique, insight is given into which projects truly are differentiating to the organization.

    Context Leadership Model - giving visibility into the complexity and uncertainty values of a project to help leaders manage projects, with the right people, more effectively.

    A Four Step Collaboration Process - designed to assess the right people for the job, allowing transparency in environments and then trusting people to get on with what they do best to produce high quality work.

    Value Based Decision Making - Determining which projects to start, continue and stop based on making decisions at the last responsible moment. This model is taken from Lean Product Management and has worked well in the past.

    These are simple models, easily implemented, directed at resolving common root causes that are systemic in many activities. The concise, real, case studies accompanying the ideals show what is not only possible, but achievable. Using the ‘Purpose Alignment Model’ I found myself not only looking at current projects but completed ones to determine, in retrospect, whether we overspent resources into what we thought was a differentiating project when really it was one that actually retained business parity.

    I know this will quickly be one of the dog-eared, bent out of shape, probably missing its cover type books that I often return too.

    If you are a business leader and want a fresh perspective of the projects currently underway in your organization or group this is a valuable resource that will provide, in my opinion, huge ROI.

    Tags: , , , , ,

  • 31May

    “The Economics of Iterative Software Development” gave me some excitement, thinking there was finally a concise reference from experts giving examples of projects they participated on, why they failed (with a breakdown of specific areas) and how the different aspects of developing iteratively resolved these issues in future projects - Unfortunately I was slightly disappointed.

    The first chapter is interesting and uses statistics from reputable sources such as the Standish Report. However, the remainder of the book is more of a Project Management guide for both experienced and junior project managers (and project owners) to determine why Iterative Development works in the software industry.

    The authors clearly have experience and this shows. The appendix ‘Getting Started With Iterative Project Management’ is good and steps through the requirements of setting this process up. I especially like how the authors advise on communicating business reasons to the team, something that is largely obfuscated in organizations.

    However, some chapters are just too short! Four pages on automation! This is one of the largest economic gains in the development lifecycle. I would have liked to have seen concrete examples of which parts of the development lifecycle they autmated and how much time or money was saved.

    There are some points in this book I would question, mainly:

    • “Test coverage should be 100% of all scenarios.” If  this refers to all testing, then it is actually uneconomic to have all Unit Testing at 100%.
    •  Most of the cost of software is in post-release maintenance, yet nothing is discussed about this. The Authors state “Achieving results is more important than performing activities as part of a process.” - I’m sure this has always been the case but it is WHAT processes we need to concentrate on that is important. For example, if I create a deliverable on time but it is not maintainable, is this acceptable?
    • One huge economic drain is the YAGNI (You Ain’t Gonna Need It) principle. I have seen reports of up to 50% of features in software never used and most of these never asked for. Yet again the economics of this area is omitted from the book.

    Finally, the authors praise modern software engineering. Any reader of Brooks’ ‘Mythical Man Month’ (an excellent book and one they recommend) will know that issues that plagued the software industry fifty years ago are still largely apparent.

    Iterative development is not a modern way of thinking as projects have used it over the last 30 years. However, the techniques used in implementing this strategy have been lacking. The techniques outlined in this book are largely recognized as being somewhat successful. But in my opinion we have a very long way to go.

    To summerize, Iwould say, a good book for Project Management teams using Iterative Development techniques but sadly lacking on the Economics of the subject.

    Tags: , , ,

  • 03Apr

    Unofficially there are no such things as fixed priced projects in the software industry.

    Of course, officially this term is still used, but lets face it these are no good to the customer or vendor. Why? Because if the project is completed early then the vendor may just work slower to ensure the completion is as close to the deadline as possible (so their next quote for a similar project can be justified) or, more likely, unexpected issues will occur causing the project to overrun in time or money or even be scrapped completely. 

    So what happens when the PMO declares that the project cannot be approved financially with an analysis of all the requirements and costing performed up front (i.e. a fixed price contact)?

    I attended the first Phoenix Scrum User Group last night, where Ken Schwaber was presenting remotely and was given this very scenario. He gave some interesting facts that I believe should be used to educate the financial folks to understand that this is the wrong way to look at project costing. Here are some numbers:

    35% of requirements change on a project (on average)

    50% of features initially scoped are never or rarely used.

    82% of projects fail (this is from the 2002 NIST report where failure is deemed as late, scrapped or not all features implemented that were originally scoped). 

    Using an Agile framework such as Scrum, the customer can see that that backlog is broken down into many tasks which are planned in more detail the closer they are to be implemented. I.e. For the next month here are the details of what we are going to do, how we are going to achieve it and with priorities.

    For the work we are going to do in future months, here is a general overview which will become more detailed as we start the iteration of work for that particular set of requirements in the backlog.

    Apart from a significant increase in risk management (on both sides), this gives the customer multiple chances to change any future requirements (as we know will happen). However, they are NOT allowed to change anything on the current iteration.

    If some work in the current iteration needs to be changed later, we can add this to the backlog.

    If work performed in the current iteration, for some extraordinary reason must be changed completely, then the most we have lost is up to one-months work.

    Compare this to a project where all the requirement are set up front and six months later the customer receives a deliverable way off the current needs, are they going to be happy?

    If the customer still insists that all requirements are expected up front and priced then insist on a contract where no requirements will change. This is far from ideal and a review the customer may come around to a more appropriate way of thinking. If they still persist and are not willing to sign this type of a contract, you are probably best to walk away. Look at the stats!

    Tags: , , ,

  • 27Jan

    No! This isn’t a blog about Code Reviews. It’s actually a book review of Bob Martin’s ‘Clean Code’. However the amount of code to read in the book may seem like a series of code reviews (more on that in a bit).

    Each chapter contains a different subject to enhance code quality.
    From the simple practices that are often overlooked, for example; naming conventions and formatting styles, through the classic tried and tested; Kent Beck’s 4 Simple Rules of Design (Run all tests, contain no duplication, code to express intent and minimize the number of classes and methods); to some gems that can take years to uncover; such as bad practices for returning null (with the correct idiom) and good practices for testing threaded code.
    This reviewer certainly chuckled guiltily when reading some of the examples of code that could be written better (”Oh yeah, I remember doing that once!!”).

    I was surprised to see a few reviews on other blog sites and amazon about the fact this was not written solely by Bob but by different authors at Object Mentor. I actually thought this was a good thing as each chapter is a separate concern and the writing styles differ so the reader can be engaged differently from one chapter to the next. Plus, there is a lot of Java and the change in temperament clears ones head after reading all that code.
    This book does not follow a specific ‘project’ throughout, like many other books today, but concentrates on real world examples to illustrate the points made. This is not a book one can read quickly if the reader wants to real get involved and practice what this book teaches.

    One may presume that my opening paragraph was negative on the amount of code in this book. On the contrary, I found this to be an excellent model to get, mainly inexperienced [Java], programmers to look at more code written by experienced experts and take a look at the internals of classes in popular frameworks such as JUnit and JCommon.

    Chapter 17 is a concise description of each of the smells and heuristics used throughout the book and if you think you have your coding practices down to a fine art, read through this - you never know where you can learn a new thing or two. Also, if you are still one of the few out there that are not performing Unit Tests (shame on you) then just the first four pages of chapter 9 (p 121 - 124) should sell it to you, and your manager if required.

    Now the not so good! Maybe it’s because we are so much into ‘best’ practices that a few things niggled me.
    There are a few contradictions in the book. Not only where the advise to never leave commented out code in your application is ignored, but in some cases (e.g. p66) some Catch blocks with no code contain a comment as to why they are empty, while some are indeed completely empty (no comment) - we believe this is not a good practice and is one of the few cases where a comment is indeed useful in a block of code.

    I also found a paragraph of slight Utopia-ism (is that a real word?). It is mentioned that programmers should not just get the code working but successfully refine working code before they move onto the next piece of functionality. Unfortunately I know of no customer who would be willing to pay for someone to sit and refactor code when it is functionally working correctly. This may sound contradictory on a Code Quality site but i think it is the real world. I think a better way of arguing this point is to define what is meant when a piece of functionality is ‘done’. This would include the refinement (and documentation which is usually not evident) - maybe I’m just arguing semantics?

    In summary this book is a great resource of areas of good coding practices that each chapter has had many whole books dedicated to. I would like to see this book in Computer Science undergraduate courses as I feel to get these practices in early is only a good thing. For any professional, the information contained here in one book gives huge value to the reader.

    Tags: , ,

  • 19Nov

    In my last post I discussed some of the issues why Scrum projects were failing. One of the reasons expressed by the interviewees was that organizations are trying, but failing, to extend Scrum across the Enterprise.

    Scrum is, like other Agile methodologies, primarily aimed at development teams on a project by project basis and is difficult to extend. This is where Lean principles can help.

    A few organizations have noticed the natural paring of using Lean techniques to extend Scrum (or Agile) principles. One such organization is NetObjectives. Their ‘Scrum#’ methodology (their version of Scrum guided by Lean principles) helps to define the gap between bottom up Scrum practices and top down Lean principles to help other organizations successfully implement these practices across the enterprise.

    After reading their whitepaper on Scrum# I was intrigued to find out more. I caught up with Alan Shalloway (CEO of NetObjectives and a thought leader in this area) to discuss more about this and discuss several scenarios where Scrum# can be beneficial.

    As a side note, their resources site is one of the best I have come across with information regarding Lean and Scrum. Not only do they upload articles and papers frequently, but also include free previews of work in progress books they are planning to publish in the future.

    Tags: , , , ,

  • 18Oct

    At Agile and Development conferences this year some sessions have been looking at how to improve Agile techniques using failed projects as examples. Discussing some of these issues and reading blogs and articles it appears that a significant percentage of Scrum projects have failed and it is not quite the silver bullet many expected it to be.

    In this weeks video blog I asked some of the leading Scrum experts (Dan Rawsthorne, Alan Shalloway, Sanjiv Augustine and Ken Pugh) what they thought the most common reasons for failing Scrum projects is and what advice they can give to resolve this. In their opinion, it appears management and managing the Product Owner are currently areas to improve upon.

    I believe that many organizations that practice Agile techniques do not strictly follow Scrum, XP, Crystal or any of the other flavors of Agile directly, but instead adopt a hybrid ‘Agile-esque’ practice using parts of these methodologies that they feel work best for their projects. This was reiterated at Bob Martin’s keynote at Agile 2008 where he also stated that ‘Agile’ will be the term used as a practice rather than the umbrella for the individual practices such as Scrum, XP etc. Will this see an increase in Project success? Only time will tell.

    One opposing theory is; teams will adopt whatever practices they can implement easily and quickly to comply with senior management edicts so they can claim their organizations are ‘Agile’ (whatever that means to them?!?). The reality is, underneath they will really be working in a Waterfall manner with little change to project success.
    Such proponents of this theory will state that only by following the practices strictly, can you achieve project success repeatedly (as demonstrated by Menlo Innovations).

    Tags: , ,

  • 07Oct

    Fred Brooks’s law of ‘adding manpower to a late software project makes it later‘ is one most of us have tried to prove wrong…….and failed!
    I was at Agile 2008 and saw an interesting session, “Breaking Brooks’s Law” from Menlo Innovations, a Michigan based Java development company. They claimed to disprove this law and demonstrated their working environment and techniques that allowed them to do so.

    Although the presentation was only 45 minutes, we were in the room for almost 2 hours asking questions to determine how robust their techniques were, and to gain more insight into the conditions developers work under.
    Menlo’s results are based on a 3 year project that the customer had a deadline to demonstrate at a show. More features were required for the show than currently in the plan. So rather than re-prioritize, Menlo decided to add more developers to attempt to complete the work. They managed to complete the Project on time with all added functionality.

    The environment at Menlo is quite unique. All developers are co-located in the same large room (no offices or cubes) and pair program 100% of the time - they follow strict XP practices. A scheduling team determines which projects developers work on and who they pair with on a weekly basis. So developers work with different team members and possibly different projects every week.
    Also, as part of the contract, the customer comes to Menlo every week to prioritize the work for the next sprint.
    These techniques may appear somewhat draconian (for example 100% paring). I managed to catch up with the team and interview them to discuss this project further, bug rates, staff attrition rates and how Project Managers can push the message of pairing to Senior Managements/Directors (see video).

    I thoroughly enjoyed talking with the team from Menlo and they invite anyone passing by to stop in and take a look at how they operate. They also have an interview process which involves a large number of candidates performing a number of tasks including Pair Programming, with an appointment you can observe this too. A detailed paper about their techniques and contact details are here.

    Tags: , , , ,

  • 02Sep

    Lawrence Oliva touched on a great issue when using metrics in an organization “…it is important for metrics to support your project and not just be a bottomless pit for data collection and weekly presentation.”

    I agree with this sentiment. Far too often do we feel good about collecting relevant metrics and then not finding time to implement the data in a feedback loop to increase the awareness and knowledge in the organization. This is the key for effective use of metrics to increase the quality of the next iteration.

    Oliva continues “If currently used metrics are not driving your team’s time, energy, and skill set mix towards achieving project success, it’s time to select a new set of measurements.”

    Selecting new metrics may be premature if the current ones are not being used effectively. If problems are arising after the metrics have been fed back to the relevant people, including additional explanation as why anomalies were apparent and suggestion for improvement, then a change in metrics may be required.

    Oliva suggests selecting two metrics for the Project Manager, two for the Development team and two more for the Management Team.
    I would enhance this to three metrics each, totaling nine. There are several reasons for this but the main one is that having two reports will often lead people to implicitly feel that a choice needs to be made to improve one or the other, whereas often they are not mutually exclusive. I Adapt Rothman and Derby’s “Rule of 3″. One solution is a trap with no choice, two alternatives give a choice of this or that while three alternatives leads people to come up with more options.

    I like the metrics chosen for PMs and Senior Management however one of Oliva’s suggested metrics for the development team, Lines Of Code (LOC), I would argue is not even a metric. Even if we agreed it was, what does a a sudden drop in this number mean - a section of the codebase was deleted and lost (bad) or someone refactored the codebase to improve quality (good)?

    My three initial metrics for the development team would be:
    Bug Count (also stated by Oliva)
    Blocks of duplicate code - various tools can do this and can be implemented as part of a build. If a bug exists in duplicated code on one instance may be found and corrected leading to the false conclusion that a particular bug has been fixed - it’s only been fixed in that part of the code.
    Static Code Analysis Warnings - again various tools do this and once configured correctly gives huge benefit in identifying possible bugs pre-release

    I do understand that other metrics are just as important - Code Coverage for example. But I had to choose only three ;-)

    Tags: , ,

  • 01Aug

    Earlier this week on Javalobby, I posted an extract from our monthly newsletter regarding our analysis of the ‘missing braces in If Statement’ rule firing and the potential bug involved.

    If you omit braces and use Static Analysis tools it is a problem actually finding these bugs. Why? Because you probably have the rule turned off!

    Having any tool tell you of violations in your code purely due to a stylistic preference will result in thousands of false positives and eventually demotivate the developer from using the tool, therefore, for the other good causes these tools promote, in this case it is probably better to switch the rule off.

    Hopefully Unit Tests are in place to cover these areas if static analysis is not used. The only other way to find these bugs is manual code review (laborious, time consuming and introduces human error i.e. the bug may be missed anyway) or debugger tracing.

    Another interesting aspect about the post was the comments. Many of those who omit braces in If Statements do so for readability purposes. Psychologically, this may mean that these developers see readability as a higher aspect of quality than possible fault-prone code. I’m not stating that readability is not important, far from it. However from a business perspective, having the code released with less faults is a higher quality perspective.

    Tags: , ,

« Previous Entries   

Recent Comments