Engineer to Engineer: Creating Career Through Fearless Connections
Written by Naomi Freeman
From left to right: Sara Mansouri and Naomi Freeman
Naomi Freeman is the Chief Technology Officer at Lingu AS and a Women Who Code Leadership Fellow. Sara Mansouri is a Software Engineer at Zendesk. In this edition of Engineer to Engineer Naomi and Sara discuss machine learning, coding documentation, leadership styles, as well as the process of finding one’s community and making connections when emigrating to a new country.
Right now, you are working at Zendesk. Can you tell us what your job title is and what that means for what you do each day?
My title is Staff Software Engineer. My tasks mainly include coding, deploying, monitoring the service’s health, improving the code that we write, and documenting the process for ourselves and also other teams, so when they face a problem that is related to our code, can understand and investigate the issue themselves.
Our work is mostly with the other developers on the team, the product manager, the tech lead, the technical manager, as a team to ship products. I work at the Copenhagen Office of Zendesk which is where our engineering team has been focusing on the development of Zendesk Guide.
I’ve been in this office for the past six years, so I’ve been involved in many projects. One of the early ones was AnswerBot product in the web form where customers can go and write that they have an issue. Before submitting that, the Bot pops up with some articles that may include the answer to that question. We were part of that project to call an API from a machine learning service and find related articles that matched the text of the ticket, and then present them to the customer. If they clicked, “Okay, this answered my question,” they could close the ticket.
We have also recently been involved in building the data pipeline for Guide that delivers the usage of the knowledge base to Zendesk Explore, so that customers can analyze activities in their knowledge base, such as which articles are being viewed most. That enables them to better maintain their knowledge base and decide which articles should be updated or deprecated.
That’s an interesting way to apply machine learning. Rather than just having the chatbot, you instead recommend the articles that are most likely to come up for the query.
With some of what you were talking about, one thing I’m really interested in as a software engineer is, with this documentation, where does that come in the process for you? Is that something that you document as it’s ongoing, or do you just take notes? Is there a formal template you’re filling out? How does the documentation get into the engineering part?
It’s an ongoing thing. We have been doing that more frequently, depending on the project. Especially now that we are working remotely it’s critical to remember what we agreed on especially since we work in different offices. We have daily stand-up meetings, and we constantly communicate through Slack messaging, but it’s still a challenge to keep track of what we discussed in each meeting and the decisions that we make. We document some of the sync-up meetings that we have with other stakeholders so that we have a record of the decisions that were made for each project.
There is also other documentation for each project before it gets implemented. The architecture overview of the project, what is going to happen, different subsystems that are going to interact in order to cater to the goal of the project to be fulfilled. Initially, we start with the architectural overview, which may be shared with other teams to also be part of the feedback. So yeah, the documentation is something that starts very early in the project before any code is written.
Then we also have things related to architecture, deployment, testing, monitoring dashboards, and different ways to make sure that the product is healthy. The only way to keep track of all of this information is to document it, and we’re getting better at making it more visible and more structured, and easier to find.
That’s really good information for folks who are in more of a mid-level startup. I think sometimes people get a little overwhelmed and a little confused with, “Oh, but I’m a software engineer, how does this fit into my role and why should I be doing this?” I appreciate you clarifying and surfacing that so people can understand what that looks like when you’re at a larger-sized company.
I know that you’ve worked on a couple of things in the past like fraud detection. I also noticed that you had worked on transactions technology, and it sounds like the work you’re doing now is a bit different than that. Are there key learnings or approaches that you took from that background into your work now?
It’s very different. As you said, it was a very different platform and service. I was coding in C++ as a system developer. There were not much user interface going on at that service. We were a service that the banking system was calling an API from, and then we were getting some information about the current financial transaction: the card number, the amount, and some other attributes. Based on different AI rules we returned whether a transaction was suspicious as fraud. There were some other subsystems as well but the main part was the transaction processing, without any user interface that our team was thinking about.
When I moved to Zendesk it was completely different. The coding style also changed. It took me a while, and it was very challenging to get used to this new standard of readable and good quality code in a web application.
So that was very different. But troubleshooting the issues that we had, that was a skill that I developed in the previous role. I knew how to analyze metrics and log the information that was helpful to investigate issues, so that when there was a problem we could go back and see the state of the system at that time and see what the root cause was.
Is Zendesk still in Ruby? What’s the stack you’re working with right now?
Yeah, and it’s definitely a very different paradigm than some of those more traditional things we learn in university, right?
Yes, exactly. It was a very challenging thing for me. I think the biggest challenge that I had was adapting to this shift from those traditional programming languages. Before C, I was also doing some Java, then coming to this very high-level framework like Ruby on Rails, it took me a while to get my head around it and be able to feel confident.
Yeah, for sure. Another question I wanted to ask is, what’s one challenge overall in your career that you faced, and how did you overcome it?
The company that I was working for before Zendesk was a very small start-up. We were a group of four people that were working with two other teams. It was not as fast-paced and dynamic as Zendesk. Here we work in a more holistic and integrated way by keeping each other up to date across teams and offices. Keeping up with all this amount of information was something very challenging at the beginning- I just had to get used to working in this super dynamic environment.
The more time that passed the more I learned that I needed to be organized and have a routine of setting aside time for writing code, or focusing, or doing a dedicated code review. If I’m not busy writing my own code, I should always have time to apply the code reviews of others, review their code, follow up with emails and updates, read the new tech reviews that other teams have shared, and so on.
In terms of prioritizing, do you sit down with your calendar and map out blocks of time? Or is your time more driven by what other teammates expect on their schedules or meetings? How do you get a handle on everything you’re supposed to be doing in the week?
I’m still working on getting better, but it starts by looking at the calendar and seeing when you have meetings that you need to be prepared for. I try to figure out what the priorities are for the day. Some days are very undefined, you don’t have much need to prioritize and you can enjoy catching up with the stuff that you didn’t have time for. Some days are busier if you need to finish a task to unblock other team members.
I think having a small, written, unformatted document for yourself is very helpful. Each day, usually at stand-up, I look at my notes so that I know what I did yesterday, and it gives me an idea about what should happen today.
Another thing I do is look at the sprint that we have, and the tasks that are open, or in progress. Do we have anything that needs review from other team members? Do I have any open task myself that needs to be finished or get reviews from others? This way I can plan my days in a better way.
For you, what’s kind of the best part of the culture at Zendesk?
Our colleagues bring a lot of good empathy to the office. People are very open to helping one another. You may have heard the term “humblident.” That is our motto, to try to be humble and confident. It’s about knowing what you are doing and what you say while being humble and receptive to others’ ideas. That’s something that is quite visible at Zendesk.
Those values of being humble and confident, is that something you take on yourself as a leadership style? In your daily job, how do you feel that you show leadership?
I try to be proactive and get feedback from others while also giving feedback on their work. We have to provide at least one review for each pull request, so being proactive in giving our feedback is part of our duty. We also need to update the tech lead and the managers about the state of the projects so they know if we can meet the deadlines and milestones. And we usually do because the company is really good at estimating and prioritizing whether projects are feasible in a set time frame. For myself, it’s mostly trying to have an overview of the project I’m assigned to and trying to prioritize the work to best serve that goal.
There are definitely ways we can all show up and be leaders in our work in the way that we contribute to everyone else in the context we’re working in.
You said a couple of times, “before you came to Copenhagen.” Where were you before Copenhagen?
I’m from Iran. I was working in Tehran for three years. I studied my Bachelors at the University of Tehran in Computer Science, software engineering, and then I went to Sweden for two years and got a Masters in Intelligent System Design. In 2011 I went back to Tehran and I stayed there for three years working in that fraud detection service company. Then I decided to emigrate again. I got a work permit in Denmark, and shortly after I moved here, I got an offer from Zendesk. Since then, I’ve been in Copenhagen.
That’s such a big life change. In terms of that, do you have advice for people when they’re making big life changes, career transitions?
It’s very difficult and very different from person to person. I think it helps to learn which business and industry is the most exciting one to you and try to be ambitious and persistent in reaching your new goals.
There are many ways that people and especially women can build their careers in IT. I’ve seen many young women developers that have come from other industries without having a relevant university degree, and they are very, very successful, because of lots of self-learning, as well as working with and connecting with different communities. There are a lot of ways to gain experience without necessarily studying at a university.
I think community can be a big part of it, and I think that’s one of the hardest things when you’re jumping countries. I’m Canadian, currently living in Norway, I lived in Ireland, and Ireland’s a great place to just land and people are like, “Hey! Let’s check things out.” But landing in Norway without the language was a little different. The hardest thing for me here has been figuring out how to build a community.
This morning, I did a Bites & Brews networking session with Women Who Code, and it’s so great to just be able to connect with other women in the community and see what people have going on. I guess my advice there is just go with the intent of meeting people and connecting, rather than having a shopping list of titles or things you want from people. Give before you get. But that’s my advice and my perspective. Did you find that it was a challenge when you made the jump to find new community?
In the beginning I had no idea where to start, and then I found some meetups online. That was when I first learned that there were groups for people with interests in different topics, including technology-based groups. I took part in some of those meetups and then tried to get in touch with different people, even some people that I really didn’t know.
It was very difficult, but I just reached out to them on LinkedIn and told them who I was, that I was very new to Copenhagen, and asked them if they could look at my resume since they had been working there for a while. I got a lot of good support. Many people in your community are open to sharing their experience and to helping you to improve or get a job. We can get a lot of support from people, even those who we don’t know, because there are many people who voluntarily like to share their knowledge and time with you, and that’s something that is very valuable, and we shouldn’t underestimate that.
I completely agree. And that’s such a big brave step to take, to start reaching out to people you don’t know, but I think you hit on an important point there. Most people, most of the time, even if they’re strangers, are totally benevolent when it comes to helping. I think people get stressed out by not realizing that when they’re trying to make those first connections, so I’m glad you brought that up.
Just as we’re kind of wrapping up, thinking about something a little more fun and off the cuff, throughout the pandemic, people have been doing everything from learning to bake bread, to gardening, and painting their walls. What is something that you have been learning this year, or what are you most excited to learn next?
Before the pandemic, I started to play drums, and that was something that felt really exciting. I had good sessions with my teacher and learning to play along with a song was very nice.
I’ve also started knitting. I haven’t progressed much in that but it’s something that I’m still working on. I think taking care of ourselves became more important after the pandemic. it’s difficult to maintain our mental wellbeing in social isolation. I haven’t traveled to see my parents for more than a year and a half now, so these are really tough times, but hopefully it’s going to end. So that’s something that gives you a bit of hope that it’s not going to last forever.
Yeah, I agree, and I think it can be challenging. Maybe more so for women, even in normal times to worry about self-care. It gets even more challenging when we’re only two feet from the kitchen, every time we step away from our desk.
What I’ve started doing is I’ve started having a screen-free Saturday, where I can’t open my phone. I leave my phone in the office, and when I wake up in the morning, I can do basically anything that doesn’t involve the phone or going on Slack or any work stuff. Some great paintings have come out of that, I’ve planted some plants, and had some time to sit and stare into space. I think we forget how important that is sometimes. To just sit and stare at nothing. I agree that taking time for our mental health right now is so important.