Over the last decade, Admios has grown from a firm of 2 to a firm of more than 60. Like many growing companies, our team started to become chaotic and disorganized as we passed about a dozen people. We needed managers, more specifically, technical managers. We first tried to hire outside managers but they weren’t very good. Over time we learned that there just aren’t a lot of management training resources for want-to-be managers in the field of software engineering. So we set out to create an internal management-in-training (MIT) program. We’ve been building, iterating, and improving on our MIT program for the last 10 years. One of the reasons the best developers in Latin America join Admios is to participate in this program. For the first time we’re sharing our learnings, best practices, and methods with you so you can create a MIT program of your own.
Management requires a new set of skills to be effective, these are called soft skills: teamwork, patience, communication, listening, humanness, and trustworthiness are just a few examples. These skills are very different from the ability to build a sear console in React. Technical skills, by nature, are very black and white. The code works or it doesn’t. Soft skills are a bit messier. There is no optimized way to use empathy while listening to an employee. Therefore, it is not very common for computer programmers to prioritize or focus on learning these skills.
We began to ask ourselves, What is the best way to help our current individual contributors (IC) learn some of these soft skills? We tried a few things, none of which worked:
- Mentorship Program - Didn’t provide a specific enough framework and clear goals to help IC gain the necessary management skills.
- Reading Management Books - A good start on terminology and topics, but unlike coding, building interpersonal management skills just cannot be learned from a book.
Then it hit us. What if we build managers using the same principles as agile software development?
Agile Based Management Training
Here is how we approach it:
- We break down the whole management training into smaller pieces that are easier to measure and master...just like breaking down a feature into epics, stories, and tasks.
- Provide a staged progression so that developers can improve before they actually become managers...just like QA in a staging environment.
- Create transparency so that evaluation is based on clear, well-defined criteria rather than tenure or technical knowledge...just like acceptance criteria
- Help develop an introspective ability so managers continue to improve over time, not just a single training course at the beginning...just like sprint retrospectives.
We blended all these principles into three easy evaluation steps:
- Manage Yourself - Many developers may think they are managing their own time and prioritizing tasks but in fact they require active management from a team lead to be successful. If you can’t manage yourself and prioritize there is no hope of managing a team.
- Manage your Client - Every developer has a client. This may be your team lead, it may be a product or project manager or it may be a literal paying client. Communicating transparently with them, understanding their goals and designing compromises and solutions to meet those goals is critical to a successful project.
- Manage a Team - Only after you can manage yourself and a client’s expectations can you start to be successful managing a team. You must be able to manage your own time, and facilitate clear requirements so you have an environment where a team can be successful. From there you can start to build and hone soft skills.
In our manager-in-training program, we spend a week on each of these three steps.Throughout the program, we also incorporate three pillars of management which we’ll dive into in the subsequent blog articles.
- Ownership - We take pride in writing code we are proud of and being a part of interesting and challenging projects. Developers at Admios devote their time to each project as if it were their own, they take full accountability and always go the extra mile.
- Systems - To create habits we need to create systems. Systems guide us to success and help us identify what is working and what isn’t so we can constantly iterate and improve.
- Transparency - Communication is not effective unless it is transparent. Transparency cultivates healthy relationships. This pillar is essential in every part of our business; transparency is key with our clients, with ourselves, and when it comes to creating a safe environment that fosters innovation and open communication.
- Creating a culture of discipline
- Creating a culture of ownership
- Creating a culture of transparency
- It is OKAY to ask for/accept help
Now that you have a general framework for our MIT program, let’s dive into the details. We’ll explore each of these topics in depth with a dedicated blog post. Here are links to all posts in this series:
- Becoming a Manager: Agile Management Philosophy (this article)
- Becoming a Manager: Manage Yourself
- Becoming a Manager: Manage Your Client
- Becoming a Manager: Manage a Team