I originally wrote this series of posts on my former blog, Usable Web Apps. As I’m retiring that blog, I’m reposting the “Novice to Ninja” series. Look for some new interviews as well!
I first met Dave Thomas of the Pragmatic Programmers when he and Mike Clark led the Rails Studio that I attended in February of last year. (For those of you who are looking to learn Rails from scratch, I can’t recommend the Rails Studio highly enough!) Dave was kind enough to give his thoughts on becoming adept in Rails:
Usable Web Apps: What three skills/technologies would you recommend that novice Rails developers focus on mastering to best improve their overall value?
Dave Thomas: 1. This may sound strange, but I think the number one skill that folks need to be effective Rails developers is the ability to program. I see far too many people who’ve never coded before coming to Rails because they hear that it will help them dash off the next Facebook. And rather than invest the time to learn Ruby, they dive in, cut-and-pasting bits of other applications that they see on line. Inevitably, this cargo culting hurts them. And, when they start grumbling that Rails sucks, it hurts Rails too.
2. I think that it’s important to get your applications out there early, and then listen to its users before adding more features. Rails is about being agile, and incremental delivery is one of the cornerstones of agility.
3. Just because Rails makes the 80% easy doesn’t mean you can forget the other 20%. Security, deployment, scaling, testing, and so on are all orthogonal to Rails, and they’re all vital skills to know.
Usable Web Apps: What are the biggest mistakes you see novice Rails developers make when trying to strengthen their skill sets?
Dave Thomas: The biggest mistake is that they don’t try to strengthen their skill sets. And, to be honest, novices shouldn’t be expected to. The Dreyfus model tells us that novices are simply concerned with achieving a result, So building a skill set just doesn’t factor in—they’re thinking tactically, not strategically. But that’s OK. What happens is that,over time, those novices start moving towards expertise, and start thinking more at the meta level. Once that happens, they start really start building skills. And the way to do that is by exposing yourself to as many different areas of the technology that you can: different tools, different techniques, different technologies, different industries. Skill comes from experience—consciously maximize the amount of experience you gain per unit time by constantly adding new strings to your bow.
Thanks, Dave!
{ 0 comments… add one now }