7 ms·
A note on labeling yourself a "Perl programmer", or an "<insert specific language here> programmer": A marketable skill is an investment. If you specialize in
by mratzloff 13y ago
A note on labeling yourself a "Perl programmer", or an "<insert specific language here> programmer":
A marketable skill is an investment. If you specialize in one skill it may be very profitable--for a time. Like investing in one stock while it continues to increase.
Diversification is the only smart strategy if you're in it for the long haul. Keeping a portfolio of tried-and-true but also fashionable up-and-comers is the approach I've used to great effect.
As a bonus, it can also improve your skills in your existing languages.
- collyw 13y agoTrue. I think after learning Perl as a second language, I understood Java (my first language) a lot better. OOp in Perl is a bit of hack. Bust it is transparent and you see what is happening, unlike Java, where it is like a black box.
- eropple 13y agoYMMV, but I found learning C++ to be a lot more valuable for understanding both object-oriented programming as a general topic as well as the JVM and Java specifically.
- sspiff 13y agoI was struck by the same impression: why label or restrict yourself to a single language? And why label all other languages as short-lived, low quality fads? Because that's what reading the two "tl;dr" sections at the top indicate. He's not doing himself any favours with that kind of statement. When people (recruiters or otherwise) ask me what I do, I'm a developer. Not a C programmer, not a Rubyist, or any subset of software development. I know how to program, I know how to solve problems, and I know how to learn new languages, libraries or frameworks. Sticking to your guns in an industry as ever-changing, for better or worse, as ours, is a bad idea. When I was a student, I was interested in trying out tons of new languages. I eventually ended up sticking to Ruby for most of my own projects. At university, we used Java almost exclusively. My two last jobs however, have been C and C++. I'm fond of C, but not a big fan of C++. If I had stuck to Ruby or Java, I doubt I'd have a job as interesting as the one I have now, as those to languages seem to be restricted to web development and things like low quality internal applications used by banks in my area. (Unrelated: odd, I'd never hear of this guy chromatic before today. I was listening to music by Chromatics, and five minutes before this thing hit front page, I decided to Google the bands name, and I ended up on his Wikipedia page.)
- pekk 13y agoWhy refuse any specialization? Some things take years of experience in a language to get right. First, nobody should care that you can "hello world" in more languages. Second, you don't have any preferences about what tools you use?
- weavie 13y agoI think you should specialize in programming concepts first and specific languages second. Once you have a deep understanding of lambda calculus, mutable/immutable state, lazy/eager, classes/functions and all that, then first it is easier to approach any language and second you will have a much deeper knowledge of the languages (yes it should really be more than one) you do specialize in.
- existencebox 13y agoI think the statement was more like, "a developer uses the right tool for the job, a perl programmer will always use perl". (to the above poster, I hope I didn't misinterpret...) You need both, I think. Breath and depth. Excessive depth to the point of self identification as an "x" coder has often correlated with living in an "x" bubble in people I've met. I have some thoughts on this (which I'm badly composing now due to being in a rush), it's a really important conversation to have (what's the right balance between breath and depth) and frankly depends a LOT on the person/work. I would certainly fucking hope that, to give a strained example, my brain surgeon wasn't just a general practitioner with a hobby :P
- sspiff 13y agoOf course I have a preference, but in general you work in teams, and the quality of the code base and standard practices of the group are more defining in how fun or productive something is to work on than the choice of language. I know nobody cares if you can write "hello, world" in many languages, but I never stated that or anything like that, did I? Some things take time to learn (systems programming, memory management, ... are things you'll have to wrap your head around when coming from a higher level environment, for instance), but hardly any of them are language specific as far as I can tell. Feel free to point out examples to the contrary, although I feel like if it's hard to learn a general concept in a specific language, that sounds like a language design problem. In many cases being a good programmer in one language means you can learn another language and become a proficient or good programmer in it relatively easily. Some specialization is fine, however, if you really stick to a single language/framework/environment, I think you're staking an awful lot on something that could mostly go away in five years time. For example, I work in the embedded domain. Ten, fifteen years back, microcontrollers were pretty much king. You wrote software close to the metal, without an operating system, and allocated all memory statically. If you stuck to that kind of development, and refused to learn embedded Linux stuff or dynamic memory management, you'd be unable to find a job today (at least in my area, I can't speak for the entire world in this case.)
- badman_ting 13y agoHe does seem unusually determined to remain a Perl programmer. I liked how he threw in the JS renaissance as somehow relevant to Perl because they're both from the 90s or whatever, a bit delusional if you ask me. It's painful to move on from the platform you spent so long mastering, but sometimes you gotta do it.
- singingfish 13y agoNo i disagree with your interpretation, but that's because I'm a perl guy who is currently doing 60-75% javascript. Both are very pragmatic languages with significant design warts, but with enough useful higher level features to make them fun (unlike say PHP).
- inquist 13y agosingingfish, I'm curious what you have in mind here. I've used each of these a bit and I haven't noticed PHP lacking high level features?
- singingfish 13y agoIt's not introspective enough compared to the other big dynamic languages, it suffers from a lot of low range developers working on it, the namespacing is a mess (which leads to to the docs although relatively thorough, but a mess). My understanding is that things like CakePHP are an improvement, but given PHP's underlying design a bit of a shim. Don't get me wrong people do interesting stuff with php (especially the pornographers), but it's a kludge. I also don't like the tendency for close binding of code with a real web server that I've observed. Bear in mind my most recent PHP experience has been bending wordpress to do my will (taking over a project that's had the designer on the lead), and dealing with an undocumented not-quite-webdav implementation written in PhP that seemed to be overly dependent on apache.
- girvo 13y agoCakePHP is not an improvement, and the fact you'd bring it up sort of shows you don't use the language much if at all...
- goostavos 13y ago>As a bonus, it can also improve your skills in your existing languages. I'd actually say that doing so is the easiest way to grow stylistically as a programmer. Each language has their own way of doing things. Some of those things are done really well, others, well, not so much. If you've never dipped your toe outside of the core language pool, it's tough to know just what those things are. Every language I've ever learned has opened my eyes to a new way of doing things. As a guy who cut his teeth on Python, I'd say that I didn't really "understand" hardcore OOP until I picked up Java. You just don't see that every-noun-is-now-a-class style often in Python. Closures "clicked" when I picked up Javascript, and really deep lambda use didn't really sink in until I picked up Scala. I had, of course, always used these things in Python, but only on a surface level. Exploring an environment where some small feature of your primary language is the big common feature of another is very eye opening. You pop out the other side with tons of new knowledge and usage patterns.
- viraptor 13y ago> As a guy who cut his teeth on Python, I'd say that I didn't really "understand" hardcore OOP until I picked up Java. You just don't see that every-noun-is-now-a-class style often in Python. This sounds really weird to me considering that almost every noun is a class in Python, but that's not the case in Java (primitives are not classes and there's no easy to use meta-class construction).
- goostavos 13y agoYou're right, everything is an object in Python. However, what I'm referring to is more on the application design side that you see in the enterprise Java community, rather than the implementation of the core types or builtins.
- midas007 13y agoHopefully this offends everyone &| starts yet another pointless religious debate: Java was a reaction to C/C++ (language safety); Python was a reaction to Perl's messes; and Ruby is polished Perl. And bonus: Go was a reaction to Java and C++ compiles taking forever. With production usage, each platform matures through attempts to learn from the past while not forgetting too much before that. (Sadly, though most everything will be coded in javascript.)
- Natsu 13y agoAny good Perl programmer should be able to adapt to many other languages.