There are two fascinating articles on pitfalls of object oriented programming and potential benefits of “data oriented” approaches in programming that I have just encountered. The first is an article that appeared in the Medium, titled “Goodbye, Object Oriented Programming.” The second, “Data-Oriented Design (Or Why You Might Be Shooting Yourself in The Foot With OOP).” The two are not exactly orthogonal: “data-oriented design,” as the article makes clear, is really more of a philosophy (although the same might be said of object-orientedness, even if it is explicitly incorporated into the design of the scripting language), that can be incorporated into any number of languages. In other words, it is really more the challenge of what to do with the data as they arise: do they get shoved into a predefined set of treed and branched structure, or is the program (or a person or an analyst) allowed to do something about it, by taking the context into account. The contrast, as the article points out, is that a pure “OOP ignores that and deals with each object in isolation.”
What could this mean in context of, say, legislative data? An implicit assumption behind use of DW-Nominate scores is that it is meaningful to look at individual scores–i.e. if a legislator has a DW-Nominate score of 0.7, that means something by itself. The slightly more sophisticated ones would place that score in context of, say, the median of the House being, say, 0.5 and the median Republican being 0.6 or something. But a more data oriented approach would point out that each score means relatively little: it would note that there are bunch of congressmen and they can all be characterized by parts of a single distribution, a distribution that has both a mean and a variance. Like the second article says, where there is one, there are many. Once there are many, we always have a mean and a variance (yes, the variance might be zero–and if so, that is the interesting part in and of itself. In contrast, there is no variance in a pure objective oriented environment: if a congressman has DW-nominate score of 0.7, and that is all we know of him, he does not have a variance of zero–the variance is undefined.)
(NB. Now, since we know that DW-nominates are themselves products of statistical analyses of votes being processed to object oriented thinking, we might also note that they are themselves subject to variances–in which case we might want to take the more data oriented approach to analyzing votes themselves…which I am in fact advocating.)
This rethinking of the approach yields different questions: what is the difference in the legislative process if the floor median’s DW-Nominate score is 0.6 or 0.2 or whatever? Will the Republicans win (a lot) more often? If that does not change (which is likely), is the reason the median is more liberal in one case because they are winning with a lot more Democrats voting with them than when the median is more conservative (this is how we get “moderate” DW-Nominate scores–because seemingly “liberal” people are voting with whoever for whom the score is calculated? Is the latter because the Republicans are more compromising, or because the Democrats think joining with the Republicans is good for them? (For example, the Contract with America legislation proposed by Gingrich passed with overwhelming bipartisan coalitions–indeed, for 1995-96, many coalitions, even if Republican dominated, were surprisingly bipartisan–this changed once Gingrich was ousted and accelerated the pace of polarization.)
Not terribly clearly thought through yet, but interesting possibilities. It seems that, as political science people began to adopt more computer programming in their work, which are almost invariably of object-oriented design, we have come to adopt that approach in our thinking as well, which comes with many downsides which the programmers, ironically, are recognizing.