Progressive Requirements Elaboration

In my former post about progressive elaboration, I promised some “examples” from different domains of software development. This is the first of these. As I said before, progressive elaboration is about acknowledging that we can’t know everything we need to get to done before we start.

One of the difficulties of requirements elicitation is to maintain a consistent level of detail, both in documentation and in our conversation with practitioners, subject matter experts, and individual contributors. Another typical difficulty is understanding whether requirements are sufficient to begin some subsequent activity like design or coding.

While some methodologies have made recommendations, most merely call out the need. This leaves it up to the requirements analyst to build their own practice. In fact, most analysts do not subscribe to any specific methodology that they practice. I have often used these interview questions for analysts that I expect to elicit and organize requirements for software applications.Continue Reading

Hiring Talent

Hiring is a tricky business. We screen for experience. We screen for skill. How do you screen for talent? We should recognize that talent and skill are not the same thing. Skill is the ability to apply technique correctly. Talent goes beyond that. Talent includes the ability to know which technique will produce the right result. Talent is the ability to know when none of the techniques I know are a sure winner. Talent is the ability to quickly learn and assimilate new technique.

Talent != skill and experience – five years of c# programming experience does not equal talent.Continue Reading

Technique, Talent and Vision

Technique without talent is inefficient.

Some folks are just born with certain gifts and talents. They are smart in the right way to “just get it”. Whether it is music or leadership, or basketball, it doesn’t matter – some people are a “natural”. The rest of us have to learn the techniques and practice, practice, practice. While technique will get us pretty far, it will never catapult us into the same league as the natural talent. Our practice does not accomplish as much as the practice of the person with talent.

Continue Reading

The Hookup

My background for the last 27 years has been application systems development and integration. I have played every role from business analyst to developer to architect to project manager to team leader to director at one time or another. I know what gets application development teams motivated and excited about their job. I know what causes them to break down. I know what the distractions are and the inhibitors to effectiveness and efficiency. I also know the ROI on solving some of these problems.

Number 1 cheap answer to make software wonks happy and productive – The Hook Up.

They want the fastest workstation, the best software tools, the best technical environment and the most control over their own destiny that they can get.

When software developers are fighting against the toolset that they are using to build the software, and it’s inherent limitations, they are much less effective and efficient. Tools are cheap compared to devs – so we need to grow up and get over it.Continue Reading

Sufficient Tests

I’ll allow up front that I am not a huge advocate of TDD. Not because I think it is bad, its good. Not because I think it is hard, although it adds abstractions to the development process that are hard for some developers to grok. Not because I think it is a waste, because even though it adds time up front, it can save double on the back end. I am not a huge advocate of TDD, simply because it has the developers writing the tests.

Over years and years of software delivery experience, as a developer, as a tester, as a project manager, a business analyst, a manager I have observed one truism. Software developers cannot be trusted to understand the requirements deeply enough to test their own code. There are too many layers of abstraction in the way.

As Seymour Cray is reported to have said,

“The problem with programmers is, you never know what they are doing until it’s too late.”

Progressive Elaboration

Progressive elaboration is one technique that can be applied to virtually any aspect of software development. In reality it is a simple analysis technique which revolves around the maxim: start with what you know.

In agile software development, we apply this to several activities: requirements, design, and planning.

Progressive elaboration starts with the notion, that you cannot know enough about a software system to get to “done”, before you start. Progressive elaboration is sort of a continuous bootstrap process for knowledge.

While agile proponents also talk about how they embrace change, that is not what progressive elaboration is for. Progressive elaboration is a means to get started before you know enough to get to done. It is a means to prevent knowledge gaps from impeding progress. It is a means of driving out information through completing work, rather than by theoretical analysis.Continue Reading

Two Way Trust

A good friend called me from Austin last year to talk about a work situation. He was contemplating separating from his employer because of what he described as his boss not letting him do the job he was hired to do. As we discussed the situation, it sounded to me like his boss (the founder of a startup) has reached a point where he is afraid of losing control of the enterprise. The longer we talked, it sounded like the boss did not trust his direct reports. It also sounded like he, himself wasn’t trustworthy – he had put his directs in a trick bag, and when they called him on it, his response was not appropriate.Continue Reading

Creation Participation Involvement

I have been thinking about the relationships we all experience to the work product we are responsible for. The degree of authority we express over some work product, the degree of autonomy we have over some work processes, and the degree of responsibility we are assigned for that work product dictate our role or relationship with that product, and potentially can affect our productivity and job satisfaction.Continue Reading