Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

On waiting until a world becomes a better place...

by Eyck (Priest)
on May 06, 2005 at 09:02 UTC ( [id://454629]=perlmeditation: print w/replies, xml ) Need Help??

How do you decide, when you wait for someone to provide solution for your problems, and when to come and create your own solution?

On the one hand it's a good excercise to create something on your own, on the other hand, there's a bigger benefit (though way less fame) in contributing to existing projects.

I personally usually shy away from starting something new, especially when I see that it is a default behaviour for most unexperienced people and how pathethic such projects usually are.

But still, you've got a draw a line somewhere, there are lots and lots of existing solutions that are not quite adequate, and a rewrite would do good for them, howether, in the spirit of "You're responsible for what you rescue", there is a significant burden of responsibility for your creations. Should you try anything if you know beforehand that you're not qualified enough to finish the job? Not to mention time constraints.

While the typical programmers hubris might nudge you into creating a project bigger than your abilities, but, is it a responsible thing to do?

UPDATE

Most responces deal with learning factor, but I'm thinking more on practical level, not something to create on a hurry, but something like creating new Message Passing Protocol, or writing a new WebMail.

While there is good in attempting such ventures, sometimes it's better for the community for people to improve existing solutions.

Otherwise we end up with millions of 'templating toolkits' or webmails etc and none that is good and useable.

Replies are listed 'Best First'.
Re: On waiting until a word becomes a better place...
by Tanktalus (Canon) on May 06, 2005 at 13:18 UTC

    What I've done is first scope out the competition. That is, I check what CPAN has to offer, and maybe check out what features and limitations they have. If I can shoe-horn it into what I need, I'm done. If it fits comfortably, even better.

    Otherwise, I decide how much change it needs to fit. It may need some architectural changes, or they may be superficial. I evaluate this, decide how long it's likely to take if I ask the author to add those features. Then I figure out how long it would take me. Here I have two choices: rewrite, or extend. With a rewrite, I obviously place no dependancy on the original module(s). With an extend, I derive off the original module, and override as I need.

    Of course, there are modules whose basis for existance is extending, such as CGI::Application. That's not a deficiency in the design, that's a purposeful design (which I call "framework" - but I don't know if that's the technical Comp Sci term). I really like frameworks. They say, "There is no such thing as a fleshed out product in this area, so I'm just going to help you do it yourself." These "fit" much better since they were designed for flexibility.

    Generally speaking, I end up down the "rewrite" path all too often because I end up with no time (as in span) to wait for things outside of the frameworks.

Re: On waiting until a word becomes a better place...
by Forsaken (Friar) on May 06, 2005 at 09:55 UTC
    Depends on the situation, I'd say. When coding for fun or to learn there's absolutely nothing wrong with reinventing the wheel, or taking apart somebody else's wheel to figure out those weird spoke thingies. When there's careers on the line, deadlines to be met or a crisis to be averted, well, whatever gets the job done gets the job done, right?

    As for the following comment:
    I personally usually shy away from starting something new, especially when I see that it is a default behaviour for most unexperienced people and how pathethic such projects usually are.

    Better to try and fail(assuming no damage is done) then to do nothing at all...

    Remember rule one...

Re: On waiting until a word becomes a better place...
by samizdat (Vicar) on May 06, 2005 at 13:20 UTC
    I spent a lot of time (and programmer paychecks) creating a large data presentation project (commercial), and it flopped bigtime, though we did get the system to work very well. I also decided to drop it inasmuch as people wanted me to provide merchant services at a high level, and Visa and others are really upping the ante for that level of services. {see PostUPPal}

    It was an answer to a question nobody was asking, and freebies like Wiki also overlapped its user space in some ways that drained my low-hanging fruit marketplace.

    I believe in natural selection, even when I was the one unselected. The more projects there are out there, the more new ideas pop up. Does OpenBSD drain from FreeBSD? NOT.

    That said, it takes a lot of balls to take on managing and forwarding a big software project. Very few people have the human skills to motivate a large team, especially a volunteer team.

    Of course, the REAL reason it flopped was that it was written in PHP, not Perl. :D
Re: On waiting until a word becomes a better place...
by cog (Parson) on May 06, 2005 at 10:04 UTC
    Should you try anything if you know beforehand that you're not qualified enough to finish the job?

    Just because you start your little project at home doesn't mean that somebody else can't do the same, so just start it, and if you finish it sucessfully, you can release it and make the world a better place. If not, you've gained some practice/experience and you've not harmed anyone in the process (unless you hit someone with your keyboard along the way).

    If you don't know how/where to start, here's a little something to help you create your own CPAN module :-)

Re: On waiting until a word becomes a better place...
by ghenry (Vicar) on May 06, 2005 at 09:46 UTC

    How would someone become experienced if they don't try to do things on their own sometimes?

    Walking the road to enlightenment... I found a penguin and a camel on the way.....
    Fancy a yourname@perl.me.uk? Just ask!!!
Re: On waiting until a word becomes a better place...
by Anonymous Monk on May 06, 2005 at 15:14 UTC

    Larry could have contributed improvements to sh, or csh or awk or sed or all of them, but instead he created Perl.

    Linus could've contributed to BSD or SysV or somesuch, but instead came up with Linux.

    And if you're thinking, but they're are special, they weren't until they chose to go their own way.

    Autrijus could have settled for developing yet another language for Parrot that will never get beyond the first flush of enthisiasm, but he didn't.

      Linus could've contributed to BSD or SysV or somesuch,

      I don't suppose he could have. The point is, linux was started a few days before BSD became free.

      What about Alan Cox, Andrew Morton, Dave Miller and ~400 linux maintainers went on and created their own OS?

      Larry created something that wasn't available before, I don't think it would be that easy to extend bash or ksh to the point where it resembles power of perl (take a look at zsh though, one seriously powerfull shell).

      The point is, the act of re-creating something that already exists and works fine, is rather egoistic. Looking at Linux, the initiator becomes a coordinator, while those crowds of largely nameless programmers do the real heavyweight shifting..

      Sometimes there are projects where one person can create and maintain them, but this requires either very simple projects or very talented authors.

        Linus didn't just throw out a casual "Hey, let's create a new free unix from scratch." and get 400 people to give up their free time to make it happen. He had to present them with some of his own work first and then attract the 400.

        There are many, many OSS projects that start out as a good idea with a few people collaborating, that die a death because there is no core upon which to collaborate and no single-minded individual with a clear vision of where he wants to get to, driving them.

        Almost anything that is truely innovative has a single person with a vision that starts the ball rolling. And that same person then takes the, often capricious, decisions that prevent it from sprawling in all directions and pettering out into nothingness.

        Dogged, single-minded, cussedness is a trait shared by many people later seen to be visionary. The problem they face, almost universally, is getting their contemporaries to look past their own dogmas with an open mind. And the more authoratative the credentials of their contempraries, the harder that task becomes.


        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        Lingua non convalesco, consenesco et abolesco. -- Rule 1 has a caveat! -- Who broke the cabal?
        "Science is about questioning the status quo. Questioning authority".
        The "good enough" maybe good enough for the now, and perfection maybe unobtainable, but that should not preclude us from striving for perfection, when time, circumstance or desire allow.
Re: On waiting until a world becomes a better place...
by starbolin (Hermit) on May 07, 2005 at 17:24 UTC

    It is interesting that you chose "wait" as the verb in your title question. Waiting is not a stance that I choose either by training or by instinct.

    My training is as an engineer; where I was taught the mantra:

    • Someone else has the same problem as you. Find their solution.
    • If their solution doesn't fit your contraints, adapt their solution. Don't reinvent the wheel.
    • If all else fails, after reviewing existing solutions, and understanding their shortcomings, build a 'better' solution.
    • The Open Source movement adds to this with: Find others who have share your problem and collaborate.

    The further I progressed into my career the more I became adept at finding those other solutions. I also take the most pride in those cases where I was able to adapt solutions that others has created to fit a new application. But I am not, by nature, a patient man. I've never 'waited' for someone else to fix a problem. In fact, I do tend to jump into creating a fix without a lot of planning. The result is I have always had a lot of unfinished projects around me. I long ago lost any embarassment over this since all those little unfinished project bought me just as much happiness as the finished ones.

    Don't be too hasty to judge the works of others; 'Templating toolkits' and the like. If they met the need of the author, great. If the published their work, thats great too. You just will never know if someone borrowed from that lesser work to create something better. That the way progress works, in fits and starts.

    Now that I've aged some, and hopefully gained some wisdom, I start new projects with the question, "Is this a good fit to my talents?". If so, I'll probably find the work easy and progress will be swift. If not, someone else can probably do the task in much less time than I could and I'll look for that person.


    s//----->\t/;$~="JAPH";s//\r<$~~/;{s|~$~-|-~$~|||s |-$~~|$~~-|||s,<$~~,<~$~,,s,~$~>,$~~>,, $|=1,select$,,$,,$,,1e-1;print;redo}
      Now that I've aged some, and hopefully gained some wisdom, I start new projects with the question, "Is this a good fit to my talents?". If so, I'll probably find the work easy and progress will be swift. If not, someone else can probably do the task in much less time than I could and I'll look for that person.

      Note one caveat: this philosophy works best with talented people. If you lack sufficient talents of your own, eventually you end up delegating everything to someone else. Eventually, you end up as a manager...
      --
      AC

Re: On waiting until a world becomes a better place...
by Ninthwave (Chaplain) on May 08, 2005 at 01:30 UTC

    The problem with waiting is you never know how long that will be. The best thing to do is to start, and try to get others to help. You never need to do anything alone.

    The thing to keep from having millions of templating toolkits or webmails and all, is the evolution of software. There is always a flood of solutions for a problem in software, but after a period of use the better ones survive and the rest fall away.

    Also if you wait for someone else to solution something, you run the risk of having waited for a tool to still be dissappointed by what you you think are obvious missing features or un-needed features.

    The responsible thing to do when faced with a problem is to find a solution. How you find a solutions depends on the problem. But usually researching the problem, researching the past solutions to that problem, and analyzing your needs in solving the problem, versus the solutions available. Than comes the hard part the decision on if you take the existing solutions as is, expand them or strike off in to new unchartered water.

    My silly perspective is there are no unsolved problems, just problems that are not defined in a context where the existing solution is evident.

    "No matter where you go, there you are." BB

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlmeditation [id://454629]
Approved by deibyz
Front-paged by ghenry
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (4)
As of 2024-03-28 15:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found