Developers Emma Kallbro Banaszek and Sara Wänerskär met to discuss their careers at Funnel. What have they learned so far and what does a developer need to know in order to thrive?
Sara: I am so glad to have you contributing to the blog Emma. Could you please tell us a bit more about yourself and your journey here at Funnel?
Emma: Happy to be here! Sure, so I have been with Funnel for a bit more than three years now. Coming into Funnel I had no knowledge of Python, the main programming language used by our plugin teams, so I had the opportunity to learn that on the job with the help of the rest of my team. As a junior developer at Funnel you start off in one of our data ingestion teams (we call them plugin teams). They work with the part of the product that imports data into Funnel, which is usually done through querying different platforms’ APIs. Most of the plugin teams at Funnel consist of three more or less junior developers and a senior “coach”. More about coaches later!
After about two years in that team I had a conversation with my closest CTO who asked me if I wanted to try something new. I ended up moving to the plugin team “Analytics” that maintains all of the tracking platforms that Funnel supports, such as Google Analytics. This is, as you know, when you and I started working together Sara! I have been with my current team for roughly a year and a half now, and in a few days I will be moving on to a new challenge outside of the plugin teams, working instead with the Access team that among other things handles users and subscriptions in Funnel.
Apart from the daily work within my team, I have also been part of different initiatives going on within the plugin teams and other parts of the organization. Most recently I joined a working group focused on making improvements to the deploy pipeline.
That was a bit about my journey, but what about you Sara, how does yours look so far?
Sara: I have been at Funnel for almost three years. Time flies! I started in the Plugin Analytics team. What made this plugin team different was that we did not have a coach. All of us had a few years of experience as developers, so the thought was, and still is, that the Analytics team could do without one. Python was the main tool, but also React at the end of my time there.
In October last year I moved from the data ingestion world to Selfies, a platform team. The platform teams are typically fullstack teams working on all other parts of the product, other than data ingestion. Selfies build and maintain the import of spreadsheet data to Funnel. We have a couple of Python plugins similar to those I worked with in my previous team, but most of the technology we use was new to me when I started. We use AWS, Clojure and ClojureScript in our daily work.
During my time at Funnel, I have also been active in initiatives outside the team. This blog is one of them and I have also tried public speaking at meetups and conferences. Activities like these outside of your team are encouraged. Working with something a little different and with other people have kept me energized and have helped me get to know developers outside of my team.
The coach role can be a bit fuzzy. The goal is to guide new plugin developers into writing high quality code and helping them work in a sustainable way. Platform teams do not have one; everyone is a developer. They have to self-organize. We are happy to have a flat dev organization where all developers should feel empowered, competent and appreciated.
Sara: What is the difference between working in a team without a coach, and with one? I have often thought that it would be quite nice to have a designated person taking the lead.
Emma: Yes, that is definitely true! It is really nice to have a specific person take the lead if needed, make sure discussions do not go on for too long unless they’re productive, or so you don’t get stuck somewhere for too long, and so on!
I had such a great experience with the coach I had when I started out at Funnel. Since I didn’t have much experience, it was very comforting to know I had someone to turn to at any time, who helped me with my professional development and made sure I had everything I needed to thrive in my role on the team. I learned a lot from my coach and also from the rest of my team. They were all super helpful, which is a very common trait among people at Funnel!
In my current team we do not have a designated coach. Instead, we all have a responsibility to make sure we listen to each other, learn from each other and teach each other. We all share the responsibility of a coach and we have to make sure that we are all working together towards a common goal.
Sara: There are different types of leadership. We have coaches, but also people who are very knowledgeable. Emma, your knowledge of Funnel is almost encyclopedic, how do you make sure that the rest of your team benefits and that too much responsibility does not rest on your shoulders?
Emma: Haha, I’m not sure about encyclopedic, but I guess I have managed to pick up a few things throughout the years! In terms of knowledge sharing, we do a lot of mob programming generally at Funnel, and so also in the team I am in. We mob most of our daily tasks, even tasks that do not include programming. Aside from programming in a mob, we also research, troubleshoot, answer questions from colleagues and customers, etc., all together.
So with this way of working, the entire team becomes a knowledge bank for our domain rather than bits of knowledge residing with different individuals depending on who’s performed a specific task for instance. This in turn also makes it easier for people to move on to try new things in a different team as the team members staying, as well as our CTOs, know that the team can keep functioning just as well.
The ways Funnel developers are trained to share knowledge and work to fight person dependency have many benefits. One of them is being able to change teams. Once you stop learning, you will eventually lose interest in your work. Funnel wants to keep employees for a long time, so it is necessary to have a setup where changing teams and learning new things are possible. A team might lose a valuable member, but as long as that person stays in the organization we will all keep on benefitting. One thing to keep in mind is that not being person dependent is not something that is achieved, but an ongoing process.
Emma: Sara, you recently changed teams, how was that? Do you feel like your experiences from a plugin team prepared you well for your new challenges?
Sara: I was comfortable in my role in the Analytics team and wanted to try something new. Having said that, the feeling of mastery is very satisfying. I had been in contact with most of my new teammates and they all seemed really intelligent and friendly. I was excited about the move, but nervous about everything I needed to learn in order to be successful. Learning Clojure and ClojureScript is great fun, but the code can be pretty hard to read in the beginning.
Most platform teams do not handle data ingestion, but Selfies do. Being a plugin developer meant that I could contribute from day one, as I know that part of our stack well. At the same time, it is important not to get stuck with what you already know. I will never be done with learning Clojure! Before the move, my new teammates and the CTO team had made it clear that they did not expect me to know everything from scratch. I had already tried Clojure and was keen to learn more. An interest in learning the language and working full stack has been important in my onboarding.
You changed teams to plugin Analytics just over a year ago. Now you are about to start in Access. How did it feel last time you changed teams, and do you feel any different this time?
Emma: Last time I changed teams the biggest difference was the type of data ingested from the third party platforms the new team supported, as well as working in a team that did not have a designated coach. Many things stayed the same, such as the part of the product I worked with, using Python, and the common daily tasks performed by plugin teams. This time around everything will be new! New part of the product, new programming languages, new responsibilities and tasks. I am super excited (and healthily nervous)! I know that my new teammates are incredibly knowledgeable, so I can’t wait to learn from them.
Sara: Good luck in your new team Emma!