The Engineering Hierarchy: Being an Engineering Leader
If you go 30 to 40 years back, you’ll find that the concept of a Software Company was very rare, if not totally absent. But nowadays. there are countless software houses around the globe and in the meantime the software industry is always growing and evolving. Now, there is always a need of a hierarchy if you want a company to work properly and to the maximum.
Just like any other company, a software company needs an Engineering Hierarchy as well. This hierarchy would let the employees know that what is expected from them, it will provide a distinction between the roles and it would define areas for their career growth.
In this article I am going to tell you about the importance of the Engineering Hierarchy and will also lighten up all the possible job levels a Software company has. All this will help you clear up your mind about how to start your career as a Software Engineer. So, without any further due let’s get started.
Why Engineering Hierarchy Is Important
The idea of Engineering Hierarchy implies a properly structured and stable industry with a long-term path to a fruitful endpoint, like becoming a CTO or even a partner. But the modern technological environment is much more dynamic with many unforeseen scenarios. Employees are often changing their jobs every couple of years.
So, keeping the modern technological environment in mind, don’t consider the Engineering hierarchy as a long-term life plan. Think of this hierarchy as a ladder. However, you can always get carried away by the thought of getting to the top of ladder, but what really matters the most is the next rung. This ladder can be used to set your goals for the coming years. If you are a junior developer, get yourself motivated by the thought of being promoted to team lead.
What if you don’t have a job Hierarchy?
You’ll often find that small companies that are on beginner level, don’t often have well defined titles or roles, in other words, they lack a Job Hierarchy. You might find these companies saying things like “the titles don’t matter here” and “we have a flat organizational structure”. But even with this flat organizational structure, some people are getting paid more than the others. So, there is still some sort of meritocracy prevailing.
Now, if everything works so fine without having a job hierarchy then why there is a need to have one? Let’s take a look at some examples to understand this.
- An employee needs a promotion to a Senior title,
but the company thinks he is not yet ready. The employee asks why he can’t get
a promotion. -> Now the company would
need to give an explanation of not promoting him. They would definitely explain
the difference between levels to the employee and will guide him about which
skill he has to improve/develop.
- A Flat organization is taking an interview of a candidate. After the interview, the hiring team is not sure whether to give the candidate a level-2 or level-3 position. -> Now with the absence of a hiring bar their decision will look more like a personal one.
- A new start up began with the motto “Titles don’t matter here”. The startup did well and they are now planning to expand it. They need more men and a new leadership. The owners did a closed-door meeting and assigned everyone job levels. Many engineers ended up as junior developers, and now they are angry as hell.
- John was hired by a company a couple of years back at $100k per year. The same company was looking for an employee this year who had to do the same work as John. Due to some reason they hired new Employee for $130 per year. After a week or two John found how much the new employee was being paid. -> The company cannot afford to pay everyone $130 per year but john has every right to raise his voice.
There is a win for everyone when there is a Job Hierarchy
A job Hierarchy not only helps the employee and the employer but is beneficial for the company as a whole. Let’s take a look how.
Administration: If there is a job Hierarchy then there will be a person administrating and managing the other employees. A good manager should tell the employees about how they are performing on a regular basis. He should also help the employees by developing their skills and by telling them which career skills they need to grow.
Recruiting: A good job hierarchy will make it easy to set levels for their future candidates. Interviewing panel can ready some set of standard question and establish a hiring bar for every level.
Salaries: While hiring employees you need to set salaries which you are going to pay them. You will need some standard by which you can match the salaries to the industry market rates.
The Engineering Hierarchy for A Modern Developer
In this section I am going to be focusing on engineering leadership roles and what is expected from these roles. These roles might be known as job titles and depending on a particular company, these roles can vary; some companies might not correspond to one of these job titles or might not correspond to any of these at all.
A software developer (software engineer) also known as programmer, plays a key role in designing, implementing, installing, testing and maintenance of a software. Depending on the nature of company you are working in, you might work on an already present product or you might get assigned to a team in order to create a new product for the company or company’s clients. A developer gets instructions from his seniors and he has to work according to the domain he is assigned to. For this you need to have a strong command on programming and problem solving.
A technical lead is basically a software engineer that is entitled to explain technical scope and execution of software project. Normally, technical lead does not require any direct reports and he is not given any management duties. Their job is to define technical directions, choose which patterns and styles to implement in the code and make sure that technical standards are being followed.
To be a technical lead you need more experience than your peers and you need possess leadership potential and skills, plus you need to execute those skills in the work. You should be vocal, quick thinker or must be able to influence others. You can become a technical lead by gaining the respect, recognition and admiration of your fellow employees.
Team lead is basically a technical lead for every project or product that a particular team works on. It is quite similar to technical lead but it may vary from company to company. It depends.
Engineering lead is sort of technical lead, the only difference is that they have few direct reports. You will find engineering lead working(coding) on projects almost 75% of their working time and in the remaining time they perform management and leadership duties.
Most of the Engineering Lead(s) would prefer to work on one project at a time with a team that will give direct reports to him/her.
Engineering lead is a great level for those software engineers who want to become managers but are not yet ready to fully devote themselves to managing activities. We can say that Engineering lead is kind of a training camp for engineers that want to be full time managers.
If I was to define Engineering manager then I will put it this way “a software engineer who chose the management path over a technical one”. He/she has a lot of management duties to perform and has up to 12 direct reports, but most of the Engineering Managers prefer not more than half a dozen. 60% of their time is spent being a contributor to projects (coding) and in the remaining 40% they are found performing management duties.
You might be thinking that Engineering Managers are just like engineering leads but let me tell you, they have a wider set of responsibilities as compared to the engineering leads. They have influence over greater number of people and you might find them being involved number of projects and teams. So, to become an Engineering Manager, you need to be more versatile and flexible in order to cope up with different projects and scenarios that are going on in the company.
Being an Engineering Manager means that you are to devote yourself fully to a management role and it is that rung of the ladder which takes you towards executive titles, which I am going to explain later in the article.
Director of Engineering
It is usually one of the very basic executive roles you are going find in the Engineering hierarchy of a software developer, but the definition of this role might be different for different organizations. Obviously, he went on through the ladder, from being a developer to a team lead and to one of the executive titles. So, he knows how to code and you might find him being involved in the development process in some new small companies as well. A conventional Director of Engineering administer the managers and the developers.
In most of the organizations, Director of Engineering usually manages both development department as well as the quality assurance department. It is one of the most important post in an organization and you might find this post in charge of the whole engineering department. He/She sets rules for development and give directions to the mangers and usually reports back to the Vice President of Engineering.
It not uncommon for the director to provide technical assistance, deal with code and take part in making decisions about what pattern and architecture to use. You will find them setting and managing company’s budget, making and applying department rules and arranging company’s policies.
Vice President of Engineering
Vice President of Engineering is a very senior role in this engineering hierarchy and comes with a wider spectrum of responsibilities. VP of an organization usually manages all the managers and directors of that organization.
You might also find VPs of Engineering dealing with code in some small organization but mostly they have more of a cooperate role and they are not found anywhere near a code.
Their set of responsibilities include making technological choices for the company, setting technical and product strategies, administrating legal cousel on technical matters, dealing with clients, creating partnerships with other companies etc.
CTO (Chief Technology Officer)
The role of a Chief Technology Officer is somewhat vague and it solely depends on the organization. If you take a look at the large tech companies, you will find that a CTO’s basic role is to bring favorable changes and improvements in the technological department of a company.
You might also find CTOs managing the Directors and VPs but mostly the CTO position is kept for the tech co-founder of the company. When you look at startups, their technical founder self-appoints him as the CTO of the company. A CTO is the public face of an organization and he keeps a deep insight of all the business strategies and integration of new technologies inside that organization.
CIO (Chief Information Officer)
CIO is an operation-oriented executive job title that is given to a person who is in the charge of IT strategy of the company and is focused on improving the organizations infrastructure by keeping in mind the company’s objectives and goals. He is basically the head of the organization and is entitled to question anyone who is working in the company.
People often mix up Chief Information Officer with Chief Technology Officer, but it’s not their fault. Some small startup does not even have both of them. In the absence of a CTO, CIO may take its place and play all the duties and responsibilities of a Chief Technology Officer. CIO is definitely a larger rank than CIO and if a company has both of them then CTO would be answerable to CIO.
Obviously this whole article is not but my personal experience in the industry of software engineering and how this whole hierarchy and ladder pays our salaries. Lately as my team has been growing (we are already 50 people!!) this hierarchy becomes more and more important.
It is important both because it is a hiring and a reward tool. In my understanding, rewarding the people I work with is the most important duty of my role and I try not to neglect it. In a later article that I am currently drafting I am gonna explain how I am trying to maintain our culture by keeping the team together and motivated!