Sudden realisation

Early last year (2019) I came to the realisation that I needed a change… I’ve been coding for a long time, doing iOS for the biggest part of my career, and at some point (even though I don’t consider myself an “expert”) it started to becomed a bit dull.

This was not for a lack of challenges, as there was always something new, e.g.:SwiftUI, Combine, Marzipan, iPadOS, you name it; but at one point or the other it lost some of the spark

In that moment it was VERY confusing for me. Since I can remember I always wanted to work with mobile devices. I even did my graduation project/thesis as an application for HQ Palm Pre1 devices for electronic/digital medical records… and here I was, MANY years later considering a change. Mind you it was not an easy decision, but I still approached my manager and told them how I was feeling and that perhaps I would like to try out more on BackEnd technologies.

I’ve had some time to play around with BackEnd technologies but perhaps this could be a good opportunity to dive deep into them. That year I had ventured a lot in GoLang2 and found it to my liking, so perhaps this was the change I needed. As a first step I went on a «trial» with the search team @ SoundCloud3. It was supposed to be for a few weeks but I ended up staying for a quarter in the team.

While there I manage to suggest and land some operational changes to the team and found it quite interesting; nonetheless I didn’t find doing BackEnd (although truth be told I didn’t manage to do much) as fascinating as I was expecting it to be. Long story short; I was back at Core Clients as a “cross-platform” engineer with an specialty on iOS, or basically back in square 1.

Change, the only constant

Not too soon after that (or even during, can’t remember the exact timeline) my manager got promoted to Director of Engineering for an entire new “organization” @ SoundCloud3. This was great and well deserved but directly translated to: my team was going to lose it’s manager, which in turns translates to: a new manager will join.

This was causing certain anxiety in the team as we were already a well established team & were wondering if the new manager would match the current vision and mission of the team as well as our ways of working, etc.

“fear to change” aside there was the slow learning curve of a new manager in our team. Ours is a cross sectional team that touches many parts of the company. We are embedded in an organization called Engineering Experience which focuses on the overall experience of the developers @ SoundCloud3 and as such we tend to touch (from a conceptual point of view) everything. This was on no account an impoossible task to ask of a new manager, nor is it a gargantuan one, it was simply another thing to add to the pile of things that were generating anxiety and restlessness in the team. One team member joked and said:

don't you want to be our engineering manager?

Guess what? No… I did not want to… I always wondered why people go that route when they start on engineering. Very recently my good friend Marcin4 tweeted the following:

This tweet totally resonates with everything I have always believed in up until that point in my life.

Not long after the announcement that my manager was getting the promotion, they approached me on one of our 1:1s and told me:

What do you think of a career in `Engineering Management`?
Considering what you told me about moving away (at least for a while) from programming and the new position that is being opened in our team; this could be a great opportunity for you to explore this.
Think about it and let me know.

Obviously this is me paraphrasing; but the gist is there: Think carefully about the opportunity, what this could bring for you, what this could “cost” me (in terms of leaving coding behind for a while) and all the things I could learn and how much I could grow. And again… up until then I never wanted a career in management.

Have I considered it before? yes… a few times I wondered if I would like to go that route and the answer had always been a big no.

I went home, talked it with the bed and the next morning it didn’t sound so crazy. So I talked with my manager and it was set.

On to the new path

Not going to detail everything that happened; suffice it to say I took the chance for a few months as a try out first… then later on it was made official and here I am… around a year later and still doing it.

Every week at the beginning, the end or both I would take some time to reflect on what I was doing and thought about a hypothetical scenario:

If I were to quit right now and look for a new job…
Would I go for a developer position or an engineering manager?

Most times than none it was a big “I DON’T KNOW”; as simple as that. I was enjoying what I was doing but I wasn’t sure if I was doing it right… some days it was hard, most days I felt lost.

Basically I’ve been training for my entire life for a specific job and now I was there in a completely new field, learning as I go. It is pretty scary and also you feel lost because all your “muscle memory” in how to do your job is oriented towards computers, algorithms and compilers.

As time progressed I started to feel more comfortable in the new role. I still felt lost and was happy to hear from well seasoned Engineering Managers that it was more than expected. The feedback cycles in development are quite instantaneous (sans Xcode because… well… you know) and fairly quickly you can gauge how good or bad you are doing. In management is a completely different story.

Feedback cycles

Feedback cycles of what you do take a long period of time, you implement a change today and you won’t be seeing it until a few weeks or maybe months later down the road. This from an engineering background is quite shocking as you are used to track your productivity by big numbers: how many PRs did I open, how many tickets did I close, how many lines of code did I remove, etc. Very easy to follow metrics.

One thing that my manager told me was that it was such a great feeling when you start something and the team adopts it and then when you are not around to guide them the team keeps working smoothly. That’s when you get to see the value of what you do.

They also told me this: at the end of a project it helps looking back and realising that it reached that point also thanks to you, to think about all the times that something happened and you were there to prevent it from reaching the team, blowing up or simply derailing the project. That helps give perspective and understand why this job is important in the first place.

Meetings

Another fun thing was, as an engineer I was your ”typical“ developer that hated meetings and avoided them whenever possible, as a manager I do find them extremely useful. It was a natural progression, before, meetings were IN THE WAY of my work, whereas now they are what allow me to DO my job.

I get to clarify expectations and solve issues in the meetings. When the team has questions or blockers I can get the answers and/or unblock them thanks to the meetings.

For sure my calendar is now a huge pile of colliding meetings, but I no longer see that and cry (well… not every day at least) and instead I can see where I can be more effective and useful.

Messing up

Got some valuable words from a person that has been in management for YEARS and definitely knows their way around the topic:

In engineering if you are a great engineer you mess up perhaps once a month. If you are a good engineer you perhaps mess up once every sprint. If you are a junior engineer you might mess up more than once a week. But when you are a manager you will mess up multiple times **a day**.

And as silly as it sounds, this gave me a lot of peace. I was afraid of messing someones career, or dropping the ball during a project, a planning, etc. There were so many variables and so many possible outcomes that it was mind numbing to think, yet, those words made me understand that opposite to coding, dealing with people is way more complex, there are no rule books and every person is different. It takes time to build a relationship with your team and to be able to understand each and every one of them and at the same time to be able to see how they are doing and know what could push them over the edge or not.

As I said, everyone is different and somethings that you are used to discuss in a certain way with one team member could make another angry or confused. Taking the time to know each and every one of them deeply will pay off faster than you would expect.

Not only you will feel closer to your team, you will be able to help them better by knowing them in detail.

What now?

So far the role keeps growing on me. I don’t think there’s a single day that goes by without me learning something about the position. Most days I end up my day feeling pretty tired, but that’s ok because when I look back those days, I realise I did many things that helped the team keep moving.

True to what I was told I mess up constantly. But I own it when I do it and learn from it. This adventure is a constant growing experience for me and can’t wait to see where this will lead me.

Maybe one day I’ll regret it and will go back to coding on a daily basis, or maybe I will cross entirely to the dark side… only time will tell.


  1. https://en.wikipedia.org/wiki/Palm_Pre ↩︎

  2. https://golang.org ↩︎

  3. https://soundcloud.com ↩︎

  4. https://twitter.com/krzyzanowskim ↩︎