Functional Specs - No Fluff Just Stuff

Functional Specs

Posted by: Nathaniel Schutta on July 25, 2006

Depending on who you believe, functional specs are either an absolute must or something to be avoided like the plague. While I vacillate on the necessity of written docu, if pressed I trend towards the 37signals approach - the code never lies (misleads, sure) and iterating code tends to provide better answers anyway. That said, there have been occasions where I *really* would have liked something more concrete than “it has to be like the old system…only better” or “the requirements are whatever I say they are”. While I’ll concede the need to write something down, I’ve seen many examples that go a bit, ah, overboard when it comes to specs. Seriously, if it needs a table of contents and an index, it’s time to pare it down a bit.

The struggle comes down to purpose: why do we write functional specs? Some companies believe they should be the complete conveyance between customers and developers - when you get there, you’re in trouble. By the time you’ve finished writing down every possibility (and sat through many, many mind numbing meetings), chances are the business has changed three or four times obviating all of your hard work.

So the question is, what should a requirements document provide? Agile mentor Venkat Subramaniam nails this issue right on the head - instead of trying to map every fork, provide enough depth to help the developer explore the issues.

Rather than providing answer to all my questions, I would like for it to help me ask the right questions when I am ready to delve into the implementation.

A great requirements document helps me not with right answers, but with right questions.

Keep this in mind next time you sit down to write a spec - it should aide communication, not supplant it. Help your devs ask the right questions, don’t try and answer every single one.

Nathaniel Schutta

About Nathaniel Schutta

Nathaniel T. Schutta is a software architect and Java Champion focused on cloud computing, developer happiness and building usable applications. A proponent of polyglot programming, Nate has written multiple books, appeared in countless videos and many podcasts. He’s also a seasoned speaker who regularly presents at worldwide conferences, No Fluff Just Stuff symposia, meetups, universities, and user groups. In addition to his day job, Nate is an adjunct professor at the University of Minnesota, where he teaches students to embrace (and evaluate) technical change. Driven to rid the world of bad presentations, he coauthored the book Presentation Patterns with Neal Ford and Matthew McCullough, and he also published Thinking Architecturally and Responsible Microservices available from O’Reilly. His latest book, Fundamentals of Software Engineering, is currently available in early release.

Why Attend the NFJS Tour?

  • » Cutting-Edge Technologies
  • » Agile Practices
  • » Peer Exchange

Current Topics:

  • Languages on the JVM: Scala, Groovy, Clojure
  • Enterprise Java
  • Core Java, Java 8
  • Agility
  • Testing: Geb, Spock, Easyb
  • REST
  • NoSQL: MongoDB, Cassandra
  • Hadoop
  • Spring 4
  • Cloud
  • Automation Tools: Gradle, Git, Jenkins, Sonar
  • HTML5, CSS3, AngularJS, jQuery, Usability
  • Mobile Apps - iPhone and Android
  • More...
Learn More »