Object Oriented Programming Is Not an Excuse for Forgetting to Design Your System

This post is ded­i­cated to a lec­turer that I am tak­ing a class with this semes­ter at Texas Tech Uni­ver­sity. This per­son doesn’t like object-orientated pro­gram­ming (OOP), which I do love (I <3 Java big time). His main argu­ment against Java and other object-orientated based pro­gram­ming lan­guages is that it pushes peo­ple away from devel­op­ing a math­e­mat­i­cal model of both the prob­lem and solu­tion. Instead the desire is to cre­ate an object for every­thing in the sys­tem and develop some sort of algo­rithm that solves the prob­lem, dis­re­gard­ing that you could pos­si­bly model the sys­tem and use a gen­eral algo­rithm to solve the problem.

I have a prob­lem with the argu­ment that OOP is the cul­prit for this much larger prob­lem of pro­gram­mers not mod­el­ing the sys­tem and instead going straight to code before think­ing about the prob­lem. This isn’t just a prob­lem that occurs in OOP but rather I see all the time. It’s a prob­lem that chal­lenges all types of pro­gram­mers dis­re­gard­ing their tool set or lan­guage. The real prob­lem is a prob­lem with both the edu­ca­tion sys­tem and the dumb­ing down of the pro­gram­ming industry.

All right so two pretty hefty argu­ments, let’s tackle the first; that the cur­rent edu­ca­tion sys­tem of train­ing com­puter sci­en­tists is to blame.  This is based on what I have observed in terms of my own school­ing and what I read from around the web from such read­ers as Joel Spol­sky on the cur­rent edu­ca­tion sys­tem. The cur­rent edu­ca­tion of CS stu­dents tends to rather than pro­vide life like prob­lems that need to be solved and work­ing the stu­dents through the process of solv­ing these. It instead is designed to intro­duce the stu­dents to as many top­ics regard­ing tech­nol­ogy and com­put­ers as is pos­si­ble. This is a good thing, don’t get me wrong but invari­ably some­thing has to suf­fer, and what does is the prob­lems. The prob­lems are intro­duced at a level that is so close to the com­puter solu­tion it is ridicu­lous. Give a stu­dent a clas­sic CS prob­lem and most will have no idea where to start much less cre­ate a viable solu­tion. This is a real prob­lem of the stu­dents grad­u­at­ing from col­lege now a days.

This goes into the sec­ond argu­ment which is that the degree as a whole is being dumbed down. The CS degree is under a lot of attack from a lot of fronts. You have “tech­ni­cal schools” that will let you grad­u­ate in two years with all the expe­ri­ence you need to be a web pro­gram­mer and make mil­lions tomor­row. These grad­u­ates of these “schools” that com­pete for the same jobs that CS grad­u­ates from real col­leges are com­pet­ing for. This is a dif­fer­ent prob­lem from the ear­lier one of col­leges not pro­vid­ing real life prob­lems. How­ever this is a prob­lem that the major­ity of the career fields have solved by hav­ing a sort of pro­fes­sional test to deter­mine if some­one is say a pro­fes­sional engi­neer, or pass­ing the bar exam to be qual­i­fied to prac­tice law in a state. Com­puter Sci­ence has noth­ing like that in any fash­ion. I’m not entirely sure that would be the best answer to solv­ing this prob­lem, but it is def­i­nitely a prob­lem that is going to need to be worked on

Blam­ing OOP for a prob­lem that isn’t the tool’s fault is an even greater prob­lem. This popped up on the blo­gos­phere a while back that Java shouldn’t be taught any­more to stu­dents. I think this argu­ment misses the real prob­lem which is the gen­eral dumb­ing down of the indus­try in terms of non-qualified appli­cants being intro­duced and the edu­ca­tion sys­tem los­ing it’s focus.

Comments are disabled for this post