Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re^2: Rediscovering Hubris

by dsheroh (Monsignor)
on Jan 18, 2021 at 09:28 UTC ( [id://11127056]=note: print w/replies, xml ) Need Help??


in reply to Re: Rediscovering Hubris
in thread Rediscovering Hubris

I'm not seeing how this is a refutation of the OP. Good teamwork doesn't require coding against bleadperl and using all the latest whiz-bang FOTM modules from CPAN. Shunning CPAN is going rather overboard, certainly, but doing good engineering requires building on a solid foundation of proven technologies rather than chasing the "latest and greatest" new shiny. Particularly when you know the proven technologies will still be there in the long term, but the new shinies might not.

Replies are listed 'Best First'.
Re^3: Rediscovering Hubris
by Your Mother (Archbishop) on Jan 18, 2021 at 11:29 UTC

    Some of the “latest and greatest” Perl libraries are 15 years old.

    I wrote this up at some point better but here’s the tl;dr: someone could write the most genius library in Perl history but if it comes without full tests, documentation, a ticket queue… it is hurdle riddled nonsense as far as value to other hackers, coworkers, and inheritors. And unless one is a “class A hacker,” as the animes say, the chances of the software being actual genius is basically zero.

    If that sounds like I discourage writing stuff from scratch, I don’t. I have always advocated for as many new libraries and experiments as possible, while also being quite judgemental of low quality releases and output of other paid devs. Hobby, experiment, personal project? Anything goes. Leaving a mess for others? Not cool.

Re^3: Rediscovering Hubris
by eyepopslikeamosquito (Archbishop) on Jan 18, 2021 at 11:33 UTC

    Fair enough. Yes, it's true you want to be solid, but I also feel it's vital to do more. Here's why.

    If you're successful in the long term, sooner or later you're gonna need to upgrade ... and developing a strong upgrade capability early forces you to implement high automated test coverage early ... which confers many benefits, listed at Effective Automated Testing.

    With high automated test coverage in place, you can confidently test your software with many different versions of Perl and libraries ... which may flush out further bugs (e.g. a test may pass with one version of Perl/library but fail with a different version). In summary then, developing a strong upgrade/autotest capability early improves code quality.

    It also gives a psychological boost - you no longer fear/dread having to upgrade or port to a new platform, you welcome it! You can easily run experiments with different versions of Perl and libraries to verify that everything still works and to see if they run faster or slower and by how much.

    Finally, being able to gracefully move to the latest and greatest may help with recruiting top notch developers (especially younger ones). Admittedly most of my experience here is with C++ programmers but, especially the younger ones, are usually energized by using the latest and greatest features.

    Regarding teamwork, you are right, I was out of line, I was imagining the arguments between Leitz and some of the younger guys at work who love using the latest and greatest. :) I've experienced many heated arguments in teams over the years, as indicated at Conflict in Teams, so have learnt the hard way that it is vitally important to clear the air and get everyone pulling in the same direction.

      @eyepopslikeamosquito, I really like the posts you're linking to, thanks! Something for today's study.

      From skimming those posts, I think we agree on a lot. So far at work I've finagled using VCS branches and not pushing code straight to the production branch during a release cycle (we are not CI/CD), requiring peer review before merging into the release branch, requiring a test document for each set of changes, automated some of the build steps, significantly increased the automated testing, and have written several documents that explain the code base processes.

      Most of that comes from reading "Working Effectively With Legacy Code". Being the "new guy" in an established code base gave me the openness to see what wasn't tested or documented. It has been a challenge. In a chat with Matt S Trout (of Shadowcat fame), he pointed out that dealing with a large code base is a skill of its own. That was super encouraging, I went from feeling really really really behind to just really really behind. :P

      I also failed to communicate something that impacts what you wrote. I work on system tools that rely on the customer's OS version of Perl. We don't embed Perl into the tool, and the customer base tends to use older OS versions. If our tool was only used in-house then your initial points are appropriate, and upgrading Perl is a really good idea.

      Chronicler: The Domici War (domiciwar.net)

      General Ne'er-do-well (github.com/LeamHall)

        I also failed to communicate something that impacts what you wrote. I work on system tools that rely on the customer's OS version of Perl. We don't embed Perl into the tool, and the customer base tends to use older OS versions.

        Ha ha, you're the second person this week to surprise me! Thanks for pointing it out. Because all my experience (with both Perl and C++) is in an environment where we control the version of the language and libraries, I just blindly assume that is the case for everyone. Next time, I'll ask first. :)

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2024-03-28 14:39 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found