Today’s topic is an example demonstrating the difference between requirements (marketing based) and specifications (engineering based). We have a simple example of one form field, where we’re adding a telephone number to the User Profile panel in the WordPress back end. We’ve often come across requirements like this where what appears to be a simple task becomes a bit more involved once we work on converting our client’s requirements into engineering specifications adequate for building robust software.
We typically start out with obtaining basic requirements from our prospective clients to understand the scope of their project concept. We want to ensure there is a designer involved, or somebody qualified to make design decisions when they come up. On the back end (wp-admin) we generally stick to the design conventions already there, though there may still be design implications requiring a designer’s input. Once we have all the requirements on the table and design mockups ready, we then ask questions that move us towards specifications, adequate for estimating cost and timeline for production.
As an example of specifications, we could ask the following 10 questions with respect to this single form field—telephone number—which certainly could be part of a larger project.
- Size/width viewable to user
- Maximum length (characters) for text entered
- Label text (e.g., phone, telephone, phone number, telephone number)
- Contextual help information (tooltips)
- Formatting requirements (examples)
- Possible inclusion of an auto-formatter utility
- Validation requirements or behind the scenes conversions
- Consideration for numbers that may have extension numbers appended to them
- International support on prefixes and format considerations
- Breaking into multiple fields, with or without automatic tabbing and autocompletion
There are three typical groups of answers to the above questions:
- Simplicity. Some prospective clients may need their users’ telephone numbers for a human to call, and may not care much about the format users enter. These prospective clients want to make the project as cost effective as well as easy as possible for the end user, regardless of administrative work that may be generated as data accumulates.
- Best Practices. Most prospective clients will have us apply some basic validations to ensure the telephone number is valid. For example we could filter for numeric characters with parenthesis, dashes, and spaces allowed, but disallow letters or other characters.
- Advanced UI. Other prospective clients may care more about data consistency or user interface and have more advanced requirements. For example, an automated SMS integration may require the telephone number to be formatted consistently in the proper structure. There could also be the need for international prefixes and potentially format recognition and correction validators and feedback mechanisms.
So what’s in a phone number? It’s as little or as much as you want to make of it. The good news is that with custom Plugins you are empowered to make these sorts of decisions!
Taking this small example, one might consider the questions that may arise from their own project concepts. We advise making sure that any developers being interviewed are asking these types of questions, and that they do so before asking for money. These questions often times come up sooner or later, and the later they arise the more difficult it may be to address them as budget and timeline progress.
Stepping back and looking at project management in general, it makes more sense to spend time planning up front and building a small project versus building prematurely. Ask yourself: Is it wise to go to a builder and expect them to plan for you, or could you take on more of the planning yourself, or possibly involve other team members in the planning process? These are good things to consider before beginning development.
Thank you for taking the time to read this post. Note that we really appreciate feedback about what we’ve written as well as what topics you’d like us to discuss in future posts so please do let us know.