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

Reply via email to