Skills to develop as a Technical Lead

Photo by Miguel u00c1. Padriu00f1u00e1n on

In the Divergent Tech Lead post I talked about a number of different interpretations of what a Tech Lead means. Since the role is by no means straightforward – you may need to develop different skills depending on your current team.

In my journey I have focused a lot on gaining specialized Domain Knowledge, building up Technical expertise, working on effective Team organisation & Planning, and perhaps most importantly clear & comprehensive communication. Let’s have a closer look at what all these really mean.

Continue reading “Skills to develop as a Technical Lead”

What learning to play the piano reminded me about software engineering

A couple of months ago I decided I wanted to learn a bit more about music so I decided to learn how to play the piano. This is an entirely new world for me, as I have practically zero prior knowledge. Little did I know then of how similar my experience was going to be to when I started writing code!

Continue reading “What learning to play the piano reminded me about software engineering”

The Divergent Tech Lead

Some time ago I decided to do a little research in an attempt to figure out which are the most often requested skills that a Tech Lead is expected to have. If you are interested in that post, it’s here.

Photo by Miguel u00c1. Padriu00f1u00e1n on

Back then I was not surprised to see that there isn’t a universal set of skills that a Tech Lead is expected to have. Quite the opposite actually, different people perceive the role in different ways and have quite different expectations. This has led me in a definition I call the Divergent Tech Lead. But let’s start from the beginning …

Continue reading “The Divergent Tech Lead”

Go routines and thread safe data structures

A simple definition of Go routines is found the “Tour of Go” section about concurrency:

a Go routine is a lightweight thread managed by the Go runtime

Now if you have not come across threads before, threads is a way for a program to run parts of itself in some sort of concurrent way. In this post we are going to examine the differences between running a program sequentially, using Go routines and Wait Groups and we are going to talk about thread safe access to a data structure. So… Let’s get started ๐Ÿ’ช!

Continue reading “Go routines and thread safe data structures”

5 things to sort out as a multi-lingual software engineer

Photo by Pixabay on

Writing code and building software is fun no matter which language one uses. But what we have found is that there is no “language to rule them all”. There are a number of languages out there each with its own quirks, strengths and weaknesses and that’s just amazing.

So where does that leave us as software engineers? We will probably need to pick up more than one languages as we go along, but what’s the best way to go about that?

Continue reading “5 things to sort out as a multi-lingual software engineer”

Variable scopes and shadowing in Go

Photo by Eneida Nieves on

A lot of things in life are a matter of perspective and visibility and the same applies to variables in Go ๐Ÿ˜…. But what is a variable’s scope, how is it defined and what does it mean to shadow a variable in Go?

Let’s (very) loosely say that the scope of a variable declares where this variable is visible from ie. if we have declared a variable at the top of the file then it’s visible from within the entire code of that file.

We can go even deeper than that though and we can break this question down into Go specific terms.

Continue reading “Variable scopes and shadowing in Go”