# Alex Aitken > Technical and Engineering Leadership, Coaching, and Mentorship ## Posts - [Guardrails Are More Than Prompt Safety](https://alexaitken.nz/blog/guardrails-are-more-than-prompt-safety/): The nightmare version is easy to imagine. It is 2am. OpsGenie is paging you. A user-uploaded PDF contained instructions the model should have ignored, and now the system has produced an answer that could expose something it should not expose. Maybe that sounds dramatic. But the underlying problem is not exotic. A receipt, invoice, comment, or expense description is user-submitted content. Once it is extracted and passed into a model context, it becomes text the model can read. And text can contain instructions. That is the point where “guardrails” stops meaning “add a line to the prompt telling the model to […] - [You Do Not Fix Hallucinations With One Prompt](https://alexaitken.nz/blog/you-do-not-fix-hallucinations-with-one-prompt/): In the previous post, I wrote about deciding which parts of an expense workflow should be automated first. Some decisions are better handled with ordinary code. Some need model judgement. Some should surface information for a reviewer without making the final call. Over time, the goal is to automate more of the workflow as the system earns enough trust. But that creates another question: How do you make the decisions that genuinely need an LLM reliable enough for production? That is a harder problem than it first appears. The user does not care whether the system technically hallucinated, misunderstood the policy, […] - [The Hard Part Was Deciding What to Automate First](https://alexaitken.nz/blog/the-hard-part-was-deciding-what-to-automate-first/): The ideal expense workflow is one you barely notice. An expense is captured automatically. The right policy is applied. The supporting evidence is checked. Obvious cases move through without anyone needing to think about them. A person only gets involved when something genuinely needs judgement. I hate spending time submitting expenses. Nobody wants to spend time approving obviously valid ones either. That’s the end goal. But you do not get there by giving an LLM the entire workflow on day one and hoping for the best. That usually gives you mediocre results. Bad for the product and bad for the customer. […] - [The Prompt Had Too Many Jobs](https://alexaitken.nz/blog/the-prompt-had-too-many-jobs/): Prompt engineering is often talked about like it’s magic. Write the right words. Add the right examples. Tell the model to be careful. Tell it to think step by step. Tell it not to hallucinate. Tell it to output JSON. Tell it to be concise. Tell it to be accurate. Tell it to do everything. Add some pixie dust and et voilà. And, to be fair, sometimes that works. At least for a demo. But once you put AI into a real product, the prompt stops being a clever paragraph and starts becoming production logic. You cannot prompt your way out […] - [Intro to Machine Learning: Multiple Linear Regression](https://alexaitken.nz/blog/intro-to-machine-learning-multiple-linear-regression/): In the last post, we explored simple linear regression, where one feature predicts one target. That single line already gave us pretty good insights into relationships between variables. But real-world problems don’t just depend on one factor. Let’s take some examples: House prices are influenced by more than just size. Salary depends on more than just years of experience (even though we did see a pretty good simple linear regression there). When more than one variable contributes to the outcome, we move to multiple linear regression. Multiple linear regression extends the same principles as before, but with more predictors. The goal […] - [Intro to Machine Learning: Simple Linear Regression](https://alexaitken.nz/blog/intro-to-machine-learning-simple-linear-regression/): When I first thought about machine learning, it seemed like a scary topic. Coming from product engineering, I often heard about models, black boxes, and mysterious choices around which model to use. It felt inaccessible and mathematical. Recently, I decided to go beyond that assumption. To my surprise, a lot of it builds on concepts I had already seen in my MBA statistics class. The simplest place to start is simple linear regression, which turns out to be one of the best gateways into machine learning. Understanding linear regression is not just about drawing a line through data. It is about […] - [Interviewing as an Engineering Leader](https://alexaitken.nz/blog/interviewing-as-an-engineering-leader/): I’ve been through my fair share of engineering interviews over the past few years. I’ve looked at large companies and smaller start-ups like companies. Everyone has a different process, but there’s one thing in common: you need to have stories. Being a leader is being a storyteller. I’ve added some tips below to help you think about stories from your past that may be relevant to leadership interviews. This is written for engineering leaders who may be looking for their next role (their first in a long time) and don’t know where to start or how to prepare. It’s going to […] - [Managing Low Performers](https://alexaitken.nz/blog/managing-low-performers/): It’s hard when you have someone sandbagging your team. The underperformer is dragging everyone down with their performance – but it’s also hard to eliminate them. You know them, and you’ve built up a rapport. You know about their family and their struggles over the past few years. Ideally, we shouldn’t be here. Everyone should be living up to their potential, but we are human. We will make mistakes. We will have ups and downs as we take on different responsibilities. Maybe those late nights with a baby are taking a toll on their work at the office. Perhaps that second […] - [Getting Docker, React, .NET Core, Postgres, and Nginx Playing Nice](https://alexaitken.nz/blog/getting-docker-react-net-core-postgres-and-nginx-playing-nice/): I wanted to write a short article on how to get all four components working so you don’t need to install a bunch of libraries on your machine. The reason I’m doing this is so that I can work on my frontend, backend, and SQL independently. The Nginx acts as a reverse proxy for my services. When I was using my Google Foo to find the solution, it seemed like there was no single place where the answer lay. There were explanations for all sorts of different scenarios but not like mine. As well, I also did some updates over time […] - [What Makes a Good Software Engineering Manager?](https://alexaitken.nz/blog/what-makes-a-good-software-engineering-manager/): We’ve considered what we value as an engineering manager (or leader). How can you do performance appraisals without a concrete framework for evaluation? How do you evaluate those wishy-washy soft skills that are so clearly not objective? And does being a good manager mean that you will perform well? Today, I’ll discuss engineering management. What does it mean to be a manager? We’ll examine some strategies for your growth. How might your managers be evaluating you? What is a (Software) Engineering Manager? Being a middle manager often referred to as a Software Engineering Manager or Software Development Manager, is hard! You […] - ["Am I There Yet?" Said an Engineer](https://alexaitken.nz/blog/am-i-there-yet-said-an-engineer/): How do you know if you’re ready to switch careers and become an engineering manager? That question has been asked often since I made the switch several years ago. I’ve written previously about how I trained engineers to be managers, but that’s only part of the problem. The better question is are you ready for the change? Have the Conversation This isn’t a comprehensive list of how to become an engineering manager. What I look for in managers will differ from what your manager (or manager’s manager) is looking for. The best way to start is to have a conversation with […] - [The Power of Communication](https://alexaitken.nz/blog/the-power-of-communication/): Recently, I had a small debate with other leaders on the impact of communication and its role across the team. We debated that repeating material in the town hall format adds no value and that they would prefer smaller more personal modes of communication. I believe that we need to communicate widely and personally. The value doesn’t come from new information but from the data (or the problem) being presented differently. When I chat with my team, I sometimes pick up signals of things that have been misunderstood, whether from an email, a formal socialization, or a group meeting. Often, the […] - [Product Engineering Strategy](https://alexaitken.nz/blog/product-engineering-strategy/): An engineering strategy goes beyond your OKRs (if that’s what you use for goal setting). It goes into where you want the organization to be in the next few years. As a leader, you need to decide the short-term tactics you wish to use and your long-term plays. A strategy doesn’t necessarily need to be written down if the leaders understand what you want to do. Setting a strategy requires you to invest where you will spend your time and resources. It requires you to consider what kind of culture you want and what steps you can take to get there. […] - [Scaling Innovation](https://alexaitken.nz/blog/scaling-innovation/): It’s been a long time since I sat down to write out my thoughts. Over the past couple of years, I’ve been working on my MBA. I successfully graduated and learned a lot about business in the process. Today, I want to write about something I’ve been working on over the past few years. I want to talk about how we’ve scaled innovation – from a single product to now looking at nearly a dozen. These are not features built on top of an existing product but multiple products with wildly different but similar requirements. What does innovation mean? When discussing […] - [Embrace Your Inner Engineer](https://alexaitken.nz/blog/embrace-your-inner-engineer/): When I first started at Traveloka, I realised that there are some good engineering practices, but other practices could be improved. It’s only through this crisis that we could discover how to embrace our inner engineers through working from home. One of the first things I noticed was missing was a lack of centralised documentation. How can you onboard an engineer remotely? You don’t have the luxury of a whiteboard to show them how things work. You also don’t have the ad-hoc time to ask questions and jump into peer programming with your peers. So, what I introduced was the RFC […] - [Roundtable: What makes a great Engineer?](https://alexaitken.nz/blog/roundtable-what-makes-a-great-engineer/): Recently I had a roundtable discussion with my engineers on what makes a great engineer. What are the traits that you would like to see in yourself or your peers? What was interesting is that there is no standard accepted definition or trait. Everyone had their own unique perspective and thoughts on who they would like to work with. The following are some of the skills that we discussed engineers need. These are not in any order, and if you notice, most of them are soft-skills. We’re not talking about languages or frameworks. Being an engineer is much more than your […] - [Leading in Uncertain Times](https://alexaitken.nz/blog/leading-in-uncertain-times/): Unfortunately, the world has gone a bit upside down over the last few months. We’ve seen countless layoffs across many different industries and countries. Now, more than ever, we’re also seeing leaders truly emerge and help their people navigate through the choppy waters. Be Clear One thing I’ve now noticed that great leaders like Jacinda Ardern (Prime Minister of New Zealand) have done, is that they are really clear and direct about what they say. People understand them and the thoughts behind the policies or words. As a leader in these crazy times, please remember to be clear with your teams. […] - [1:1s – Don't Follow my Advice](https://alexaitken.nz/blog/11s-dont-follow-my-advice/): Last year, I wrote a post after about 6 months being a manager of a rather large team (two pizzas would definitely not be enough to feed them). I wrote about the types of questions I ask during 1:1s. Here’s a little update as to why you shouldn’t really follow my advice anymore. Following a Template will not Help Your Team Grow If you’re looking for templates questions for your 1:1s, don’t. It’s great as a first-time manager to start somewhere, but as soon as you have more experience, you realise that a template of questions that you ask everyone is […] - [6 Things to do when training Engineers to be Managers](https://alexaitken.nz/blog/6-things-to-do-when-training-engineers-to-be-managers/): I was recently given the opportunity to train an engineer in my team to take over my role. This engineer volunteered to become a people manager. Now, obviously, not everyone is cut out for people management. This is just a few of the steps I took to help transition the engineer. 1. Determine their motivations Just because someone is asking to become a people manager (Engineering Manager) in this instance, doesn’t mean they will be a fit. You need to determine what their motivation for becoming a people manager is. Hint: if it’s for the money or bigger opportunities they probably […] - [1:1s - Questions](https://alexaitken.nz/blog/11s-questions/): When I started my 1:1s a few months ago, I kept asking the same questions over and over. In fact, I found that I wasn’t really learning anything new about my team. So, I want to go over some questions that I’ve experimented with and see what questions you may ask during your 1:1s. Was this 1:1 useful to you? Now, I’m going to start with a retrospective question that I used to ask after every 1:1. I’ve stopped asking this question now because I’ve found the feedback I get from it doesn’t bring me anything. It’s a closed question with […] - [1:1s How I Learn to Support](https://alexaitken.nz/blog/11s-how-i-learn-to-support/): Quick intro: I recently switched my career path. I was a tech lead, which basically means that I lead a project but I had no reports, and now I’m an Engineering Manager. As an Engineering Manager, I longer “lead” a project in the technical sense, I am responsible for people. What I want to talk about today, is how I’m quickly iterating on my 1:1s. I’m seeing what is working and what is not. My first “official” 1:1s with my team I had no agenda (which from what I’ve read is what should happen) and I just got to know my […] - [Adding a Shared Script for Jenkins](https://alexaitken.nz/blog/adding-a-shared-script-for-jenkins/): Recently, we discovered that we had a lot of duplication in our build scripts. Pretty much the same copy+paste code everywhere (we have a mono-repository). So, it came to me to try and resolve this duplication of logic across our builds (multiple services). For context, we use the declarative pipeline, which for some projects involves utilising a docker image to set up dependencies. This makes it harder to include a shared script as things like “load filename.groovy” won’t work. But, there is a way around this. There is a function, and you use a trusted library that’s in your source code. […] - [Leading Remotely](https://alexaitken.nz/blog/leading-remotely/): I went rogue! I did it. I led a team remotely (within the same country, of course). But to be honest, I can’t say too much changed while I was away from the office. It was, as it should be, business as usual. Now, I can’t say I’m an expert on this, because I’ve only tried one week away from the office. But I do think there are a few caveats that you need to keep in mind when you lead remotely. As I’ve mentioned in Being a Remote-Enabled Team, you need to have rules or processes in place before someone […] - [Being a Remote-Enabled Team](https://alexaitken.nz/blog/being-a-remote-enabled-team/): Being a remote-enabled team doesn’t mean you are remote-first. It means that you’re open to your colleagues occasionally working (or maybe full time) from home (or wherever). Today, I’m going to explain how my team at Careem is a remote-enabled team and what that means for our work and culture. It’s scary Having employees work remotely is scary for management. How can they trust you to do your work if they can’t see you? At Careem, we already have multiple offices that people work from. It’s, even more so, the case for my team, where the product manager and designer work […] - [How to Give Feedback](https://alexaitken.nz/blog/how-to-give-feedback/): At Careem we like to give feedback as often as possible and as honest as possible. It can be quite a shock for those who are new to the company. You may be confronted over something you’ve done, or you’ll get a shout out at the next company meeting. In this post, I’ll go over an example of how you can give feedback (good or bad) to someone. A technique that we use is called the Situation-Behaviour-Impact technique. It’s a great feedback tool because you can use it to accurately describe what your fellow human is doing without imposing your thoughts […] - [I am a Good Manager](https://alexaitken.nz/blog/i-am-a-good-manager/): When we think about managers, we think about people we know (or knew) who have shaped us. We think about people we either look up to or despise. We think about people who are incompetent, and you could do their job better, or those you are amazed at their time management skills. I’d like to share a few personal stories today on some of my managers and how they have shaped me over the years. There are some good and some bad. There are those who knew what they were doing and those who were thrown in the deep end. Some […] - [Onboarding New Engineers](https://alexaitken.nz/blog/onboarding-new-engineers/): Onboarding is the most important time for establishing company culture and keeping your employees. It’s a time when new joiners form opinions on the team that they’re working with, management, and processes. If you mess this up, you’ll have to work to fix the opinions of your newbies. I’ve been onboarded now a few times, and I’m starting to form an opinion on how you should go about onboarding new engineers. For starters: Managers – please make sure that the equipment and accounts are all there for day one. It’s not fun using a temporary PC and having to switch a week […] - [JavaScript - Closures and Scope](https://alexaitken.nz/blog/javascript-closures-and-scope/): Looking at JavaScript today, it can be scary as a beginner. People talk about watching out for all the little quirks or “beginner mistakes” people can make. I think one of the most misunderstood topics, that seems to have a lot of mystery for some people, that people love to interview about, is closures and scope. It’s just one of those topics that we might take for granted as developers but you do have to be careful with. In computer programming, the scope of a name binding – an association of a name to an entity, such as a variable – is the region […] - [Communicating Design - A Code Review](https://alexaitken.nz/blog/communicating-design-a-code-review/): When was the last time you saw a UML diagram? When was the last time you sat down and discussed how you’re going to design the code you want to write? Do you have a whiteboard handy? Are you working with a remote team? How do you communicate the design of your code? These are all seriously good questions. As software developers, we sit down with our team and discuss/design our architecture. But how can we communicate that and get external opinions on it from other teams? As we all know, software development is a collaborative process. It’s not a dictatorship […] - [Dashboard Fatigue](https://alexaitken.nz/blog/dashboard-fatigue/): Dashboard fatigue is a real thing. I’ve experienced it first hand! Before Agoda, I would’ve told myself that there’s no such thing. But after Agoda – well now I know there is too much of a good thing. At Agoda, we liked to experiment. We were driven by data. But how much is too much? In this post, I’ll talk about my experiences at Agoda to do with Dashboards and data. Say, for example, a dashboard monitoring sign ups – your KPI (Key performance indicator) – do you look at it every day? When does it stop becoming relevant and start […] - [Logging. How much is too much?](https://alexaitken.nz/blog/logging-how-much-is-too-much/): Logging has changed a lot in the past few years. It went from being something that you only do when there’s an error – to now logging every little bit of information you can. Why has this changed? Well, for starters, we now have better tools to read logs. Previously, we used to just store them as text somewhere. Maybe if you’re fancy, you’d store it in a database. Can you imagine combing through these files – looking for that one error that customer X reported? No, probably not. Especially when files ended up being 1GB or more. Having to open […] - [SRE role in team](https://alexaitken.nz/blog/sre-role-in-team/): I don’t know about you, but lately, I’ve been hearing quite a lot about SREs (or non-acronymized Site Reliability Engineers). Now, there are probably a dozen different meanings for this role and it varies from company to company. I’m going to talk about what we had in the Agoda Homes team and the impact on morale and the impact on the actual reliability of our platform. Basically, for my definition, an SRE is an engineer within the team task with monitoring the reliability of the product and investigating the cause and determining the priority of bugs. The Job No Engineer Wanted […] - [JIRA v Whiteboard](https://alexaitken.nz/blog/jira-v-whiteboard/): You know how you can automate everything but some things just shouldn’t be. Well, this process is kind-of one of those things. I’m personally not 100% convinced that JIRA/Trello/Online Scrum Board XXX is better than your plain old whiteboard. Why do I make such a bold claim? I can explain, honestly! Now, what I’m not saying is that the whiteboard is better for project management. Because that’s another beast entirely. What I’m really talking about is a sprint board. Task Breakdown As an engineer, we usually have to break down larger stories into tasks. These can then be split up amongst […] - [Past Velocity and Prediction](https://alexaitken.nz/blog/past-velocity-and-prediction/): I don’t know about you – but when you talk about stocks, or markets, or funds – the general rule of thumb is: Past performance is not an indicator of future outcomes. Have you noticed that is software engineering, we tend to ignore this advice? We tend to use our current velocity to calculate our next velocity and our future velocities. We like to look at past performance to determine what we can achieve within the next sprint/quarter/year. Why do we ignore this commonly accepted rule of thumb from finance? Are humans and our efforts really more predictable than a market? […] - [Are Burndown Charts Useful?](https://alexaitken.nz/blog/are-burndown-charts-useful/): When developing a product from the ground up, you might think you need a burndown. Do you want to have an overview of how much work is left before your release? That’s the general gist of a burndown. You want to be able to say – in five weeks I’ll be done. But it never works like that. What ends up happening is that your burn down stays flat – or goes the opposite way because you’ve discovered new requirements. So, are burndown charts useful? Quick Survey This isn’t a real survey – but out of the four agile teams that […] - [QA Role in Development Team](https://alexaitken.nz/blog/qa-role-in-development-team/): As developers, we love to hate on QAs. I’m just kidding, of course. I love my QA. I love that they find bugs in my team’s code. It’s my favourite part of the agile waterfall development that we have. But, in all seriousness, let’s talk about a QA’s (Quality Assurance) role in your development team. Do you even have one on your development team? If you don’t, why not? Do you actually need one? Let’s dissect a little. Why Should You Have a QA on Your Team? I’ve been in teams that have had QAs and some that have not had […] - [Treat Your Tests Like Your Code](https://alexaitken.nz/blog/treat-your-tests-like-your-code/): Over my many years as a developer, I have noticed a pattern. This pattern is to do with unit tests. Especially those who write unit tests. What I’ve noticed is that a lot of developers don’t treat their unit tests like they treat their (production) code. That is, they under-engineer unit tests and end up with unreadable tests that are impossible to debug, and no one understands what the tests are testing. Using Constructors If you’re using DI (Dependency Injection) in your production code, your test code usually requires a lot of set up. We’ve all seen this mess. new x(); new […] - [DRY - Don't Repeat Yourself](https://alexaitken.nz/blog/dry-dont-repeat-yourself/): One of the most common principles of development that I hear is DRY. Don’t Repeat Yourself. Why is this principle so important and how do people break it? I mean, it should be common sense, right? Don’t repeat code. Don’t copy paste. I will repeat that last sentence. Don’t copy paste. If you have to copy paste your code all the time you should think about: can I change this code so I can reuse it? Real Code vs. Test Code As much as it pains me to admit, we’re not saints; especially when it comes to unit tests. We don’t […] - [D for Dependency Inversion Principle](https://alexaitken.nz/blog/d-for-dependency-inversion-principle/): Depend on abstractions, not on concretions. Robert C. Martin Welcome back to the series on SOLID. By now, I’ll assume you’ve read my earlier post on the Interface Segregation Principle. In this post, we’ll be investigating the Dependency Inversion Principle which is not to be confused with Dependency Injection. Dependency Injection is only a form of the Inversion Principle. The actual principle is about depending on abstractions and decoupling your classes. As we know, closely coupled code means that you can’t test one aspect of the code without the other and you can’t swap the implementation at runtime etc. Breaking the principle […] - [I for Interface Segregation Principle](https://alexaitken.nz/blog/i-for-interface-segregation-principle/): Make fine grained interfaces that are client specific. Robert C. Martin Welcome back to the series on SOLID. By now, I’ll assume you’ve read my earlier post on the Liskov Substitution Principle. The guts of this principle is that your interfaces should be very specific to the purpose. You shouldn’t have a super interface or class that does everything. The method that you’re going to send that class to will only need one slither, one tiny piece of what you’re going to give it. If you send the whole thing you’ll end up with: A confused developer. What’s the property or […] - [L for Liskov Substitution Principle](https://alexaitken.nz/blog/l-for-liskov-substitution-principle/): Derived classes must be substitutable for their base classes. Robert C. Martin Welcome back to the series on SOLID. By now, I’ll assume you’ve read my earlier post on the Open/Closed Principle. This principle is quite an obvious principle. I’m going to use the time-and-time-again Duck example below. Think: If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck. That is unless you break the Liskov Substitution Principle. With this principle, you must be able to substitute any object for its base type. What do I mean? Let’s say you have […] - [O for Open/Closed Principle](https://alexaitken.nz/blog/o-for-open-closed-principle/): You should be able to extend the behavior of a system without having to modify that system. Robert C. Martin Welcome back to the series on SOLID. By now, I’ll assume you’ve read my first post on the Single Responsibility Principle. That is, each class should only have one responsibility (or a class should have only one reason to change). Now, I believe regarding OOP (Object Orientated Programming), the Open/Closed Principle refers to the fact that if you want to extend a class, you shouldn’t have to modify functionality as well. That means, say you’re using inheritance; you shouldn’t have to […] - [S for Single Responsibility Principle](https://alexaitken.nz/blog/s-for-single-responsibility-principle/): A class should have only one reason to change. Robert C. Martin I’m going to start a five blog post journey about the five principles behind SOLID. I’ll describe these in my own words and give examples of what breaks the rule and how to fix it. Now, what I’m not going to prescribe, is that you must be SOLID all the time. Because that is not true. Sometimes, you need to break a few rules. The first rule I’m going to be talking about is ‘S’. S for Single Responsibility Principle. The name of the concept gives it away. What […] - [How Do You Decide Which New Thing to Take?](https://alexaitken.nz/blog/how-do-you-decide-which-new-thing-to-take/): I know you may think this topic is familiar. I mean, I did talk about it in my previous post about how you decide which package to take. But in this post, I’m going to be discussing this in broader terms. Think in terms of, frameworks, languages, tools, or debates in the company, or experimentation. How do you decide which direction you want to take in terms of technology? That’s what this post is about. Being a leader and promoting healthy dialogue. Healthy Debate You shouldn’t be a technology dictator. Nor should your company be a complete democracy because you’ll never […] - [What IDE Do You Use?](https://alexaitken.nz/blog/what-ide-do-you-use/): I’m curious to know what IDEs people out there use. But before anyone tell me what their IDE of choice is, I’ll give you mine and how I work. An IDE is a very personal choice, I think. I mean, at my current company we have people who use wildly different IDEs even for the same projects. I don’t think you can constrain someone to use an IDE they don’t want to. One of my last workplaces, one of the team leads was so familiar with Vim and so used to textual commands that he never really used any IDE like […] - [What Does Agile Mean?](https://alexaitken.nz/blog/what-does-agile-mean/): Today I want to talk about what agile means to me. I mean there is a standardised definition which I’ve quoted below from the agile manifesto. But, I think for most of us, being agile means that we can move quickly and break things. It means that we reduce risk to our businesses by being able to change course at the drop of a hat. It means that product development is ongoing and we’re continually improving and redefining what the product is. It means we’re delivering business value as fast as possible. Individuals and interactions over processes and tools. Working software […] - [How to Run a Retrospective](https://alexaitken.nz/blog/how-to-run-a-retrospective/): One of the things I enjoy doing is running retrospectives. I know, I’m a bit weird. No one likes meetings. Well, this is one important meeting in agile. Why? Because a retrospective allows your team to reflect on the last sprint and make changes. These can be any changes: process, code, metrics etc. With these changes, you can experiment and see what works and doesn’t work for your team. That’s what being agile is about – being able to change and cope with changes. What is a retrospective? A retrospective is a look back on the previous sprint(s) or piece of […] - [How to Decide Which Packages to Use](https://alexaitken.nz/blog/how-to-decide-which-packages-to-use/): At my current company (Agoda), we don’t have a strategy for picking what packages that we use (that I know of). Mostly, you have to prove that installing this package is useful and that it wouldn’t make sense doing it ourselves. We don’t want packages that will increase our bundle size (for javascript) as that would increase the load on customers and that’s not a good thing. To prevent that, we have a bundle size checker in pull requests. So, how do you decide which packages to use? Do you need it? Sometimes people include packages that they could’ve written themselves […] - [Using Swagger to Auto Generate Your JSON Objects](https://alexaitken.nz/blog/using-swagger-to-auto-generate-your-json-objects/): The title is a lie. You need Swagger to be able to generate your JSON objects, but it’s not what will generate your objects. At Agoda, we use autorest, but our package (autorest) to generate our API calls. That’s because we wanted to use a library called SuperAgent in our client-side code. This generates our API library as well as our objects in TypeScript. It’s super handy when you don’t need to write any API code anymore. Swagger in .NET Let’s start at the beginning. How do you get/make your endpoints Swagger? What is Swagger? Swagger is the world’s largest framework of […] - [Learning the Language](https://alexaitken.nz/blog/learning-the-language/): I’ve lived in two countries outside of my homeland, and in both instances, I have taken the initiative to learn the language. Now, you might think: You’re a software developer, you don’t need to learn the local language. And that’s true. In both cases, I was hired to speak English. In both cases, you can get away with not speaking the local language. So then why would I learn languages? Let me ask you a question: if you worked for an international company and a foreigner became your peer but didn’t put an effort to speak or learn the local culture, […] - [Git Branching Strategies - What Works and What Doesn't](https://alexaitken.nz/blog/git-branching-strategies-what-works-and-what-doesnt/): I’ve been in several different companies now, and each of them has had different ideas on what the ideal branching method is. There is no one perfect branching strategy for your company/product. You can probably get any strategy to work with your team if you want. Today, I’m going to introduce you to a few of the methods that I have previously used. From Github Flow to a straightforward Git strategy, you’ll find something that works for your team. Simple Git Strategy This is something that I’ve used when I’ve worked on a project myself. You might just think: commit to […] - [Improving Execution and Monitoring Execution](https://alexaitken.nz/blog/improving-execution-and-monitoring-execution/): One of the things I ended up being tasked with as the “leader” of the team, was monitoring our progress. One of our KPIs was to improve our execution. How do you monitor or even improve your execution as a team? That was one of the things we asked ourselves, and we started our journey down a black hole. Okay, it wasn’t that bad, but when you have to record every hour, break down and estimate tasks in hours and measure against both, it’s a bit much. Measuring Execution When we first started, we weren’t entirely sure how we could measure […] - [Using React-Redux-Forms](https://alexaitken.nz/blog/using-react-redux-forms/): The main reason you could say we moved to Redux was validation. We didn’t want to add a whole lot of code to our page components to validate every child component. In some components, we had up to ten fields, and all of them had to be validated. Can you imagine the size of the component that validated all of these? Hundreds of lines long. For some of you, that’ll be okay. I mean, why can’t a component be long? For us, it’s about maintainability and having a large component is hard to navigate and see what it looks like. Along […] - [Migrating to React-Redux](https://alexaitken.nz/blog/migrating-to-react-redux/): You don’t need Redux Repeat after me, “I don’t need Redux”. Seriously, you probably don’t. We didn’t need Redux in our SPA until we started adding more complicated forms with complicated validation. You can easily get away writing a React SPA without Redux. The state can be managed at a page level (or higher if you choose). It’s easy to create a React app without Redux. However, we decided that we needed Redux when complex validation appeared. We thought it would be better to extract that logic from the pages, into things called Actions and Reducers. The Process When we first started with […] - [Jest, React, and Mocking](https://alexaitken.nz/blog/jest-react-and-mocking/): Are you stuck with Proxyquire or Sinon? Before we moved to Jest, we used Karma with Mocha/Chai. These come with no built-in mocking capabilities (as far as I’m aware). If you’re a C# developer, you know all about the different Mock frameworks (e.g. Moq), and you want to be able to do the same with your TypeScript, right? At least I do. I want to try my best to follow the SOLID principles (I’ll write about those later in the year). So, because these testing frameworks come with no mocks, we had to use things like Sinon or Proxyquire. It’s doable. It […] - [Starting with React](https://alexaitken.nz/blog/starting-with-react/): This isn’t meant to be a guide on how-to React. I just want to share some of what I’ve learnt during my time working on a Single Page App (SPA) for my current company. We’ve made a lot of mistakes, and we’ve learnt from them. So, this post may not be perfect. If you find something out of place, feel free to let me know. Language From the get-go, we decided to go with TypeScript. There was quite a debate amongst the company as to which language we should choose. Do we go with plain JavaScript, or do we go for […] - [Sharing Knowledge/Tech Blogging](https://alexaitken.nz/blog/sharing-knowledge-tech-blogging/): So it’s 2018. A new year and a new start for some. I’m hoping it’ll be a new start for me, so I’m starting a tech blog. Now, I already have a (book) review blog that I don’t update as much as I should, but this will be my main blog for 2018 that I focus on. I don’t want to stretch myself too much by splitting my focus into both areas. I don’t know if I’ll have enough content to update this blog weekly, but I’ll try my best. Here’s a bit of a roadmap for the next few weeks. […] ## Pages - [Clear: a minimalist WordPress theme for writing](https://alexaitken.nz/clear-theme/): Clear is a simple, text-first WordPress theme built for people who want their writing to be the product. It is inspired by Medium-style editorial layouts, with calm typography, generous spacing, featured images, and clean archive pages. Why I built it I wanted a WordPress theme that felt more like a modern writing platform and less like a traditional blog template. Most themes either do too much, look too busy, or make the writing feel secondary to the design. Clear is intentionally restrained. The goal is to make posts easy to read, easy to browse, and easy to reference from search engines, […] - [Speaking Experience](https://alexaitken.nz/speaking-experience/): I like presenting in front of people and sharing my knowledge. This is a list of conferences and presentations I’ve given. Where I’ve spoken (not as a panellist), I’ll attach the presentation. 2024 Judge for the 2024 hackjakarta event. 2023 The Future of Cloud Computing: How to Prepare for the Next Wave of Innovation. (Panelist)November 22: Global Data Center & Cloud Summit Innovation using a cloud-first approach for businesses. (Presentation)March 15: Azure Open Source and Cloud-native Day Blueprint of Secured Transformation in the Digital Era (Panelist)March 1-3: XCION 10th Bali Conference - [Privacy Policy](https://alexaitken.nz/privacy-policy/): Who we are Our website address is: https://alexaitken.nz//. What personal data we collect and why we collect it Comments When visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection. An anonymised string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context […] - [Want to Collaborate?](https://alexaitken.nz/want-to-collaborate/): Hey guys! So, I’m always looking for ways to get myself out there or help others get to where they want to go. If you want to collaborate with me, whether that’s blog posts, talks, advice, or whatever; feel free to use the contact form below. - [About](https://alexaitken.nz/about/): Introduction Hi, I’m Alex Aitken. I’m an engineering leader with experience building and scaling product and machine learning teams across Asia, Europe, and New Zealand. I have led engineering orgs across marketplace platforms, fintech, identity systems, and AI product development. I am currently based in Singapore, and previously lived and worked in Jakarta, Berlin, Bangkok, Munich, and Auckland. Over more than a decade in software engineering leadership, I’ve helped teams ship products end-to-end, modernise platforms, and build high-impact, data-driven engineering cultures. Outside of work, I enjoy writing — both technical pieces like this series and fiction. I’ve even written two novels […] ## Optional - [Agent (MCP protocol)](websites-agents.hostinger.com/alexaitken.nz/mcp) [comment]: # (Generated by Hostinger Tools Plugin)