Sunday, October 10, 2010

Understanding Your Team

Have you ever been put on a team that is so brilliant and talented and somehow the project is frustrating to deliver? I've come to realize that when working with a team of great people, there needs to be a level of transparency and level of understanding of what we're trying to build as a whole. In the agency realm, typically you'll have 4 disciplines working together to ship a website:

1) Design (Creative)
2) Development (Frontend and backend)
3) Client Services (Project manager)
4) Quality Assurance

My evolved thinking has brought me to the conclusion that there can't be such a thing as blame. Understanding the delivery as a whole will help dispel the shackles of each discipline. Furthermore, each member of a discipline should fully understand how much of an impact their decisions will make on another part of the system. For example, a designer can choose to break consistency by readjusting the website's grid on a particular page. This would have a negative impact on the development team as most of the time grids are set up at the start and they stay consistent throughout the whole website (column widths). That said, it isn't the designer's fault at all--he/she was just doing their job with poorly written requirements. It could've been that the developers didn't voice that out to the designer--that they're pretty much married to a specific grid format.

Another example is how client services could oversell on a feature that could mean 12hours of design work and 40 hours of development effort. If the client services person knew about how much damage that would cause to the timeline, he/she wouldn't have proposed it to the client. As another example, typically technology platforms for websites can't react quickly to client feedback or design changes. We have very simple tools nowadays to help speed up the approval process from clients, such as, Adobe Photoshop; however, since we ultimately need to ship a website as a whole, even if one part of the system speeds up, the platform itself takes time to catch up. This is called backlog.

Working together doesn't just mean sitting together, or joining scrums--It means learning together. If we learn from each other, learn about our disciplines, learn how each discipline affects another, we can be far more efficient because we'll fully understand our own limitations as a team.

Ultimately, much like the beer game, the problem isn't the process or the is actually "us". We fail to understand each other and how each of our disciplines can have a negative impact on each other based on the decisions we make.

Good luck and have fun,
Jaime Bueza

Jaime Bueza is a software developer in Vancouver, British Columbia, Canada. He has developed web applications for Nintendo, Electronic Arts, Ritchie Brothers, Kiwi Collections, Cox Communications and Microsoft. When he's not developing useful software that constantly evolves with business requirements, he's creating tutorial videos for aspiring front-end developers.