Programming is a skill and just like any skill, to get better at it, one needs to practice, practice and practice!
Easier said than done! One might spend a lot of time coding, but not necessarily spend their time the right way. That leads to a plateau in the career path. After year two or year three, there’s an overwhelming feeling of “What next?”.
This blog hopes to fill in that gap! Basecamp has written a wonderful entry in their Employee Handbook titled, “Titles for Programmers” which documents the expected journey of a developer. Let’s expand the scope just a little bit to see what the essential skills for a Senior Rails Developer exactly are.
Command Over The Framework
The learning curve for Rails is not steep – a lot of things are auto-generated and are deemed to be part of the Rails Magic ✨. However, the ability to dive deep and understand the nuances of the framework will set one apart as a Senior Rails developer.
Here’s a non-exhaustive list of Rails modules to dive deep into,
- How Rack and Warden build the foundation
- In-depth knowledge of ActiveRecord and Arel
- Going beyond ActionDispatch security measures
- Proper usage of Debuggers and Loggers
- Intricacies of ActiveSupport Core Extensions
The Ruby in Ruby On Rails
Though it is very much possible to pick up Rails without Ruby, in-depth knowledge of Ruby will serve as an advantage. A good grasp of concepts like metaprogramming, interpreters, garbage collection, exception handling will prove useful when debugging critical issues.
In the course of a senior developer, one will also have to build custom gems or design architectures for code maintainability. These skillsets will prove useful when writing production-level code that is easy to understand and expand.
A senior developer will also have to make architectural decisions, sufficient knowledge on web, app, cache and search servers are a must. Identifying areas of improvement and choosing the right product for the right job is a sought-after skill set.
People don’t work in silos and, neither does code. Once the code is written, how does it get used? A senior developer must be able to navigate areas of DevOps adeptly.
One must be able to build integration and deployment pipelines that not only push code but can check for errors (either functional or performant). The responsibility of building a cohesive ecosystem for the codebase to thrive in is an essential skill.
A major responsibility the befalls upon the shoulders of senior developers is to train the next generation of developers. This can be via code reviews, mentorships, or knowledge transfer sessions. This calls for great interpersonal skills. Ability to communicate expectations and guide fellow team members often sets a good senior developer apart from a great one.
Another key skill to work towards is thinking from a customer perspective. We build tools for people and, what good is that when we do not think of the very people for who we build it. Designing experiences that spark joy in customers is an experience in critical thinking! Often developers, think that this is not their responsibility, but building for the customer results in highly enjoyable and useful workflows.