RSS

Tag Archives: Software Development

How to increase the velocity of your Agile Teams?

How to increase the velocity of your Agile Teams?

A year ago, I got an opportunity to lead an agile team for the Electronic Table Games vertical at IGT. This team was made up of very smart individuals, who put IGT’s name in the electronic table game’s market space within just couple of years. IGT was an underdog in this market, but this team’s hard work and dedication had allowed IGT to bring two successful titles to the market. Even though this team was successful in making this vertical profitable over time, their velocity was not sufficient to keep up with the already competitive market pressure. Thus, I was called to help the team.

Over the year, I have made many tweaks to this already successful team. And hence, I would like to share some of success stories from my experience that have worked for us. I am hoping that you could use these pointers to increase the velocity of your own agile team.

Co-locate your team: After joining the team, I quickly realize that the team could improve their face-to-face communication. Even though the engineering team talked to each other daily, the communication between the QA and Product Management team was infrequent and rare due to their physical proximity to the engineering team. Thus, we went ahead and relocated all of our QA and Product Management resources with the engineering team. This change promoted the face to face communication between the teams and improved our velocity by reducing communication time between the developers and the QA engineers. Obviously, this change was challenging, given my team was located all over the US. But we were lucky to have multiple clusters of the team where more than 4 people were together in the same building. Thus, co-location was practical and beneficial in our case.

Reuse common components: At IGT, we were creating different games, and hence, all the developers were making customized software for each game. Even though we were required to make customized interfaces for each game, given the vertical that we work in, I looked for some common components that we could reuse. To my surprise, I was able to find many communication APIs and other architectural components that were common between each game titles. By making some minor modifications to those components, we were able to reuse them for other games that we were making. Thus, I believe that you should invest some time during your Sprint to look for common software components, which you can reuse to significantly decrease effort spent on building the same functionality. Developing a strong process around this mentality will help you in decreasing product development time.

Increase test automation: You might argue that this is compulsory for increasing the velocity of any software product team, but you would be surprised to see how many agile teams follow this practice. Since the focus of any agile team is on delivering minimum viable products, they often underestimate the investment that they need to make in testing. Thus, most of their testers perform some basic manual tests before releasing the product. In our case, we were able to increase our automation test footprint by providing engineering tools to our testers and investing heavily in test automation as compared to the manual testing. As a result of this change, we were able to improve the quality of our games and expand our testing footprint, which in turn increased our velocity.

Do you agree with my recommendations? Do you have any other ideas through which we can improve the velocity of our Agile Teams?

Thanks – Bhavin Gandhi

 

Tags: , , , , ,

Why can’t the software industry survive without project managers’ help?


SoftwareWhat do project managers do? What are they good for, anyways? I am sure, if you have worked in the software industry, then you must have asked this question multiple times to yourselves. I don’t blame you either, since most of the time project managers are not that technical, and sometimes they don’t understand very specific details of an engineering problem. But that doesn’t mean that they are not important at all. Project managers often bring lot of skill-sets, which an engineer or engineering manager might not have. Thus, in this blog post I am going to educate all of you engineers on the specifics of what exactly project managers do, and why they are an irreplaceable part of the software development life cycle.

Provides the focus: Software development is a creative work, and hence, sometimes engineers can’t constrain themselves to focus on the priorities (or project scope). For example: If you don’t know how big is the space in your kitchen, how can you buy a refrigerator that can fix in your house? Even if you find an ideal refrigerator, which satisfies all of your needs, but if it is slightly bigger than the space in the kitchen, then it won’t work out for your house. Project managers resolve these kind of issues by project planning, project monitoring, and helping the team to deliver what the customer wants. For an engineer, it’s easy to get sidetracked during a project, since they might come up with better solutions or additional problems to solve, which usually cost more, take longer, and can potentially kill the project with overruns. Re-arranging your pantry while preparing food for a dinner party could result in hungry guests. A project manager will avoid these kind of disastrous situations by looking at the big picture, and prioritizing all the tasks.

Provides planning: Some software projects grow up too quickly, and become too complex within a short period of time. Due to this changing scope, without a clear-cut plan, engineers can’t concentrate on one thing at a time, and they can get pulled in every direction. When you look at the big picture, you will realize that the needs of a marketing department is different from the needs of the sales team, while these needs might not even connect to the reality in any form or shape. Sales team can sell a dream software, which might be unbuildable, or it might require constant changes to the existing product to deliver that dream software. Project managers make these tasks easier by scheduling, planning, budgeting and controlling all the tasks associated with the product. They also uncover most of the needs and issues up front, and if changes do occur during the software development life cycle, they change the project plan to  make it easier to adjust the course of the project.

Though it is desirable to hire a technical savvy project manager, it is not practical to do so every time. Finding a project manager with management and software development skills is hard to get. And hence, sometimes your project manager might not understand the specifics of your software development issue, but that doesn’t mean that they are good for nothing. Project managers are, and always will, be the critical part of the software development life cycle.

So, next time when you think that your project managers don’t understand your engineering issues, then try to educate them, instead of blaming them to be dumb and stupid.

Thanks – Bhavin Gandhi

 
Leave a comment

Posted by on January 22, 2014 in 21st Century, Leadership, Management

 

Tags: , , , , , , , , , , ,

 
%d bloggers like this: