Hacker News new | ask | show | jobs
by phzbOx 5335 days ago
To quote the author: "For the extra effort you'll make learning CoffeeScript and its idiosyncrasies, why not put it towards really learning JavaScript?"

There are so many wrong saying in this statement.

First, understand that CoffeeScript is JavaScript - but without its idiosyncrasies. If you know JavaScript really well, learning coffeescript takes minutes. CoffeeScript embraces closures and prototype inheritence; it just makes it less cumbersome to use.

Second, who said that programming in CoffeeScript means you don't really know JavaScript? CoffeeScript let you write better code in less line. (By better I mean easier to maintain and read). Furthermore, CoffeeScript programmers tend to choose it because they enjoy coding in Javascript and want to keep using it. What is way more scary is maintaining codes of designers who use jQuery without understanding Javascript.

Third, I hate the "For the extra effort" part. It's like saying, either you learn Python or C++; you can't learn both so better spend the time learning C++. It's just totally wrong. Good programmers tend to enjoy learning new technologies and paradigms. I'd even go further by saying that learning CoffeeScript will make you a better JavaScript programmer.

3 comments

> Good programmers tend to enjoy learning new technologies and paradigms.

You've stumbled onto a pet peeve of mine. I think it's rather that people who like learning new programming languages like labeling people like them as "good".

The flip side of the coin is that there's a huge intersecting set of attention-deficit afflicted dabblers who play with a large number of technologies and master none of them. I enjoyed learning programming languages when I was 14. I'm 31 now, and now I like solving actual problems. If I need to learn a new technology to do so, so be it, but there's rarely much joy in such.

I believe you'd find the opposite true if you surveyed more mature fields: master craftsmen tend to be stubborn about the tools they use, but know them inside out.

I think software developers would be wise to be a little more flexible. The field is new enough that ideas change all the time. The worst projects I've worked on we're stilted by "we'll bring in a new tech if we need it (but we can always work around needing it)".

Conversely, the second worst projects I've worked on suffer from ADD: "Look, a shiney, new tech. We must embrace it!"

My philosophy is to continually learn new stuff for its own sake (I've focused on languages in the past, but I think it's time to switch to algorithms). I may never use something I've learned, but my tool chest is much more broad (and that Erlang tinkering is coming in handy now!).

I don't think I'm a better developer that a highly-focused compiler writer that knows YACC inside and out. We have different skills for different needs. But I still think the compiler writer would benefit from broadened education.

When I say new technologies, I don't mean "new programming languages". Learning new libraries to make you better at your craft is part of "learning new technologies". Whatever the languages or the tools you use, you can always learn more and be better at them.

In my career, I've met all kind of programmers, and I'm sure you also have. Some are really passionate about their crafts while others do the minimum, go home and don't think about software until 9am the next morning. You are right that I can't say that good programmers enjoy learning new technologies. But I can assure you that the worst programmers I've worked with were never willing to learn more.

And, comparing software engineering with more mature fields is somewhat difficult as their tools do not change as fast as ours. Yes, craftman tend to know their tools inside-out; but they're not limited to only one. They're usually good with all of them and pick the right one for each situation.

> First, understand that CoffeeScript is JavaScript - but without its idiosyncrasies.

...and a different syntax. That's my main objection to CS. I'm already working with 5 different syntaxes: Python, Javascript, Erlang, HTML, and CSS. Adding yet another one isn't appealing.

Perhaps if you're writing an app on top of the Node.js stack, you can use CoffeeScript everywhere. What I would've liked to see is CoffeeScript with a syntax as close to Javascript's as possible.

writing trivial transpilers is where it's at