Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Two years? I think you can learn everything you ever needed to know about a language in a much shorter time period than that.


Ruby is also a bit of a contrived example. Ruby looks a lot like you could come to it from Java and know most of it, but metaprogramming actually takes a long time and a lot of work to really figure out.

Similarly, Ruby has many different little variants -- Rails, Rake, various sorts of DSLs -- and that adds significantly to the time to learn it.

Really learning Ruby is learning several similar languages, which makes two years a much harder number to achieve.

C++ could easily have been like that if it had different constellations of features that were routinely used in different ways by the same programmers. Imagine if there were a whole "C++ tools" subculture that used templates extensively but differently, along with one or two other nontrivial features (say, multiple inheritance and exceptions) used in specific ways with specific non-compiler-mandated rules.

You'd have to learn, in effect, about another programming language's worth of material to program fluently within that subculture.

Ruby has several of those.


If you are already an expert programmer who knows a few similar languages, then sure.

If you are already an expert programmer who knows different languages, then two years may be enough, or it may not.

If you are not already an expert programmer, then two years is unlikely to be enough. Peter Norvig suggests it may take ten years to become an expert: http://norvig.com/21-days.html

Example: I have been programming for a little over ten years (though not all of that time was professional programming); have a degree in software engineering; have worked in telecoms, web development and recently in embedded systems; have used C, C++, Java and Python professionally; I am a self-described language enthusiast who likes to tinker with, try out and apply a variety of languages (factor, scheme, clojure, prolog, ocaml, haskell and a few more to a lesser extent). BUT I still learn new things about the languages I use. I still feel I have a lot more to learn. I first started using Python in 2001 or 2002 and I still find myself learning useful new things.

So, sure, you can learn enough to effectively use a language in a lot less than two years, but I think it will take a lot lot longer to learn "everything you ever needed to know about a language".


It depends to whom you're asking this question. Some people have high standard than others.

I wouldn't bet a consulting project performing integration of various systems using Ruby if the programmers on my team average of 2 years "side-project" Ruby/Rails.

I still wouldn't bet on Ruby developers with 2 years of experience on certain type of web-apps either unless I've seen their code, code style, discipline, judgement, etc.

I would trust a Ruby developer who got burned by some of the Ruby tricks though.

Case and point (or anecdotes):

I recently brought in a veteran Java, 2 year-ish Ruby/Rails, and 1 year-ish JS (thanks to Node.js and Crockford "The Good Parts") programmer to help us working on some of the JavaScript codebase. Java knowledge is intermediate despite the number of years(I consider deep JVM and standard JDK knowledge around hard-to-use packages such as NIO, Thread, Networking as expert, other than that, just intermediate). Pragmatic guy. Understand OOP and its gotchas.

I made an observation of her work in Ruby and JS. On the JS side, she wrote much more code than needed and my gut feeling tells me that she does this to increase her experience using JS. Kinda using it as a playground.

On the Ruby side, certain bad OO practice tends to be a little bit more accepted by her. Where as she would be critical when it comes to bad OO practice in Java.

Hence this is why I would prefer to observe developer's attitude more as oppose to the experience level. Because sometime 1-2 years are considered as "Honeymoon" period where everything looks fine and dandy. As soon as the honeymoon is over and your significant others start to show its true colour, then you're back down to the earth again.


Totally agree. For example, if a web dev wants to try a new language/framework, he or she can be competent in a few weeks and well-versed in 3-6 months. No?




Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: