Beefy Boxes and Bandwidth Generously Provided by pair Networks
Perl: the Markov chain saw

Re: Good Programming is Better

by bmcatt (Friar)
on Jan 12, 2002 at 01:04 UTC ( #138135=note: print w/replies, xml ) Need Help??

in reply to Good Programming is Better

As a small addition, I think one of the things that separates the really good developers from the mediocre things is the ability to (consciously or un-) plan for things like this. (IMHO) It's important, when working on the pieces to solve a problem, to think about how they're going to be able to be (mis-)used later.

If you've got an idea of how something will be used in the future, as well as in the present, you're on your way to thinking about the bigger picture and the evolution of a (module | program | system | whatever). The best programs are those that can change over time without needing substantial rework provided that none of the base assumptions changed. And from there it's a short-ish step to making sure that the assumptions that are made are as few as possible.

I know that I try my best to make things as flexible / extensible as possible. For me, that means making as few assumptions as possible and figuring out where things are likely to change. Sure, I don't get it right all the time, but being right even 50% of the time can make an enormous amount of difference. That's 50% of the project that doesn't need to be revisited when you're ready for the next release.

Replies are listed 'Best First'.
Re: Re: Good Programming is Better
by MungeMeister (Scribe) on Jan 12, 2002 at 03:26 UTC
    I've had several of these happy events. With my current project, I chose at the beginning to use Object-Oriented Perl, mostly just to learn it, but it also seemed to fit. I've had some training in OO and in Design Patterns, but have never implemented anything with it.

    What a nice surprise when changes that would have taken days now take minutes!

    However, I know that my code could use some improvement. You can always make it more flexible, faster, give it better error handling, etc. I believe that admitting that fact alone makes you a better programmer!

    There is definite satisfaction in finding you've written "good code"...

    On a tangent... The company I work for has a large development project running using Extreme Programming (XP). It stresses good programming, but from a slightly different angle. Here's just a part:

    Break your goal into small piecs

    Work in pairs

    Design your test cases (be thorough) first

    Write your code

    Test your code

    In many cases, later you will find that you could write that method better, faster, etc. With XP, you can now rewrite the method, and you already have the test cases to verify that you didn't break it.

    Moral: You can always write better code. If you know from the beginning your going to rewrite it, then plan for it.

    Also, programming in pairs reduces bugs, and tends to lead to better design because you have more "brain power" (we hope anyway!).

    For an article on XP, and a link to a web site all about it, click here. Brian
Re: Re: Good Programming is Better
by George_Sherston (Vicar) on Jan 12, 2002 at 01:09 UTC
    ... and the interesting thing is, that ability to discern ab initio what's going to be broadly flexible and extensible is such a high-level analytical skill that for practical purposes it's something like intuition - like how good chess players work, where you can only go so far with techniques, but at some point you need to have the mysterious "it" that you get by being cool to start with and then working and working and working. If you could bottle it, you could name your price.

    George Sherston

Log In?

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://138135]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others about the Monastery: (8)
As of 2023-02-02 14:21 GMT
Find Nodes?
    Voting Booth?
    I prefer not to run the latest version of Perl because:

    Results (19 votes). Check out past polls.