Welcome, Jacob!

We are proud to announce that Jacob Krüger has joined Tactile’s leadership team as our new Chief Marketing Officer.

“Jacob’s extensive experience as a marketeer will be crucial in both scaling our existing UA efforts and launching new games in our growing portfolio. I very much look forward to working alongside Jacob,” says Tactile CEO & co-founder, Asbjoern Soendergaard.

“It’s very exciting to join Tactile, a company I have been following for a long time, as CMO,” says Jacob. “I am really looking forward to working with such a great team on growing iconic games such as Lily’s Garden as well as launching amazing new titles!”

Originally from Berlin, with an educational background in languages and management studies, Jacob’s professional journey took him into the gaming industry. Over the next decade and a half, he grew from a role in campaign management to leading monetization and UA efforts, and finally stepped into the role of a CMO. Throughout his career he worked at companies such as Socialpoint, Scopely, Miniclip and most recently, FunPlus.

We asked Jacob to share a fun-fact about himself: “When I was at university people asked me what career path I want to pursue once I graduate. My answer usually was “Anything but marketing!”. I guess that did not work out as planned…”

Jacob, we’re so happy to have you join our Tactile team! We’re excited about the times ahead.

Product Marketing Managers at Tactile serve as a vital connection between user acquisition and product. They guide users through the marketing funnel, from first ad impressions or app store visits, all the way to app installs and in-app engagement. They’re central in finding the best way of promoting our games to our target audience through the right creatives and messaging. We sat down for a conversation with our Product Marketing team, Aliaksandra (Alex) and Volha, to learn more about what they do and how their marketing efforts impact our games.

Meet Alex & Volha, our Product Marketing Managers 👋

Staying up-to-date with marketing trends

In their day-to-day, the role of a Product Marketing Manager involves crafting compelling narratives, developing marketing collateral and closely analyzing market trends. Staying up-to-date with the market and competitor data is essential, given the dynamic nature of the gaming industry. Volha elaborates: “For us, it’s really important to closely monitor installs, revenue and ranking not only for our apps, but for our peers as well. This helps us to understand what is trending on the market and what we can do to make our games stand out.

Alex emphasizes the collaborative nature of their role, working with diverse teams such as creative marketing (animators and designers creating our visual marketing assets such as ads, trailers, icons, screenshots etc.), user acquisition and product owners..

Both Volha and Alex also collaborate closely with their team lead, Terra, who is our Head of Growth. This collaborative structure creates effective communication, streamlined processes, and creative ideation, as ideas about product marketing can come from any side. But that doesn’t mean that collaboration ends within their team! Volha and Alex work very closely with teams from all functions within Tactile – product managers, game designers, user researchers, and player care managers – to ensure alignment between marketing strategies and overarching product goals.

Cross-team collaboration is key to success in Volha & Alex’s roles

Connecting marketing and product

One notable project that reflects the collaborative efforts between the marketing and product teams is the full-funnel strategy for mini-games. Over the past year, we have explored a variety of mini-games such as pull the pin and several others. The mini-games initiative is a great example of how product marketing managers can influence new feature implementation on the product side through marketing research and tests. Mini-games therefore offer a unique avenue for marketing.

Pull the pin mini game

Furthermore, Alex shared the importance of connecting our marketing efforts with real-world events, such as the Mean Girls movie release. Alex used the Mean Girls inspiration to create a campaign for our most recent game, Makeover Match. “Connecting with real-world events enhances user engagement, creating a bridge between popular culture and our games,” says Alex.

Mean Girls themed marketing capmaign

Another fun part of a Product Marketing Manager’s job is forming hypotheses and testing them. “We always need to understand why we are testing specific ideas, visuals and texts,” says Alex, “Sometimes even a tiny change can make a huge difference and impact on marketing performance. For example, simply making banner colors brighter helped us to significantly increase conversion to installs.”

    ➡️   

Other times, marketing tests just don’t show the expected results. At the end of last year, the team ran a Christmas-themed app store experiment. Their hypothesis – having a Christmas-themed app store during the Christmas season should lead to installs – failed. However, it offered a valuable lesson in understanding user preferences.

The world of product marketing also comes with its own surprises, and smaller initiatives can make a huge impact. Alex and Volha shared a story about a newly released character on Makeover Match which they decided to feature in a particular in-app event promotion. Volha explains: “One thing led to another and eventually Google Play featured the event very prominently, which led to 5x higher app install numbers than in previous months.

In-app event promotion

Turning app users into players

Product Marketing Managers play a crucial role in leading users to install our games, turn them into players, and make them want to come back again and again. Their dynamic and collaborative approach, coupled with their ability to adapt quickly to marketing challenges, sets the stage for continued growth and innovation.

All of our game projects (we have 14 live at this point in time!) have basic functionalities which integrate them into the Tactile ecosystem. These functionalities are interfaced with our back-end services, such as game web services (for example scheduled features, A/B testing, in-app purchases, configurations, authentications, etc.) and our internal data analytics collector. All of these services have a what we call ‘client’ component, which is their underlying framework. And since all of our game projects share these, we have a dedicated team of developers responsible solely for building and maintaining them. They’re our Core Client Team.

We sat down with two of our Client developers, Martin Traberg and Martin Gonzalez to learn more about what they do and how their work impacts the work our game teams do. So, grab yourself a cup of coffee or mate and let’s dive into the world of game programming.

Meet the Martins – Martin Traberg DK & Martin Gonzalez AR 👋

‘Separate, but connected’

The Core team at Tactile provides services and tools, all built in-house, which help our game teams develop games faster and in a more efficient way. Having a dedicated team within our Core team looking after the lower-level systems and services that are shared between our games, allows our game programmers to focus on what is truly important to them – building all the fun features for our players to enjoy.

On top of looking after the shared code-base, our Client team provides custom-built tooling, which helps to speed up the game development process. It does so by allowing our game programmers to interact with the shared code base in a more effective way. The Client team is also responsible for the client component linked to our Build Server, which is our internal game building pipeline (see the ‘Build Agents: A look into Tactile’s internal build pipeline’ article for more info on this). This allows all game projects and those working on them to utilise our Build Server and create new game builds based on specific requirements.

‘Removing the walls in our codebase’

The Client Team serves many departments within Tactile. It takes ‘orders’ from a variety of stakeholders requiring information from the games – this can be people who are directly working on the projects (gameplay programmers, designers, product specialists), but also those who are not (producers, data analysts, marketeers and backend engineers).

Once an ‘order’ is raised, it is the Client Team’s responsibility to create a feature or build a system which then gets implemented and used in all of our games. Executing these orders requires a lot of communication with the rest of the teams, as the engineers need to understand what the teams are doing and how these new systems will fit into their daily workflows. What is more, our game teams are distributed across several geographical locations. So whenever the centralised Client Team, which is based in Copenhagen, prepares a new release, it needs to be integrated by all the other teams. This is where the good communication factor really comes into play.

As Martin G. elaborates: “We have a huge amount of shared code. For example, nearly 80% of Lily’s Garden code base is shared between different game projects*. The best thing is that there are no walls in our code and every developer can add to the shared code base. We have a kind of internal open source mindset. Even if our team is backed up, other developers can go into the shared code base, make a change and then submit a pull request for our team to review at a later time.” This prevents the Client Team from becoming a bottleneck in the development process. Ideally, they only need to step in when there’s a larger change which requires more attention and input from them.

Think of it like this – the Client team provides the underlying framework for the work that the game teams do. They are the most experienced developers when it comes to dealing with all the different projects and their needs. They really understand when something you are going to change in one place is going to positively (or negatively) impact something else in another place

Martin T., who is leading the Client Team, has been at Tactile for over 6 years (at the time of writing). “A lot has changed since I started,” he says, “We have moved a lot of things to the shared domain and things are a lot more structured than they used to be. We now have proper guidelines for how we develop and are using more modern technologies and coding practices in general. The quality of the code has really become a first-class citizen and everyone is very mindful of the maintainability of our products.” On top of this, the team spends a lot of time discussing how to balance the shared code base, how much should be shared and how much should be completely on the game side. It’s an ongoing balancing act.

‘Balancing compatibility whilst minimising disruption’

The real impact of the work that we do at Tactile is created when the players play our games and experience the new in-game features which our game teams worked on. Linked to that, the internal impact of the work that our Core team does comes from providing the game teams with the speed to develop. For example when we start working on a new game project, we have the infrastructure ready that integrates the game with all of our core services. This gives the game teams the time to focus on building new features which are unique to that project.

One of the biggest impacts that the Client team has on our game teams on a daily basis is producing new versions of the shared components – which the game teams need to keep up to date with. Sometimes the Client team needs to make these updates because they want to change something that is a real impediment for them. In this case, the game teams are affected by proxy. Updating to the new version of a shared component takes time and might temporarily disrupt the team’s workflow or introduce potential for making bugs. However, it contributes to the overall and long-term health of the shared codebase, which is the ultimate goal of the Client team. Martin G. explains: “There is a delicate balance between pushing the shared components into the direction we’ve settled on and not being too disruptive to the game teams.

This is where the Client team’s work gets most challenging. Sharing as much code as possible provides speed of development. But, every time the team releases an update to the shared components, it becomes the responsibility of each individual game team (of which there are multiple in several geographical locations) to actually update them. It is not an automatic process because the game teams need to be in charge of what they’re putting into their projects.

And so the true challenge lies in convincing the game teams to actually do the update for something that they don’t need just yet. The Client team approaches this challenge by providing game teams with a model where the update can be done in the easiest or most convenient way possible. They also prepare release notes for every update, in which they document all the changes. Ultimately, it’s important to motivate the teams to update the shared components regularly, because this can later on cause big issues during critical releases. If the game teams are too far behind with their updates, it is not going to be easy for them to apply the fixes. They can find themselves in a painful spot and finding that right balance can be really difficult!

If we want to share so much code, how do we solve these problems?” says Martin T.: “And if we share less, what implications does this have for the game teams? Maybe we shared too little before, maybe we share too much now and maybe the real sweet spot is somewhere in between? The fact is that we don’t know. Things change all the time and so we go with the flow and keep adapting.

‘We care about code’

Martins discussing

If you ask the Martins what their main motivator in their day-to-day is, they answer unanimously – they care about code and how we develop it. The entire Client team is aligned around this. Martin G. explains: “What motivates me is that we have an actual impact on the way we write code at Tactile. We can affect things in a positive way. We have the space to express and discuss our opinions and really move things forward.

The Client team has the possibility to embrace change and try things out in order to find new ways of developing or experiment with new ways of interacting, which is a luxury that our game teams do not have. This is because they work on a completely different schedule, having to regularly deliver new features to our players. The Client team, on the other hand, has less strict deadlines and more time to fine tune things. They have the amazing opportunity and freedom to have conversations and (often heated 😂🔥) discussions about code architecture, code design and implementing something new. Because they service all the game at the same time, they are in the best position to do so. This brings a lot of dynamic to the team.

‘Thinking as one’

The team’s drive towards improving code quality led them to making big changes in how they work. One of the things that they introduced years ago was unit testing, which drove an effort to improve the code by actually verifying that it works as expected through automated testing. The natural continuation of that was moving towards pair programming. Martin T. elaborates: “We have a review procedure here. Every time you make a change to the shared codebase, you need someone to approve it. It’s a very asynchronous flow, which requires a lot of back and forth between two people. Pair programming gives us the option to go around that by having pre-reviewed code, because you always have two people working on it at the same time.

Pair programming guitaring

Martin G. adds to that: “Basically, we create code that is going to be used by others. We need to create something that is readable and that other developers can understand well. This is why we read a lot of books on clean code and clean architecture. But the thing is, when you work in isolation, you can be biased by your own experience. Pair programming helps to create a connection with other team members, which helps to mitigate those biases, it prevents siloing and brings a bunch of different experiences to the table. Whether it’s from a junior or a senior developer, everyone can learn from each other and ultimately, this raises the ability of the entire team.


* For the curious, out of 926.807 total lines of Lily’s Garden C# code, 723.518 lines are shared, which represents 79%! The shared code is also divided in two distinct domains; packages and modules (packages is mostly what the Core team is responsible for).

Lines of code in packages: 309.155
Lines of code in modules: 423.363
Lines of code in non-shared (the “Code” folder): 194.289