Chris Jarling

2025 Wrapped

It is the last day of the year 2025. It’s dark outside as I sit down to write this. Everyone in the house is still asleep. I don’t feel like writing this. I’m not in the mood to look back or reflect, nor does it feel like there is much to reflect on.

This was probably the most demanding year in my life so far. Not because many good or bad things happened. It was just demanding in almost every area of my life on any given day. I don’t know if this is good or bad. I may know in a year or ten.

There is a good chance that sometime today, someone will ask my how my year was. I worked a lot and I spent a lot of time with my family. Both of those things I enjoy and both are important to me. I’m lucky I got to do both of them so much this year. I’m grateful I was able to make so much progress on both.

The days were long, but the months were short

I spent a lot of my year on autopilot, mentally. I did not write a lot. I can feel that and I changed that in the last quarter of the year. More journaling, more jotting things down, more publishing rough drafts somewhere in the internet. I need to write to keep my sanity.

Going into a new year always feels like stepping into the unknown. Going into 2026 feels particularly unknown. Tech jobs (and a lot of other aspects of life) began to change drastically throughout 2025 and the speed of change is only going to accelerate. It’s absolutely fascinating to witness something like this first hand.

I decided to listen to The Who while writing this. I don’t know why, I barely ever listen to them. Won’t get fooled again started playing as I finished the previous paragraph. This feels like a good song to end this with.

Pick up my guitar and play
Just like yesterday

Happy new Year!

Read more →

Theme of 2026: The year of Connection

This was my yearly theme of 2025 already, but I did not follow through with it. I want to give this another shot this year, because I think it is an important theme. I’m writing about it in public to hold myself accountable, hopefully.

Naturally this theme, like all themes, is adaptable and can be bent. It mainly acts as a guide. I’ll remain curious throughout the year and adapt my goals depending on where the year will take me.

However, as a guiding principle, I’ll state here that connection needs to happen with other people and that it is preferable for it to happen in person.

Connecting to people I don’t know is one of the hardest things in life for me. It also is the most rewarding, in many senses. Life is not meant to be experienced alone. We come to this world alone and we leave it alone, but everything in between thrives when it is shared with others. I would argue that most things in life only get meaning when they are shared. Not embracing human connection is rejecting life.

I never had many friends. I’m the type of person that has a handful of very good friends and I enjoy that. However, I noticed that the small number of friends I do have is shrinking. The potential reasons for this are plenty: I moved to another country, interests change when you progress trough life, it’s generally harder to maintain friendships once you also have a family and a full-time job. But it mostly comes down to me being bad at keeping in touch.
None of these reasons matter. What matters is that I’d like to have a bigger social circle again and that I’d like to strengthen the ties with my friends.

I also never had many acquaintances, but having a large circle of connections on a more casual level is often the cheat code to life. Everything we call life consists of relationships, in the end. While there might be rules and process on the surface, they all are overridden by relationships. The interesting job one might want to have? Of curse there is an application process and rule by which people are hired. But if you know the person who owns the company, the process does not exist for you. It is overruled by the relationship. This is true for all areas in life.

The third area of connection I want to focus on is my immediate family. I’m happily married, but too often take it for granted. It is easy to see marriage as the end state of a relationship, while in reality it still requires the same amount of care. Maybe even more, once you have kids and your main mode of operating is just handling the everyday.
The same goes for the relationship with my children: It is easy to take it for granted, since the relationship is formed the moment they’re born and they don’t have any choice for the first years other than making this relationship work somehow. They’re dependent on it. I want to make sure that we’re building a lifelong relationship that is not based on dependance or social norms but genuine connection.

So this leaves me with two main ideas for this year:

  • Grow and nurture the existing connections with my friends and family
  • Create new connections with people by being genuinely curious

This might change throughout the year. I may realize that doing both at once is just too much and that is okay. But both are very important to me, so I will set out to do both.

I did not write out any measurable goals or recurring habits just yet on purpose. Maybe I will write an update once I have them figured out or maybe I’ll just keep them for myself for now. I will, however, make a commitment to write at least one update towards the end of 2026. Just to make sure I cannot hide from myself if I don’t follow through.

Read more →

Mood camera

The other day, I learned about mood camera on Jasper’s blog. In the last couple of days, I’ve been having a lot of fun with it.

There are a lot of camera apps the allow you to take photos with a retro filter or apply it afterwards, and I’ve like this a lot ever since I started using Instagram (back then it was iOS only and none of my real-life friends had ever heard about it). In the last couple of years I used VSCO a lot, but have grown somewhat tired of it recently.

Mood Camera change that. It’s not because of the filters, though, but because of the random mode it offers. In random mode, the app will apply one filter at random after taking a picture. Like Jasper, I removed the black and white filters from the list of random filters because I don’t really like how much it changes the characteristics of an image.

What has made this fun to shoot with the most in the past few days is my rule of taking a picture of a think only once. Sometimes the added filter is quite nice and its a great picture. Sometimes its completely off and the picture does not work at all. This is close to a film experience with a dramatically shorter feedback loop. I stick to my rule of not taking another shot if the first one didn’t work very strictly. This kind of makes every picture a small exercise of letting go and accepting that I cannot take a shot of everything.

While writing this post, I checked the app’s website for the first time, where the author shares some guiding principles he followed while building the app. One of those reads

Encourage users to embrace uncertainty and lack of control, instead of obsessing over the perfect edit. This freedom from the pressure to produce flawless images, allows the photographer to rediscover the simple pleasure of taking photos.

The app definitely achieves that for me.

Read more →

Thoughts about the future of this website

When I started to write things on the internet when I was 16 years old, it was mostly oddball thoughts of a late-developing teenager and pictures I took with my digital camera. I’ve tried several forms of writing for websites I maintained since. Of course, I had a link-blog back in the day when everyone wanted to be Gruber. I had german and english websites, in some of those I tried to write more professional and looked into journalism-inspired posts.

The domain you’re reading this on now has been the one that was around the longest I think, and it never had a very clear concept. In the past few years, I had the feeling that I should publish mostly professional content on here, since the rest of this website is also rather professional as well (it even has a CV). I fail to do so consistently, both in terms of publishing frequency and content type.

Publishing professional content is work. I enjoy it when I do, but not every time I want to write something I want to put a lot of effort in. When writing professional content, I usually do some research and validation, go through multiple edits and think about where to share the content. And while I enjoy all of that, it feels more like work and less like a personal and creative outlet. The though of me somehow having to publish professional content on here hinders me of writing more.

Sometimes its just the silly things that I want to write but stop myself from doing. If you go through the post history of this, you’ll see that this does not always work. Some silly things come through still. But a lot of it just dies, and that’s sad.

Now, this domain is my name. I say that this is my personal website. I’m a professional for the better part of the day. But I’m also a dad and a husband and a son and a nerd and a somewhat goofy dude who, deep down, has no idea who he is. Is it fair for me to just allow this one part of me to shine through and only let the rest surface from time to time when I’m not able to push back for some reason? If I think about the websites that I enjoy reading the most, its always the ones that give me the feeling of getting to know a person behind it. The ones that cover the full aspect of a human.

I don’t really know what this post is about and what my desired outcome is. I’m on vacation and its 5am. I woke up from a nightmare at 4am and couldn’t go back to sleep afterwards (apparently some aspect of my personality is also a 10 year old boy still). I had been thinking about this topic for the past few days, so I decided this is the perfect time to start writing and see where I end up.

Maybe this is just about me giving myself allowance to be a person that plays several roles. To be an actual human that is not only professional and has to be conscious about being professional on the internet all the time. Maybe that’s it. Maybe it’s the part of me that got me started with writing on the internet surfacing again and this time I’m not telling it its stupid and silly and I don’t want it around here. This time I’m embracing it, as a welcome guest, that can take place on this website, just as all other aspects of me, professional or not.

Read more →

How to split big Pull Requests

Here’s something I strongly believe: Small Pull Requests might take extra effort by the author to achieve, but they always pay off in productivity. I might elaborate more in the future, but that’s the basic idea.

Creating small Pull Requests is not always easy and straightforward. It requires more thinking, planning ahead and empathy towards your coworkers than just bundling all your changes into one big chunk. It becomes easier as you get more familiar with a code base and the problem space because you can formulate a clearer structure for solving a problem in your head upfront rather than figuring things out as you go. But even with a lot of experience, you occasionally end up with a big Pull Request that would benefit from being split into smaller chunks. Let’s explore how to do that.

Before we do anything, let’s do some thinking: What parts of this can actually be reviewed and merged independently? How are the different parts of our solution connected to each other? If you realize that you cannot split anything at all, this might also be a good chance to think about your solution: Should the single parts be more separated? (The answer to this can also be ‘No’, but I think it always is worth asking the question)

To make this less abstract, let’s look at an example I faced the other week. It is simplified in some aspects, but was an actual situation I found myself in that gave me the idea for writing this.

The plan

I added a new page to one of our flows. This page needed some data and it was only accessed by a route handler in Next.js. After building everything I needed, I had:

  • a page.tsx file with tests
  • changes to an existing data.dto.ts file and its tests
  • changes the route.ts file that would add the page to the actual user flow
❯ git status -u -s
 M app/my-route/route.ts
 M app/my-route/route.test.ts
 M data/data.dto.test.ts
 M data/data.dto.ts
?? app/my-route/new-page/page.test.tsx
?? app/my-route/new-page/page.tsx

Let’s think about how those files are connected and their impact on our production application.

  • The route changes depend on the page being present. The route changes also make the page available to users, essentially “releasing” the feature
  • The page needs the changes to the DTO in order to work (it needs to fetch and display this data)
  • The DTO has no dependencies to other changes

This leaves us with a clear plan: We can split this Pull Request into three smaller ones, stack them and release them to production one by one in order. I like to merge them directly into our main branch instead of each other to keep the diffs small.

Our new Pull Requests will contain:

  1. data.dto.ts & data.dot.test.ts
  2. page.tsx & page.test.tsx
  3. route.ts & route.test.ts

With this plan formulated, let’s look into the execution.

Moving changes between branches

The branch with all changes displayed above is called my-feature. We now want to create three new branches and distribute the changes accordingly. This means we essentially want to copy changes from one branch to another.

As always with Git, there are multiple ways to achieve that. If you were really disciplined with your commits, you may be able to just cherry-pick the SHAs from your source branch. I wasn’t, unfortunately, so I needed to find another solution.

There are some more adventurous ways like git reset or git format-patch, which I don’t like to use here. git reset risks unintentionally losing changes if not used carefully. Similarly, git format-patch feels heavy-handed for small tasks. We can get everything we need using git checkout just fine, but the command is a bit overloaded.

The alternative I like to use is git-restore which exists explicitly for this use case:

Restore specified paths in the working tree with some contents from a restore source

Let’s create a new branch that is branching off from our default branch (likely main or master):

git checkout main
git checkout -b my-feature-adapt-data-dto

From this branch, we’ll use git restore to copy over the files from our feature PR:

git restore --source my-feature data/data.dto.ts data/data.dto.test.ts

which will leave us with a working state of

~/dev/tmp/restore-demo my-feature-adapt-data-dto*
❯ git status -s
 M data/data.dto.test.ts
 M data/data.dto.ts

Now we can commit those changes and open a PR that is very small in scope. Easy.

We’ll repeat that for the other blocks of changes that we identified, .while making sure each new branch builds on the previous one to maintain a logical order (branch-1branch-2branch-3). Otherwise the diff will become bigger than necessary again.

At the end of this, we will end up with three small Pull Requests that are easy to review because of their limited size and scope. It took some thinking from our side, but will cut down heavily on review time, making the overall feature delivery faster. Plus, our teammate will be thankful for making their job of reviewing easier.

Read more →

34

Today marks the completion of my 34th year on this planet. I don’t have 34 life lessons or things I learned in the past year that I can pull out of my sleeve, unfortunately.

Here’s one thing I learned, though: Even if things don’t make sense, just keep going. In his famous Stanford speech, Steve Jobs said you can only connect the dots looking backwards, and he’s right about that. It has been probably 10 or more years since I first heard this speech, but only now I start to understand it.

A lot of things will not make any sense if you are in the midst of them. You might wonder how any of this will ever be useful or bring your closer to where you want to be. You have to trust in yourself that it will all work out in the end. That you are capable to do something that will help you do some other thing in the future.

The thing I learned for myself is that what I think where I want to be is very limited in perspective. I don’t know half of the places worth being I could end up in. They exist, but you only learn about them by doing. Some of them you create by doing a certain combination of things.

What I also learned is that things will only ever make sense for a brief period of time until they stop making sense again. I used to not like that fact, but it is a good thing, really. It means you arrived somewhere and decided you want to go further still. You’re still growing.

My life advice for you (not that you asked) is to embrace the chaos, the feeling of uncertainty, the unknown.


In other news: I still don’t enjoy my birthday. I don’t like the idea of being celebrated for the achievement of not dying.

In my 20s, I thought this would give my character an edgy touch. Turning 30, I thought that’s just how I am. Now, I think that there is an underlying reason for this. I think I struggle with the idea of people celebrating and showing affection for no reason. Non-transactional. I guess some part of me does not feel worthy of love.

So that’s another uncomfortable thing to think about. But I think if I’m uncomfortable with it long enough, there might be something worthwhile coming out of it. Maybe I can enjoy my 35th birthday.

Read more →

Approving by default

A couple of weeks ago, I came across a podcast episode by Ryan Peterman (which I didn’t know until then, but highly recommend if you’re interested in programming, organizations and career development) with Jake Bolam, who is an IC8 (Principal Engineer) at Meta. I enjoyed the entire episode a lot and would recommend listening to it, but one idea in particular stood out to me.

Jake mentioned that he always approves all Pull Requests he reviews. He goes through them, he notes his remarks, but he always approves them. That goes as far as approving something that might break production if merged unaddressed.

My initial thought was that this was crazy. We use GitHub at work and it gives you three buttons, “Approve”, “Comment” and “Request Changes”, probably for a reason. Why only use one of them, especially if you notice big flaws?

But as I often do with ideas that initially sound crazy to my, I gave it a shot, just to see if there is something to it. I’ve been approving every single Pull Request I reviewed for the past couple of weeks now. This post is about why I will continue doing it.

The team

I think initially, this caused some confusion in my peers. Usually, we would approve only if there are nitpicks that we did not feel strongly about. As soon as there was something “bigger”, we usually comment (which will not allow the author to merge the PR) or request changes (which does the same, but adds a lot of red text that screams at you). There is another argument to be had about the differences of using “Comment” and “Request Changes”, but this is not the place for it.

When I started doing this, I did not tell anybody, I just started. There were now instances where I commented that something would not work in production or was clearly different from how we usually do things, but approved it anyways. Coming from our current workflow, this was somewhat unintuitive. However, I did not get any personal questions about it either, so it does not seem to be such an outlandish idea after all.

Sometimes, especially in the beginning, people would re-request a review after they chose to address some of the things I mentions, following our current approach. I feel like this has happened less and less over time, probably as people became more used to this approach.
What is most interesting to me now is figuring out wether or not my peers will follow the same approach or not. This will likely be the best metric to figure out if it is useful or not.

Trust

What I like about this approach is the amount of trust it communicates. What it says is “Hey, here’s a thing I think, I trust you to make the best call here, I won’t block this being merges artificially because I don’t think I have to control your work.”
Of course there are instances where we discuss things or people want my opinion again after changing the solution, but I trust them to pull me in, if needed. It also makes the release process much faster, because everything is already approved, you can just merge when you’re done.

For that to work, I have to be very clear in my communication. First, I have to make sure that the comment I’m about to add actually provides value. I have deleted a lot of comments half way in the past weeks, because I realized it was just my personal preference on a solution that would not change the outcome at all. Keeping the noise down is essential (I think that is true in general).
When I comment something, it’s important that my peer has no doubt about wether what I mentioned is just a “in case you didn’t know, we sometimes solve it like this but I don’t feel strongly about doing it that other way here” or a “if you solve it like this, it will break production”.

This approach helps me to level up the quality of my reviews a lot. If the comments are written well, this can also remove a lot of discussions where you are just trying to figure out who feels more strongly about a thing. Be design, my approval already means I feel less strongly than you. So if that’s not the case, I need to make sure that is clear in my comment.

Ownership

What I like so much about this approach, in general, is that it removes this artificial safety layer. If you feel like you’re working in a team that really needs to be able to block each others’ Pull Requests because otherwise there will be too many issues pushed to production, this is a problem in your team, and you’re not solving it by adding a process in a software you’re using.

If you are commenting about topics that you think are really important, but your peers just ignore it and merge anyways, this is a great indicator that your values as a team don’t align. This is a nice chance to talk about this friction and figure out a path forward that the team agrees on (please not that this may mean it will just not go your way. If this makes you feel nervous, this might also be a great indicator that you have something to work on about yourself).

I’m working exclusively with senior engineers at this point, and you might say that this would not work with mid-level or junior candidates. I think it would work even better. People grow and learn if you give them a lot of freedom and responsibility. A senior engineer telling a junior “Hey, I’ve spotted this thing in your code that will totally break the system, but since you now know about it, I trust you to fix it before you merge this” will make for a much more impactful learning in contrast to “Here’s an issue, try to fix it and I will check in again and tell you when I think you did it right”.

You might say that not everyone has that much agency or level of care. And that’s fine, I get that. Depending on the team you’re building, either this practice can be a nice indicator on wether or not someone fits in the team, or it does not work for your team at all. I prefer to work on teams where this works.

Read more →

2024 Wrapped

2024 has been an intense year for me. It stretched me in ways I never expected: more stress, more growth, more life squeezed into twelve months than I thought possible. It felt both endless and fleeting, as if it lasted three years and only three months, all at once.

There’s plenty to reflect on, but this post isn’t about deep reflection. That will come later and I might share it or keep it private. Today, I’m simply taking inventory.

In a nutshell

I think that’s the short version of the year. It mostly brought a lot of change with it, which probably made it so stressful.

I wouldn’t want to trade this for a calmer year, though. I feel this constant change forced me to grow and if I’m being honest, just between you and me: I think I need that to thrive. Discipline gets me far, but real growth? That comes when I put myself in situations where I have no choice but to adapt and evolve.

I said I won’t do reflection in here, so I’ll keep it at that for now.

Read more →

Transitioning to the Management Track

As of November 2024, I have officially transitioned to Engineering Management.

I acted as a stand-in after our previous Engineering Manager moved on for a while. In the beginning of November, I’ve asked my manager if we could make it official: I’m no longer an IC, for now at least1.

This post serves two purposes:

  1. To document this major change. It’s a personal marker for reflection, capturing how I feel now so I can revisit it in the future and see what’s changed.
  2. To share what I learn on the way, much as I’ve done with programming. After six months in the role, I don’t claim to have profound wisdom, but I can write about what I learned in my transition, along with tips I’ve gathered from peers, my manager, and reading along the way.

We’ll start with a little bit of a personal story here, so if you’re more interested in the practical lessons than my personal journey, feel free to skip ahead.

The personal part

Looking back, I couldn’t have asked for a better start as an Engineering Manager, though I do miss being managed by my former EM, someone I deeply respect. Acting as a stand-in provided a nice safety net: It allowed me to experiment with the role without fully committing, knowing I could return to being an IC if things didn’t work out. That reduced the pressure I typically place on myself to excel right away.

I think the experience went well, but even if it hadn’t, the fallback was clear: “Thanks for keeping the ship afloat until we backfilled the role.” This freedom allowed me to focus on learning and absorbing the nuances of the job. However, I’ll admit there were limits to how fully I could embrace the role while keeping the door back to IC open. For instance, I hesitated to engage deeply in career counseling. Shifting the team dynamic in that way felt risky when there was a chance I’d soon return to being a peer.

When I officially stepped into the role, I was thrilled (and still am!). Working with people is vastly different from working with computers. Computers, as complex as they can be, are deterministic: they behave predictably if you understand their systems well enough2. Humans, however, are anything but predictable. You might leave a discussion feeling like everything is on track, only to wake up the next day and find the situation has completely shifted. Why? Maybe someone didn’t sleep well. Maybe they had a great conversation with someone who offered new perspectives. Or perhaps their mood simply changed. It could be anything. As a manager, your job is to uncover what’s changed and guide people back onto a positive trajectory. It’s an intimidating task, but it’s also one of the most fascinating parts of the role.

While it’s exciting, the job is also demanding in ways I hadn’t anticipated. As an IC, I often took programming problems home with me, but those were puzzles to solve, intellectually stimulating and self-contained. Taking people problems home is a different matter entirely. These problems affect real lives, so the stakes are higher. For me, this was a difficult adjustment. As an introvert, I ended most days completely drained. Being an IC recharged my social batteries; being an EM depletes them. I’ve had to develop strategies to manage this and prevent it from impacting my personal life too much. It’s an ongoing area of focus for me.

After six months of experimenting and taking on increasing responsibilities, I decided to fully commit to the role. I’m incredibly grateful to work in an environment where this transition was supported at every step.

What I learned

Stepping into this role, I was fortunate to receive guidance from experienced technical managers within Gigs, as well as from external resources like books and essays. There was a lot of advice, and I did my best to absorb and document it all. In here, I want to focus on the ones that seems most interesting or surprising to me.

You are now a multiplier, not an addition

The first piece of advice my manager gave me when I stepped into the role was this: Your impact is no longer additive—it’s multiplicative. This is also reflected in many books and essays on management, and it fundamentally reshapes how you think about your contributions to the team.

As an IC, you’re another pair of hands writing code. As a manager, you step back, observe, and look for opportunities to amplify the team’s effectiveness. You turn knobs and pull levers to enable the team: removing blockers, fostering collaboration, or simply helping someone see a clearer path forward. I don’t think it’s the title or unique skillset that allows you to do that. It’s the perspective you gain by having the possibility to step away from the day-to-day grind of shipping code.

One concept I found particularly engaging is thinking of this role in terms of measurable impact. Imagine a team of five engineers, each contributing a productivity level of 1. When one becomes a manager, the team’s direct productivity drops to 4. To offset this, the manager must multiply the team’s output by at least 25% (turning that 4 into 5) to break even. Anything beyond that is a win for the team and the organization.

If anybody knows how to reliably measure productivity by the way, please let me know.

Everything is about people

This one was surprising to me. I expected a significant part of my role to involve people topics, like conducting 1-on-1s and ensuring the team could collaborate effectively without being blocked by personal issues. But I also work on non-people-related tasks, such as aligning projects with our PM, doing early technical explorations or working on team processes. Surely, not everything in this job revolves around people, right?

Nope. It does.

Every issue I’ve encountered so far ultimately traces back to people. And when you think about it, this makes sense: every decision, every challenge, and every success is the result of people working together. People bring different ideas, agendas, and perspectives to the table. Sometimes these align beautifully; other times, they clash. Resolving these conflicts becomes much easier if you’ve built strong relationships.

One piece of advice I received that stuck with me is this: always err on the side of people. Most people act with good intentions, even if their methods or priorities differ. The key is to understand where they’re coming from, identify the disconnects, and figure out how to move forward together. It’s not about who’s right. It’s about finding a shared “right” that aligns everyone toward the same path forward.

You have to learn to say no

The job is exciting, and if you’re like me, you’ll want to do everything. You’ll want to do a great job and dive into every opportunity that sparks your interest. But the reality is, there’s simply not enough time, and you need to communicate that.

Saying no is never easy, but it’s important. To be honest, I’m mostly writing this one down as an active reminder to myself: This is advice I’m still learning to follow. My manager once described my new role in a way that resonated: You’re now a team of one, with your own backlog. And there are always more items in your backlog than hours in the day.

There’s an interesting quote by James Sexton on this when he was in the Lex Friedman podcast:

You know, the feeling at the end of the day when all your homework or all your work is done, and you just go, “Okay, it’s all done now, and I’m going to go home.” You’ll never have that feeling ever again ever. You’re just going to everyday go, “All right, it’s enough. It’s enough. I got to get out of here.”

Because with every one of these cases, you could stay up 24 hours focusing just on it. So, you have to have the discipline to go, “No, that’s it. I’m done for now. I’ve done what I could do today, and now I’m going to sit and read for a half an hour. I’m going to watch this show for a half an hour. I’m going to have this meal,” because It’s never done. So, that’s challenging. That’s a hard part of this job […].

This isn’t a bad thing, it’s just the nature of the work. The key is to accept that you can’t do it all while ensuring the important things don’t get left behind. It’s a balancing act I’m still figuring out, but acknowledging the limits of your time is the first step.

Delayed feedback loops

Working on a product (should) come with short feedback loops. You ship something and know almost immediately if it’s broken. Within hours, stakeholders might identify areas for improvement. Within days (or at most weeks) you know whether the feature made an impact on the product and its users.

Management, on the other hand, operates on a much slower timeline. My feedback loops now span weeks, sometimes months. When I give someone feedback, they don’t instantly adapt their approach. It takes time. Maybe we need to talk a few times about the thing to get to the bottom of it. If the person acknowledges the issue as an issue and is willing to change their behavior, this process takes time as well. Progress is incremental, almost imperceptible. Then, perhaps two months later, you realize the thing you addressed isn’t happening anymore. But even then, you can’t be certain whether your input was the deciding factor.

A concrete example: a few months ago, I began documenting our technical debt. Starting this process took a few days of focused effort, and I now spend an hour here and there maintaining it. At the time, I believed the investment was worthwhile, but I couldn’t be sure. Now, months later, discussions about tech debt have expanded across the organization, and having a document has been immensely helpful. Just recently, a team member referenced it in a design document, so I assume that it is helpful.

You will look into the abyss

As an engineer, you usually have at least one organizational layer above you that puts a lot of effort into structuring the information you need. This layer ensures you can focus on your work without being overwhelmed. Transitioning into management means stepping into that layer. This means the information you have access to and have to deal with is far from structured: it’s messy, fragmented, and sometimes overwhelming.

Someone once referred to this as “the abyss,” which I find to be a fitting description. I’m not sure who it was, but when they told me about it, they called it “the abyss”. It’s a vortex of stakeholders, ideas, roadmaps, and priorities, all in varying states of clarity. Before anything becomes actionable for your team, this must be shaped into something coherent that aligns with the organization’s goals. There are multiple people involved in this process, but chances are that as an Engineering Manager, you’re the first technical point of contact in this process.

While this sounds intimidating, it’s also one of my favorite parts of the job. Watching an abstract idea evolve into a clear plan, passing it to the team and hearing them say “yeah, that makes sense, we understand where we’re going with this and why” is incredibly rewarding.

This also does not mean the the organization I work in is particularly chaotic (I think the contrary is the case). I think this happens in every organization, eventually, naturally.

If you make a mistake, own it

There’s this myth that leaders must always know everything and never make mistakes. That’s nonsense. Every leader (every person, really) will eventually make a mistake. The real measure of a successful leader isn’t perfection. It’s ensuring you make more good decisions than bad ones over time.

When you do make a mistake, you must own it. Owning your mistakes fosters a culture of accountability. Of course, the ideal scenario would be to avoid mistakes altogether. But since that’s impossible, the next best thing is a team where mistakes are acknowledged and addressed, rather than downplayed or hidden. By taking ownership, you can often minimize the damage and even turn the experience into a learning opportunity.

This culture cannot be created solely by leaders who own their mistakes, but leaders often set the tone in an organization. As role models, their behavior carries extra weight. Leaders often have some authority, which causes them to act in a more public way. How they handle mistakes sends a message.

The takeaway is simple: act the way you want everyone else in the organization to act. Own your mistakes openly, and you’ll create an environment where accountability and growth are valued.

You will be the one making the hard decisions

Remember that time you had a coworker acting like a jerk, so you reported it to your manager? Then you went back to coding, and a few weeks later, you realized, “Oh, Bobby’s not doing that thing anymore. Nice!” Guess what: that’s your responsibility now.

It’s now up to you to figure out if there’s something to the report or not. It’s your job to have the hard conversations with Bobby. And if his behavior doesn’t improve, it’s also your job to decide what happens next. Ultimately, you might be the one telling Bobby he no longer has a job because his actions are harming others3.

The safety net you had as an IC is much thinner now. Yes, you still have your own manager, and you can lean on them for guidance and support. But in a sense, as a manager, you have no human rights. You’re no longer protected from the messiness of these decisions. You’re the one responsible for resolving them.


These have only been a few of the lessons that I picked up along the way so far, but it are the ones that I could already see evidence of being true in my journey. Moving from IC to people management has been a big shift, sometimes messy, sometimes rewarding, and always a little unpredictable. I’m looking forward to learning more about this and becoming a better manager.

Footnotes

  1. This does not mean that I intend to switch back any time soon. But there is the engineer/manager pendulum.

  2. They might not always seem deterministic. If often see myself wondering “why is that behaving this way”, but I think if you’re able to understand enough of the system around it and keep zooming out, eventually you’ll understand and if the exact same conditions can be replicated, the computer will behave the same again.

  3. I should make clear that this is not a real example of what happened in my current team, but something I witnessed as an IC prior in my career.

Read more →

Things I enjoy about Denmark, Part 1: Electricity

I’ve recently relocated to Denmark from Germany, and even though its a direct neighbor, there are some things that are vastly different.
I want to write those things down when I notice them and while they are still new and exciting, before I get used to them.

You may have noticed that I was very optimistic and labelled this article “Part 1”, indicating that this will be an ongoing series. I really want this to become a series. Maybe it will happen. If you read this a year after it was published and there is no second part to this, please do annoy me about it.

With that out of the way, let’s jump into the first thing that I enjoy about Denmark: Electricity.

Electricity Pricing Models

In Germany, there are a few new electricity providers that offer variable electricity prices. Variable electricity prices in of itself are nothing new. Electricity is bought at an exchange and prices vary depending on supply and demand: If a lot of people need electricity (i.e. in the morning or evening), prices rise. If there is low demand for electricity (i.e. because a lot of people are at work/school), prices drop.

Historically, German electricity providers did not pass this fluctuation in price on the the customer. You usually have a contract with the provider for a set price per kWh. Those new providers allow passing on the variable price. That’s nice, because when you work from home you can just start you washing machine when prices are low and save a few bucks.

However, what’s needed to be able to profit from those prices is a way for the provider to know how much electricity you used when. In Germany, you usually have to install special hardware that allows monitoring your energy usage on your electricity meter. This has to be connected to Wifi, which prevented me from using it in my old apartment, since the electricity meter was located in the basement.

This is not the case in Denmark. Basically every provider offers both fixed and variable prices, and without the need to install anything. Why? Because in Denmark every electricity meter is a remotely read smart meter.

Smart Electricity Meters

Since the end of 2020, every household in Denmark has a smart meter installed that is operated by EnergiNet, an independent but publicly-owned company that runs the Danish energy infrastructure (by the way, the executive order that every household in Denmark should have a smart meter was issued in January of 2019, so it took about 2 years for this to be done).

For me as a customer, that means a few things. First, I’m able to be use variable prices, since my usage will be measured anyways. I can now just check my energy providers website for todays (and tomorrows) electricity prices. For today, this tells me that prices are high in general (so maybe I want to skip laundry) and are very high in the evening (7pm and 8pm, so I would definitely want to skip laundry there).

Another cool thing is that I can easily check my current consumption in almost real time (there is usually about 24 hours of delay) online without having to walk to my meter and enter a bunch of numbers. Here’s what we’ve used to far since moving in:

Initially, we had a lot of laundry and dishes to wash, so the first few days our consumption was quite high. It’s gone down a little now.
I don’t really get much out of this currently, as our consumption seems to be on the lower end for a family of four, but it’s nice to look at it every now and then and see how we’re doing.

Availability of data

Also very interesting is the fact that all of this data is publicly available. For example, here is a dataset for the spot prices of the next day. This allows apps like Min Strøm to exist. This app not only shows the current and upcoming prices, it can even show how electricity is currently generated.

At the time of writing this (in the middle of the night), most electricity comes from wind (is sure is windy tonight) and biomass. Over the day, about 50% usually comes from solar.

For Danes and probably other Scandinavian folks, this is probably nothing new. But I was absolutely flabbergasted that this is just the norm in Denmark.

There also seems to be more you can do with your smart meter in connection to your CPR number. Unfortunately, I’m still waiting on mine, so I’ll likely come back to this topic in the future.

Read more →