31 May 2023
I recently joined VMware Tanzu Labs (previously called Pivotal Labs), an agile software consulting team. During my first month, I have experienced the team’s learning culture, learnt about our agile practices, and had fun with my teammates. Here are some of my key events and learnings:
[This post was originally written for publication on the Tanzu Labs blog. I’ve slightly modified it for posting here.]
On my first day, my manager Darryl meets me in the office, and I join the team for breakfast. Next up is the daily morning standup, where a new client engineer and I are introduced to the team.
Breakfast and morning standup (but sitting down 🙈)
My laptop and accessories had been delivered to me beforehand, so I get started with my IT setup and HR onboarding. I’m happy to see that we use many modern collaboration tools such as Slack, Miro and Zoom for collaboration. Darryl also gives me access to a Pivotal Tracker board with tasks for my onboarding.
My onboarding Tracker board with lots of items already added, and organized into First day/ First week/ First month etc as a rough guide
In the afternoon, Yen Ter, a software engineer and one of my onboarding buddies, brings me to get a coffee from our barista in the office. We have a quick chat about how my first day is going and he gives me some tips for onboarding.
By the end of the day, I have checked off most of my “First day” tasks! It’s been a stimulating day for me, and I head home at 6pm for a good rest.
For the rest of the first week, I continue to join breakfast and office standup. I start reading about our core practices such as Iteration Planning Meetings, Retrospectives, and pair programming (more on these later).
I have a 1-to-1 meeting with Darryl, to talk more about how we work, settle admin items, and answer my questions. We also fill in and share our personal user manuals, a good way to get to know each other better.
A couple of my teammates are working on a client engagement that’s running in-office full time, while the rest are working on engagements conducted remotely. (I learn that before the Covid-19 pandemic, clients being physically co-located with us was one of the constants across all Labs engagements. But since the start of the pandemic, the team has had to adapt to working remotely, and continues to run successful engagements, both remote and in-person.)
I get the chance to observe some of the activities for the in-office project. The project is in the initial Discovery and Framing phase, where we try to understand the problems, figure out the most important problem to work on first, then generate solution ideas, and prioritize them. The team does this using user interviews, problem/solution prioritization, and design studio, among other activities. Concurrently, the engineers are also figuring out the path to production by attempting to deploy a skeleton app to the production environment.
Image source: Pivotal blog
On Thursday, we have a weekly lunch and learn session where we order lunch in and have a sharing about Labs practices. This one is about engineers’ role during Discovery and Framing, which is very relevant for me! More people are in the office today (probably because of the free lunch 😂), so I get to meet a few more of my teammates in person. We also have a weekly Singapore Labs team standup where we go over any help needed, interesting things, wins and shoutouts, upcoming events, and updates on current projects as well as potential engagements in the sales pipeline.
In the second week, I do more reading and shadowing of activities in other ongoing client engagements. I also get to do some pair programming!
At the start of the week, I join an Iteration Planning Meeting (IPM) for the in-office client project. In this weekly meeting, the team goes through user stories in the backlog, and engineers estimate the effort needed for each user story. If needed, they discuss a rough implementation method in order to come to a consensus on the estimation.
We use agile project management tools such as Jira or Pivotal Tracker (pictured) to write, estimate and track user stories. Pivotal Tracker doesn’t have the most beautiful UI but it works great for us, as it’s built specifically for our agile workflow.
As I didn’t have this practice in my previous job, I found this interesting and useful, because it ensures that the work to be done is clear and well-understood, and the team is aligned on the priority of user stories. Also, the “velocity” (past rate of completion of user stories) can be used by project managers to estimate when the next chunks of work can be completed.
Pivotal Tracker shows us our velocity and helps to estimate completion dates
With the user stories estimated, engineers can start implementing them! I spend some time this week shadowing the two engineers (one from Labs, and one from the client company) while they pair program. As they are using React, a library that I’m very familiar with, I can help out when they have questions or get stuck on how to do something.
Our office is intentionally set up for pair programming, with 2 monitors, keyboards and mice on each table
I also start pair programming part-time with Liza, another engineer in my team, on her remote client project. The project uses AngularJS and .NET with C#. Although I have not much experience with either, amazingly, within 2-3 short pairing sessions, I can write tests and implement functionality in both of them! It feels great to be productive so quickly on a new project.
At the end of the week, I join the in-office project team for their retrospective, another core weekly activity. This is a time for the team to reflect on what worked well, what could be improved, and any questions or concerns on people’s minds. Action items from the retrospective will then be carried out in subsequent weeks, allowing the team to work better together over time.
A virtual retrospective board (we use Miro)
In my previous week’s reading, I identified Kubernetes as an area that I want to dive deeper into, as it’s a common tool for application deployment that many of our client projects use. So for this week, I spend most of my working time doing an online Kubernetes course that Liza recommended. I also continue shadowing activities and pairing part-time.
One new activity that I get to join this week is a pre-sales discussion with a potential new client. It’s interesting to see how the client brings their broad, multi-faceted problems, and we try to understand as much of it as we can in these discussions. Our aim is to find a slice of the problem where we can iteratively build software that can make an impact on the problem, in a limited time frame.
This week’s lunch and learn session is lightning talks, where people share about non-work-related things. Darryl walks us through how he brews beer at home, and Rob shows us his hobby of playing with synthesizers, something very new to me.
On one of the days this week, I play ping pong and foosball with my teammates during a break from pairing 😆 I’ve also noticed that leaving office on time is the norm. It’s great to be able to switch off from work after 6pm, and contributes to a sustainable pace of development.
This week starts off with EPIC2 Day on Monday, a VMware company-wide day off! I still meet some of my teammates though, because we are having a bouldering and lunch session 😁
During my 1-1 meeting with my manager, I learn that I will be joining an internal project. Such projects are kickstarted and worked on by team members who are not on client engagements, to try to solve problems in our daily work environment. For the rest of this week, I join the project activities and start pairing with another engineer to build a web app for feedback exchange. It’s a great opportunity for me to practise doing the regular project activities, pair programming and test-driven development. And it’s gratifying to feel productive building something!
–
Thanks for coming along on my first month at Tanzu Labs. Find out more about Tanzu Labs’ practices on Labs Practices, and check out A Day in the Life of a Pivotal Engineer to see what daily life is like on a client engagement!