I currently work for a high-tech startup called
Corvil Networks. We are developing a product which is sold by Cisco as the
Cisco Bandwidth Quality Manager. It's a great company to work for, and we have high hopes for version 3 of our product (in it's 3.0, 3.0.1, 3.1 etc guises). The basic software architecture of the BQM is 4 components: A C++ daemon which handles packet processing (called 'probed'), a C library which performs statistical analysis of packet data (called the 'CDK'), a Java library which handles data aggregation and a Web front end written in Java/JavaScript. All of this is backed by a Postgres database to store both configuration data and analysis data.
I am part of the team responsible for the 'probe' part of the product, and as we have recently finished the '3.0' product, we are now starting on defining what exactly the next version will look like, and what additional features we will be adding. The process for doing this is that the Product Management (PM) team provide us with Project Requirement Documents (PRDs), we analyse them and figure out how the PRDs can be implemented. The formal response to a PRD is a Functional Specification (FS) which defines what the new features will be, roughly how they will be implemented, and how they will look like to the end user (whether the user uses the Command Line Interface (CLI) or the web front-end (GUI)).
I am the team lead on writing two of these specifications, and am the probe team's representative on two others. When I started the first functional specification, I found that starting with a blank white screen in front of me somewhat intimidating, so I did a web-search for 'Functional Specification' to see if someone had some useful hints or tips about the process of writing a Functional Spec. One of the results was 'Joel on Software', someone that
Caolan has often recommended that I read. I found his
musings on Functional Specifications useful, and decided to follow his recommendation that the best way to get better at writing, is to write.
Hence my new resolution, which I will no doubt break in the near future: to write at least one Blog entry every week! Wish me luck!