Being a Tech Lead at AISG
It’s been a year since I joined AI Singapore and I’m grateful for the experience so far. I’ve been on a few projects up until now and gathered a lot of experience. My journey, however, is far from over and I have many things to learn.
What am I suppose to do? #
I remember when I started my job, I asked my supervisor: What is my role as a “Senior Engineer”? Am I a “Tech Lead”? Am I an “Engineering Manager”? What am I suppose to be doing?
At that time, I shared with him a great blog post by Pat Kua on the topic of different types of engineering managers and he pointed out that my responsibility is to be Tech Lead EM for the project. At the time, it was kind of a relief for me: I knew the “title” of the role I needed to play. But, to be honest, it took a year for the actual responsibilities to sink in. I think that’s learning on the job.
I’m going to be starting a new project very soon, and I decided to have a fresh look at my responsibilities as a Tech Lead in the 100E projects. I plan on writing a series of posts on the topic and hopefully, by doing so, organize my own mind as well.
A Tech Lead, an EM and a Mentor #
Before I jump into some of the aspects of being a Tech Lead that I’ve understood, I think it’s best I clarify why the “Tech Lead EM” (TLEM from now on) isn’t the exact stereotype that describes my job. Yes, I am the TLEM but first and foremost, I’m a mentor. Let me explain.
When a person enrolls to the AI Singapore Apprenticeship Program (AIAP), they are looking for a fresh start. They’re looking to upskill themselves and understand the world of Machine Learning (ML). They want to learn the ropes and see how a project is carried on from start to finish. When they choose to do a 100E Project, they’ve decided on learning about ML while doing a industrial real-life projects.
This complicates matters. As the person leading the project:
I have to rely on the apprentices joining my project to design and develop and at the same time, teach them and guide them in an area that they’ve had minimal exposure to.
I have to answer to the client/project’s sponsor who is relying on me for an ML product to be passed to them and also, I have to make sure that the apprentices have learned enough to be able to carry out their own projects in the future.
There is a need for right blend of guiding, teaching, hand-holding, management, and software development. If I make decisions on the project, I need to explain how I reached the decision. If I design, I need to help the apprentices understand what details I’ve considered when ending up with the design.
Practices #
The following are just a list of things that I’ve decided to consider for the new project. Although I’ve adopted the practices in my previous projects, but I’ve come to realize that some of them need more attention this time round.
(Note: This list is going to grow.)
Management Processes #
- Frequent 1:1s
- Meeting Note-Taking (Mainly Sprint Reviews)
- Frequent meetings with sponsors/clients for clarifying design decisions
- Technical Sessions
- Stand-ups
- Motivation
Software Development Processes #
- Code Reviews
- Pair Programming
- Branching Strategies
- Coding Style
- Pre-commit Hooks
- Document-Driven Design
- Design/Technical Sessions
- Functional Thinking/Programming
- Machine Learning Code Testing/Validation
- Error Analysis
- Error Visualization
- Automated Tests
Mentorship Processes #
- Continuous Learning of Agile Development Practices
I will be writing more about each of the items above and link the related posts.