Re: OO Design induces an existential crisis




"kj" <socyl@xxxxxxxxxxxxxxxxx> wrote in message
news:dah0ko$dj5$1@xxxxxxxxxxxxxxxxxxxx
>
>
> I have been programming (mostly procedural stuff) for almost 15
> years. I enjoy programming, take it seriously, and by general
> estimation I am quite good at what I do.
>
> Of these 15 years, I have spent about 7 years trying to train myself
> to do OO programming. I have no problem with *using* pre-existing
> classes, and even extending them. Similarly, I am comfortable with
> the *principles* of OO design. I have studied the GoF book carefully,
> as well as other less famous books on OO design.
>
> Still, when it comes to OO *design* I absolutely *suck*. I takes
> me so long to design anything that I often abandon projects for
> lack of time or loss of interest. Even when I complete a project
> involving OO design, the outcome is puny and incommesurate with
> the enormous effort invested. I often wonder whether the promise
> of future time savings (from ease of maintenance and refactoring)
> are paid for many times over by the *huge* amount of time and sweat
> that I have to put into my design phase.
>
> I am so bad at this that I am seriously wondering what on earth
> I'm doing in this line of work. As OO programming becomes more
> widespread I find myself more and more in the bizarre situation of
> being in a profession for which I have no aptitude whatsoever.
> I'm like the proverbial silent film actor witnessing the birth of
> the talkies. I seriously wonder if it's time for me to start
> thinking of a different line of work...
>
> My question is: how normal is this? Is OO design as horribly
> difficult as I find it? Or are there people who pick it up as
> easily as I picked up C, say? (I was up-to-speed with C in a few
> weeks; similarly for every other computer language I have taught
> myself.) Is there a turning point when one finally "gets" OO
> design? Should I consider some form of apprenticeship or internship
> to learn from experts? (I've exhausted the book route, and I doubt
> that classes will help, since I think my problem is not one of
> understanding principles, but rather of applying them to real-world
> programming tasks.)
>
> I'd very much appreciate your thoughts on this.

Here's a possibility for you:

You may be spending too much effort because you're trying to emulate
"experts" (i.e., those who profess to be experts and then write books). If
all you're doing is copying what they do without understanding why it's
right then that's a recipe for this state of mind. You must always be true
to your own understanding. Another warning sign here is that your struggling
is not leading to any benefit. Worst case, if you're being led by your own
understanding, you should be ending up with more knowledge and skill than
you started with.

I think that's why Phlip's refactoring suggestion isn't completely terrible:
it steers you away from top-down design and toward your own discovery. On
the other hand, it's yet another book by an "expert", and if your real
problem is that you're not permitting yourself to be guided by your own
judgment then reading another book isn't going to help.

I'm not trying to say that reading these books is a bad idea, but if you
approach it from the angle of trying to copy what they're doing then I think
you're better off not reading them. Good software requires one thing above
all others: independent, individual creativity and judgment. In practice
this may mean that you incrementally add OO to your programming repertoire
over time, just to those places where *you* see the benefit. Perhaps
eventually your method starts to look like how the experts do it, or perhaps
you become a new expert and can teach them a thing or two, in any case don't
force-fit their approach into your own practice.


Shayne Wissler
http://www.thoughtsonsoftware.com


.



Relevant Pages

  • Re: Avoiding C++ Templates In Cipher Implementation
    ... >> programming aims for ease of understanding and ease of reuse. ... The crypto I do has more important than and often does not have to ... then it is back to the design and source. ...
    (sci.crypt)
  • Re: Software weenie wants to learn Mechanical Engineering...
    ... wanting to design and build all sorts of things (I've modeled various ... mechanical world before your detour into the programming world (& any ... the job" than by reading and trial & error. ... Getting to "basic skills level" by reading is probably harder & takes ...
    (sci.engr.mech)
  • Re: mfc pitfalls
    ... In most MFC apps, you are writing code in that kind ... virtual methods usually work better than callbacks for most ... no syntax in the design for function pointers. ... programming in OO environment requires new ...
    (microsoft.public.vc.mfc)
  • Re: mfc pitfalls
    ... I see no callbacks in MFC. ... but I see no callbacks. ... premises of one of them as a basis of design or implementation in one of the others. ... programming in OO environment requires new ...
    (microsoft.public.vc.mfc)
  • Re: Software weenie wants to learn Mechanical Engineering...
    ... wanting to design and build all sorts of things (I've modeled various ... mechanical world before your detour into the programming world (& any ... the job" than by reading and trial & error. ... Getting to "basic skills level" by reading is probably harder & takes ...
    (sci.engr.mech)