Je hoort vaak over codeninja's en rockstars-developers, maar wat je echt nodig hebt om een project goed van de grond te krijgen is een sterk, coherent team dat soepel samenwerkt om het beste uit zichzelf te halen. Dus de vraag is wat ervoor nodig is om zo'n team van ontwikkelaars samen te stellen dat goed werkt met meerdere afdelingen.
We selecteren hier interessante artikelen uit het internationale netwerk van onze uitgever IDG.
We reached out to tech executives and engineering managers who have done exactly that and asked them to share their hard-earned wisdom of team building. From finding the best fit for your next hire to keeping your team fresh and motivated, the following collective advice will have your team coding at its best.
1. Empower your engineers
Engineer teams can often find themselves at odds with management, business development, or marketing on any given project -- often because they are treated like order-takers rather than collaborators. To get the best from your developers, let them be heard and have a say in what they work on.
At online real estate site Trulia, management and development teams meet quarterly to plan and work out issues, says Jeff McConathy, vice president of engineering for consumer services.
"The process is employee-driven," McConathy says, "with teams responsible for creating their own priorities and road maps and presenting them to senior management and leaders across the company. Each team also shares their successes and [what they've learned] over the past quarter. This helps each team determine their plans and prioritize projects, and allows ... the management team to ask questions and ensure each group is set up for success and moving in the right direction for the company."
Employee-empowerment measures can also ensure engagement and help retain top developer talent.
"The team should be allowed to determine their own professional road map, and what technologies are most suitable for specific tasks, while at the same time being held accountable for their decisions," McConathy says. "Ask teams to focus on specific high-level goals, then let them run with ideas and execution. This is true empowerment, and at the end of the day, we all like to work in an environment where we can make a difference and learn new things."
2. Remember your roots
Engineering managers all too often find themselves pulled away from their first love: writing code. But the problems with overemphasizing the "management" aspect of a dev manager's work profile run deeper.
"Companies need to position managers as strong technical mentors to their teams," Lambert says. That way, engineering managers "can provide guidance on code and projects, help them navigate technical challenges, and use their personal experiences to multiply the effectiveness of their group."
Training is a great opportunity for bringing managers and team members together in the same boat. At Booz Allen Hamilton, principal Dan Tucker gets help from a team of agile coaches, who train and coach teams and managers.
"As a rule, we have managers go through these experiences with their teams," Tucker says. "This helps to level-set on a common language, work through resistance and confusion, and design the journey ahead."
Trulia's McConathy also recommends an employee-focused culture and an open door -- even in the face of business-based duties. "I've canceled meetings with our president in order to grab coffee with a new employee or someone trying to work through a problem," McConathy says.
3. Increase business visibility
Giving your developers greater visibility into the business is another way to ensure your technical teams can bring a deeper understanding to bear on achieving business goals. For this, Larry Gadea, CEO of Envoy, preaches transparency.
"Aside from private employee information and customer data, we let employees see everything about the business," Gadea says. "This includes investor updates, board meeting slides, up-to-the-minute finances -- including bank account balances -- un-redacted calendars, etc."
Bridget Frey, CTO of Redfin, agrees that exposure to the company's core business activities is important in helping developers gain valuable insights.
"Our engineers shadow our real estate agents, learning what it's like to take a customer on tour or negotiate a home purchase price," Frey says.
4. Break down the walls
If your projects aren't solving the problems they're supposed to, it may be a matter of barriers that need breaking down.
Amanda Whaley, director of developer experience at Cisco, attacks silos by targeting two areas: cultural and technology.
"On the cultural side, we invest energy into building relationships across the company," Whaley says. "One example is sponsoring internal unconference and hackathon days where team members from many organizations can work together in a workshop and create connections that can then be used to facilitate collaboration."
"On the technology side, we value an API-first culture," Whaley adds. "This encourages development teams to build APIs so that it is easy for other teams to build integrations and leverage each other's projects."
5. Know when to cross-train -- and when to specialize
Shaking up roles in the short term may build a team that's better trained to handle unexpected problems on the fly. Here, cross-training can be essential to getting the most of your team.
Redfin's Frey says the company uses cross-training widely. "Within engineering, most of our engineers work with multiple technologies, and we run a series of engineering training classes that are open to anyone."
But there can be an upper limit on cross-training where the returns no longer justify pulling specialists off their domain to increase versatility. John Paliotta, co-founder and CTO of Vector Software, says while important, cross-training can go too far.
"For a development group you clearly want redundancy so that multiple developers can work on the same area of the product, but you also want each developer to have a deep specialization," Paliotta says. "Specialization results in huge productivity gains versus having a team of generalists."
6. Mix it up
Another way to facilitate cohesion and break down barriers is to expose team members to fellow tech colleagues they might not typically interact with in their daily duties.
Zubin Irani, founder and CEO of cPrime, emphasizes the need to mix it up: "At our last all-hands meeting, instead of breaking into our usual teams, we actually mixed different teams together so they could talk about cross-team issues, and come up with solutions together about how to improve things," Irani says. "For example, our mobile team, our ecommerce team, and our API team all met together with the goal of talking about what's working well and what's not between the teams, then they spent time coming up with ways to improve where they had challenges."
Usha Parsa, product director for Yahoo Cloud Services, says interteam cross-pollination is all about creating common goals.
"We believe in an agile approach ... across different reporting boundaries that come together for execution toward a common goal," Parsa says. "Modular teams share a common goal. Teams have individual daily stand-ups for efficiency, but teams also meet each other in short 'Scrum of Scrums' several times during the week to share progress and where they need help from each other."
7. Go cross-functional
Sometimes the best way to get the most of your development team is to split them up and fold them into cross-functional teams that pool talent from various facets of the business. This is especially effective if you find projects hindered by departmental silos.
Nic Grange, CTO of Retriever Communications, says creating groups based on results -- rather than function -- helps reduce the problems found in silos. It comes down to how your business is structured.
"Creating a structure of cross-functional teams can help reduce the impact of silos," Grange says says. "Some information will still be siloed within the cross-functional team, but at least they have all the information they need to deliver their business outcomes."
8. Get out of the office
What about ways to keep team members working well together? How do you keep a group feeling motivated, at ease with each other, and importantly, not burned out?
Eden Chen, CEO and founder of Fishermen Labs, says his firm gets away -- far away -- from its Los Angeles-based office each year for two weeks.
"We're looking at Sydney, Madrid, or Budapest this year," Chen says. "We are able to work there and still complete projects during this two-week time period, but this is huge for team building, for talking through process inefficiencies, and getting the multiple teams on the same page -- business, project management, design, and development. We also do one meetup a month where we go out and do something fun."
9. Celebrate success
Another way to avoid burnout and increase morale is to take the time to pat yourselves on the back. Here, Artur Seidel, vice president of Elektrobit, advises celebrating successes right away.
"We always host a shipping party celebrating an important release for a customer," Seidel says.
He recalls a project with a tight deadline that led to working over the holidays.
"We finished on Dec. 29, and celebrated with a day of snowmobiling in the Canadian wilderness ... and then flew home," Seidel says. "What could have been a real drag turned into a positive memory and team bonding."
10. Give back and bond
Let's face it, not everyone can find passion in tackling bug reports in pursuit of business goals all the time. Some developers hope to bring their skills to bear on more pressing problems outside the workplace, if only they had the time.
Why not run with that instinct and provide a valuable refresh for your engineers' souls and minds?
At Cisco, Whaley says the company "encourages employees to volunteer their time to help their community or support a global cause. These volunteer opportunities are a way to give back and to spend time together as a team."
11. Keep connected
If you have a dispersed workgroup and not enough budget to fly the whole team in for a fancy work retreat, you gotta get creative to stay connected and keep remote workers motivated and in the loop.
Nathen Harvey, vice president of community development at Chef, says the company has found ways to bond even though their developers are spread around the country.
"We have offices in Seattle, San Francisco, and London. I work remote from Maryland or am often on the road out at community events," Harvey says. "We host all-virtual meetings regularly, so everyone dials into a videoconference and has the same experience. We even host virtual happy hours. In maintaining an effective team of engineers, think about what are the things that they enjoy. It doesn't matter if they are introverted or extroverted, social butterflies or socially awkward, the thing they'll all love is getting to know one another. Once you know those on your team, it becomes easier to get to know people from other departments."
12. Bear down
Sometimes heading out for drinks or taking the team sailing isn't the best route to better teamwork and productivity.
"I've found that good developers are engaged much more when you provide them with professional satisfaction than when you ask them to go outside [the office]," says Nir Cohen, an ops architect at GigaSpaces. "Most of them would actually prefer to stay in and discuss work."
But if sticking to the office means more meetings, team building or not, you're doing it wrong.
As John Piekos, VoltDB's vice president of engineering, points out, it's important to keep developers challenged -- but not stuck in meetings, even if you're all standing.
"Engineers like to work on hard problems and are most effective when they are uninterrupted," Piekos says. "So one of my philosophies is to keep interruptions and especially meetings to a minimum. Each team has their stand-ups and backlog grooming meetings, and we hold iteration review meetings every two weeks. Beyond that I have a weekly staff meeting with my team leads (product owners) and a quarterly 30-minute organizational update meeting. One of my engineers even uses the lack of meetings as a selling point while interviewing our engineering candidates."
13. Lean on your team when looking for new hires
Attracting -- and retaining -- top talent is possibly the most important part of engineering good products. The time spent fixing problems related to staffing, misunderstandings between groups, and keeping people motivated is better spent developing, communicating effectively, and cleaning up technical debt.
"Make sure that your teams are strong stakeholders in the recruiting process," says GitHub's Lambert. "Look for people who match the skills of the team."
Recruitment is one of the hardest parts of running a good dev team, and it doesn't necessarily get easier, says Skyla Loomis, director of Cloudant engineering for IBM Analytic Platform Services. But the answer to some recruiting problems may be closer than you think.
"A good place to start is leveraging the network of your existing team," Loomis says. "A friend or ex-colleague is going to be most effective at influencing a strong candidate, and they're more likely to be a match for your team's culture."
Bret Waters, CEO of Bay area software consulting company Tivix, says nothing is more important than how you recruit top talent.
"We have every new candidate interview with five to six members of the existing engineering team," Waters says. "Strong teams participate in recruiting and selecting new team members. Weak teams have new bozos selected for them."
14. Be open -- and practical -- when hiring
Given the importance of team cohesion, not to mention the sellers' market when it comes to hiring devs, the recruiting process should find your team and projects a bit more center stage than you might think.
"Shape the recruiting process around the work they are actually going to be doing," says GitHub's Lambert. "Give them a chance to evaluate you and the company as much as you are evaluating them, and as part of that, share as much as you can about the inner workings of the company and direct them to resources that can better help them understand the organization -- for example, your engineering blog."
15. Recruit passively -- and promote from within
Sencha's senior director of product management, Gautam Agrawal, advises what he calls a passive recruitment strategy that gives you a sense of who's available before you have a position to fill.
"Just as employees look for opportunities, employers should also create a program where they are networking with candidates that they would like to have to generate a pool of candidates that would help them to pick someone when they actually need them," Agrawal says.
This network-before-you-need approach should also be coupled with ongoing evaluation and development of your primary talent pool: current staff.
"Evaluate existing employees before putting out new postings in the job boards," Agrawal says. "It's important for morale and very efficient to identify existing talent in the company and promoting those individuals."
16. Be open to ideas
Good ideas can come from anywhere. With a strong, engaged team and a collective understanding of business needs, any technical challenge becomes an opportunity to inspire valuable ideas from your team.
"You'll be amazed at the results," IBM's Loomis says. "I had a project several years ago that was focused on delivering query performance. We had steep objectives -- speed-of-thought response times for complex analytic queries over tens of terabytes of data. We had a plan and a list of features we were building to meet that objective, but the individuals working on the project came up with new ideas along the way to do smarter caching and plan better optimization recommendations. We adjusted course to incorporate those innovations and blew our performance targets out of the water.
"There are always business objectives and deadlines to meet, but don't lose sight of what motivates your team. Because without them, you have nothing."