Ask HN: What makes a senior Rails dev?

14 points by blackxored ↗ HN
Hello guys, I hope you don't find this unconstructive. I know it's a question that can't get a conclusive answer, I'm not looking for any. I wonder, from the skill set point of view, what differences a senior Rails dev from a mid-level one? Thanks in advance for the comments.

11 comments

[ 0.26 ms ] story [ 32.6 ms ] thread
A recruiter in 2011 told me that a senior Rails dev is one with 6-12 months of real-world experience. If that's true, it demeans the word senior and requires another title for people who have been using it much longer. But, it was corroborated by what several companies in Chicago were looking for.
In 2011 Rails had been out for about 6 years. If we assume that the prereq for getting 6-12 mos. of real-world experience is 6-12 months of practice time, then your recruiter's definition would be more like 12-24 months' experience. On the high end, that's 1/3 of Rails' existence!

Like any other new tech, that number is bound to inflate with time.

True, it's more time than meets the eye. I would still wonder wha title a person like Yehuda Katz or Sam Stephenson should receive, since they would be so much better than other "senior" developers. Maybe the equivalent of "Google Fellow" at the company?
I'm sure that everyone will have their own list, but here's mine:

* The ability to analyze, debug, and fix problems that don't have an answer immediately discoverable via Google. This usually means the ability to dig into library source code, use debugging tools effectively, and be able to wrap your head around the "magic" rather than just treating it like an unbreachable black box.

* Comprehensive understanding the various Rails pieces and how they fit together (activesupport, activemodel, actionpack, and the sub-pieces within; the router and asset pipeline, and the Rack middleware nature of a Rails application)

* Comprehensive understanding of the hows and whys of testing, deep familiarity with at least one of the common testing frameworks (testunit, minitest, rspec), and an understanding of how to develop features and bugfixes via test-first methodology.

* Comprehensive understanding of deploying a Rails app, and the care and feeding of a production application. Multi-server scaling, zero-downtime deploys, and redundancy/failover plans are a big bonus.

* Rock-solid understanding of Ruby, particularly as it pertains to metaprogramming.

* The ability to evaluate third-party gems, both from a functionality and code perspective, and determine their appropriateness as a solution to a given problem.

* Good command of at least one major source control system. If you're using git, you should know how to use topic branches, rebase branches, perform merges, recover lost work, that sort of thing.

Basically, I'd call someone a "senior" dev if they tend to answer more questions than they have to ask. That's not to say that senior devs don't ask questions, but that they have the knowledge to answer most questions, and the experience necessary to find out the answers for themselves when they aren't immediately available.

> Basically, I'd call someone a "senior" dev if they tend to answer more questions than they have to ask.

IME "asking questions" has a bimodal distribution along the axis of how good a programmer is: juniors ask the most questions, and seniors ask a ton as well. Sr.s don't ask language/framework questions (very often), but they dig in to requirements, project scopes -- they ask "why?" a lot.

Great distinction. You expressed what I was trying to say much more eloquently.
@cheald: The best answer so far, but sorry if I still find it a little incomplete as this one: http://stackoverflow.com/questions/2569501/what-ruby-and-rai.... See, every developer should be able to read someone else's code, have a big picture of the stack he's using and sustainable knowledge of every bit of it, be familiar with philosophical issues, and ways of doing, and community practices (such as testing or BDD), handle the deployment and scalability of their own production system, and use a version control system. I don't think handling all that plus serious communication and somewhat mentoring skills would get you a senior dev. That's why I'm asking for more. Thanks.
Given how young Rails is: A senior dev in another language plus as many years of rails experience as is possible (6?).
IMHO that definition is flawed. For lots of people senior != time on something. That's what usually recruiters have to back on because they don't have any other measures. I'm asking from a programmer standpoint. I remember dhh's joke on some position in NY (NYT or Library, can't recall) position requiring 8 years of Rails experience ;)
I'm not sure what's so flawed. I've been developing for over a decade. And the more senior you get.. the more languages are simply syntax.

When I hire a senior developer, I'm hiring their senior thinking and senior analysis abilities, not their ability of having worked with one particular syntax or framework.

Senior ultimately means built, scaled, and managed a code base that you have a relationship with for more than 1-3 years.

I would guess than many Rails developers have not had a deep relationship with a large Rails codebase for many years, but may have with other languages, so it's where I was coming from.