> They don’t teach rails at uni. So straight off the bat it eliminates that large segment of people inspired by the dot-com bubble to get IT degrees to earn good bucks. Java and .NET developers are a dime a dozen. Also the barrier to entry with learning rails is a little tricky. PHP by comparison is fairly easy to get up and running. Some view this in the negative, or as arrogant elitism. I tend to think the high barrier to entry is innocuous and unintentionally weeds out those who arn’t committed to their craft.
Is there not a single rails developer who isn't totally full of themselves? It's a programming language. It's not magic, and rails doesn't mean you're a good programmer. I'm more and more frustrated every time I read stuff like this. When I was learning Rails I was berated with tutorials that made statements like "Rails is a whole new way of thinking" or "Rails means you don't have to work with cruft like braces!!". It's like being the apple fan-boy for a programming language. "Oh it's amazing and everything else means you're not committed to the craft".
I don't hate Ruby or the Rails framework, but I do hate this attitude that I see proliferated through the vast majority of people I speak to who use Rails.
I live on the other side of the hardware-software divide (I'm an ASIC guy), so I don't really know in-depth about Ruby or Rails. My impression, though, is that Ruby is a great, expressive language, while Rails is essentially a DSL on top of it that lets you very quickly build web apps without actually dealing with a lot of Ruby. That, in fact, many Rails developers tend to have a bit of a reputation of not being good programmers because many don't know the underlying language well. Is there some truth to that, or have I come away with the wrong impression?
Most entertaining quote: "This is exactly what makes Rails a ghetto. A bunch of half-trained former PHP morons who never bother to sit down and really learn the computer science they were too good to study in college."
It's hard to make accurate, general statements about a group. It's also hard to tell good programmers from bad programmers. So it's very hard to say whether Rails programmers in general are good or bad.
I can tell you, however, that it's quite common for Rails programmers to not know much about Ruby except for the parts used by Rails. In the U.S., Ruby was popularized by Rails, and very few programmers learned the language separate from Rails. I'm unusual in that I picked up Ruby first (while visiting Japan) and learned Rails much later.
Rails is much more than a DSL - I would call it a framework, which includes several DSLs as sub-components - but for a pretty broad range of the complexity of your web application, you spend more time and code dealing with Rails library functions and DSLs than with 'pure' Ruby. In most cases, that's the point - Rails is useful precisely because it gives you library functions, DSLs, and middleware components that deal with common web app issues. Rails is a good framework precisely because you can use the framework instead of building things from scratch in pure Ruby.
Because of those factors, many Rails programmers don't know the underlying language of Ruby or understand it very well, and I think it's accurate to say that a common mistake made by Rails programmers is to misapply Rails-style conventions in other projects.
Rails programmers do have a reputation, in some places, of not being good programmers. (Whether the reputation is entirely accurate is another issue.) I think the most common specific complaint I've heard is that Rails devs don't know SQL because ActiveRecord does it for them.
Yes I find it odd that someone would limit their own description not just to a single programming language, but a language-framework combination. I much prefer to employ handymen who know how to use both a hammer and a screwdriver, if not all the tools they need.
I guess what I was really getting at is the folks who know Rails, but not Ruby. If you don't know the language underlying your own framework, it seems unlikely that you'll know much else, language-wise (like C, for instance). I'd be loathe to call someone who doesn't really know any programming language a programmer at all.
It almost seems like the arrogance alluded to by many posters in this thread comes from using a framework that is itself perhaps a work of genius, as if that somehow implies that merely using it is genius, too.
The other thing that surprised me in that post was "the barrier to entry with learning rails is a little tricky". In the context of all the flak that the "Java schools" (which seems to be all of them, now) get for not weeding out weak programmers, I would have guessed that learning Rails would be even easier. Comparison to PHP doesn't seem like a very good yardstick for aptitude.
I think there are two types of claims typically made in the "people who use X are better/worse programmers than people who don't" argument.
One is a claim based on difficulty. X is really hard, so if you can use it successfully, you must be an excellent programmer.
Another is a claim based on taste. You must be very sophisticated and knowledgeable in order to see why X is good, so people who choose X are excellent programmers, because they know the difference between good and bad technologies.
I tend to feel that you shouldn't take credit for having good taste in frameworks (or text editors, or etc.) until you have worked with more than one. Otherwise, even if you pick the 'best' one right off the bat, it was mostly luck.
I am sincerely wishing that there were multiple upvotes to dish out. My little brother, at 16 and new to hacking, turns out Rails apps like nothing. It's part of the charm of a framework that is so easy to get started with. What's wrong with embracing that instead of trying to wear some sort of 'I do rails, thus I am the 1%'-badge?
I mean, the guy has a huge banner with a picture of himself on every page of his website. He seems to think that developers who are into music creation are unique to Rails (it's been my experience that there's a high correlation between programming and enjoying creating and playing music). He seems to be the stereotypical Rails developer - arrogant, full of himself, convinced he's one of the normal, cool guys who programs and that people who use other technologies, like .Net or Java (who are a dime a dozen) are just dorks with no style.
I'm sure there are plenty of Rails developers who are good people, they're just eclipsed by guys like this shouting about how awesome everything they touch is.
I had never heard that term before you introduced me to it a couple of weeks ago, but that was the first word that popped into my mind when I opened the article.
Precisely. The good people tend to be a silent constituency because they have better things to do than carry the "humble Rails developers exist" banner through the average discussion thread.
HN seems to link to a lot of these blogs where the author breathlessly shares some sophomoric musing demonstrating more arrogance than insight. A few people with nothing better to do post critical comments while dozens of others cheer "right on, I'm liquidating my savings to do my <adjective> start-up too, stay strong brother". The rest of us have just finished our coffee and have work to do today.
I don't think the guy is that pretentious. He's talking about the Rails guys he works with. He's basically saying that he got into the wrong program realizing later that he was a designer at heart. So, of course he's going to use cliches about a field he knows only from people at work. I don't think his intentions were to be arrogant at all and how many people have a picture of themselves on their blog.eh... almost everybody!
I agree with you, we went through the same thing at work. Developers may be dime a doze, but good developers are difficult to find.
On the flip side of this, there's a good reason .Net developers are dime a dozen - .Net jobs are dime a dozen. It gives us variety and the ability to find another job quickly.
Also, I've found many times that the reason employers use technology like .Net and Java is that they have a bigger pool of candidates to pick from.
>I don't hate Ruby or the Rails framework, but I do hate this attitude that I see proliferated through the vast majority of people I speak to who use Rails.
I'm sorry you feel this way, and to be honest, it was exactly what kept me away from getting on rails when I first heard about it in 2005. The attitude was a massive turnoff and it took me 2 years to get over it and finally start using Rails (I discovered how many of my problems it solved).
I'm a Ruby/Rails dev who's done ASP, ASP.NET, PHP, Coldfusion, Perl with C++, Assembly and Java in College, and my experience is that ... across the board with programming languages or frameworks, the brightest guys are also usually the most humble.
If a person exudes a superior OR condescending attitude about a particular framework or language, especially if that is the only one they use, I generally just ignore them. I think you should too.
I find (and this is a massive overgeneralization, so beware) that people like this aren't very flexible thinkers, prone to dogma and group think. By filtering this way, you can actually zero in on the people that have something valuable to add to your life as a dev.
Agreed. More incorrect: Java developers who really know Java well are most definitely not a dime a dozen.
It's one thing to create a HelloWorldClass in Java. But I hear that understanding typing or concurrency in Java is much harder than learning a DSL or web framework like Rails. That's the type of stuff they gloss over at uni, from what other devs (I don't know Java, and have a basic understanding of {in/co/contra}variance) tell me.
I've seen this a lot in 2012 with the proliferation of Code Year and "learning to code" resolutions, but let me state: printing "Hello, world" to stdout doesn't mean you've learned a language.
> Is there not a single rails developer who isn't totally full of themselves?
Can you give an example? I've only been doing ruby for a while but so far all the ruby developers I've met are hard-working, smart programmers who give a disproportionate amount of the work they do away for free via open sourcing their code.
I think that is fair statement, assuming an older article. Rails was revolutionary in the same way the iPhone was revolutionary. Neither contained anything groundbreaking inside, but the whole package demonstrated a better way to utilize existing technologies. It was a new way of thinking, and in both cases, many vendors followed in that thinking.
"If I had only a few words to generalise them, it would be curious, determined, intelligent, and collaborators. They also tend to be musically inclined; As in, a lot of them play instruments."
I don't know for the rest, but yes I do play piano :-)
Language|Framework X vs Language|Framework Y... I'm getting tired of this.
Its the concepts and fundamentals that are important.
I bet you that most javascript and ruby developers dont know what an AST is and how a regex can be transformed into a state machine. Not even to mention how lambda calculus influenced lots of languages.
Anyway. Languages come and go. Frameworks come and go.
However the problems associated with computer science, like distributed computing, scaling, mobility. They will stay.
The best software engineers are the ones that understand the basics. And most importantly: know how to use them in practice.
A good software engineer will choose a framework language depending on the domain / problem that needs to be solved.
Scaling, mobility, and distributed computing are all problems for the electrical engineers--theoretical computer scientists likely already have the answers.
The bridge between theory and practice is where most of us find work.
EDIT: changed "true computer scientists" to "theoretical computer scientists" and hedged bets slightly.
How many of those issues go away with infinite storage, atomic storage operations of arbitrary length, instantaneous computation and communication, completely deterministic executions of operations, completely reliable machines, etc.?
My point was more that the parent posts examples were problems that really are more engineering than theoretical in nature.
Probably sometime between when Erlang was developed and the first MapReduce paper was written. There isn't "One True Way", but there are plenty of solutions.
We don't need to re-invent MapReduce or message passing. There are ready made solutions/frameworks like Hadoop and Storm that are fairly easy to implement. There are also a number of databases that are designed for distributed computing. You don't need to be Google to have a fault-tolerant distributed computing setup. It's really a matter of choosing the appropriate technologies, rather than re-inventing the wheel. Because of that, I'd consider it a "solved" problem, even if a particular implementation might need some thought to match up with appropriate technologies. It's not necessarily trivial, but it's probably as "solved" as it needs to be.
Interesting that you effectively use an engineer's definition of "solved" rather than that of a theoretician.
Message passing is effectively the assembly language of distributed computing: very low level. Mapreduce and the various NoSQL databases are effectively the next level up, but we still have some time to be able to have a proper theory for designing and implementing effective scalable distributed systems.
In short, we have many bits and pieces that can be brought together with a bit of luck to be able to attain the scale that we are currently seem to be happy with. So I can accept that the engineering definition of solved is there. But from a computer science point of view, we certainly are far from having a satisfactory theory. So we definitely do not have the answers.
It's anecdotal evidence at best. Are rails programmers any more musically inclined than other types? Are programmers as a group more musically inclined than the average person? I don't know, but his statement and you playing an instrument don't mean much in terms of evidence one way or another.
ie- Can't be productive in another language... Finds Rails, thinks he/she is a genius. Anyone can consider himself or herself a professional artist, but that doesn’t make it so.
I think I have seen this argument before, that X is somehow obscure, in the sense that all those lame workaday cororate drones don't use it, so it must follow that all the most awesome people gravitate towards it. I'm not sure I buy it. Sometimes stuff is obscure because it sucks. It would also follow that using the most obscure language possible would make you the most awesome. Sort of like inventing a sport in order to ensure you are the best in the world.I'm also ignoring the fact that there seem to be a million rails based sites out there, they were not all done by an elite cadre of the best of the best of the best were they?
Even obscure languages that suck may well have a more talented "average programmer" than those which don't. The best programmers are those who learn new languages because they want to, so a language that isn't useful for passing a degree or getting a job will always have a higher average talent level than java et al. Even your reducto ad absurdum doesn't really work - a programmer who invented a language themselves is probably better than the average java/.net programmer, even if that language itself is terrible.
careful, some of those dime-a-dozen java devs are solving way harder problems than the hipsters and their rails CMSs. strong rails hipsters grow up to be VP of some ycombinator webapp. strong enterprise devs grow up to become VP at google.
> They don’t teach rails at uni. So straight off the bat it eliminates that large segment of people inspired by the dot-com bubble to get IT degrees to earn good bucks. Java and .NET developers are a dime a dozen.
Yep, just because you know a certain framework (not even a language, a freaking framework) means that you can pass judgement on how valuable every Java and .NET developer is. This guy obviously doesn't have a clue about what he's talking about. They don't teach any other framework at most universities. It's assumed you can learn that stuff on your own. Just because you went and learned Rails doesn't make you automatically a programming superstar.
I learned to program with Ruby, and used Ruby+Rails exclusively for 2 years until I learned Java, C++, C#, and Python.
I thought I was just a Ruby guy, but once I was exposed to other languages I realized that once you know how to program, the language you program in doesn't matter.
Sure some languages are better at specific tasks, but they're all just tools; if you can use one you can probably pick up another one with very little difficulty (this also assumes were talking about object oriented languages here--transition from OO to a functional language is a bit different).
Because Wordpress is an awesome blogging platform?
I'm also a "so-proud rails-guy", and only recently switched from Wordpress to static site generated with Jekyll.
Never underestimate the importance of your ability to self motivate and learn. Even the most exciting projects contain mind numbing tasks.
This is the money quote for me, if you are programming because you love programming, you find a level of self motivation in that joy. Have you ever heard/seen a programmer excitedly running through the source code base and changing all the calls to a particular subsystem to use a new syntax/set of parameters because how 'cool it was going to be' when this was in place? Here they are doing tons of 'crap' work because they are excited about the system will look in the end. Whereas people who really don't love programming won't even start on changing a routine if it means they are going to go back and change everything that calls it, because of all the 'drudge' work.
That difference in attitude has a huge impact on their productivity.
54 comments
[ 2.8 ms ] story [ 129 ms ] threadIs there not a single rails developer who isn't totally full of themselves? It's a programming language. It's not magic, and rails doesn't mean you're a good programmer. I'm more and more frustrated every time I read stuff like this. When I was learning Rails I was berated with tutorials that made statements like "Rails is a whole new way of thinking" or "Rails means you don't have to work with cruft like braces!!". It's like being the apple fan-boy for a programming language. "Oh it's amazing and everything else means you're not committed to the craft".
I don't hate Ruby or the Rails framework, but I do hate this attitude that I see proliferated through the vast majority of people I speak to who use Rails.
I live on the other side of the hardware-software divide (I'm an ASIC guy), so I don't really know in-depth about Ruby or Rails. My impression, though, is that Ruby is a great, expressive language, while Rails is essentially a DSL on top of it that lets you very quickly build web apps without actually dealing with a lot of Ruby. That, in fact, many Rails developers tend to have a bit of a reputation of not being good programmers because many don't know the underlying language well. Is there some truth to that, or have I come away with the wrong impression?
I can tell you, however, that it's quite common for Rails programmers to not know much about Ruby except for the parts used by Rails. In the U.S., Ruby was popularized by Rails, and very few programmers learned the language separate from Rails. I'm unusual in that I picked up Ruby first (while visiting Japan) and learned Rails much later.
Rails is much more than a DSL - I would call it a framework, which includes several DSLs as sub-components - but for a pretty broad range of the complexity of your web application, you spend more time and code dealing with Rails library functions and DSLs than with 'pure' Ruby. In most cases, that's the point - Rails is useful precisely because it gives you library functions, DSLs, and middleware components that deal with common web app issues. Rails is a good framework precisely because you can use the framework instead of building things from scratch in pure Ruby.
Because of those factors, many Rails programmers don't know the underlying language of Ruby or understand it very well, and I think it's accurate to say that a common mistake made by Rails programmers is to misapply Rails-style conventions in other projects.
Rails programmers do have a reputation, in some places, of not being good programmers. (Whether the reputation is entirely accurate is another issue.) I think the most common specific complaint I've heard is that Rails devs don't know SQL because ActiveRecord does it for them.
I guess what I was really getting at is the folks who know Rails, but not Ruby. If you don't know the language underlying your own framework, it seems unlikely that you'll know much else, language-wise (like C, for instance). I'd be loathe to call someone who doesn't really know any programming language a programmer at all.
It almost seems like the arrogance alluded to by many posters in this thread comes from using a framework that is itself perhaps a work of genius, as if that somehow implies that merely using it is genius, too.
The other thing that surprised me in that post was "the barrier to entry with learning rails is a little tricky". In the context of all the flak that the "Java schools" (which seems to be all of them, now) get for not weeding out weak programmers, I would have guessed that learning Rails would be even easier. Comparison to PHP doesn't seem like a very good yardstick for aptitude.
One is a claim based on difficulty. X is really hard, so if you can use it successfully, you must be an excellent programmer.
Another is a claim based on taste. You must be very sophisticated and knowledgeable in order to see why X is good, so people who choose X are excellent programmers, because they know the difference between good and bad technologies.
I tend to feel that you shouldn't take credit for having good taste in frameworks (or text editors, or etc.) until you have worked with more than one. Otherwise, even if you pick the 'best' one right off the bat, it was mostly luck.
I'm sure there are plenty of Rails developers who are good people, they're just eclipsed by guys like this shouting about how awesome everything they touch is.
http://www.quora.com/Brogramming/How-does-a-programmer-becom...
http://www.youtube.com/watch?feature=player_embedded&v=Q...
HN seems to link to a lot of these blogs where the author breathlessly shares some sophomoric musing demonstrating more arrogance than insight. A few people with nothing better to do post critical comments while dozens of others cheer "right on, I'm liquidating my savings to do my <adjective> start-up too, stay strong brother". The rest of us have just finished our coffee and have work to do today.
...and post scathing comments on HN.
If this were true my current employer wouldn't have spent the last six months trying to find a good senior-level ASP.NET developer.
On the flip side of this, there's a good reason .Net developers are dime a dozen - .Net jobs are dime a dozen. It gives us variety and the ability to find another job quickly.
Also, I've found many times that the reason employers use technology like .Net and Java is that they have a bigger pool of candidates to pick from.
I'm sorry you feel this way, and to be honest, it was exactly what kept me away from getting on rails when I first heard about it in 2005. The attitude was a massive turnoff and it took me 2 years to get over it and finally start using Rails (I discovered how many of my problems it solved).
I'm a Ruby/Rails dev who's done ASP, ASP.NET, PHP, Coldfusion, Perl with C++, Assembly and Java in College, and my experience is that ... across the board with programming languages or frameworks, the brightest guys are also usually the most humble.
If a person exudes a superior OR condescending attitude about a particular framework or language, especially if that is the only one they use, I generally just ignore them. I think you should too.
I find (and this is a massive overgeneralization, so beware) that people like this aren't very flexible thinkers, prone to dogma and group think. By filtering this way, you can actually zero in on the people that have something valuable to add to your life as a dev.
Just my 2c.
It's one thing to create a HelloWorldClass in Java. But I hear that understanding typing or concurrency in Java is much harder than learning a DSL or web framework like Rails. That's the type of stuff they gloss over at uni, from what other devs (I don't know Java, and have a basic understanding of {in/co/contra}variance) tell me.
I've seen this a lot in 2012 with the proliferation of Code Year and "learning to code" resolutions, but let me state: printing "Hello, world" to stdout doesn't mean you've learned a language.
Can you give an example? I've only been doing ruby for a while but so far all the ruby developers I've met are hard-working, smart programmers who give a disproportionate amount of the work they do away for free via open sourcing their code.
I think that is fair statement, assuming an older article. Rails was revolutionary in the same way the iPhone was revolutionary. Neither contained anything groundbreaking inside, but the whole package demonstrated a better way to utilize existing technologies. It was a new way of thinking, and in both cases, many vendors followed in that thinking.
Or maybe I'm just full of myself...
If bleeding-edge technology X proves to be widely useful, you have a brief window of opportunity where simply knowing X gives you an advantage.
Then you slowly become two for a dollar, three for a quarter.
I don't know for the rest, but yes I do play piano :-)
Its the concepts and fundamentals that are important. I bet you that most javascript and ruby developers dont know what an AST is and how a regex can be transformed into a state machine. Not even to mention how lambda calculus influenced lots of languages.
Anyway. Languages come and go. Frameworks come and go. However the problems associated with computer science, like distributed computing, scaling, mobility. They will stay.
The best software engineers are the ones that understand the basics. And most importantly: know how to use them in practice.
A good software engineer will choose a framework language depending on the domain / problem that needs to be solved.
Not because they like it.
Scaling, mobility, and distributed computing are all problems for the electrical engineers--theoretical computer scientists likely already have the answers.
The bridge between theory and practice is where most of us find work.
EDIT: changed "true computer scientists" to "theoretical computer scientists" and hedged bets slightly.
And the answer is .. 42?
No, really. When did the distributed computing issues become "solved" in computer science?
My point was more that the parent posts examples were problems that really are more engineering than theoretical in nature.
We don't need to re-invent MapReduce or message passing. There are ready made solutions/frameworks like Hadoop and Storm that are fairly easy to implement. There are also a number of databases that are designed for distributed computing. You don't need to be Google to have a fault-tolerant distributed computing setup. It's really a matter of choosing the appropriate technologies, rather than re-inventing the wheel. Because of that, I'd consider it a "solved" problem, even if a particular implementation might need some thought to match up with appropriate technologies. It's not necessarily trivial, but it's probably as "solved" as it needs to be.
Message passing is effectively the assembly language of distributed computing: very low level. Mapreduce and the various NoSQL databases are effectively the next level up, but we still have some time to be able to have a proper theory for designing and implementing effective scalable distributed systems.
In short, we have many bits and pieces that can be brought together with a bit of luck to be able to attain the scale that we are currently seem to be happy with. So I can accept that the engineering definition of solved is there. But from a computer science point of view, we certainly are far from having a satisfactory theory. So we definitely do not have the answers.
Fascinating -- I play three instruments. I never noticed a correlation before.
ie- Can't be productive in another language... Finds Rails, thinks he/she is a genius. Anyone can consider himself or herself a professional artist, but that doesn’t make it so.
I'm trying to fight being mean, but Ffff!!
Yep, just because you know a certain framework (not even a language, a freaking framework) means that you can pass judgement on how valuable every Java and .NET developer is. This guy obviously doesn't have a clue about what he's talking about. They don't teach any other framework at most universities. It's assumed you can learn that stuff on your own. Just because you went and learned Rails doesn't make you automatically a programming superstar.
I thought I was just a Ruby guy, but once I was exposed to other languages I realized that once you know how to program, the language you program in doesn't matter.
Sure some languages are better at specific tasks, but they're all just tools; if you can use one you can probably pick up another one with very little difficulty (this also assumes were talking about object oriented languages here--transition from OO to a functional language is a bit different).
This is the money quote for me, if you are programming because you love programming, you find a level of self motivation in that joy. Have you ever heard/seen a programmer excitedly running through the source code base and changing all the calls to a particular subsystem to use a new syntax/set of parameters because how 'cool it was going to be' when this was in place? Here they are doing tons of 'crap' work because they are excited about the system will look in the end. Whereas people who really don't love programming won't even start on changing a routine if it means they are going to go back and change everything that calls it, because of all the 'drudge' work.
That difference in attitude has a huge impact on their productivity.