As a hobbyist programmer and someone fascinated with the world of programming and learning what I can about it, it strikes me more and more just how obsessive to detail good programmers are. That's never been a strong suit of mine, unfortunately. I'm impatient and I often make wrong and bad assumptions that make it tough for me to write solid code. And I think what I like about programming so much–even though it often humbles me by making me feel like a bit of a dunce–is that it forces me to think like an engineer. But I have to work pretty damn hard at it and the process is slow and frequently frustrating.

In the programming field, there is an extraordinary amount of information to take in, process, and put into practice. It seems the more I learn, the less I feel like I know. I marvel at the programmers to be able to do that and who have a natural knack for it. I'd like nothing better than to spend 15 hours a day lost in code (which I've been doing lately) but it still sometimes feels like I'm pushing a rock up a mountain. I have a few projects I want to write and write well but I end up getting diverted by having to learn some new skill first. Every day there seems to be countless new idioms, tools, and concepts that I need to learn and put into practice.

But I'm eager for the day when it all just clicks, when I can look at someone else's piece of code and read it like a newspaper and know everything that's going on with it (or at least have a pretty good idea). It's frustrating to go down three dead ends or spend an hour figuring out why your code won't do what you want because of a stupid mental error. I'm guessing most programmers like me have gone through a similar phase where they can write code that gets simple stuff accomplished but aren't good enough to take on a really large or complex project.

Anyway, just needed to vent. I feel better now. And thanks to the Perlmonks who have helped me on my journey toward my goal of achieving programming excellence. I could not keep pushing on this rock without you.

$PM = "Perl Monk's";
$MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate";
$nysus = $PM . ' ' . $MCF;
Click here if you love Perl Monks

  • Comment on Holy Crap! Programming Well is Hard Work

Replies are listed 'Best First'.
Re: Holy Crap! Programming Well is Hard Work
by MidLifeXis (Monsignor) on Feb 24, 2017 at 22:25 UTC

    As one of those individuals who might have a knack for it (but not a love for it - I am passionate about finding solutions to technical problems; coding is one of the tools that I use), I have found one thing that has served me well, especially after too many of those 15 hour stints in a row (or longer), is having a process under your fingers that you can just run on autopilot to help with the little things.

    On a recent ETL project I was on, there were a few deadline-induced long days, especially when getting through a lot of the cleansing tickets (this was over a century of data, 20-25 years in digital form, from various sources and states of cleanliness), this was the process:

    • Take the next ticket in the queue
    • Find a representative dataset that reproduces it
    • Incorporate the representative dataset into a test
    • Ensure the test fails
    • commit test
    • Fix until all tests pass
    • commit code
    • refactor if needed, ensuring all tests pass
    • If a new bug is found while fixing what you are currently working on, log a ticket
    • compare the results of your cleanup process to the previous run. If necessary, fix your test and refine your implementation (or log a bug). This was very important when trying to ensure that there were no cleanup changes to the dataset beyond what you intended. A temporary Git repo + git diff... can work well with a specific type of data.
    • commit code with a tag to indicate that it is ready to test for deployment
    • Repeat

    The mechanics start to become automatic, and the limited caffeine-fueled brain cells that are left functioning can focus on the important aspects. And do not take this as a suggestion that being in that mental state is good, recommended, or a prudent practice. Sometimes it happens.

    --MidLifeXis

      Yes, breaking stuff down into small digestible chunks is absolutely critical. This is one thing I've learned, though I'm still not good at following through with it.

      $PM = "Perl Monk's";
      $MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate";
      $nysus = $PM . ' ' . $MCF;
      Click here if you love Perl Monks

Re: Holy Crap! Programming Well is Hard Work
by perldigious (Priest) on Feb 27, 2017 at 14:28 UTC

    ...it strikes me more and more just how obsessive to detail good programmers are

    How many other professions can say having O.C.D. tendencies is an asset? Okay, probably many, but it's still an odd thought to consider. :-)

    It seems the more I learn, the less I feel like I know.

    I think you are just experiencing one of many Human Conditions friend! I'm still trying to figure out if I'm at the bottom of the Valley of Despair and coming back up, or still on my way down... I suspect the latter.

    ...I'm eager for the day when it all just clicks, when I can look at someone else's piece of code and read it like a newspaper and know everything that's going on with it...

    perldigious looks from side to side at the other members of the audience nervously, and then slowly, cautiously raises his hand, afraid to ask a question that may make him look stupid. "Um... excuse me... but... is that really a thing? I mean, can some people really do that with other peoples code?" He then mumbles as his voice trails off and he slouches to sink down and hide in his seat. "I'm probably wrong since I'm probably still falling in to the Valley of Despair, but I'm not sure that's a real thing."

    Just another Perl hooker - Selling my %hash for $cash.

      Ha! Though I'm finding the road to Valley of Despair is not smooth, fast, or short. It's full of huge peaks and valleys across a 1000 mile jungle trek.

      $PM = "Perl Monk's";
      $MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate";
      $nysus = $PM . ' ' . $MCF;
      Click here if you love Perl Monks

        But I would walk 500 miles
        And I would walk 500 more
        Just to be the man who walked a thousand miles
        To fall down at the monastery door
        


        use constant STEPS_IN_MILE => 2000; # rough estimate based on www.thew +alkingsite.com/10000steps.html my $step_counter = 0; # I'll presume you are just starting out... my $current_state = 'walking'; # but you are trying! while ($current_state eq 'walking') { $step_counter++; $step_counter++ if ( $step_counter/STEPS_IN_MILE > 500 ); # don't +you think you've dawdled long enough? Pick up the pace! (more of a j +og at this point) $current_state = 'fallen down' if ( $step_counter/STEPS_IN_MILE > +1000 ); # do ring the gong before falling, the kind Monks will surely + fetch you water. }

        Just another Perl hooker - Selling my %hash for $cash.
Re: Holy Crap! Programming Well is Hard Work
by RonW (Parson) on Feb 27, 2017 at 21:16 UTC
    I end up getting diverted by having to learn some new skill first

    That is a very common experience. One of the things I like best about software development is that I get to learn about and work with many things that are outside my degrees, but are "touched" by software.

    It seems the more I learn, the less I feel like I know

    It is a wise person who realizes just how little they actually know. Of course, that's because they realize just how much there is to know. Congratulations.

      You just got trolled by someone pretending to be someone they are not on the Internet!