At a first glance, the difference between three core levels of developers seems evident. But where exactly the ‘junior’ turns into ‘middle’? The primary thing to know is that junior, middle and senior are, generally, the labels. Every company outlines its specific set of measures, different for every corporation, depending on its scope.
Obviously, even with the most accurate job description, you can’t put every employee into a rigid framework. Sometimes outstanding coding skills are coupled with poor decision making and a bare understanding of how everything functions outside of the box. So, it’s crucial to evaluate a person including all the pros and cons and define the specialization level accordingly.
Considering those multiple factors, it’s easy to figure out that developer is represented by lots of additional features besides coding skills. Personal traits, energy to learn, communication with team members and business partners, solving problems and taking responsibilities worth nothing less than an ability to write code, especially at the advanced levels.
Despite a flexible classification, there are general requirements for each level that most of the companies share, especially for Ruby on Rails developers. Let’s get to the insights of those requirements, based on values of Coax Software:
- Basic knowledge of the area;
- Basic knowledge about HTTP protocol (protocol structure, types of nodes);
- Basic knowledge of Rails: MVC, ActiveRecord, work with assets, deployment Rails-application on Heroku;
- Knowing at least one programming language;
- Awareness with Linux, skills in using and customizing one of the editors for Ruby/Rails;
- Redis, Sidekiq, HAML/SLIM and AWS infrastucture knowledge;
- Ability to write simple code under supervision (Ruby language);
- Strong desire to learn, tolerance to criticism.
Can fail at: bug fixing, writing code without supervision, creating a complex image of the problem, communication, and understanding the company’s environment.
Hiring a candidate with a strong desire to learn can be a thoughtful and profitable investment. Juniors can perform basic tasks and improve their skills with a help of experienced colleagues. Moreover, at their first projects juniors try to show their best, so the customer can have the proficient service for less cost. Aside from code-related tasks, a crucial part for junior developer is to absorb the work ethic, how to interact within the company, and how to become a valuable part of the team.
- Ability to create software;
- Deep knowledge of standard Ruby library;
- Ability to conduct comparative analysis of gems/code from public repositories and choose the best of them for a specific task;
- Advanced unit-testing, feature-testing, mocking web services and 3rd-party APIs;
- Skills in using the automated linters, style checkers, static code analyzers;
- Good knowledge of design patterns;
- Basic knowledge of AWS;
- The ability to execute tasks independently Understanding the purpose of the project The ability to make decisions and offer solutions Good communication skills.
Can fail at: a general understanding of the project, taking significant responsibilities, performing all the coding tasks without any supervision, understanding the necessity to develop themselves.
Mid-level developers are a cornerstone of the company and have the most complex list of requirements. After passing the entry level, they are supposed to completely understand the company’s environment and how the processes run. Middle developers can mentor junior ones, talk out their opinions, and participate in business meetings while tackling solutions for small tasks. A common problem of this level is a tendency to get stuck in the role for a long time. Mostly, this happens due to a comfortable position in the hierarchy: you are not the last person in the company, you have responsibilities yet not too much. When a problem demands a thoughtful, quick and efficient solution, middle developers might fail in taking the responsibility to make the right choice. So, the desire to learn and improve skills is essential for them as well.
- Complete understanding of the working environment;
- Metaprogramming skills, advanced concurrent programming;
- Understanding the architecture of TLS, DNs protocol constructing;
- Skills in code style checkers integration, code static analyzers;
- Good knowledge of AWS and ability to create flexible architecture with it;
- Productivity and speed optimization of HTTP, SPDY, HTTP/2 on all stages data exchange;
- Deep knowledge of popular libraries/frameworks/architecture solutions (ROM, Hanami, dry-rb, RabbitMQ);
- Ability to customize library behavior and make contribution to it;
- Strong team management skills;
- Ability to provide proper solutions, make decisions, and transform business needs to technical solutions;
- Excellent communication with customers and within the team;
- Ability to delegate tasks, supervision over less experienced colleagues.
Can fail at: understanding of their own drawbacks, proper delegating, ability to consider opinions of other team members.
Unlike their less experienced teammates, senior developers have a profound vision of the project. The main task of senior dev is to understand the customer’s problem and to deliver an efficient solution. Therefore, it involves managing all the intermediate processes to reach the best result. While junior and middle developers handle assignments like generating code and creating software, senior does the supervision of all these processes and focuses on solving problems. When hiring, it’s crucial for the company to understand that all kinds of developers make an important contribution to the business. There are different tasks, and for each level of complexity, there are various solutions. While strategic, complex decisions should be made by skilled developers, smaller and more basic tasks are much better executed by junior ones. The balanced correlation of all the roles is a key to a healthy working environment and effective production.