The Bus and Its People: Working with The People You Chose

I was having my very first hackathon around two weeks ago. I have never participated in a hackathon before because I thought it was just for geek coders and therefore someone like me (who is not so much into coding) would have nothing to do on hackathon. But I was a bit intrigued to join Midtrans Hackathon last April because I was bored and I miss being in a competition.

I joined the team as a late-comer. I didn’t know why but the people on my team has one thing in common: we all went to the same college. I have worked with all of them before on different projects. The geek side of us insisted that we should be looking to create something awesome, although I knew the chance of winning was very thin if we decide to build such product as it has no value towards solving the company’s biggest problems. Nevertheless, we decided to build something complex and difficult anyway because, you know, we only want to do something challenging.

Our planning phase went just so-so. We hadn’t even decided what product to be built until a week before the hackathon. To be honest, we didn’t specifically define our backlog until the D-day. But when the hackathon started, I realized that I was working with not only motivated but also smart, fast-learner, and self-manage individuals.

This reminds me of my case competition memories with Baskarry Team. Ardian and Gunawan were one of the best people I have ever worked with, and I always had the confidence that, if being put in a team, the three of us can win any competitions. Everyone worked equally hard. Supervision and instructions were not needed. Each of us knew what to do, and when we had problems, we communicated early, and of course we close issues fast. This was also the case with my hackathon team. We couldn’t stop telling each other how we enjoy the teamwork, and how we admire each other’s ability. One word to describe them: awesome.

We might not win the hackathon, but we had successfully built a fully working prototype of such complex product. I think it was one of the most enjoyable moments I had this year. Great teamwork really brings satisfaction. Once again, the “gather the right people on the bus first, decide the direction second” is still the right thing to do.

Data-Driven Project Management: Estimating Delivery Date & Using Jira Control Chart

In IT companies, especially in startup environment, everything is so fast-paced that people often make decisions based on assumptions without looking at the data first. This sometimes happen too when managing a project and setting up expectation to stakeholders. The project manager might promise a feature to be delivered at a certain date based on his own assumption.

In agile & scrum, we believe that it’s best to ask the team to estimate when they will be able to get a feature/story done. However, based on my experience, the team usually only consider the time they need to develop the feature without taking into accounts other required tasks such as testing, review, and deployment. In the end, the actual time consumed can be twice longer than the developers’ estimation. Therefore it’s safer to add some “buffer time” (such as multiplying your developers’ estimation by two or using the sprint’s duration) when promising delivery date to your stakeholders.

However, if you want to be more precise, you should rely on data. At Midtrans, we constantly track and analyze dev teams’ performance through Jira Dashboard. We track critical metrics such as the number of stories done by each developer, how many tech debts we have, average time in status (to-do, in progress, review), average age of issues until it gets resolved, etc. This helps a lot to understand how fast the team, as well as one particular developer, can get things done. If we show it to the team, they can even get more understanding of how they performed in the past so they can consider it when making subsequent story estimations.

For more advanced analysis, I usually look at Control Chart report (also in Jira). This chart shows the average cycle time of the project & its stories. As written on its description, this chart is useful to identify whether we can use our historical data to predict future performance. If the standard deviation is too high (reflected by wide light-blue area), that means the team’s performance is very erratic. Thus, for this case instead of looking at how your team perform in past stories with similar complexity, you’d better use your team’s estimation of the new story and add it with buffer time to estimate the delivery date.

What the control chart looks like

But when the standard deviations’ area is narrow, you can rely on the past performance to make future decisions. As can be seen from the chart above, since early March, with the narrowing light blue area, the predictability has significantly improved. By early April, the rolling average of the stories (from the time the development started until it’s production-ready) was 5.7 days with only 2.2 days of standard deviation; much better then the previous months’ predictability.

What does this mean? It means that for a story with similar complexity, the rational estimation from the team should be around 5.7 days (including code review, PO acceptance test, etc.) until it becomes production-ready. Then, you should add at least 2.2 days into the estimation as buffer time. In addition, if there’s some sort of change request procedure that needs to be approved before the deployment can take place, you also need to count the number of days into your delivery date estimation. For example, if this procedure takes 2 days, then you can only deploy on the third day after the feature becomes ready-to-deploy. Consequently, the number of days until the the feature is live is now 5.7 days + 2.2 days + 2 days = ~10 days; which means you can safely deploy on the 11th day since the development starts. That’s the number you can promise to your stakeholders.

In some cases you may also want to know when a feature can be delivered after it’s added to sprint backlog. You can do this by refining the Control Chart Report to show the cycle time since the stories were added to the backlog. In my case it results in two extra days, making it 12 days to turn story from a sprint backlog item into a production-ready item. Same logic applies if the story isn’t going to be added into your current or nearest sprint. You just need to add your sprint duration and multiply it by the number of sprints ahead of that story’s sprint, and there’s your data-driven estimation.

What if you aren’t using Jira? Well, you can replicate the chart using excel. Just make sure you collect all the data accurately. It’s gonna take manual efforts but it will help you a lot in making informed decisions when managing projects.

On Doing What Should Be Done & Working With Everyone

Life gets exciting when these two conditions are both fulfilled:

  1. I can work on the project that I am most interested in
  2. I can work with the people I like

But that doesn’t happen all the time.

Sometimes the most challenging and interesting projects are not on the top priority list. Or maybe you aren’t given the opportunity to work on that project. So you just have to let it go and work on what you think is less interesting project.

Most of the time you can’t choose your team and the people you work with. You may prefer to work with a group of smart people, or you may prefer to work with those who have the same passion & ambition for the project. But this is seldom the case for an employee. There will be people who slack off most of the time or just don’t possess the required intelligence to be your teammates. But you need to work with them anyway.

Back then before I received my degree, I used to be able to choose my teammates for competition and group work. I had the flexibility of choosing which courses I want to excel at, and which ones that I don’t care at all as long as I pass the minimum grade.

But now life is different. As I become more mature I realize the necessity to adjust to the new environment. I did things I thought I wouldn’t do, such as being nice to everyone (to be honest I wasn’t really the most friendly person on this earth of mankind) and tolerating other people’s mistakes. I also started to appreciate that some people may not be too smart, but there are still some useful skills I can learn from them, such as social skill and their genuine sincerity.

Unsurprisingly, those are all the things that my dad had told me to do since years ago. Yeah, not all the advice coming from your parents are invalid.


Goodbye Vanilla Year

I believe it is not an exaggeration to say that 2016 was not my best year. Too many things didn’t go as planned. Dreams remain unachieved that I started to doubt myself.

Thankfully I never had the luxury to give up. So this year, I decided to open up a new chapter in life. I wanted to have the self-esteem to do something big again, to let myself know that I can obtain every single wish I have ever had.

I managed to allocate my weekends to prepare my application for master’s degree. I also took leave for several days to ensure everything gets done (academic docs, reference letter, IELTS test, etc.). Time was limited and I didn’t want to delay it any longer.

It was extremely exhausting, yet it was worth all the time and efforts spent. I finally got accepted into one of the world’s best universities; something that I have been dreaming of since I was in High School. It felt great to end all the anxieties with such a happy ending.

Despite so, I could not call it a day yet. The finish line is still ahead of me. I don’t even know whether I’ll be able to secure a scholarship before the offer deadline date. If I couldn’t do so, I probably have to defer my admission for a year. Obviously I don’t want to do that and I hope I won’t have to! But I know one thing I would never do: giving up; because I don’t know what I want to be when I give up.

So here I am, standing tall, waving my hand to the vanilla year and taking the trip into a more decorated chapter in life.

On “The Path Taken”

I see life as an adventure. I can’t forgive myself for staying at the same place for too long. I gotta go and explore new territories as I always feel the urge to discover more. That’s me.

But what if I am not who I am today? What if I hadn’t take the paths I took in life? I would be a completely different person, wouldn’t I?

This thought crossed my mind during my conversation with a college friend on my way home after a little reunion today. After sharing a bit about our work stories, we came to a conclusion that we could have been a completely different person if only we had chosen a different road in our past.

It was not about who was accompanying us on the journey or what we did along the way, but it was more about how the today’s version of ourselves are the product of the paths we have taken. We might still befriend and work with the same set of people. We might still be employed in our current companies. But we would have a different outlook in life. Our attitudes toward what we face in life could have been extremely different. No, we wouldn’t be the same person as who we are today.






New Age

A series of events happening last month have triggered me to rethink about my life and my ambition. I unintentionally jumped into conversations that help me discover more about myself. Then something extraordinary happened. It was almost like an epiphany, a turnover. It was a really big contradiction within me: I have achieved so many more than most people can, yet I’m still lacking achievements.

The psychologist whom I bumped into last month regard me really highly. She said my achievements are exceptional and that I should not be too hard on myself. “Don’t be too hard on yourself, you already achieve so many, and you have lots of potential” that’s what she said. But everytime I think about it, it’s only half true. Yes, I know my strengths, I’m grateful of what I have won. But on the other hand, it’s not entirely true. Part of me said I have achieved nothing meaningful so far, and I deeply, miserably realize this lack of big achievement. The worse thing, I feel like I’m not given the space to take enough challenge recently.

It’s not easy to talk about this with other people. Most people will not understand because it’s meant only to be understood by those with similar minds. They are the kind of people who thinks life do not stop after you win something, but instead life starts again at a higher level when you win something. It’s because life is a journey, and every success is just a terminal, not an end of the journey.

Here’s to a more challenging & fulfilling life. Happy 23th birthday to me 🙂

“A man of ordinary talent will always be ordinary, whether he travels or not; but a man of superior talent (which I cannot deny myself to be without being impious) will go to pieces if he remains forever in the same place.” – Wolfgang Amadeus Mozart


Thoughts On Friendship

As I grow older I’m starting to see which group of friends stay and which ones go. Now I realize that some friendships aren’t made of sincerity, a few could be happening by chance, while others remain forever.

I’ve experienced several friendships that don’t last long. It may be because the friendship was a result of people being accidentally placed at the location and somehow they share common purpose at that time. When it’s time to continue the journey to different locations, they would no longer be “friends”. We lost contact and never tried to reach each other ever again.

But that’s something you can just let go, because you know exactly that people change, and they come and go like the winds. It’s unlike another type of friendship that’s significantly bitter. One day you’re friends with them because they like something about you; it could be that you’re rich, smart, or you have things that they can be proud of as friends. Then someday they’re not as proud anymore because there’s no longer something special about you. So they stop being friends with you, and you never heard anything from them ever again.

Then there is this group of friends that stays with you no matter what. They help you succeed. They stay by your side through rain and storms. They help you exactly when you need them. They lift you up when you hit the rockbottom. They celebrate when you reach the mountaintop. They do that because they see you, as who you are, as their friend. No matter how busy you are, or how long you haven’t seen them, you’ll make time to catch up with them because you can’t afford losing friends who genuinely care about you. And you, as a good friend, always want to help them in any way you can to pay them back.

An important lesson about friendship that I learn in my 22 years of life is that true friends are hard to find. Thus, instead of trying to be friends with the cool kids (which I never actually did), you should put more efforts to be a good friend to people who care to you. And oh, do not worry about the posts in social media because great friends bring positive influence, not meaningless publicity.