Personal tools
Document Actions
Home / Publications / Topics / 09 / On Reqs and Specs: The Roles and Behaviors for Effective Product Definition
Document Actions

On Reqs and Specs: The Roles and Behaviors for Effective Product Definition

Do you write Requirements or Specifications? Or do you combine them into ReqSpecs? Each has a place but combining them just causes confusion. By Steve Johnson and John Milburn

[PDF]


The Problem

Can you believe the angst between product managers and developers? Many product managers think their developers are incompetent. The feeling is mutual: developers don't think product managers bring any value to the process. Yet we all want to get products to market but our understanding of roles keeps getting in the way. Who writes requirements? Who writes specifications? And what's the difference between a req and a spec? The requirement is the problem.

Product managers write terrible requirements, littered with buzz words, ambivalent language, and non-specific performance parameters. They read like somewhat-technical marketing hype. And developers have to make sense of the requirements. They complain, "I cannot program to these requirements."

And they're right.

So product managers try to become more specific by writing what we call ReqSpecs. Part problem, part implementation--and impossible to use. Developers complain "don't tell me how to do my job" because the requirement now explains how the feature should be implemented. And they're right again.


The Role of Product Management

The primary role of the product manager is to be the "messenger of the market", and we must not take on additional tasks until that primary one is completed. Yet product managers frequently attend design meetings. Why? What value do they add? If product managers have time for design meetings, it had better be after they have completed their on-site visits with their market segment.

Besides, product management attending design meetings is not about getting better designed products; it's about sharing blame for poor design. "What do you mean you don't like it? You were there when we designed it!?!?!" If product managers are creating the design, what value is development providing? Coding? If that's all, perhaps we should just fire all the developers and outsource to India or Ireland or someplace where at least they will code to our design. That is, we'll get exactly what we asked for without the developer's editorial license.

Developers say they cannot program to product management's requirements. And they're right. What they need is a functional specification. ReqSpecs don't solve the problem. Let's clarify some terms.

  • A requirement is short statement of the problem
  • A specification is how to solve the problem

Requirements vs. Specifications

In Pragmatic Marketing's seminar Requirements That Work™, we teach product managers how to log market problems, distill them into the unique set of problems, and write requirements based on the market problems. A Market Requirements Document (MRD) is a master list of all problems and the number of customer and prospect sites reporting the problem. Developers value the class as much as the product managers because eliminating dysfunction by teaching product management to deliver what developers so desperately want to know: what are the problems in the market? The problem is the requirement.

By definition, a requirement is implementation-free; that is, absent design. When developers request more specific implementation details, they're asking for a specification instead of a requirement. In Extreme Programming (XP), a requirement fits on an index card and is delivered in the form of a story. The requirement is also an explicit "agreement to discuss" so that developers fully understand the problem.

Instead of being in the requirement, implementation details must be in the specification. A specification is the architect's intended implementation to solve the problem. It is not an architectural blueprint of the final product.
Joel Spolsky has already written much on specs (Joel on Software). We defy you to find an article that doesn't have at least one tip on creating better products.

He writes:

"On any non-trivial project (more than about 1 week of coding or more than 1 programmer), if you don't have a spec, you will always spend more time and create lower quality code."

And also says:

"A functional specification describes how a product will work entirely from the user's perspective. It doesn't care how the thing is implemented. It talks about features. It specifies screens, menus, dialogs, and so on. A technical specification describes the internal implementation of the program. It talks about data structures, relational database models, choice of programming languages and tools, algorithms, etc."

So a requirement states the problem. A specification states the solution. Joel defines two kinds of specification: functional, which is the intended approach to solving the problem, and technical, which is a detailed internal implementation. In the end, we all have a critical role to play:

  • The product manager finds and quantifies market problems, articulating them in the form of requirements
  • The product architect (or designer) writes a functional specification describing the approach to solving the problem
  • The product developer creates a technical specification that fully describes how the functional specification will be implemented

Think developers are incompetent? Maybe they're working in a dysfunctional environment and are frustrated themselves. Focus on market problems and you're halfway to a reasonable solution. Design a reasonable solution to the problem and you'll deliver a product that people want to buy.


Form of well-written Requirements

We’ve completely abandoned the traditional “the product shall” approach to writing requirements. Instead, we encourage product management to focus on the problems and let development focus on how to solve the problems. Many of the requirements that we read are in fact thinly- veiled feature descriptions.

Do you write requirements in the form of "the product shall?" If so, then you are probably limiting the creativity of your development team and writing specifications. However, depending on the requirements writing legacy that you inherited (probably from a extremely project- or program-oriented waterfall environment), you will need to transition your teams to understand that the product management role does not include writing specs, but rather that the value they add is through customer interaction and understanding market problems.

Do you write "as a 'role,' I want to 'perform and activity,' so that I can 'achieve a goal'?" If so, then you are probably an agile shop, using a variation of Scrum or XP development techniques. We have found this method seems to work the best in software companies, with co-located teams, that have a fairly high degree of domain expertise. However, there are numerous examples of multi-national projects building hardware or electrical components that have also been successful with this approach – it just requires different skills and techniques to be successful.

Our preference is the Requirements That Work format: [Persona] has [problem] with [frequency]. It forces product managers to explore the problem, not the solution, and helps the design team understand the context of the problem.
The benchmark for well-written requirements is:

  • Is there a clear definition of the user(s)?
  • Do I understand their problem / what they are trying to achieve?
  • Do I have supporting documentation that provides the context about the persona and their problems so that I clearly understand how to design a solution to their problem?

Designer, Architect, or Product Owner?

If your company is considering introducing a new artifact, our guess is that you really need to introduce a new role! You’re probably missing a designer. Product managers have a full time job indentifying and quantifying the market problems. Your developers probably have their hands full delivering solutions. But who is designing those solutions?
No hardware company would build products without a designer, why do software companies? A designer analyzes the problem and designs a solution. Their output is a specification that the developers will use to develop to.

Alan Cooper argues that most projects fail because they do not have a spec at all. This is because most companies do not have product designers or architects. Product managers create desired feature lists. Developers write code. But no one is designing anything. Would you hire a carpenter to build the house? Of course not. You would hire an architect! Yet programmers write complex software products without a design. So Cooper suggests that we add a role that is new to most development organizations: the product architect. The architect analyzes the problems that are described in the requirements and then creates a specification, at a functional level, how the problem can be solved with the product. The architect delivers a recommended approach to solving the problem, serving as the bridge between product management and development.

Pragmatic Marketing's 2008 Annual Product Management and Product Marketing Survey found that for each product manager, there is an average of 1 product architects/designers, 0.72 development leads, and 5.5 developers. However, when these same product managers were asked how they spend their time, almost 50% are still writing detailed specifications! So, what are the architects and developers doing?

Product Manager vs Product Marketer

Regardless of the title or organizational structure, it is imperative that there is a clear delineation of the "what" from the "how" – development does the how, and product management does the what. Who's at fault? We have found that it is usually one of three fundamental reasons this is not being done:

  1. Product managers, especially those who came from a development role, write specifications rather than requirements because they are most familiar with them; don't know any better way to write them; and see this as a "comfort zone." Getting out and understanding the market takes time and is a lot harder than writing technical or functional specifications.
  2. Regardless of the official title of the architect/designer role, it is critical that this individual(s) has the respect and understanding of the development team; has a close relationship with the product manager; and understands the customer domain as well as the technical domain. Lacking any one of these three can create gaps.
  3. Some organizations do not fund the architect/designer role, and product managers act in this role by default. We see this especially in smaller companies who don't have the size or finances to fund the role.

Developers complain that product management requirements are not detailed enough. Requirements should in fact be absent design. Instead of providing more content, product managers should provide context so that the development team can fully address the problem.


Steve Johnson is a recognized thought-leader on the strategic role of product management. Broadly published and a popular keynote speaker, Steve has been a Pragmatic Marketing instructor for more than 12 years and has personally trained thousands of product managers and hundreds of senior executive teams on strategies for creating products that people want to buy. He writes the ProductMarketing.com blog. Follow Steve on Twitter or contact him at sjohnson@pragmaticmarketing.com.

John Milburn has “walked the walk” in technology product management. Throughout his 20+ year career, he has managed or delivered over 40 hardware and software products and implemented the Pragmatic Marketing Framework at many companies. John serves on the planning team for Austin ProductCamp and helps groups around the U.S. create and run their own ProductCamp. Contact John at jmilburn@pragmaticmarketing.com.


Love it, but...

Posted by Scott Sehlhorst at 2009-09-16 12:38 PM
Steve and John,

Love the article, thanks for writing it! My only "but..." is that you didn't touch on completeness. Ultimately, every story provides value - either directly to a user, or in combination with other stories to entice a buyer, or as a supporting component of a go-to-market strategy. That's important to the product manager (putting half a solution into a release is not ideal), and also important to dev teams - making the prioritization process more transparent, and providing clearer context to them, and something to rally around (we're doing XYZ so that...)

Comparing a product owner's view with a product managers (as you describe above):
As a [persona] I want to [do something] [with some frequency] so that [I get value].
As a [persona] I have [a problem] with [some frequency].

The more I think about it, the more I like it - [a problem] is a great 'one level up' for why a persona [does something]. I worry that the [I get value] part will get lost. Or is that implicit in the problem statement, like:

As a door-to-door frozen steak salesman, 30% of my inventory spoils on hot days (20 per year).
Versus
As a door-to-door frozen steak salesman, I want to prevent my inventory from spoiling on hot days (20 per year) so that I can avoid the added inventory costs.

I think either can work, but maybe your syntax helps prevent people from writing:

As a door-to-door frozen steak salesman, I want to refrigerate my inventory so that I can avoid added inventory costs due to spoilage.

The last one embeds design (spec) of 'refrigerate' in the requirement (req) of avoid spoilage (arguably better than 'avoid cost').

Syntax of Requirement

Posted by John Milburn at 2009-09-28 02:42 PM
Scott, as always, you have great insight and experience here. A "slippery slope" that I have seen more and more lately is the approach some companies are taking that "all requirements MUST be written in THIS format." Sounds a little like we're "writing requirements about writing requirements...." smile... There is a continuum between dictatorship and anarchy, and well written requirements will fall somewhere in between. We see problems with both extremes. That being said, there are some themes that we often emphasize: the "customer" for the requirements definition is development - have you understood their problems and will they "buy" your product?; hardware- and software-legacy (or based) environments will typically have different views of how to write requirements; functional vs. non-functional requirements may suggest different formats; communication is key, regardless; offshoring adds even more complexity to communication; junior teams without a strong designer cause PM's to wear too many hate; product management must continue to focus on staying out of the "how" - we still see too many "experts on the product" rather than "experts on the market."

Vague requirements = crapshoot solution

Posted by Adam at 2010-01-14 10:22 AM
The one problem I have with this style of requirement definition is that it seems not quite testable. A requirement by definition can be met or not met. To use your salesman example:
"As a door-to-door frozen steak salesman, 30% of my inventory spoils on hot days (20 per year)" is not a testable requirement. How would one test whether the requirement was satisfied?

Let's say we assume the requirement is satisfied only if problem is eliminated - I give you a solution "fire the door-to-door salesman". Requirement met (no more wastage by salesman). If you say "but that's not what I had in mind", I say "you didn't say that in your requirement". Now apply this to a big software project (and out comes Windows Vista ;-) ).

Let's instead assume reducing the the problem is considered meeting the requirement. If the problem is with the percentage of spoiled food, trivial solution is to give the salesman more frozen steaks, some to keep at some freezer at home. If it's the total amount of spoilage you are trying to reduce, giving the salesman less steaks will meet the requirement but again, probably not what you had in mind.

If you specified that you needed a product which will allow the salesman to preserve X amount of frozen stakes for Y duration and it needed to fit in Z space (e.g. specific size car trunk) and be powered from a car 12V plug with Q available power and cost less than W, then you have a requirement set you can test against and anything which meets this requirement is more likely to satisfy your need.

If you wanted to give more creative license to the solution team, you could create a more general requirement for a system which will allow the salesman to sell a minimum X amount of frozen steaks per Y period at Q price with less than Z spoilage. Range of solutions increases significantly but the goal is still clear. Specifying just a problem completely misses what you're trying to achieve.

Design role

Posted by Nate Boyd at 2009-09-16 12:45 PM
The "design" role is a missing one, but I am skeptical that technical/development types should be assuming this role. Great product managers take insights about market need and opportunity, and then translate that into a compelling product vision. They don't simply capture customer needs, they show how products can solve them. Product managers don't try to figure out how to implement the solution vision - that is what technical architects (technical designers) and developers are best at.

Partnering product managers with UI design specialists is often imperative, with equivalent roles often required but forgotten for programmatic interface design (e.g., Web Services APIs).

Just to be clear

Posted by Steve Johnson at 2009-09-17 02:47 PM
I don't think product managers, product marketing managers, or developers should be doing design. Designers should be doing design. Some product managers and product owners get stuck with the responsibility because they suck at it less than the developers do. If you're a product manager, make sure that you get the requirements right before you (or anyone else) start designing solutions.

Need a book? Try The Design of Everyday Things by Donal Norman. It's a classic!!!

Product Managers and Designers

Posted by Paul M. at 2010-04-15 12:10 AM
I agree that product managers should not be designing. In fact, I explicitly forbid this for my product management team. We (now) follow pretty much the process described in the article - but it took at lot of effort to get the product managers out of the comfort zone of defining features.

Now, the product managers write requirements that are market driven and describe a problem. A designer creates a functional design and a technical design. These documents are the same as those defined in the article - the functional design specifies how the product will solve the problem from a user perspective. It is complete with a storyboard of how the product will work, with wireframe diagrams or screen mock ups. The technical design looks at the internals of how this is implemented. The product manager reviews and approve the functional design but not the technical design.

The functional design also serves as a contract between the development team and the product manager, and also between the development team and the test engineer and technical documentation writer. The product manager agrees that if the development team develop and deliver exactly what is in the functional design, then they will be happy that the requirement has been satisfied. Similarly, the test engineer can start creating functional tests for the product based on an agreed functional design and the technical writer can start documenting the use of the product (or feature) based in the same design.

This process has helped avoid the situation of the product manager - when seeing a feature for the first time - saying "That's not what I wanted" and developers retorting "But you never said what you wanted and your requirements weren't detailed enough".

This process is effective - but it took a lot of effort (and cursing and cajoeling) to get here. We had to move a lot of people out of their comfort zones and, to be honest, some of the people (both developers and product managers) couldn't make the transition.

Paul.

www.productmarketing.com

Posted by Steve Johnson at 2010-04-15 10:48 AM
Glad to hear that you've had success. Many teams balk initially at the idea of writing requirements around the problem and not the implementation but once they make the mental leap, they find the PM-Dev relationship changes entirely. Developers WANT to be problem-solvers, not feature-implementers.

Thanks for your note.

Some thoughts...

Posted by Hank Roark at 2009-09-16 05:40 PM
On the definition of requirement... I forgot who wrote it, but I have recently been subscribing to the definition of a requirement as a decision that someone is unwilling to change. I think in a market focused effort, that both your definition and the decision definition apply: the market is unwilling to change it's need if you want to realize the business case.

Second is on the role of the "product owner", in the traditional Scrum/Agile sense. Mike Cotmeyer recently wrote that he thinks Scrum has put four traditional roles into the PO role: product manager, project manager, business analyst, and user experience designer. I map the "business analyst" and "user experience designer" into the missing product architect or designer role you mention (some other places might call these systems engineering...more terms to further confuse the conversation). In the end, I believe this overloading of the "product owner" term, at least in Agile projects, is making this problem worse by overloading the product manager with all the other product owner responsibilities.

Great article.

PO = everything else!

Posted by Steve Johnson at 2009-09-17 02:47 PM
I heard a speaker at Agile 2009 say that product owner is basically "everything that development doesn't want to do." YIKES! The product manager and product owner titles have been burdened with a fair amount of junk-work.

Design is a skill. product managers have a knack--a flair--and maybe their less bad at it than some developers but really, design isn't product management. Read Alan Cooper's lament about design in The Inmates are Running the Asylum.

Thanks for reading.

Don't forget, more on the product owner role in our Living in an Agile World ebook and seminar. Go to www.productmarketing.com to get the ebook--and see you soon in the seminar. :-)

Design Books

Posted by Scott Sehlhorst at 2009-09-21 03:09 PM
Great references (Design of Everyday Things, Inmates)! I've also got space on my bookshelf for: About Face 2.0 - The Essentials of Interaction Design (Cooper), Designing Visual Interfaces (Mullet and Sano), Contextual Design (Beyer and Holtzblatt), The User Illusion (Norbetranders), Usability Engineering (Nielsen).

Also - completely agree about having designers design. Reality is that sometimes, people are multi-disciplinary, and part of small teams where they are asked to do less of more. Like player-coaches, actor-directors, singer-songwriters. Certainly not the ideal end-state - too dilutive, but worth acknowledging. I think it's great that you're providing some good references!

Great

Posted by Naveen at 2009-09-17 03:13 PM
Great site and great posts and great peoples @ Pragmatic marketing.

Ambiguities...

Posted by 4johnny at 2009-09-24 02:21 PM
I have a s/w eng degree w/ many years experience in the field; then moved on to Product/Program Management (Program in the Microsoft technical sense, not the Project Management sense) and attended Pragmatic Marketing courses (which are educational, enjoyable, all round excellent). So I agree with most of the article - just a couple itches...

There is a general ambiguity on the word "requirement", in particular "market req" vs "product req" (or specifically "s/w req"). One way to resolve this ambiguity is to reserve "requirement" for market reqs, and use "feature" for product reqs.

Every time the discussion of "why" vs "what" vs "how" comes up - the descriptions are always ambiguous, oversimplified, overlapped, confused, etc. One example alternative partitioning is as follows:
- "Why" is why the market needs something done, the problems (MRD, entirely market vocab, by Product Manager, Product Marketer).
- "What" is what is going to be done via product about the "whys" (Functional Spec, PRD, SRS, in personas & roles & use cases & interfaces, by Program Manager, Designer, Architect, User Experience, Quality Assurance).
- "How" is how the product will be implemented to accomplish its assigned "whats" (Technical Spec, Detailed Design, in modules & GUIs & platforms, by Designer, Architect).

I am not saying I like this particular break-down over any other. The complexity changes with the size of the org that owns it. Conway's Law says that products often resemble the communication pathways of the organization that produces them. This is often true of the documentation artefacts as well, with various overlaps or combinations or simplifications.

Often the roles overlap onto single individuals, e.g., Product Marketer combined w/ Product Manager, or Product Manager combined w/ Program Manager. These overlaps can be tough since you effectively have to debate/negotiate with yourself - like playing chess against yourself. But as re-orgs and growth happen, the roles (and associated deliverables) tend to get teased apart and refined.

Many granularities are available for breaking down the chain of refinement & traceability from concept to execution. And the level of granularity you have may very well be dictated by the org structure in place (smaller, and simpler ones tend to be more flexible). So roll/role with it! (I could not resist.)

Thanx for the great community!

-johnny
P.S. I am now a Project Manager, and I wish you Product Managers would sort this stuff out!

req vs feature

Posted by Steve Johnson at 2009-09-24 03:53 PM
The real message that I want product managers to understand is that a requirement is about the problem; a specification is about the feature. Sadly, most often I find requirements that are "the product shall have this feature." At least part of the problem is that these techniques are not taught in school nor in most development methods. So product managers have to learn this nomenclature on their own. Our Requirements That Work seminar was designed specifically to address this problem. Defining what is--and what is not--a requirement and illustrating how to communicate market requirements--not product features--to development.

Thanks for your participation in our community.

Interesting article

Posted by Haig at 2009-10-04 09:28 PM
In the organizations I've worked at we've acted as both Product Managers and what you're calling Product Architect/Designer. Product Managers should always bethe business experts explaining to development what needs to be done and how it should be done from a functional level.

Often times development will have excellent functional ideas that must be listened to. However between the Development and Product Management departments, it should be the PM dept that has a better handle and what customers need and how it should be from a functional level.

With that said PM's should look to other groups for expertise as needed (Creative, Usability, etc).

product managers and designers

Posted by Steve Johnson at 2009-11-11 11:42 AM
Don't you find that these are very different skill sets? I recommend that product managers focus on problems in the market and let designers focus on the best way to solve them. When we tell the product team what features we want, we corrupt the design process.

Product Managers and Designers

Posted by Market Driven at 2010-02-10 06:07 PM
I find that the Product Manager (along with the other customer-facing roles like Implementation Project Managers, Account Managers, Support, and Training) know much more about the clients' needs and wants than Development. Try telling the customer that while the product may technically do what they need done, the god-awful way it looks or convoluted way it does it is not the responsibility of the Product Manager. I have, and ALWAYS receive this look of bewilderment. I break the "requirements" into 3 categories - functional (business) requirements (e.g., the application needs to do "this"); usability (the way a user gets the application to do something needs to be intuitive, logical, easy to do); and aesthetics (the application needs to have a nice look and feel). I think the Product Manager should be the "owner" of the product (in the customer's/market's eye, the buck stops with him), and as such, should have the final decision on what the application does and looks like. As probably the most customer-facing role, the Product Manager is ideally positioned to understand the business and usability requirements to the development team. I agree the Product Manager may not have the talent to design the aesthetics of the application, but they will likely have good input on whether the aesthetics the designer comes up with are decent. I think the role of the Architect and Developers are to figure out how to structure the application and build the code to achieve the goals the product manager has laid out. In my experience, the Designer, Architect, and Developer have very little customer interaction and if they are "given creative license" they more often than not build something they think is wonderful, but the market thinks is not so hot... I'd like to see Architects and Developers use their interests and knowledge of really cool technology to Architect and build the application that meets the Product manager's ideas of what the market wants (i.e., the Product Manager understands the user and what they want, the Architect and Developer build what the customer wants).

Agreed

Posted by Steve Johnson at 2010-02-11 12:31 AM
The product manager is indeed the customer advocate. But the product manager may not be the right person to DESIGN the solution. Ideally, an architect and/or designer will create a solution that the product manager will validate.

Works one at a time but misses need to create winning products

Posted by Chris Pagel at 2009-11-10 01:45 PM
I like the premise but I think it presupposes high-functioning teams that are jointly accountable. I cannot see how that's realistic 100% of the time in commercial product development. I believe the product manager needs to be accountable for creating a winning product.

What this premise needs to be implementable in many organizations is a method for relating these terse requirement statements into an indivisible goal (package) that product management, design, architects and development agree to deliver by a specific point in time. That will then drive the behaviors that ensure success and the necessary collaboration when the responsibilities are split.

teams and creativity

Posted by Steve Johnson at 2009-11-11 11:42 AM
The ideal team combines focus on market problems with innovative creativity. The former is product management; the latter is development. Many product managers bring not only the what but the how. Alas, maybe product managers are better at design than many developers but I wouldn't want to build a bridge without a civil engineer, nor would I build software without a designer.

So the question to discuss with your team is who is best at design. And if not someone on the team, who can you find that can do it?

Extending your definition

Posted by alan arnfeld at 2009-12-17 10:25 AM
Nice article - I would recommend you consider extending your definition to include the [justification] - to provide a complete picture to all the participants in the product development process - regardless of their role. Especially important for test team (technical and user experience) so that they can consider the correct variants.

from: [Persona] has [problem] with [frequency]

to: [Persona] has [problem/task to do] so that they can(achieve/contribute to this goal[justification]) with [frequency]

20 years ago we used to classify task using the DIF framework - which was also very useful to give the whole team a perspective - especially on more complex systems.
D - Difficulty
I - Importance
F- Frequency

For example: A frequent, easy and non-important task would be prioritised and designed in a different way to an infrequent, difficult and very important task

regards
alan

Product Architact role

Posted by MBhuiyan at 2010-01-13 05:09 PM
Thanks for brining out the clear role of a product archetact. In fact, our small group has implemented this rple and got a good resunts. We used to have developer designing GUI without specifications and end product was somewhat not alligned to the market need.
We had engineers who was not involved at all in the How part of the equation. We motivated and coverted his role to a product archetact and was able to get the specification right.
Our comany is going to agile and the role of PM with PArch will be critical to successful product development.

Product Architect in Financial industry

Posted by Amaz at 2010-01-21 09:07 AM
Our firm provides solutions for the financial industry and use Agile development process. Where there are a lot of questions is who is responsible for producing the 'software requirement specifications.' Product mgmt produces the market requirements and product functional specifications. Development however says we cannot use your product functional specifications. The Prod Functional specifications has 'no' IT technical/develoment language and describes the s/w products features and functionality to solve our business users problems. Next step is defining the s/w requirement specifications which will include the 'Use Case Scenarios' with 'if/then' statements and 'technical work flow language' - this document is not written from how a business user will use the product. Development is saying they cannot use the Prod Functional Specification and product mgmt needs to hire the product architect. Should product mgmt take on that responsibility? Interested to hear views.

Architect = development

Posted by Steve Johnson at 2010-01-21 10:05 AM
I'm amazed to hear that developers want product management to hire an architect (altho I'm delighted that they want someone to!) Design is where real development happens and I fear your team is saying they just want to do programming--which makes them easily outsourced. Yuk!

I'm also surprised to hear you say "Agile" and also "market requirements and product functional specifications." I think these two phrases are mutually exclusive. Ideally, product managers should be writing requirements in the form of "The [persona] has a [market problem.]" Requirements should be about the problem; specs are the features that solve the problem and ideally should be written by the team that will develop it.

We cover this topic in our popular Requirements That Work seminar. Details at http://www.pragmaticmarketing.com/seminars/requirements-that-work

In the end, a designer or architect is always a good idea. Our annual survey data reveals that there is typically one per project. Whether it's in product management or development isn't really a big deal. But if it's NOT in development, what are those people doing? And how will they keep their jobs in the next round of outsourcing.

Design cannot be outsourced. Programming can and will be--and quite easily.

We are not requirements monkeys

Posted by Shaun at 2010-02-15 12:03 PM
I agree completely that regardless of who actually does the design, the requirements need to spelled out in an objective problem-oriented format that doesn't pre-judge any type of solution. I also agree that there is a critical need for a design phase where one or more individuals skilled in product design work through possible solutions and truly design a product before building it. I've seen from my own experience how software becomes a Frankenstein solution when you short change that step. However, I have found from experience that even highly experienced and skilled software engineers tend to be mediocre at best at design. I've had the perspective of working in an environment where I was the product manager, the product designer, the software engineer, the db designer, etc. all wrapped up into one and now that my company has grown, I have a team of software engineers and all I do is product management, so I've been on both sides. My engineers say "we don't want to be just code monkeys, we want to have an input on the design, we have good ideas too.". But what happens when you don't have someone skilled in designing a user experience clearly spell out the interactions and interfaces for them? In my experience you almost always get a mess. I can always tell when looking at a new feature the degree to which the engineer was left alone to make decisions about the product design. I would LOVE it if all my engineers were good at product design. I would love it if ONE of them was good at product design. But I think finding this is quite difficult. Because of this we have explicitly created a User Experience team that works jointly with a product manager and an engineering lead to craft a design concept or prototype that can then be discussed among the whole project team before finalizing the design. Even with this, product design is still hard. I think good product managers need to be involved in the design process because design requires choices and opinions. We tend to talk about software development as though if you just define the market problem clearly and turn it over to your engineers they will come up with a perfect solution. There are many ways to solve the same problem in software. OSX and Windows solve the same problems, but they represent different opinions, different choices and different aesthetics about how to solve those problems. This is not something that can just be left in the hands of some engineer with the title of "architect". The product manager should not only know the customers well, but they should be smart about design and usability, they should spend time observing how other software products solve similar problems, and they should have strong opinions about design that are informed by their intimate knowledge of what goes on inside their customer's minds. Just like software developers keep saying to me they don't want to be just code monkeys, I think it's time to stop implying that product managers are just requirements monkeys. Product design is a strategic skillset for a business and good product managers should have an influence.

Designers are a new breed

Posted by Steve Johnson at 2010-02-18 02:42 PM
The best designs typically do not come from product managers or developers but from professional designers. Most product managers wouldn't try to code because they don't have the training, but they often try to design because they have a flair.

Your final comment is perfect: Product design is a strategic skillset for a business and good product managers should have an influence.

requirements do exist

Posted by Guy Poirier at 2010-03-05 04:45 PM
Hi,
Liked the article but was puzzled about the absolutist approach to how requirements should be written. I work for RIM as a development project manager though I try to wear a hat that considers product management issues (and maybe have a desire to move that way later). We do, in fact, have requirements, that are best expressed in a "shall" form, and where differentiating between "feature" and "requirement" is semantic.

i.e. "The user wants to be able to use his stereo headphones." --> "The device shall have a 3.5 mm headset jack".

All I'm saying is that there is value in binary "shall" statements that are true, where implementation is non-trivial but where feature inclusion is non-negotiable.

I understand that in SW implementations, in particular, we lean to user stories or audience modelling as a means to describe problems in discrete terms - terms that a skilled designer can translate into a functional spec or HLD.

Cheers.

good points

Posted by Steve Johnson at 2010-03-05 05:10 PM
My main mission with this article was to get product managers to focus on the what and now the how. Too many "requirements" that I encounter are thinly-veiled (or often not very not thinly) feature statements. I believe that designing solutions is an art, one that not many product managers have skills to do. When in doubt, a requirement should state the problem.

I'm quote okay with your example: I don't care if it's "The user wants to be able to use his stereo headphones" or "The device shall have a 3.5 mm headset jack". Both convey clearly a market requirement.

But here's crazy idea. What if the problem could be solved without a headset?

I encourage the product manager, designer, developers, and others coming together to brainstorm ideal solutions but let's try to keep the solution out of the problem definition.

Requirements or Implementation

Posted by Paul M. at 2010-04-15 12:10 AM
I actually disagree that the two 'requirements' terms are equivalent i.e.

1. "The user wants to be able to use his stereo headphones"
2. "The device shall have a 3.5mm headshet jack"

The later defines the implementation and narrows the solution to providing a 3.5mm headset jack. The former allows the designer some latitude to come up with alternatives that may be just as acceptable - or even add value in addition to a simple jack.

What happens if the product designer thinks that, in addition to a 3.5mm jack, you could also include Bluetooth capabilities for a Bluetooth headset? Your second statement implies that the Bluetooth capability is not a requirement and therefore should not be considered. However the first statement allows the product designer to suggest these alternative approaches which might be beneficial to the final product.

Paul.

www.productmarketing.com

Posted by Steve Johnson at 2010-04-15 10:48 AM
Yes, a requirement that includes implementation details (3.5mm jack) corrupts the design process and limits the dev team creativity. Another example, my GPS has bluetooth. I imagine that the PM said "Add bluetooth" but didn't explain why. So the GPS acts as a headset. What _I_ want is for the GPS to receive info from my phone. My phone knows the address of where I'm headed for an appointment; with bluetooth, I should be able to have the address jump from the phone to the GPS. If the problem were stated as "Every morning, Kevin the sales guy wants to have his daily appointments loaded into his GPS." The implementation would be bluetooth; the problem doesn't care if its done via bluetooth or a wire or magic.

Requirements and scope

Posted by SJB at 2011-05-10 11:34 AM
The truth is that there is no single fix. If the Product Manager knows very well that a 3.5mm headset jack is an essential feature, given that its the most commonly used method in the world and that a wireless solution requires some users to purchase adapters etc, then he/she cannot afford to let the design team go off and explore alternatives that would never meet the goal. There could well be Time to Market constraints or the strategy for the product could be catch up / me too or the company might also make a living selling 3.5mm jack plugs! Maybe the justification idea helps here, but prepare for the process to be a little iterative and include some quality get togethers by the stakeholders.

Great job Steve!

Posted by Edward Brown at 2011-08-24 04:35 PM
Steve,

You hit the nail right on the head: Without distinguishing between requirements and specifications companies will continue to take longer to produce products that never fully take off because they aren't built to a well quantified market need.

The definition I use most is: "A requirement is what must be delivered to provide value by defining what should be in order to achieve value by addressing the problem, challenge or opportunity."

As you have written, a specification is how to solve that problem. There are many "forms" in which to do this; use cases, user stories.

As a business analyst I am usually presented requirements that are candidate implementatons. I just accept this and work with the product manager (the person who best knows the market) to discover the "true" requirements. This is part of my job. I then restate this in either visual or textual manner to the development team--usually telling a story to make it more tangible.

At this point there are MANY ways to solve the problem as Scott Selhorst points out. But, that is a GOOD thing. Sometimes the best way to solve a problem is to change the perception of the user rather than bring the current state closer to their perceived ideal state.

Either way, in my opinion it is the business analyst, user experience and technical architect who is responsible for coming up with options for solving the problem. The product manager and the executive team will ultimately decide which solution best satisfies the market need. I.e., is financially viable and meets the need without exceeding it.

My recommendation is for the business analysts reading this to become that critical bridge between the product manager and the development team by COLLABORATING with product management to better understand the problems and help drive clarity around the problem to the solution team.

In addition to some of the great books mentioned by Steve and Scott, here are some of my favorites:

User and Task Analysis for Interface Design by Ginny Redish
GUI Bloopers 2.0
Don't make me think by Steve Krug
Writing effective use cases by Alistair Cockburn (The real takeaway is NOT the template but how to think and work at different levels of details!)