4 ms·
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 disco
by cheald 14y ago
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.
- Domenic_S 14y ago> 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.
- cheald 14y agoGreat distinction. You expressed what I was trying to say much more eloquently.
- blackxored 14y ago@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-rails-developers-ought-to-know 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.