Although the Engineering department is our domain, we do not sit in isolation. We simply can't do our job without many interactions with other teams or departments.
I've said it before - most problems can be traced back to poor communication.
- Engineering teams should share status, impediments, components, libraries, API's, documentation, strategy, best practices, coding standards and much more with their peers on other Engineering teams.
- Product Managers should share their vision, requirements, acceptance criteria and priorities with QA and Engineers
- Support and QA should share their feedback with Product Managers often, to help them prioritize course corrections
- Your Project Managers should be all seeing, all knowing to continually monitor progress and direction
Your Engineering Trifecta
That last point bears more discussion. I've heard our role being described as all seeing, all knowing too.
Your Engineering Director role is part technical and part execution, but ideally you do not work continuously on either. You have a Lead Project Manager on one hand, who might oversee other PM's, and a Chief Architect/Principal Engineer on the other who leads the technical direction and quality.
If you find yourself performing one of those roles yourself, work quickly on hiring your replacement.
You can only be effective in your role of Engineering Director when you have delegated the daily work of coding and project management to your seconds-in-command.
They in turn will feed you the important information.
Effective Engineering Workspaces
Always be looking to remove barriers to communication between teams. You may even see physical barriers between departments - one company I worked for actually "banned" other departments from entering the Engineering space.
Even high cubes discourage collaboration.
Take a fresh look at your physical space, and watch how many conversations are taking place right now. Quiet, dark spaces are not as productive as you or the engineers think.
Engineers are not code monkeys, pounding away at their keyboards, churning out product without any collaboration.
If that's the behavior that you see, encourage change.
Engineers should collaborate with peers and their customers often - customers include your product managers, QA, support and marketing. If they don't, they will code with blinkers on, blindly churning out what was asked for but often not what was meant or needed.
This is especially true if you have customers who specify implementation details instead of their desires.
- Rip down the cubes and form team pods
- Move the customers closer to the engineers - even sit the product owner on the same team pod as the engineers
- Create collaboration areas; shared hightop desks with large monitors, comfy chairs around a coffee table, private rooms - and whiteboards on wheels everywhere
- Encourage collaboration through peer reviews, architectural reviews, team brainstorming, whiteboard sessions, pair programming, office hours
Go physical, not virtual
Make interactions short and physical, not long and virtual.
I've seen companies with Work-From-Home (WFH) policies that result in video standups even though everyone lives in the same city. Virtual standups are inevitably longer and much less effective - if they're not giving status, they are probably checking their email or on Slack, chatting. Standups become pointless.
Don't rely on communication between departments happening at the executive level or via status reports - encourage regular physical meetings between senior team members at a minimum. You'll find these meetings are great checks-and-balances.
I have an informal 8:30am meeting with Project and Product managers every single day to make sure we're all on the same page.
Host a weekly product demo, and invite QA, Support, Product, Marketing and Documentation teams. Engineers demonstrate what they have done, and ask for feedback. This way no-one is surprised what a release contains.
And especially if there is any friction or distrust between teams, don't try to fix over email or indirect methods. Get them in a room and have an open and honest conversation.
Remember, Tell Them Everything.
It may be painful in the short-term, but it's the only way to build cohesive teams and ultimately build a better product.