Beefy Boxes and Bandwidth Generously Provided by pair Networks
Welcome to the Monastery
 
PerlMonks  

Existential Crisis (Or: On Becoming a Better Monk)

by jreades (Friar)
on Dec 04, 2002 at 23:36 UTC ( #217627=perlmeditation: print w/ replies, xml ) Need Help??

<disclaimer>I've dithered horribly about where to post this -- it's definitely not a Perl programming question, it's also not an idea for improving PerlMonks -- and finally settled on Meditations since it is, to some extent, a meditation on Perl and programming. I hope it fits.</disclaimer>

In fits and starts, and with a little bit of ballot box stuffing right at the end (well, just exercising my right to vote and being rewarded as a good citizen), I find myself a newly-made friar.

And for some strange reason, this event has brought down upon me a number of quasi-existential crises.

One, I am stuck in a Perl rut. I know this. I answer the same types of questions. I tend to ask the same types of questions. I am not going anywhere with my Perl programming skills.

Two, I don't know how to break out of this rut in order to start learning again. As I see it right now, there seem to be three (possibly four) ways to move forward:

  1. To do
  2. To study
  3. To teach
  4. To do all of the above

I've finally given myself a little Perl project (glueing together Notes invites and iCal) in the hopes that this will point me in the right direction (and free me forever from the horror that is Lotus Notes).

I have been unable to find a school in central London that offers any kind of advanced Perl programming class -- although this may just be something to do with the fact that I have no idea where to start, which schools are reputable, and so on.

In addition, I'm also suffering from the handicap of never having taken a formal CS class -- this makes getting into good programs/classes more difficult while simultaneously weakening my ability to learn on my own (Try reading the 'Wolf' book without a CS background. I lasted five chapters, but it's been gathering dust ever since :P).

Aside from PerlMonks, I don't see any serious teaching opportunities on the horizon. Besides, I'm sure that there are a horde of people with far more thorough groundings in Perl who need the position more than I do.

So, and here's where this becomes a question for discussion, how have the rest of you dealt with these kinds of issues? I know that I cannot be the first person to have this type of crisis and I'm hoping that someone has some insight into the problem...

Comment on Existential Crisis (Or: On Becoming a Better Monk)
Re: Existential Crisis (Or: On Becoming a Better Monk)
by mstone (Deacon) on Dec 05, 2002 at 01:34 UTC

    From your post, it sounds like you want to learn more about programming as a general subject.. the theoretical stuff you're more likely to learn in a classroom than in day-to-day programming. The kind of stuff that will give you enough foundation to teach yourself even more.

    I could suggest a whole stack of books that would teach you some aspect of programming theory or other. The problem is that none of them provide enough through-line to show you how learning the theory will have any bearing on your day-to-day programming experience. That tends to be a weakness among self-taught programmers, in fact: getting stuck at the "why should I care about this if it doesn't help me solve problem X?" stage.

    Formally-trained programmers go through that same phase, but they get the information anyway. Their colleges say, "you'll care about it because part of the curriculum, and if you don't learn it we'll flunk your ass," which basically holds the book up to the student's nose long enough for the light bulb to go on.

    The light-bulb in question has more to do with changing your world view than with solving any specific problem. Programming theory teaches you how to recognize fundamental classes of problems, rather than just "I want to do X," problems. It's less about "how do I do X?" and more about "why should I do X?"

    Now, I happen to have spent a fair amount of time mediatating on programming theory, and would be willing to make you a deal: I'll write a series of posts about programming theory if you'll suspend your "okay, but how do I apply this?" instinct long enough to see how everything fits together.

    Writing that series would be good exercise for me. It would force me to put my ideas in order, and to think back to the mindset of someone who hasn't been living and breathing the stuff for the last few years. It would also shine a spotlight on any weaknesses in my own understanding: if I can't explain something to someone else, I probably need to spend more time thinking about it myself.

    Sound interesting?

      This idea sounds very interesting.. at least i'm interested as well. (not really in same situation, but i enjoy this stuff anyways.) But this sounds like it deserve more then a series of soon to be forgotten posts on a this board.. Why not (assuming decent quality... no offense) post them to perl.com or something as well? Some kind of 'article archival', rather then just posts..

      Absolutely.

      In my own defense, the problem for has not so much been why should I care (I could tell that the contents of the Perl algorithm book would be good for me), but how do I even get my head around the daunting terminology.

      The analogy here might be the construction worker to the architect -- the construction worker puts on a pair of old jeans, goes down to the site, checks the plan, lays out his tools and gets to work. Then the architect swings by with all his talk about form, habitable spaces, and so on. Much of this goes right over the construction worker's head -- not because he (or she) is dumb or uninterested, but because it's wrapped in a lot of impenetrable jargon that only the initiated can know.

      The construction worker can tell you that if you put strut A over there your building will fall down, while the architect can tell you why it's ugly. They're talking about the same thing, but from different vantage points, and often the latter will have a greater sense of the whole.

      I hope I'm not offending anyone with an construction background, I'm speaking in a grossly general way here in order to make a point.

      My favourite programming book of all time was the Llama book. It was the third book from which I tried to learn Perl, and it was the one that worked because it was so clearly working from the premise that the reader was not stupid, was there to learn, but really didn't know his or her a** from his elbow when it came to programming. And what made it stand out as far superior to other books was that it took a progressive approach to teaching by example -- each program was an extension to the one that you had just done for the preceeding chapter. So you could see things coming together in front of you. Each program contained 9 things that you had already done, and one that you hadn't. If you became confused you only had to step back a chapter and re-read.

      If you can make the CS vocabulary intelligible then not only will I erect a small shrine in the corner of my flat, but, frankly, you should be writing a book.

      Awaiting his enlightenment,

      jon

        <pm>There is an incredible wealth of good stuff in the Wikipedia on CS subject matter. It may even be a good place for the posts on CS theory to go. If not there, stick them in the PM Tutorials section.

        I really like the two Tannenbaum texts we had in my CS courses. I wish we would have used all of his books. You may want to check them out. I read all of Structured Computer Organization in a few weeks, and enjoyed it immensely. This is not my usual experience with textbooks. His networking text is almost as good a read, but still excellent from a technical standpoint.


        TGI says moo

        Hey everybody.. sorry for the delay in responding. I'm a stagehand in one of my other lives, and am currently busy with a show that runs for a week (a Disney ice show.. pity me).

        I'll start cranking out notes for the first post of the series, and will try to have something ready by monday. If you don't see anything, feel free to flood my inbox with "what's up?" messages to prod me into moving.

      Actually I would be rather interested in something like you suggested!

      I'm a self thaught programmer, also read general programming books and liked them. How to optimise, logic theories. I'm not as eloquent to describe or give a good explanation of them. But I know how they work...

      --
      My opinions may have changed,
      but not the fact that I am right

      I'm all for it, I would love to see some of those post, it would help me out because I'm in a similar rut as the origanl poster. That and I like theroy stuff anyway

      jjdraco
      learning Perl one statement at a time.
Re: (nrd) Existential Crisis (Or: On Becoming a Better Monk)
by newrisedesigns (Curate) on Dec 05, 2002 at 03:50 UTC

    Some suggestions for expanding your knowledge of Perl (and perhaps computing in general):

    • Browse CPAN and try out things you never heard of before.
    • Search SourceForge and offer help to a Perl-based project.
    • Start your own project (which you did) which involves using different tools that you might not be familiar with.
    • Help someone else (one-on-one) learn Perl. Newbies will often ask questions that will prompt you to learn something of which you previously had no knowledge.

    Just my two cents, perhaps some other monks will have some more suggestions.

    John J Reiser
    newrisedesigns.com

Re: Existential Crisis (Or: On Becoming a Better Monk)
by Steve_p (Priest) on Dec 05, 2002 at 05:21 UTC

    Sometimes, just getting away from your preferred language for a while helps you see things in a new light. For example, about a year and a half ago, I was frustrated with Perl and worked with Python for quite a while. There were several things that I found easier to do with Python than what I was now doing with Perl. But, after dealing with lack of support at work for Python, I went back to Perl and started using more advanced Perl, such as references, objects, anonymous sub's, etc.

    Actually, being an IS guy, I feel your pain regarding theoretical CS. I have struggled with it for quite a while as well. I would highly suggest "How to Design Programs" and "Structure and Interpretation of Computer Programs" as a good start for getting a better grip of the theoretical side of CS.

      These are excellent suggestions, as he obviously needs to gain a deeper understanding in general CS issues.

      SICP - Structure and Interpretation of Computer Program is a terrific book, and you can find the free online version of the second edition here !

      It is written to be very interesting and to cover a lot of areas of CS. Its exercises are great, a pleasure to prepare. The book teaches in Scheme, but it is an easy language to grasp. Besides, a couple of days ago there was a discussion to try and rewrite all examples & exercises of SICP in Perl (using its functional programming constructs - anonymous subs, eval, map and such) - maybe you want to be the one to do it - I'm sure you'll get support for this in the Perlmonks community. It will be a rewarding & teaching experience, and you will surely become a better programmer.

      I'm speaking from personal experience - I'm sure I became a much better programmer after working through SICP in a course (we did everything in Scheme - but it doesn't _really_ matter). Cheers

Re: Existential Crisis (Or: On Becoming a Better Monk)
by cjf-II (Monk) on Dec 05, 2002 at 06:33 UTC
    I answer the same types of questions. I tend to ask the same types of questions. I am not going anywhere with my Perl programming skills.

    I see two possible scenarios:

    1. You know all there is to know about Perl and programming in general. It's impossible to improve further, so you might as well move on to other subjects.
    2. You still have more to learn. The only reason you feel you're not improving is because you don't know what to improve upon.

    So simple solution: first figure out what you want to be able to do, then learn how to do it. Do you want to be able to explain basic Perl programming better? Start teaching Perl to non-programmers, write tutorials and make them available online. Want to be able to do OO programming in Perl? Pick up a good book on the subject and start a project to apply the concepts.

Re: Existential Crisis (Or: On Becoming a Better Monk)
by logan (Curate) on Dec 05, 2002 at 07:17 UTC
    I've been coding perl about 6 years, and consider myself fairly fluent on the language. Like you, I've never formally studied programming. Sure, I took some classes, but I never made it to Data Structures, which I gather is where you stop learning syntax and start in on something...else. Still, I wrote my code, and finished my projects, and felt pretty good about what I was producing.

    About a year ago, I got a new manager. He had a lot more experience than I did, and a very deep understanding of programming. He didn't teach me any new commands or structures. He taught me new things to do with the tools I already had. It was like a door had been opened. The stuff I'm doing now isn't any more technically demanding than before, but because of the exposure to these new concepts in data processing, I can do so much more.

    Here's a few ideas to break the rut.

    1. Go back to school. If you can't find a perl class, take C or Java.
    2. Try to do something entirely new with perl. If you've been writing cgis, try writing tools. Try writing something to automate your daily web rambings (email filters, agents for searching Ebay, CPAN, Slashdot, whatever). Write a game. Check out the X10 libraries and see about connecting your coffee maker to your alarm clock. I saw an article today about a guy who built his own TiVo. He admitted right up front that it needed a way to pull listings and a better UI. Sounds like a cool project to me.
    3. Maybe perl isn't the problem. Maybe it's something...else. Try doing something you've never done before, something that isn't computer-related. You may find that it energizes you. Or, you may find yourself thinking that it would be far easier with comma-separated values parsed into an html table. Either way.

    -Logan
    "What do I want? I'm an American. I want more."

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (4)
As of 2014-09-21 22:09 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

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











    Results (176 votes), past polls