Stephan Dilly is Head of Frontend Engineering at InnoGames.
InnoGames focused heavily on browser and cross-platform development in the past. Now we’re working on our next hit games in the mobile-only-spectrum.
This change in our goals is also reflected in our technology stack. While we were very fragmented in terms of different technologies, we now focus on current game engine technologies like Unity and Unreal. Switching technologies is always a challenge on our development teams.
This article focuses on four essentials that we condensed to assemble a great team for mobile-only development.
Strong team lead
This kind of challenge results in a lot of pressure on the people in the team. They not only have to come up with a great game concept, they also have to work in a technical environment they are not used to. The team lead is the most important role in the beginning, since he/she is the starting point for the team, and will recruit the rest of the developers either internally or externally.
Their key responsibilities are:
- Stakeholder Management
This role is in a sandwich position between the team members and the upper project and company management. Sharp communication and presentation skills are required to win both, even in stressful situations, and keep the team committed and motivated while maintaining trust with management.
- Technical Expertise
This role usually is an expert in either the frontend or the backend technology like Java or Unity. Depending on what expertise the lead brings, one should look for a very senior addition on each side of development to have both areas covered. It is very rare to find someone unifying both.
- Strong Leadership Skills
This is already mentioned above, but it is very important to emphasise the importance of professional leadership. The more the project progresses, the less the lead takes part in the daily coding business.
It must be priority #1 to remove all obstacles keeping the team from working. For this, it is crucial to hold regular 1:1s with each team member.
Senior and mentor
After finding someone with the skills to manage the people in the team, it’s important to look for an experienced developer with a strong foundation in the target technology, like Unity.
It is necessary to find someone that is not only a great developer, but also a good communicator and mentor. This role has the responsibility to champion the technology switch.
They receive the trust to design and build the foundation in a scalable and maintainable way using solid and sound software methods.
Aside from programming skills, the senior also mentors the less experienced developers. These can range from entry level junior developers to experienced developers who are currently transitioning technologies.
It is necessary to find someone that is not only a great developer, but also a good communicator and mentor.
Their key responsibilities are:
- Mentor the tech switch
Historically at InnoGames, we have a lot of experienced developers in technologies like ActionScript and JavaScript who we would like to develop to use our new technologies.
This is where the senior needs to show exceptional communication and training skills. This concept of 'learning on the job' proved very successful to us. We do that after a three-day introductory workshop to get everyone on the same page.
- Quality first approach
We are focusing on a Quality Assistance Model to migrates the accountability of bug free software back to the developers and evolve our QA Testers to consultants supporting this strategy.
This is not only a switch from a technological perspective but mentally as well. The over-the-fence mentality belongs to the past, and especially our senior developers need to support that since less experienced devs look up to them.
Team mix
After having the lead and the senior, assemble a strong foundation for a team. Start to staff the rest where requirements again change. Add a good balance of regulars and juniors.
At InnoGames, we have a lot of great experienced developers who are keen on switching from older tech like Adobe Flash to Unity, and we of course want to help them migrate. We also want fresh blood on the teams - namely juniors.
The exact balance is tough to find and strictly depending on the personalities on the team. It is all in the mix.
How to mix it up:
- Company Culture
Create an eco-system where talent is able to move from team to team, as this will enable you to have a consistent company culture which is organic and not manufactured.
This not only pays off by improving culture it also generates trust and proves that we are willing to commit to employees even in tough situations. This kind of appreciation improves employee retention as well.
- Fresh Blood
On the other hand, every team will have the natural fluctuation in staffing which leads to look externally for new talent. Don't see this so much as a pain, but as an opportunity to bring someone in who may also be able to see flaws in the daily business with fresh eyes and perspective.
Balance Personalities:
- The Code Grinder: Who just gets s* done.
- The High Level Dude: Who takes care of systems and makes sure that everything works together.
- The Low Level Optimiser: Someone who knows the profilers and machine code, someone who optimises memory usage and CPU cycles.
- The Communicator: Someone who can translate geek to lead or out of the team.
Have all of these in your team.
Trust and empowerment
Two simple words that make the biggest difference. After you focus on a great balance of technical expertise, developing existing employees, growing motivated juniors and a strong leader that cares for his/her team, you only have one task: Let them work!
Nothing kills motivation faster than micromanagement.
As it is this great team that actually delivers the product, they have to believe in it. And if they do believe in it they will love to work on it. The greatest help we can offer at this point is to trust them 100% and enable them to get the job done.
Of course there are constrains: the genres, time frame, target audience, platforms and so on. But nothing kills motivation faster than micromanagement.
With such an effective and motivated team, there is a chance to end up with a great product – on the other hand, without such empowerment and a team not believing in the product, failure most likely will be the result.
What works for us:
- Milestones
The team presents regular milestones to the management, including the plan of what to expect in the next milestone. The actual intervals and content can be decided by the team. If done so, the team actually aims for really high goals when motivated.
- Agile up to the team
We have been very successful working with SCRUM or a combination of SCRUM and Kanban, but ultimately, its actually down to the team to decide on their approach, the one that works best for them.
- Tech Stack
The tech stack is very flexible. Our older product heavily used PHP in the backend and JavaScript or ActionScript in the frontend.
Newer projects build on top of Java and C# (Unity). But the actual frameworks used are up to the team. The knowledge sharing often leads to reusing proven concepts instead of reinventing the wheel.