What programming language should I learn?
Myles G
2009-02-28 11:24:06 UTC
For the last 10 years, I have worked as a graphic designer or web designer. Beyond HTML and CSS I haven't really taken the time to learn any development/programming languages. I have always been on the typography, layout, and aesthetic side.

My question is, out of the numerous languages out there to be learned, which should I focus my training? PHP, Ruby on Rails, SQL, Perl, Javascript, or some language that I don't know about?

Which would be the most valuable to an employer in this day and age? I don't want to start learning a language that's on it's way out.

Four answers:
2009-02-28 11:34:22 UTC
Ya know? I thought that the C+es were going out but they are definitely NOT! Linux uses them, amongst others. Linux could easily become the wave of the future so look to Linux in addition to what other OSes/Programs use.

The list that you have already compiled is a good start. Why limit yourself to just one? The more versatile you are, the more valuable you will be to an employer. In today's market employers are looking for those who can wear several to many different hats sometimes at the same time.

I hope this helps. Good Luck!

2009-02-28 12:30:07 UTC
1) Understand that there are two types of people, right=brained (artistic) and left-brained (logical). You would appear to be right-brained, so don't expect to become a great programmer, which requires being left-brained. Enough to understand when a programmer tells you why what you want can't be done your way, but not enough to come up with a way to do it. (That's why websites are designed by teams - a great programmer can't draw a straight line, and a great designer can't "feel" logic.)

2) Programming languages are tools. Would you suggest that someone with absolutely no knowledge of design learn Photoshop first? Or art, balance, color, etc? Photoshop is great tool, but if you don't know your objective, or what works with what, it's a tool in which you can't do much. Programming is the same thing - knowing what a pointer is doesn't tell you how to use it to construct a linked list - learning programming does; then you realize that you use pointers to do it.

Learn programming. (HTML and CSS are content and look, not programming.) Start with It's the best programming book I've found in 30 years of teaching programming - it teaches programming in English, something you should be completely comfortable in by now.

Once you know programming, a language like PHP is almost trivial to begin with - you can start writing working code with just the PHP.chm file (to look up the exact syntax of what you need - you'll know what you need to do what you want, because you'll understand programming.) It's like looking up which brush to use - if you don't know design, what's a brush and why do you want to use one? If you do, it's kind of evident, and you worry about the look of the thing you're working on, not about what a brush is. Learning what a brush is (or why you should use a doubly-linked list for this object) while you're working makes it three times as difficult.

Ruby might be the next greatest language, or it might never go anywhere - no one knows yet. BTW, Ruby on Rails is a programming methodology for the language known as Ruby. I wouldn't worry about it unless you were looking for a job in a Ruby house, and there aren't too many of them.

Perl is great - if you're a masochist - PHP is Perl on steroids. It does the scut work for you. (That causes a problem, but the work-around is designed in.)

Javascript is client-side - whichever server-side language you use, you'll need Javascript for client-side programming. Oh - you should definitely learn the difference between server-side and client-side, and probably learn the technique known as AJAX, to make it easier for the client and server to communicate. (I use it even in pages where it's not really needed - it's easier than submitting a form to the server.)

SQL is mandatory if you're working with databases - that's the language you use to talk to them.

Focus your training on programming, and be aware that you'll need to learn many languages now, and keep learning new ones in the future. 6502 assembly is kind of dead these days, but I had to know it back in the 70s. Even Z-80 assembly - the "dot net" of the 70s - is dead now. So is CP/M, SBASIC, GWBASIC, FORTH ... but they were all part of a good programmer's toolbox back then. If you live long enough, you'll see a time when good, but young, programmers, think "windows" are things used to see through walls, and have no idea that it was an operating system back now. All the languages you hear about today will be dead and buried (not too many people ever programmed in JOVIAL, SPITBOL or ATLAS - or even remember the names.)

Art is always art. Programming evolves as rapidly as the influenza virus.
2016-05-31 04:28:26 UTC
He might be trying to say that you need to learn programming techniques and logic, rather than languages. This really is important, too. For instance, being able to hold a conversation in 15 human languages doesn't mean you can write an outstanding work of literature in any of them; and a really well written program is much like a really well written book, in that it needs to have many parts that fit together in non-obvious but effective ways.
2009-02-28 11:48:34 UTC
Linux will never become the "wave of the future". HP and Dell tried to offer Linux computers with Ubuntu (great OS btw), and no one bit. That's the nature of it: Linux is a geek and business tool, not an end-user tool.

That being said, if you want a serious web development job that uses some web scripting as well, you should definitely know Javascript, Java, C# or VB.NET and PHP. You can thank me later. C++ is completely useless if you focus on web development, but it is great to know because it enhances your programming ability.

This content was originally posted on Y! Answers, a Q&A website that shut down in 2021.