Developers hate specs. Specifications make them feel like engineers. They stimulate visions of dead beat employees in grey suites browsing thru thrutons of documents and complex sketches. It really clashes with their self portrait of artistic, pizza grabbing creative wizard.
Product managers hate specs. Specs make them think. Specs break their castle in the sky world. Specs make them confront their biggest fear – reality.
These are the exact reasons why software specs are great. They set measurable goals everyone has to agree on. Like many other chores in software engineering, this step is commonly ignored because doing it right is very hard.
Let’s look at a small case study.
The product is a VPN client. A VPN client allows an employee to connect from home to the office and work on the internal network office in a secure manner. The product is very successful in the market, but the code base looks like Spaghetti Carbonara.
I’m the annoying director and Alex is the brilliant team leader.
Alex: I want to start coding the new client.
Ophir: Great. What is the new spec?
Alex: Well, instead of 27 threads we are going to have just 2. It will solve most of the horrible crashes support is complaining about.
Ophir: But what’s the spec?
Alex: I don’t follow. The product is running for eight years now. We are just going to rewrite it in a modern fashion. We conducted a customer survey on which features can be removed, but unfortunately didn’t find any.
Ophir: How about the connection time? How long would it take me to connect to the VPN gateway and start working?
Alex: mmm… 10 seconds.
Ophir: I’ve noticed there are multiple occasions it takes 60 seconds and sometimes even three minutes.
Alex: well, it depends on many factors. The adapter, the network, the authentication method, the client mode.
Ophir: Do we have any official number? Did QA ever measure it ?
Alex: Nothing. We never thought it is important.
Ophir: OK. I’m using my authority as a director and setting the new target for connect time.
Alex: Yes, Sir. What is it?
Ophir: Zero seconds. I really hate waiting for the client to connect.
Alex: Say What? You did have a physics degree before you became a manager, right?
Ophir: Sure. I’m using a 3GHZ dual core laptop with 2GB memory on 54Mbps connection with 30 msec latency. Why does it need to take more than 150 milliseconds ? (there are some mandatory request response due to IKE horrible RFC) .And I would still like it to be zero seconds.
Alex: But Cisco does it in 20 seconds. Why does it matter?
Ophir: Think about the great impact if we can do it in zero seconds. Our client would kill theirs. Nobody notices the difference nowadays since we are at the same neighborhood and the variance is not very big.
Alex: I’ll go and think about it.
On the next episode : The results.