What languages do you already know? Every good programmer must know at least on scripting language. Ruby is a good choice. Ruby: (I'm still noob) + nice language. You can be productive without being proficient! However for very large projects you may prefer languages which have static typing features (which catch more errors at compile time). I've read one thread telling that Ruby is bad for large projects because many things can be done in different ways. If you have different programmers working on projects you have to think about them all. However it is at least as good as Python(?), Perl(?) and much better than PHP. So learning Ruby will never be a waste of time. What alternatives could you learn? PHP: + you can get many code + many (all?) hosting services provide PHP support + it will never die because it's used often + easy to get started with - Basically they clone Java .. But fail because PHP is slower and it lacks behind. - you never know when syntax or similar errors occur.. So live with this risk. - no lambda like functions - projects such as Phalanger or roadsend are not widely used. So I think the language is kind of stalled. It's kept alive because many projects are using it. But if you start learning a new language don't choose PHP. - bash,zsh,.. (shell scripting) You can get many tasks done with Ruby. Unless you want to use interactive functions in Shell I'd even recommend ruby. - Python I don't know the language that well. But I think that Ruby can express some things nicer. However they have some cool libraries such as SQL alchemy. (Don't know about Ruby ORM mappers) - Scala (based on JVM) If you already know Java I'd say you should at least know about it. I don't know it very well. Nice: you can reuse Java libraries. - Haskell It's cool. However it's not that widely used. Many libraries are still missing. Community is small but growing. It's interesting how much the small community has done. However it takes some time until packages are updated to run with latest GHC. However you will never have decent completion. So writing using foreign libraries always mean you have to dive into the type and look functions up yourself. - : no stack traces (there is monad-error library) - : big binaries (?). So don't write simple scripts in it.. +/-: it's lazy. This can be nice and it can be hard to find bugs. Eg if you use contents <- readFile f writeFile f $ map (\_ -> 'x') contents you should think this does what you expect: read a file, change each character to 'x' and write the file into the same location.. Now Haskell is lazy. It opens the file but doesn't read it. The second line truncates it so nothing is left to be read.. When ignoring this kind of issue it's a very powerful language. If your application compiles it almost always work. HaXe: Small community. But they get done a lot. HaXe targets C/C++, Neko, PHP, JavaScript, ActionScript (Flash). They are working on IPhone support etc as well (AFAIK). It has a strong type system. However because it's not use by very much users you may have to write some libraries yourself. However you can reuse them on any platform then. Java: + great IDE's + many libraries (for everything you can think of?) - Some things are hard to learn, much xml. compared to Ruby you can't just write list.map {|v| conevrt v }. You end up writing for loops over and over again. But that's why other languages on top of JVM have been invented. F#,C# .. The way to go on Windows today (?) C: If you want to learn about segmentation faults and what a pointer is or if you want to do Linux kernel development you have no choice. You have to learn this language. Erlang: Many concurrency frameworks? Well suited to get 99% uptime (At least they claim it..) don't know much about it. Lisp: I don't know it very well. There is some movement as well. They have webframeworks and there are dialects running on JVM as well which indicates that the community (or parts of it) are moving as well. http://clojure.org/.list Be aware that a new language is being invented at least once a month. So it depends on what you're looking for. I'd say you should know basics of C (so that you know what a pointer is ..) Java (because you'll learn about IDEs. ) Haskell (to see what can be done if you study the language for over 2 years.. hehe) PHP (kidding. PHP is only good for web development. But then I'd rather choose Ruby) In any case it may be faster to hire someone knowing the tool of choice for a given task then learning the language yourself. So in the end if you know many people knowing Ruby well. Go for it. It will help you a lot if you can just ask your neighbor occasionally when you're stuck. If you want to solve a particular problem do some research. If a solution exists take that (no matter which language it was written in). I hope this helps you a little bit. Marc Weber