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

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??

Now, I tend to be a fairly rabid fan of the Pragmatic Programmer book and/or approach. I've adopted most of the techniques in their eponymous book, and it's made me a better hacker. But I don't buy the advice: "Learn at least one new language every year" (p. 14).

I can't think of any language that I've been competent in after a year. C? (Hell no.) Pascal? (Er, did I just admit to knowing Pascal?) SQL? (shudder) Java? (Pshaw.) Common Lisp? (Not even close.) Prolog? (I'm still not competent in Prolog.) Perl? (Well, I was sort-of competent in C at the time, does that count?) Scheme? (Still writing defun, and it's been three years.) Haskell? (What's a monad?) I've been hacking C for a decade or so, and I'm far from C-guru status. Why should I expect to get far after a year of study?

Not counting assembly languages, shells, and one scripting language that shall not be named, that makes nine languages that I "know". After a year's experience with each language I hadn't even scratched the surface of what that language had to offer.

That might've been different if I'd been using the new language exclusively for a year, but who can devote a year's worth of programming to learning an unfamiliar tool? I'm in a better position than most -- I'm a grad student, with flexible deadlines and a tolerant supervisor -- but I'm mostly interested in using the right tool for the job, not in advancing my skills with a nifty language unconnected to my job. I have a feeling that most programmers, Pragmatic or not, are in an even worse position when it comes to learning the ins and outs of a new language - and especially developing a new point of view on programming, which IMO is the best reason to learn a new language.

Not that I think we should stick to the languages we know (although they deserve brain-time, too). Of course we should learn new languages, especially languages that break our brains in useful and creative ways. I know C, C++, Java, and Perl. Learning another procedural/OO language (Objective C is on my hit list) isn't likely to teach me anything world-shatteringly new. Learning a stack-based language like FORTH (or perhaps more usefully PostScript), on the other hand, would probably be a decent idea. (That's on my little list, too.)

I just think that the "one a year" timeframe is misleading. Unless you devote an impractically large chunk of time to that new language, one year isn't enough. Ten years might be closer to the truth. (Who knows? Maybe nine years from now I'll grok continuation-passing style in fullness.) Start learning a new language a year (or every two or three), but don't expect real results for at least two. Crank up a pipeline.

While we're at it, I don't think we should be focusing on languages. Rare is the language that's conceptually different from every other computer language with an open-source cross-platform implementation. Concepts are more important than languages, hands down. It doesn't matter whether I write closure-slinging functional code in Haskell, Common Lisp, OCaml, or Perl, I can express what I want to regardless. The idea of closure-slinging is what's important, not the implementation language.

Programming languages, especially programming languages that teach you something you didn't already know, are too complex to be properly learned in a year. Programming, in general, is hard. Let's keep that in mind.

Edit 2004 Oct 7: Fixed the PragProg link. What's that preview button for, again? sigh

--
F o x t r o t U n i f o r m
Found a typo in this node? /msg me


In reply to (OT) "Learn one new language every year"? Yeah, right. by FoxtrotUniform

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others examining the Monastery: (5)
As of 2024-04-25 14:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found