because Hindley-Milner rocks
If you’ve never experienced a waterfall process then you probably don’t know the pains associated with such development management practices. There’s also a wide latitude of waterfall techniques and practices with some versions actively trying to help facilitate productivity. Ideally, each step of the way forward is a perceivable step forward.
It’s an older technique that used to be (and probably still is) applied to engineering endeavors where several not easily addressed concerns needed to be tackled before production could begin. The emphasis, to stop a company from burning cash before the manufacturing capabilities, parts procurement, supply chain management, feasibility studies, engineering considerations, capital constraints, marketing, sales, and such issues could be addressed. You wouldn’t want to spend several million dollars coming up with a product only to find that a critical part supplier could potentially be facing Chapter 11 in the coming months.
Problems start occurring with any methodology when one, some, or all parties involved have the wrong incentive structure. For such a process heavy life-cycle management technique there exists the potential to abuse that process for individual gains. Why have a subcontractor produce one document for review when six or seven nearly identical documents could keep someone in your organization employed for a month (and also help you extract a larger slice of the total pie?) Why have one review for any component when you could require three or four reviews tied to the production of yet more documents, themselves needing review? And then you could layer more administrative tasks to report on the status of the reviews (again, needing review.)
Problems also start occurring in a process heavy environment when the participants become captivated by that process. I don’t understand how it happens on a psychological level. To me, I see pragmatism pushed to the wayside. That frustrates all and leads to an internalization of minor and petty disagreements. Which leads to a fixation on trivial issues. Which leads to the past couple of days I’ve had:
Person 1: The phrase “List of matching data points between produced and reference data sets” can’t be used.
Me: Why not?
Person 2: That’s right, the term “list” refers to a product type found within the configuration module.
Person 1: We’re not calling them “products” anymore, they have to be denoted data types.
Person 3: Actually, according to the software design spec datatype refers to a data structure so we can’t call it a “data type” either. We need to come up with a different name. It’s too similar “data type” and datatype.
Person 1: I thought technical note 42 addressed this issue.
Person 4: It did but it the software design spec supersedes it. Let’s say “The matrix.”
Person 1 (after obligatory movie reference): There can also be vectors for sparse data sets.
Person 2: Yeah, and I don’t believe we can say data set either. That’s supposed to be only for end products.
Person 1: You mean data.
Me: … Sure, data.
Person 3: I think we should go with what our group had done in —
Person 2: No, you guys didn’t address the reproducibility constraints issue so what you had is only applicable your specific document. How about “Catalog of?”
Person 5: Well actually I think we should back up a second and take a look at the larger issue here. We can’t have reference data because that means it’s been verified which is what we’re attempting to do. We need “synthetic” data.
Person 3: “Synthetic reference” data?
Person 5: It’s still using the term “reference”
Me: ( …B-I-N-G-O and Bingo was his name-O… )
You know what happened after that? Another 3 hours of meeting. Then we introduced another person to the conversation. Tomorrow, another meeting. No one is happy. Why? We’ve got to produce more documents for internal review so that someone external can review those documents before they can review the documents we submitted for review so the previous review can be reviewed.
I’m starting to dread review meetings. I don’t want people coming near what I’ve made. Code is one thing, change it, improve it, refactor it, great! But these documents, what are they doing to me? I’m starting to get territorial in a waterfall process. Fuck me.