I grew up in India and was introduced to computers fairly early in my life. I quickly became the geek in the family, spending hours on the computer mostly playing games! Every so often I’d try (but rarely succeed) to upgrade the operating system (the most disastrous one being my attempt to upgrade to Windows ME).
I am lucky that I persevered with my passion for technology and turned it into a career as a software engineer. I studied software engineering at the National University of Singapore and joined Thoughtworks Singapore as a graduate consultant in 2012.
Outside my interest in code, I spend most of my time dabbling in photography, watching movies or tending to my small home garden.
A tech lead is essentially another engineer on the team who is involved in the delivery of working software. That involves working on stories, shipping code to production, and helping the development of other engineers on the team.
I’m also responsible for clearing roadblocks to ensure the team stays productive, alongside working with, and influencing stakeholders technical or otherwise. Some of these activities do take me away from being hands on all the time, but that’s ok.
It always starts with a coffee, followed by catching up on email to ensure I am on top of my day. This is followed by standup so that I can provide any updates from the previous day and ensure the team are in sync. From there, my day is largely difficult to define. Some days are heavy on the meetings, depending on the nature of the engagement, or fairly free allowing me to get my hands dirty with code or architecture diagrams.
A to-do list goes a long way in helping manage my day well. I usually jot down tasks on Google keep so that I have it with me on the go.
Every new client engagement is akin to a new job so that can be a little challenging. You have to engage not only new stakeholders, but also a new team of Thoughtworkers - some of whom you may not have worked with before. Building trust and respect with my clients and team can be one of the most challenging aspects of the job.
As tech lead I’m usually one of the first on the ground, and one of the last to roll off so a large chunk of the responsibility to set the team up for success and establish good client relationships sits with me.
The most challenging is also one of my favourites, that every new client engagement is akin to a new job. The potential for learning and to have an impact is huge. The frequent change (while challenging) keeps me on my toes, and exposes me to different tech stacks and domains. Being involved with initiatives that are critical to business success (that’s what Thoughtworks is usually brought in for) creates high impact opportunities.
I think there are two metrics that are crucial - the success of the delivery and the health/happiness of the team. The former ensures client expectations are met, which involves maintaining a delicate balance between scope creep, cost, timelines and desire for technical excellence. A good indicator of success for the latter is the morale and motivation in the team. A healthy motivated team is crucial to the success of the former.
The ability to balance the expectations of your stakeholders and team is one of the skills a good tech lead needs to master. Empowering the team, celebrating the small wins and helping facilitate (and not shying away from) tough conversations. These are all easier said than done, which is why allowing yourself room to go on the journey is also important. Knowing when to ask for help (from your team or others) is key to success.
And of course not forgetting to keep up with code along the way.
Staying in touch with code is critical, so I have employed a few different strategies to do this. I’ll block chunks out of my calendar to make sure I get some time to work on code. When time isn’t on my side, I’ve found trawling the commit logs and reading updates to the codebase on a daily basis the most effective way to watch the evolution of code.
As tech lead my focus does skew towards clearing roadblocks for the team and working with our stakeholders, which depending on the project and client can be all-consuming.
The industry has seen large scale disruptions in recent years. The cloud-native ecosystem and the rapid proliferation of platforms like Kubernetes have accelerated this.
One of the more challenging problems today is understanding how financial organisations make their governance processes (internal and external) more nimble (read: automated) while not compromising their effectiveness.
Financial organisations have a huge responsibility to manage risks aggressively, while satisfying their consumers expectations for faster delivery.
Not automating the governance of software delivery erodes the agility that platforms like Kubernetes and public clouds provide. An interesting problem to solve.
We are currently trying to solve the problem I mentioned above and leverage Google Binary Authorisation to help automate governance of the software supply chain to Google Kubernetes Engine (GKE). While the potential of GKE is well understood, I am quite excited about the impact Binary Authorisation can have on the organisation (and maybe one day the entire industry).
I think my colleague Robin Doherty captured my thoughts on this more articulately than I could express.
It has allowed me to grow personally and professionally in a way I didn’t believe was otherwise possible. Personally, the exposure to different cultures (most Thoughtworks offices, and by extension teams, are a melting pot of different cultures) has been a tremendously rewarding experience.
Disclaimer: The statements and opinions expressed in this article are those of the author(s) and do not necessarily reflect the positions of Thoughtworks.