Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: How do you code?

by naChoZ (Curate)
on Jan 15, 2008 at 16:54 UTC ( #662507=note: print w/ replies, xml ) Need Help??


in reply to How do you code?

I'm the type that tends to what-if things to death. What if this oddball condition happens and I don't handle it in a clever enough way. What if someone wants to use this function in a curious way. What if someone else might know a better way to do this... what if what if what if... And of course the worst one... What if someone looks at my code...

For me at least, this becomes a death spiral of utter lack of productivity. It's a conscious effort for me to strangle that voice in my head and just write some code to get the job done, even if I know it's crap. But I'll litter my code here and there with some TODO comments so I remember where my weakspots are and maybe an idea of how I wanted to fix it at some point.

The other thing that I do fairly religiously is keep my code tidy at all times. It's just easier for me while I'm coding and I find myself having to rethink an approach to a problem or something, I don't have to mentally parse my own code. Consequently, in vim I type vip= a LOT. (I have equalprg set to run perltidy for me.) And at the same time, I find that I also code faster this way. I'll code a block without worrying a lick about style, then just vip= and it's immediately pretty.

As far as handling and maintaining multiple projects, I just try to divide my time up appropriately, giving myself a fixed amount of time to work on one, then move to the next. When getting close to my time limits, I'll start doing things like writing empty subs with just pseudo code comments and writing as much as I can while my mind is on that particular project. When I'm thinking several steps ahead and I have time to code two of those steps, I'll try to leave myself so that I'll know what the rest of my thought process was. This makes it easier for me to get my mind back on the track of that particular project when it's time for more coding on it without having to recreate the whole thing in my head every time.

--
naChoZ

Therapy is expensive. Popping bubble wrap is cheap. You choose.


Comment on Re: How do you code?
Select or Download Code
Re^2: How do you code?
by DarkLord1 (Novice) on Jan 16, 2008 at 05:13 UTC

    Wow! I know what you mean with your words:

    "I'm the type that tends to what-if things to death. What if this oddball condition happens and I don't handle it in a clever enough way. What if someone wants to use this function in a curious way. What if someone else might know a better way to do this... what if what if what if... And of course the worst one... What if someone looks at my code..."

    "For me at least, this becomes a death spiral of utter lack of productivity. It's a conscious effort for me to strangle that voice in my head and just write some code to get the job done, even if I know it's crap."

    I recently finished a project to analyze and determine a variety of statistics on the formation and growth of "warm pixels" on a focal plane to a sensor that we have had on-orbit for a while.

    The analysis results were, of course, the important point...but the analysis code took me a couple of months of hard work to complete and was the victim of an almost endless string of "oh that's great! Is the growth occuring in clusters or individual pixels", "are the pixels getting warmer, colder or stable?", "...yada,yada, yada."

    The total code ended up being about 700 lines of Perl code (voluminous...but unfortantely more the result of endless adding, adding, and adding new "features" rather than a meaningful design). Towards the end I had some time to sort of look back over the work and the code and realized just how much of a toll the total process of trying to code for maintainability, and for worrying about "what if some of our other folks wanted to use this and chose to this or that." Such endless worries, and worries about trying to guess and account for all the possible wierd use scenarios tend to make my code overly complex and often far more serpantine that I'd like.

    DarkLord1 Looking for Redemption in the Monastery

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (4)
As of 2014-09-21 04:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    How do you remember the number of days in each month?











    Results (166 votes), past polls