Architecture? What architecture?
Me: So ... you've specified that the email server is supposed to send one of two emails based on which product the customer owns. What happens when we want to add a third email?
PM: But we only need the two choices now. If we need to add a third, we'll just get the sub-contractor to add that.
Me: But if the client likes this version, we're not talking about four installations. We're talking about hundreds. You think maybe the client might start thinking about changing the email message whenever they add more products to their lineup? So maybe we're talking about new email content every other week.
PM: We'll just get the sub-contractor.... Umm. Maybe ... not?
Me: OK, so right now you've spec'd passing a boolean to the server to indicate that the customer owns Product #2, which triggers the hard-coded Message #2. What about passing an int specifying the customer's product, and having the email server look up the message-of-the-week associated with that product?
PM: OH! I see where you're coming from. Wellll, we're pretty late in the process ...
=========
MORAL: Never trust a programmer to design the UI and never trust a non-programmer to design the API.
Nov 21st