The COVID-19 pandemic has been the toughest test that I had to endure in my work life. Unlike many others, I did not lose my job however I was the person on the other side of the table having to give the bad news. It is with much sadness, I had to let go of more than half a dozen of my talented engineering staff since the start of this year. It wasn’t an easy thing to do, however, it allows the company to survive this pandemic and come back on the other side of it stronger.
At CellOPark, I lead the technical side of things across multiple products. In a nutshell, I am responsible for the following, for each product:
- liaising with the product owner about feature roadmap,
- liaising with the CTO about technical roadmap,
- release engineering,
- code reviews,
- prototyping new ideas,
- keeping up with new tech,
- one-on-one with team,
- interviewing candidates,
- handling production issues,
- making technical debts disappear,
- having architecture discussions with the team, and
- writing code.
The list of day-to-day tasks looks quite overwhelming, but I assure you it is not all that bad. Its all about letting go. I’ll explain.
What is important is seldom urgent and what is urgent is seldom important.
I didn’t start my role by being in-charge of all products. I was initially responsible for one product. As I got myself familiar with it and the business aspects surrounding it, I was able to formulate a technical plan as to how to attack the problem at hand. The Cynefin model was quite a big help. Seeing this plan thru is how I managed to gain confidence in myself and the team, which in turn allowed me to move on to the next product.
I pride myself on my organisational skills and thoroughness. Being thorough takes a lot out of you. You want to make sure that you spend the time on things that really matter. Overtime I learned a way to classify pieces of work that required my immediate attention as to those that could be passed on to the team to handle. I recently found out that the approach I am utilising was initially introduced by President Dwight Eisenhower as Eisenhower Matrix.
The matrix is split into four quadrants. I’ve classified some of my daily tasks within these quadrants to give you an idea of how this could help you manage your workload. I personally find it important to work on items that are on the technical roadmap. I equally find it important to instil a good coding discipline in the team and be available for them for help and discussions. My secondary priority is help eliminate manual work that is involved in day-to-day operations such as deployments, releases and manual testing.
“There is no code faster than no code.”
You do not always know which tasks can be delegated. Hindsight is a amazing thing, if we learn from it. For example, my team is very capable of investigating and handling production issues when they are armed with the necessary tools and knowledge. My goal is to make sure that they have what they need, so that I can relieve myself from this duty. However, there are cases where my presence is required, but this is an exception and not the norm.
An important lesson I learned, was that not every email is worth your time and not every technical discussion needs to include you. We need to pick and choose our fights.
I hope that my findings has helped you with your endeavour.
This article takes the aspects discussed in Are you a tech lead? and tries to define what it means to be a senior Software Engineer.
Senior Software Engineer is someone with experience, a team player and takes ownership over their work.
Lets put each of those items under the microscope to understand them better. Continue reading “Are you a Senior Software Engineer?”
This guide will help you get started with developing React Native apps in Windows, hopefully without too much hassle. I’ve included screenshots and screen-gifs where required to make your life slightly easier. We will be deploying our app on a virtual device setup by Android Studio.
This is a great article if you are interested in understanding the problem behind updating states asynchronously in React using setState and finding out how to do it properly. He also included a pen by Sophia Shoemaker that demos this problem and the solution.
ASP.NET Core had its configuration system re-architected from being limited to reading from XML files to reading configuration settings from any key/value based settings files such as JSON, INI and XML.
In this article we will explore the minimum amount of work required to read these settings out in your ASP.NET Core application. This includes taking a look at how it behaves when deployed in Azure. Continue reading “ASP.NET Core AppSettings & Azure”
If you are a .NET developer who has been pushed into the deep-end to learn React like yesterday, this article will be your lifebuoy. Using the concepts that you are already familiar with as a .NET developer, I will try to explain how React and Redux sit together and their full lifecycle. After reading this article, you will be able to follow what your fellow developers are talking about during the Daily Scrum Meeting and not feel left out.
This article is just like the lifebuoy, it is not going to swim you to shore but will keep you from drowning.