Asa Martin wrote: > > Hope this isn't too off-topic, but I've relocated to the Boston area > recently and am looking for a job. I've been a Perl hacker since the late > 90s and consider it my first (and still favorite) language. However, I'd > like to update my skillset to include some other languages. I've worked in > the past using some PHP and JavaScript and have a casual knowledge of Python > and Ruby. I've also done a fair about of SQL. > > Any suggestions from this group as to what would make sense to put effort > into learning next to make myself more marketable in the Boston area?
I interact with a number of diverse firms in the greater Boston area in a way that gives me insight into their tools. In my experience, nearly everyone uses Java and the rest use C#. Almost everyone uses SQL. Almost everyone uses JavaScript (but few expect to pay someone to know it). Perl and Python tend to show up a couple times a year in small ways. There is some bias in terms of the size of companies I am interacting with -- all moderately large and well-established -- you might find much more Perl and Ruby being used if you looked exclusively at small startups. However, I suspect that you won't find many places that are in the business of doing business that will be using C/C++. It's just not a business-friendly language. Which is a polite way of saying that you cannot hire low-skill programmers to use it and expect them to produce code without massive memory-related issues. C/C++ is commonplace in certain domains -- many of which are popular with OSS developers -- and some of those are profitable and high-tech; but people who are serious about using C/C++ to make money -- and thus to hire you with the money -- are going to be looking for people who are "good", not people who just learned the language. > Should I try and learn Java? If so, any recommendations as to > books/tutorials? I am a terrible person to ask about books, but I generally recommend picking up the O'Reilly "Pocket Reference" book for any language you want to learn. You'll find that the book contains a concise description of all the language features and concepts. Everything else, like specific APIs and frameworks, is available and probably more up-to-date online someplace. IMO, if you need a book which is going to tell you more than that, like 'Learning Perl', then you're really looking for a lot more than simply learning a given language. You're probably looking to learn more about basic programming concepts -- which is certainly necessary, just you don't need to do it every time you pick up a new language. > What about Ruby or Python? Would those be useful together with Perl or are > they usually mutually exclusive? Mutually exclusive in practice. > Anything else? I generally -- without regard to specific employment -- recommend learning a large number of languages, such that you can know that you understand how the computer works, what it does efficiently, how languages facilitate or hinder particular algorithms, and thus gain the ability to use languages _appropriately_. By seeing what different languages can do, you can understand what tradeoff decisions high-level languages force upon you, and understand what algorithms are going to be practical and convenient. In the long run, this is what will help you go from "coder" to "architect" (or "better coder"). To that end, I'd recommend: 'C - A Software Engineering Approach' by Darnell/Margolis -- a great "first book" for learning _why_ you're learning C and how you should use it. 'DPANS94' (http://www.taygeta.com/forth/dpans.htm) -- for roughly the same reasons people suggest learning assembler to understand what CPUs do, Forth provides a broader, less quirky insight into the same concepts. Plus, this is a very well written document, while most assembler documentation is wretched. 'F# for Scientists' by Harrop -- this is near the top of the high-end of high-level languages. To see how far away from assembler you can get (and still have efficient and robust code). 'Systems Programming With Modula-3' by Nelson -- to see how much a language can actually do -- fancy features like subtyping numerics, generics and partial class revelation -- some of which arrived later in other languages. Also, the 'How the Language Got its Spots' chapter is one of the best bits of writing about language design tradeoffs that you will come across. (A more modern case of this approach would be D, but I can't recommend an equivalently excellent D book.) 'Handbook of Programming Languages' (4 volumes) -- because this is (nearly) everything else. Sadly, I cannot recommend a good book on JavaScript, which is a shame because JavaScript is one of the best-designed languages ever. Perl is actually a pretty good background to learn JavaScript, because it has a number of similar features (regexps, closures, dynamic typing) and also has a object oriented programming style that is built on minimal language support. https://developer.mozilla.org/En/JavaScript -- This is as good as it gets. Also, I cannot recommend any book on SQL. I do recommend learning how to use BerkeleyDB's various features, which essentially is the assembler/forth/C to the Perl/ML/Java of SQL. The more you know about what SQL has to be doing internally, the more you'll be able to use it properly. But I've never found it explained well in writing. _______________________________________________ Boston-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/boston-pm

