Best programming language for beginners?
January 28, 2007 4:10 PM   Subscribe

I am a 21 year old "field IT technician" looking to pursue programming as a career, and am wondering which language(s) is friendly to beginners and/or likely to help me get a job. I am within commuting distance of Redmond if the MS factor is of any consequence.
posted by seiryuu to Computers & Internet (30 answers total) 24 users marked this as a favorite
Get a job: C, C++, C#, Java, .NET

Friendly to beginers: Ruby or apparently Python.
posted by patr1ck at 4:20 PM on January 28, 2007

PHP + mysql


The first will get you jobs

The second will get you jobs with companies
posted by jimmy0x52 at 4:23 PM on January 28, 2007

Most Friendly: Python (besides, Google just hired Guido, the originator of Python, so...)

In wide usage: LAMP (Linux + Apache + MySQL + PHP), which means PHP on the front end.

Or, for stand-alone apps, you've got either Java or C#. Java isn't going anywhere, but it's seeming pretty dated and stagnant right now, at least from my (limited) experience.
posted by zpousman at 4:32 PM on January 28, 2007

The answer kind of depends on your career goals. If you want to get out of IT, work as a developer for a few years, make a few bucks and go do something else, just take some C# / ASP.NET courses and apply at a contracting company like Aditi or Volt. It won't be glamorous work (it tends to be blue-collar programming), but it'll pay the bills.

I say C# because there's loads of documentation / classes on it, and it's fairly approachable if you don't have formal education in computer science.

If you're considering a long-term career in development, you might want to consider some actual CS classes, like data strucutres & algorithms (assuming you don't have this already). Not strictly necessary (plenty of professional devs don't have CS degrees), but it makes you more well-rounded and a better long-term investment to potential employers.
posted by molybdenum at 4:32 PM on January 28, 2007

Job bait: anything .NET, Java (and J2EE).

Programmer bait: Python, Ruby.
posted by Netzapper at 4:33 PM on January 28, 2007

Java, .NET.

Enterprise java developers make a shitload of money; I imagine enterprise .NET developers do as well. Learn about proper database design structures, learn about persistence models and ORM, and you'll be sitting pretty.

Python would be next in line. It's the shit, but there aren't as many job opportunities out there.

I wouldn't suggest PHP for someone trying to become a "programmer." Web designer, yes. PHP is very easy to learn, and very powerful. Unfortunately, it's a little too easy to get "up to speed" and start rolling things out before you've properly designed things. This can lead to code-rewrite-itis if you're not careful. Learn PHP if you plan on doing a lot of web development that doesn't require big database work. If that's the case, I think you'll find Javascript will be just as easy to learn, and probably just as useful.
posted by Civil_Disobedient at 5:01 PM on January 28, 2007 [1 favorite]

Through the sleepy haze of my CS programming classes, I recall my professors saying that the "big ones" were C++, Java, Python.
posted by Xere at 5:36 PM on January 28, 2007

My college Intro to CS professor, who has an innate gift for *teaching* complex subject matter, makes a well-reasoned case for "Python as a First Language" here.
posted by drinkspiller at 5:37 PM on January 28, 2007

As much as I hate to say it, I would go with Java at this point. Partly because there are scores and scores of jobs available for it, and because Sun is making Java open-source very soon, which will only increase its viability.

However, you can't go wrong with the C family of languages (C, C++, C#). That's my area, only because that's what my school teaches. However I am glad because it got me into some operating system work that Java would never have been appropriate for.

I would pick up Python on the side in addition to whatever else you are learning because it is a bit slow for mainline programming, but perfect for small jobs and as "glue" code to put together other parts of a system. And, it's really a nice language to code in, so if you're doing any fun side projects, Python is good.
posted by zhivota at 5:41 PM on January 28, 2007

Oh and for the record, it's not hard to move back and forth between languages once you have one mastered. For that reason, I often recommend C as the first language to master, as it is more low level than the others. It's easier to go from lower level to higher level, IMO.
posted by zhivota at 5:45 PM on January 28, 2007

C# is probably your best bet from a MS perspective.

LAMP (Linux, Apache, MySQL, PHP) is very popular but it's mostly for gluing together basic ecommerce stuff, whereas all the big business stuff is usually done in Java.

Ruby is a "fun" language, but it's well known for it's powerful Ruby on Rails framework, which is still considered bleeding edge by most of the industry.

Python will earn you nods of respect but not a lot of jobs unless you have a high end academic background.

Perl is a great scripting language that is particularly useful for a lot of little things, consider it a handy toolkit for anything that might usually involve the command line.

C++ has a bit steeper curve than most of the other stuff I just mentioned, but it's still what a lot of important stuff is written in, and it's not going to go away anytime soon, and there's always a demand for C++ programmers.

Hope this is of use to you.
posted by furtive at 5:47 PM on January 28, 2007

Do please keep in mind that "field IT technician" cannot be outsourced to any location beyond easy driving distance.
posted by jamjam at 6:25 PM on January 28, 2007

What everyone else is saying, C# or Java. Learning either one, or almost any other language for that matter, will give you the fundamentals to pick up other languages as needed. Go for something web-centric, since that's where everything is headed these days, especially in the business world. Considering your location, I'd pick C# over Java, but it's really a toss-up.
You can always try one, and if things don't click, switch over.
For C#, you'll want a copy of MS design suite. That'll cost some money, unless you can "acquire" it through your current job.
For Java, go with Eclipse. That is free.
For both, get the O'Reilly books, and ignore the Learn if 5 days/hours books you'll see.
posted by Eddie Mars at 6:28 PM on January 28, 2007

ColdFusion is a very easy language to learn, not to mention you can use it with HTML at the same time. It might be the easiest way to get a foundation in the basics of programming.

Disclaimer: I hate ColdFusion. I am an applications engineer for a ColdFusion shop and a lot of our developers aren't really developers. But it does provide an easy way to get your feet wet. It also opens the doors to Java/J2EE etc.

Additionally, I find Perl a very fun language to help me write my own tools to do my job.
posted by jbiz at 6:38 PM on January 28, 2007

Start with C++. It's widely used, and other useful languages are derived from it. If you know C++ you can pick up Java/C# with ease. There's tons of resources available on and offline for learning C++. It's also a very versatile language. You can write large object oriented applications with it, and you can also write low level stuff like device drivers.

Friendly to beginners, maybe not. Likely to get you a job, I think so.

For what it's worth, I'm currently putting myself through my CS degree by writing C++ for Windows apps.
posted by benign at 6:38 PM on January 28, 2007

Python is quite friendly to beginners and is also widely used.
posted by dfan at 6:41 PM on January 28, 2007

C#, Java, and Python are good languages to start with (in my day, it was BASIC), and you could probably work the rest of your life without learning anything else (which is more than I can say for BASIC,) but if want to try to be as good a programmer as you can be, you should get into C and Lisp as soon as you can.
No "real" programmer isn't going to know how to work with some assembly, lambdas, pointers, bit manipulation, etc. Even if you end up writing Java at some bank or whatever, knowing low level concepts will give you an edge.
posted by blenderfish at 6:49 PM on January 28, 2007

C# or Java. Easy to learn, and likely to get you a good job. The languages themselves are very similar, so if you learn one, it's very easy to pick up the other.

I feel tempted to recommend C, since it was my first "real" programming language, and helped to make me who I am. However, it's pretty inaccessible to the novice, and I'd be afraid that it may turn you off to programming.

I would not recommend C++ as a first language. It's difficult to learn, and isn't necessary for most of the programming jobs out there.

PHP and Perl will get you a job, but it may not be a very well-paying job.

Ruby on Rails is supposed to be fun, and I think people mainly use it for their side projects.

I know nothing of Python.
posted by Afroblanco at 6:58 PM on January 28, 2007

I was laid off two weeks ago and looking now. I will not talk about which programming language is better, but I will tell you anything.NET will get you a job.
posted by BillsR100 at 7:01 PM on January 28, 2007

You can get 'express' (i.e., free) editions of visual studio at:
posted by blenderfish at 7:38 PM on January 28, 2007

In the Seattle area, C# and ASP.Net are inordinately important because of the influence of Microsoft. Learn one or both of those.
posted by Hildago at 7:48 PM on January 28, 2007

Picking up your first language is hard. Picking up your second language isn't easy. After the third, they all just kind of flow and you get used to breaking things and working quickly.

Just find a language you're comfortable with, start hacking, maybe get involved presenting patches to some open-source projects, and start turning it into little contract tasks. (As a bonus, if you choose PHP as your first language ... I might have some stuff I could pay you to do. Email's in the profile.)
posted by SpecialK at 8:33 PM on January 28, 2007

Python is easy to learn and make become then new p in LAMP. I think and am hoping it will get huge, because it is by far my favorite.

how ever, Java and C# will get you the most jobs options the quickest.

C/C++ work even better in the longer term since if you know C you will have to know pointers and memory management to get anything done giving you a much deeper understanding of the higher level languages like Java and C#

Oh, and check out a book on algorithms and one on Data Structures. I'm a CS major who has done some interviewing and people will ask you to write a BFS, DFS, or Red/Black tree on paper to see if you understand algorithms. Lots of people can write code, so they ask technical stuff to see what level you are at, most of that stuff, in my experience is not the coding it is the structures and Algorithms.
posted by magikker at 8:38 PM on January 28, 2007

Do yourself a favor and go with Python and/or Ruby starting out. I'd reserve the statically typed languages (C#, Java, etc.) for later and just focus on making things happen at first to encourage your learning.

Ruby and Python are great for fast development and learning.
posted by Kikkoman at 8:55 PM on January 28, 2007

All the C derivatives are bizarre in various ways. It's worth learning C, just so you get a feel for the underlying bizarreness that all that other bizarreness is there to work around :-)

Seriously, learn C. C is the yak shaver's language of choice. Doing even simple tasks in C will take you through all kinds of odd little detours, every single one of which will teach you something that will make you a better programmer, and help you understand the benefits (and failure modes) of higher-level languages like Python, Ruby and Lua.

Harbison and Steele
is the best C reference, IMO. Between that and Google, you should be able to work it out.
posted by flabdablet at 1:43 AM on January 29, 2007

most people have ignored part of your question - 'pursue a career'

My previous post will give you the best foot in the door with -0- experience. Most people aren't hiring software engineers in C++/C/Java/C# with no formal training (BS in CS) or less than 5 years experience.

Now, that being said, plenty are hiring web devs with little or no exp as long as you prove you can hold your own while doing it.

Get started learning PHP/ASP.NET/C# and SQL and once you gain exp there move on to bigger and better things (writing windows apps in C++ and C#) to move up the food chain.
posted by jimmy0x52 at 4:58 AM on January 29, 2007 [1 favorite]

Currently the languages that are most heavily in use which are the easiest to master are C# and Java. I will disagree with zpousman, and add that Java and C# are constantly leapfrogging each other on features. Java now has generics, metadata (like C# attributes), and other advanced language features.

C# libraries are complete, and easy to learn, especially if you're working with XML and Web Services. (Working with XML in Java is a royal pain, which is counterintuitive). It is easy to google for reference documentation for both languages libraries.

C++ is also in demand but it will be more difficult to master, and would require more years of hardcore experience to be of value in a job search.

Also take a look at the development environments as well. C# has Visual Studio, which is a very powerful IDE. Java has Eclipse which is powerful, and easily extensible.
posted by jimfl at 6:22 AM on January 29, 2007

I'll nth Python. Prior to picking up Python I was doing C on Linux for embedded equipment, and that was the extent of my programming knowledge. Much of the knowledge I gained writing some simple Python apps translated over to Java, which is my focus now.

I'll also agree with molybdenum about picking up .NET and finding some a code monkey job. It's one thing to pick up a language in your spare time, but another to actually work on producing something substantial day to day.
posted by kableh at 8:04 AM on January 29, 2007

I'll buck the trend. I say spend a couple months learning Visual Basic 6 for its incredibly simple learning curve. I recommend getting a "Learn VB6 in 30 Days" book.

Then spend a couple months learning Lotus Notes. Yes, Lotus Notes. Get your Lotus Notes certification.

posted by LordSludge at 9:58 AM on January 29, 2007

One more voice for Python; first learn to program with a clean, fun language to play with.

Then, as other have pointed out, Java or C/C++ (or C# ?). I'd suggest an unconventional route in that regard: try Jython for a couple of weeks as a stepping stone from Python to Java, and do the same using pyrex to transition from Python to C.

However, at some point, you'll need to really take the plunge and learn Java and C++ on their own.

Good luck and, above all, try having fun!
posted by aroberge at 7:14 PM on January 30, 2007

« Older Good books/sites on acting/public speaking?   |   Help me find something to Ourtunes that works. Newer »
This thread is closed to new comments.