Join 3,552 readers in helping fund MetaFilter (Hide)


Which computer language should I learn?
August 14, 2007 7:23 PM   Subscribe

Which computer language should I learn?

I looking for a change in career and want to get into computer programming, but I'm not sure which language to put my shoulder behind. A little background: I'm 40ish and have been a mainframe computer operator for about 20 years, but this is a dying industry and I want something different. I have studied programming in my spare time and know a little about OO, database design, HTML, a little AJAX, PHP, and a little Visual Basic. I'm not advanced in any of these but I can become proficient if I want to.

Now the question is: which one would be the best in terms of looking for a job. Please don't tell me how difficult it will be to find a job without a degree--I'll take care of that. Just give me an idea of which one would be the most desirable to an employer and I'll work for free at home until I get the experience. Don't suggest sys admin because you can't really practice that at home.

Also, I used to live in NY and would like to take a skill back there with me.

If you'd like to know more, let me know.
posted by zorro astor to Computers & Internet (25 answers total) 20 users marked this as a favorite
I work for a webdev company in NYC. We have a hard time finding really GREAT, local PHP programmers -- and Actionscript programmers. It's easy to find so-so programmers. But the experts are picking where they want to work. (All the great ones we've interviewed have had multiple job offers.)

By "great," I mean people who can show us complex, clearly-written, well-commented code -- code that adheres to best practices rather than quick hacks. So many people are good and hacking small stuff together and fixing problems with more hacks. But there are way fewer people we can trust to build large-scale applications. So learn design patterns, useful libraries, etc.
posted by grumblebee at 7:30 PM on August 14, 2007 [1 favorite]

Ruby and Python are all the rage these days. It's what all the cool kids are talking about.

Java is always a mainstay, you'll be sure to get a job most places but I've found that it's largely unrewarding since most Java-based projects (and this is solely based on my own experience) and big-big with teams of developers and the amount of free reign is negligible.

PHP is incredibly popular in the web marketplace for small/medium projects with some fairly large players like Digg, Facebook and Yahoo. Expect it to stick around for some time and the somewhat recent developments in PHP5 and the upcoming PHP6 is taking the language in some very promising directions.

However, if you're truly interested in employability and $$. With a mainframe operator background try to pick-up or learn more JCL. Banks and most other larger institutions are scrambling for mainframe programmers since a lot of their core systems still rely on them. You could charge top dollar.
posted by purephase at 7:35 PM on August 14, 2007

best look in the local paper for the kind of job you want to do.
second best, at least say here what kind of job you want to do (web? enterprise? client apps?)
but i thought mainframe people were getting the big bucks because so many are dying ;o)
posted by andrew cooke at 8:03 PM on August 14, 2007

The question of 'what computer language should I learn' pops up regularly.

A recent time is this ask MeFi post.

This is fair enough, as each time the question is asked with different parameters, but it's worth checking out previous answers anyway as they may help you.
posted by sien at 8:04 PM on August 14, 2007

C is the lingua franca.

Python or Ruby are what the cool kids use. They are for getting sh*t done. Highly recommended.

C# is the new C++, and it's popular in some pure programming shops. Consider this also.

Java is dying. 90% of shops using it are doing so out of desperation or ancient requirements. They tread water.

PHP and Perl (and *BASIC) will eat YOur braNE!! so beware learning them early in your new development. Learn those last; they will ruin some would-be programmers. They're the lingua franca among a certain class of people and tasks, so you might want to try them once you've mastered everything they're based on. grumblebee can't find people because the languages ate brains and attract bad programmers.

Learn others. Lisp, Forth, Erlang, Smalltalk. That people know an obscure language is proof to me when I hire that they love to program and love to learn about programming. For a C position, I'd rather hire someone who learns a language well every year and is starting C than someone who knows only C but knows it really well.
posted by cmiller at 8:13 PM on August 14, 2007

C is great to start with. In fact, I'll say you should start with it. You'll learn basic structure, and eventually some core concepts that you can keep forever.

Then I'd focus on a language you want to learn:

If you don't like pointers or declaring variables, learn a scripting language (Python, Perl, PHP)

If you like C and want to make it count for something, learn C++ and then C# (or maybe just C#)

If you want Web Development, research HTML, XML, and the HTTP. Then learn PHP or Perl.
posted by Jimmie at 8:29 PM on August 14, 2007

C, C#, and Java are all cousins. Learning one will help you pick up the others with very little effort. If you use windows at home, check out C#, the Visual Studio Express package is very nice. If you're more of a linux user, look into C or Java, I think Eclipse will help there. I'd recommend gettting books for certification on whichever language you choose, because they'll give you the broadest exposure, and allow you to self-test. I work ft in software development, and it looks like C# and Java have the most job postings.
posted by blue_beetle at 8:38 PM on August 14, 2007

I totally disagree with the assertion that Perl will "eat your brain". Perl is like a cool permissive parent - you'll like it a lot even when it lets you do things that you shouldn't. Because it gives you the freedom to make terrible design mistakes, you learn many right ways to do things (notice the plurality) instead of being coddled into the view of your parent (err... programming language).

< / mixed metaphor>

Perl is probably not the most marketable language though. I'd learn C and then C++ (on multiple platforms) first if I were you.
posted by phrontist at 8:44 PM on August 14, 2007

I'd suggest Ruby and you should go right into learning Ruby on Rails. RoR guys are hard to find right now, and, if you're willing to gamble a bit more than usual, you can find some truly excellent jobs through it. Also, Ruby has some great features, and is really great to just pick up. There's lots of rather deep ideas that come out nice and easy in it.

Second choice? Python, definitely.
posted by jmhodges at 8:59 PM on August 14, 2007

My personal opinion is that Flash/Actionscript has the best supply:demand ratio, and would tie nicely into your existing web development knowledge.

There are more jobs out there for Java developers than any other language; these jobs tend to be blander and worse paying than those in other languages, in part because the large supply of Java developers means they're more interchangable. Java may or may not be declining, but it has a long way to fall.

PHP is similar to Java in those regards, but is easier to learn web dev in.

I've seen more than a few job listings for Ruby on Rails lately, but I generally suspect that orgs willing to hire a RoR developer will be looking for candidates with more programming experience.

Regardless, the best way to make yourself employable will be to build some database-driven website that you can show employers. Come up with your own, or perhaps search the UN Online Volunteering Clearninghouse for organizations that would accept your services for free.
posted by gsteff at 9:04 PM on August 14, 2007

Depends on how low level you want to start. C/C++would be that. Thats what the game engines are written with.

Or you can step up to a higher level and use the MS XNA C# based stuff and have a workable xbox360 game(s) to show for it.

Also, depending on what kind of gaming dev job you are trying to get stuff like unique flash games or even creating mods and maps for existing games might go a long way.
posted by damn dirty ape at 9:11 PM on August 14, 2007

grumblebee can't find people because the languages ate brains and attract bad programmers. That's essentially an invitation to a low-level religious war.

Nevertheless, perl jobs aren't that common in my area, although there are lots of places where perl is used occasionally or in special situations. It's not a bad "second language" to have, and it helped me land the job I have now, but finding a "perl job" where it's the main language could be a long and unlikely undertaking.

In my last and recent round of job hunting, there wasn't a lot of demand for PHP in corporate settings around here. Anything .Net is hot and trending upward, either VB or C#. Java was still around, but seems to be trending down. There was still a scattering of C and C++ mentions. I saw almost no mention of Python in job ads, and zero mentions of Ruby. XML, not strictly a programming language, but very often mentioned.

Places where lack of a degree would be a barrier to employment seemed to be well in the minority, maybe 10% to 15%. (And some of those were at colleges.) "Equivalent experience" was language used very commonly. So, yes, you should be able to take care of that.

These *will* vary among areas and industries. I'm not in NY.
posted by gimonca at 9:21 PM on August 14, 2007

I write in a bunch of languages, and recently switched jobs. While looking around I noticed the most positions were using the MS stack, a depressing number of them in classic ASP, and all the modern ones that I recall using C# specifically. Most places actually had a requirement for experience with both, so I imagine they've been doing MS for a while and have some legacy apps, some new stuff coming up, and possibly some porting work. If you could make yourself very strong in C# .NET and back it up with a reasonable understanding of the classic framework I doubt you would have any problem finding work. C# is very nice to work with besides, but legacy VB maybe not so much.

That's all for web stuff. If you're looking to do desktop/application/game programming the best language to pick up is almost certainly C++. (If you're looking to do game programming god help you)
posted by moift at 9:21 PM on August 14, 2007

Use a web application framework for coding. CakePHP and CodeIgniter are two frameworks for PHP; they're similar to Ruby on Rails. (There are others, but CakePHP's probably the most widely known, and I've used CodeIgniter.)
posted by kirkaracha at 9:24 PM on August 14, 2007

PHP is still going strong. I've recently had a lot of success contracting in the Symfony realm, (Symfony is a PHP framework) and I've been a PHP developer for 8 years now.

OTOH, there will ALWAYS be a market for Windows programmers who are good at what they do. I also know C#, and we give a local development company a LOT of work ($1000's per month) in stuff that's above and beyond what I can do.
posted by SpecialK at 9:34 PM on August 14, 2007

OK, you're going to get all sorts of varied advice, but stop and think about what kind of work and what kind of working environment you're aiming for. You don't just want any job, otherwise you wouldn't be asking this question, so imagine your ideal situation and work back from it to determine the right path.

(So if you want to quietly work from a home office you might want to get into the lighter end of web dev and take on small, self-contained freelance projects. Or to join a medium-sized web agency you might go for Flash or a cool server-side technology. Or for the corporate world you could get a load of Microsoft certifications)
posted by malevolent at 11:47 PM on August 14, 2007

Don't learn just one. Learn the LAMP stack (so PHP) and some VB.NET/ASPx (Visual Studio express is a free download). Now you have both bases covered so to speak.

I did a simple address book type web app in both to learn. Pick somthing like that. Not only will you learn the basics, but you will have somthing to show potential employers.
posted by distrakted at 2:45 AM on August 15, 2007

As someone who graduated from a formal computer science program and has been around people who have just "picked up" a programming language, I can tell you I wish less people would be interested in what language to learn and more in actually learning how to program. While a class on a specific programming language may include some basic programming tenets, they will never cover as much ground as classes on programming in general, development methodologies, batch programming vs event-driven, interface design, and so on ad infinitum.

The problem is that I don't really know of a quick "learn how to program" class, it's a really involved process. Picking up a language from a class can be really useful if you need to make programs for your own purposes. If you are going to get a job based upon that, however, you may be coding programs that will later prove hard to maintain and debug. I have seen many projects trashed and coded again from the ground up because of similar issues. Of course that can be allayed by strict development policies and best practices passed down from the head of development, monitored and enforced. That can be good training. But not every workplace has such an environment, unfortunately.

Just something to consider. Programming isn't just about what language to use.

Sidenote: you absolutely can train for sysadmin jobs at home. I sure did. Build yourself a linux or other unix server, keep it updated and patched, have it run web and mail servers, and provide hosting for friends and family. That will provide you with some good training and can be spun during andinterview.
posted by splice at 3:34 AM on August 15, 2007

Sounds like you want web development with html, php, ajax, database. Get up on sql, lamp, or whatever the microsoft equivalent is.

Java seems to be the common OO learning language these days. C# is pretty much just for windows programming. Don't bother with C, just start with C++; you'll get all the important parts of C along the way, without the bad habits you'll only need to break later. Accelerated C++ is a commonly recommended book for learning.

It's sometimes claimed that VB is now an OO language, but that's a kludge on top of a kludge on top of a kludge. Still, you can write a perfectly fine windows app in it.

You can find work in any of these directions. Pick the one that you find the most interesting or the most expedient.
posted by DarkForest at 5:28 AM on August 15, 2007 [1 favorite]

grumblebee can't find people because the languages ate brains and attract bad programmers. That's essentially an invitation to a low-level religious war.

It's also because -- in NYC -- google has snapped up a huge number of the really talented people.

My personal opinion is that Flash/Actionscript has the best supply:demand ratio, and would tie nicely into your existing web development knowledge.

I'm a full-time Actionscript developer. Here's the scoop. AS has recently morphed (in version 2.0 and, even more, 3.0) from being a toy language to being something similar to Java. It has classes, packages, interfaces, exceptions, strong typing, etc.

But, due to its history, most of the people who learned it are designers. They're people who got into Flash as a design/animation tool, and they learned a little programming so that they could add a button or some simple navigation. These people know little about writing large-scale applications, design patterns, etc. Before I took my current job, I made some good money re-writing other people's code. Companies would hire me when their designer-generated code got so impenetrable that they couldn't modify it. I'd re-write it from scratch, making it class based, commented and clean.

Comp Sci types aren't attracted to AS, because they don't realize (or care) that is has matured. So there's a hole that needs to be filled. I just finished writing a 20,000 line-long AS application. I've been trying to find other people to help work on it and maintain it. But I find either C/Java/PHP developers who don't know AS and Flash. Or I find Flash developers who flee halfway through the interview, because they get scared of my app's size and complexity. The few good people are demanding gargantuan salaries (and they GET them, if not with my company, then with another company).

So AS is a good language to learn (job-wise) right now.

The downside: it may just be a -- pardon the pun -- flash in the pan. AS may just be a fleeting trend. It doesn't have a long history, like Java, PHP or C. So who knows what the job market will be like for AS developers in a couple of years.

Of course, if you become a really good AS programmer, you should be able to switch to some other, similar, language (a.k.a Java) if you need/want to.
posted by grumblebee at 5:55 AM on August 15, 2007 [2 favorites]

Since many in this thread are suggesting it, from a general view, are there any books that teach good programming practices without covering a specific language(or covering C++, Java or PHP?)?
posted by drezdn at 6:04 AM on August 15, 2007

My background: enterprise software professional services consultant with CS degree and 8 years in the business. I've worked with a lot of shops, both software development and corporate IT. My core languages are Java, Perl, and, these days, XQuery.

My advice: become an Oracle DBA. My experience has been that bad DBAs have good jobs, mediocre DBAs have good jobs with great organizations, and really good DBAs can write their own ticket. Standards are even lower in the New York area, as the financial industry employs a lot of the mediocre-or-better DBAs. If you want to spin things in a more code-centric way, DBAs with developer skills are always in high demand; I would build up your DBA experience first, though, before focusing on learning languages.

Not only is a DBA role a good one in and of itself, but it would fit well with your current age and experience. To be very blunt, a 40ish entry-level programmer is going to be a tough sell; it can be done, but you're likely going to hit some age discrimination. In the DB world, you're an experienced data-management professional who is moving from mainframes to client-server. I've known several folks who have pulled off that transition, and it's less hyperbolic than it sounds: a lot of the skills and experience does translate.

If you're not interesting in being a DBA, my summaries of other classes of languages:

PHP, VB.NET, Flash/Actionscript, web front-end development (AJAX/CSS/DHTML/Javascript): Anyone who is really good at this stuff tends to move on to other languages because nobody will pay high rates for these skills. It's impossible to get $250/hour for PHP work when that would buy 5 midlevel developers. Unfair, but true.

Perl, Python, Ruby: Low rates because smart people will take less money to work with "hot" languages. Furthermore, there's very little "enterprise grade" development done in these three or PHP in corporate IT departments, which depresses demand.

C++ and Java: still the mother tongues of corporate IT, with C# closing fast. As opposed to other languages, you're unlikely to get hired just because you know one of these; your value is in how you use them. Thus, rates tend to be all over the map, but deep knowledge of esoteric features or certain integrations can bring big bucks.

FORTRAN and COBOL: don't laugh -- I know several places in NY that will pay quite well for guru-level knowledge.

If you want to stick with the operations side of things, I would suggest learning Perl; otherwise, Java or C# would be the way to go, but make sure you have a value proposition other than "I know this language."
posted by backupjesus at 6:12 AM on August 15, 2007

are there any books that teach good programming practices

Some possibilities to look at, depending on where you're starting and what you're looking for:
The Practice of Programming - Kernighan & Pike
The Pragmatic Programmer - Hunt & Thomas
Code Complete - McConnell
Beautiful Code - Oram & Wilson
posted by DarkForest at 6:37 AM on August 15, 2007 [5 favorites]

What splice said - if your fundamentals are good, then the language you learn doesn't matter quite so much. SICP has been mentioned here several times as an excellent baseline text that you'll carry with you wherever you end up, language-wise, so I'd order a copy and start with the instruction materials on the site.

Languages currently in vogue in the web world are Python (and the Django framework), Ruby (and the Rails framework), and Javascript. PHP is a hardy old standby, the /bin/sh of the web, used by lots of big, high-traffic websites. Friends who are hiring tell me that it's still a serious pain to find good developers in any language among all the hacks out there.
posted by migurski at 10:01 AM on August 15, 2007

I definitely agree with Grumblebee. Right now Flash Actionscript developers are in demand. Like Grumble said, Actionscript has been traditionally picked up by designers, and not proper coders. As the language evolves into something more powerful, there is a void of people who can master large Flash projects.
posted by exquisite_deluxe at 2:17 PM on August 15, 2007

« Older Is there any way to convert a ...   |  Step right up! I need some fun... Newer »
This thread is closed to new comments.