
Show HN: The AZ Problem - dvt
http://azproblem.info
======
FiatLuxDave
I have seen this kind of problem (a lack of communication resulting in
requirements that drive bad design) many times. The most memorable example was
a requirement that "Device must run 150 hours on a 9V battery". This was a
difficult constraint, and the final design was a complicated thing with
multiple power supplies and an intricate method of starting up from sleep mode
which involved feeding the power backwards through a power amplifier (i.e.
power to V_common initially went from the battery to the amplifier and out
through the power supply leg of the amplifier, then reversed once the 5V power
supply woke up). Literally the craziest design I've ever seen. Because of all
the complexity, debugging took forever and after the schedule slipped for a
year I got pulled in. When I asked the engineer why they went through such
efforts to save power, they said that it was necessary to meet the
requirements. I then asked what was driving the power constraint, why was it
so important? He literally said "I'm an engineer. Those are the requirements.
It's my job to make a design that meets the requirements. That's all."

So, I investigated the requirement. It turned out that 150 hours was more of a
"nice to have", and the real requirement was a need to do a 48 hour
measurement, then an additional 48 hour measurement if someone forgot to
change the battery. I challenged the requirement and we were able to release
with a relaxed constraint of 100 hours. Unfortunately, all that complexity
remained baked in, and the design remains clunky to this day.

On the next design, I just switched from a 9V battery to C cells, and
eliminated all the crazy power management for a simple supply. It turned out
that customers cared more about cost of batteries than weight. The real
problem was the 9V batteries. And 9V batteries were originally chosen because
it was thought this made the power supply simpler!

~~~
dvt
This is a great anecdote, thanks for sharing!

------
DrScump
If you have a decent datetime library or proper datetime implementation like
in SQL, you can just use the first day of the next month minus 1 day.

