The Top Challenge Discussion

See TheTopChallenge for the DocumentMode page we're discussing here.


I'm copying this from the FrustrationOverNotGettingOopDiscussion. So, TopMind, do you still want to do go with this?

{I have proposed CampusExample, being that it is something most readers can all relate to.}

All right by me. My version will probably be web-based, I would note -- Top


Someone asked: Is reduced code the main selling point of OO? I don't know. I've never really thought of it, to tell you the truth. What I do know is the topic has been discussed here and on Usenet exhaustively. Therefore, I feel doing some kind of size metric would add value. I'm also thinking of tracking my time on this page, or a related page, so that we have another dimension to compare and contrast. -- JeffPanici


This challenge is good, one key point is one point 1:

TopMind selects a business domain: banking, insurance, trading, transport, manufacturing, etc.

IMO, this is one key to all the wasted time and endless debate. TopMind insisted on talking about "custom biz apps", but even after debating with him for weeks, I failed to see that there is no custom biz apps! Any business application has a domain and a purpose, you can have payroll system, inventory system, reservation system, CRM system, etc. Whenever anyone use any concrete system as example of OOP, TopMind can simply say that is an XXX system and not really a "custom biz app". Trying to pinpoint what is a "custom biz app" is just chasing unicorns.

You can see the some problem with the CampusExample, namely, it has no concrete requirements other than data storage! There is no workflow for enrollment, no student grade entry and dissemination requirement, no grade summary reporting and mailing, nothing except storing stuff! Of course a data centric approach is good for a data storage problem!

If TopMind decides to face this challenge, let him pick a concrete domain with concrete requirements.

I'm inclined to agree with you. However, as I stated above in point 8, I don't want to get into a protracted discussion w.r.t. requirements. I'd never get anything built. Rather, I'd like him to point me in a general direction -- an enrollment system is fine, if this is what he wishes -- and I'll take it from there. After I put up my efforts I would, of course, love community feedback and I'm not against refactoring to get things even better. I will have to track such refactorings, however, to get fair metrics throughout the process. One of the key things, to me, is that we get to the code. This is something he bemoans constantly and I want to get there so we have real, working code to discuss and not some vauge notions. We can refine from there on. -- JeffPanici

[And he sucks in another victim. Yes, quite a good troll he is. I'd love to be proven wrong, but I'll just sit back and watch it happen again. You will not be able to get TopMind into a fair comparison, he'll dodge and weave his way around everything you show him.]

Too true; however, I'm not doing this just for his benefit at this point. Of course, I believe he'll find it much more difficult with everyone touching and feeling the same code and that is something. For once, we'll be discussing things from a concrete angle versus the purely hypothetical, the what if''.

{You know, it would be more polite to give specific examples of me "dodging and weaving" in the past before accusing me of evil manipulation. Why is it always guilty-until-proven-innocent? Your evidence of both OO and my evilness seems to often rely on private anecdotes. I find that rude. It is not a way to build goodwill. I know that some of you have written me off as an evil monster, but at least practice some civility around fellow human beings. Only about 5% of the accussations collected under ObjectiveEvidenceAgainstTopDiscussion have any merit, and most can be corrected with a little patience. See also comments below about focusing on public demonstrations rather than what I say. -- top}

He'll just say he too busy to write code. You won't get any samples from him, but go ahead and try, I'd be impressed if you got that far.

$50 says he calls the OO version a "device driver". -- bottom

Itsa stinkin' Device Driver! Now, where is my $50? -- top


Scope Borders

There are features that perhaps we should explicitly omit in the first round. Suggestions include:

These can perhaps be added later. The way in which they are added might be telling in itself.

Agreed.

I'm still waiting to see some requirement for behavior here. If this is just CRUD screens for the schema on CampusExample, that can be auto generated by a blind monkey. Until there are some requirements for behavior, you have nothing to do that can further the TopMindChallenge? since this is the crux of the disagreement, behavior. If all you have is CRUD requirements, OO doesn't have much to offer and actually looks more complex than procedural solutions. It's only when complex behavioral requirements come into play that OO becomes simpler than procedural solutions.

Quite true; however, instead of eliciting requirements from this forum, I've found an on-site customer that's a domain expert in school enrollment systems. I'm having him guide me in the modeling of the problem domain. Our efforts to this point show there is some interesting functionality present in this domain. However, comparing it to, say, insurance or trading, it's quite simple. I believe there will be value in the outcome, regardless of the domain. Finally, I didn't set out to find an example that would prove the value of OOP. The finished product will have to speak for itself. -- JeffPanici

I'm sure there's plenty of interesting behavior in the domain, but the TheTopChallenge is to prove the value of OOP to TopMind. That's the whole point of the page, so if the finished product can't show the value of OOP, then it isn't accomplishing it's number one goal. And if you don't get some buy in from Top on the requirements, then he'll just deny their need when the time comes to review the application. He'll say those change metrics aren't typical, or he'll disagree with the changes. If the goal is challengeing Top to get OO, then you've got to get him to at least agree on the behavior of the sample system. I think you even need to get him to agree to do a version of the code himself in his style so there's something to compare to. If you have nothing to compare the OO code too, then he can resume trolling by simply disagreeing with your sample and denying it's value. He's done it many many times before, and he'll likely do it again. So, are you doing this for your own fun, or are you doing this for the TheTopChallenge?

You've misunderstood the goal. All I have set out to accomplish is the implementation of a business problem domain, that TopMind himself has selected, using a popular OOP language and Matisse. What these efforts prove or disprove is up to each individual examining them. My efforts will be Open Sourced when complete and, perhaps, others can make use of this as a canonical OOP implementation of a business problem domain. -- JeffPanici

OK, if that's your goal. Best of luck to you, I'll keep my eyes on this to see if it goes anywhere.


Focus on creating something of demonstration value independent of me. If you can point to something with clear benefits, who the hell cares what an alleged troll like me says? It is up to the reader to weigh the final evidence, not me. If my complaints of the results don't ring true with the reader, they will dismiss them. -- top

Well then, we are already done, as the demonstration of benefits has already been accepted to a greater or lesser degree by the greater part of the software development community.

Then Windows is better than OS/2 and UNIX and Macs because that is where the crowd is? Besides, most shops do "OO-Lite".


Re: Until there are some requirements for behavior, you have nothing to do that can further the TopMindChallenge?? since this is the crux of the disagreement, behavior.

How about you propose a behavior-centric portion of the example. Remember, I tend to treat behavior as fairly isolated tasks or subsystems that feed off of the DB. Thus, I can show implementation of a specific behavior without having to define a bunch of other stuff (besides the DB schema). I see this behavioral isolation is a selling point of TOP, by the way. A new developer does not have to understand a bajillion classes, only the schema and maybe a few standard library subroutine signatures. OO is a BigSoupOfClasses.

Further, most complex biz domain behaivor will likely end up involving some kind of taxonomy or classification system. I feel that TOP will shine here also because hardwiring a big complex graph of classes into code is not going to beat a DB-based classification system with regard to dynamicness, searchability, and reportability. If users can't know the classifications because it is hidden in hard-wired classes, then it is of no use to anybody unless the "programmers" want to be taxonomy maintainers, which is poor division-of-labor in my book. Programmers should not be taxonomists, other than initial setup.

Re: And if you don't get some buy in from Top on the requirements, then he'll just deny their need when the time comes to review the application. He'll say those change metrics aren't typical, or he'll disagree with the changes.

If I am outvoted on feature or change need, I will accept it. If I have reason to protest, such as suspecting paradigm-favoring rigging, then just put a footnote on that requirement. I will propose changes of my own choosing also. I fully expect differences in PerceptionOfChange. OO proponents definitely "see" more trees and subtyping in the real world than I do. I see sets. I feel they are deceived by pro-tree/type propoganda, but in the end we will let the reader decide. If the reader of the example agrees with a tree/type view of the world, then so be it as long as they have acces to counter-arguments.

It is quite possible that the reader has been bamboozled by the tree/type view of the world also. This is why OO gets a lot of lip service. It is a catchy lie. In the end there is a good chance that which is judged "better" will depend on how people view change patterns. But at least we would know what the differences are and have an example to explore it.

Re: If you have nothing to compare the OO code too, then he can resume trolling by simply disagreeing with your sample and denying it's value.

Again, the final judge is the reader of the examples. If I have no counter example, then it would be hard for me to make a case. It is meant to be a public demonstration of OO's alleged power in the biz domain (or something close). Convincing me is secondary.

--top


CategoryDiscussion


EditText of this page (last edited March 26, 2006) or FindPage with title or text search