This content has been archived, and while it was correct at time of publication, it may no longer be accurate or reflect the current situation at Microsoft.
As a software architect, Raja Narayan has one guiding principle that’s inspired by the words of Eleanor Roosevelt: Learn from the mistakes of others. It also helps to have a community forum where software developers get feedback at Microsoft.
“Every development team has their own process for software development, but I wanted to create a forum where people could learn from others,” says Narayan, a principal software engineer at Microsoft. “Now, people can reuse solutions or ideas developed by other teams.”
Sahil Garg’s team in Finance Engineering has continued to grow and he agreed with Narayan that it would be helpful to create a place for software developers to share their lessons learned and best practices.
“The industry is changing all the time, and it’s hard for any engineering team to stay in front of that,” says Garg, principal director of software engineering on the Finance team at Microsoft. “I wanted a place where team members could explain how they came up with their design choices, share best practices, and get feedback.”
The Architecture Consultancy Forum at Microsoft, an initiative led by Garg, does exactly that—it’s a place where engineering teams can come together to learn from each other and share what they’re working on, whether they’re at the stage of architectural design, development, or production. Plus, it’s well-positioned in Microsoft Digital, the organization that powers, protects, and transforms the company.
“Everyone wanted to join the forum,” Garg says. “When we realized this was popular, we went to Microsoft Digital leadership and said, ‘why don’t we upscale it to support all of the developers in our organization?’”
It’s easy for people to get defensive if they feel like 500 people are judging their work. By branding it as a consultancy, employees recognize that they’ll learn from others.
-Sahil Garg, principal director of software engineering, Microsoft Finance
Garg says that employees have been receptive to the architecture consultancy forum sessions as a place to learn from other teams, so they don’t reinvent the wheel every time they create a service.
“If someone is designing an authentication solution, they can learn from attendees who are experts in topics like security or Azure Active Directory integration,” Narayan says.
Creating a community forum for software developers rather than a review session was an intentional one. It’s a place for engineering teams to present their architecture or solution, and attendees will ask questions and share what they’ve tried on their own teams.
“It’s easy for people to get defensive if they feel like 500 people are judging their work,” Garg says. “By branding it as a consultancy, employees recognize that they’ll learn from others.”
Narayan notes that there are clear benefits of having proactive conversations about getting feedback during the architecture stage.
“If we catch an inefficiency in an architecture stage, it’s much easier to fix before implementation,” Narayan says. “Other teams can validate designs based on their learnings and adjust accordingly.”
[Read this case study on designing a modern service architecture for the cloud. Check out this blog post on DevOps engineering practices.]
A collaborative approach to software development
Garg and his team were able to get alignment and support from leadership to run this forum, which was critical to their success.
“Microsoft is a great place to be empowered to influence the company from the bottom up,” says James Gagnon, a principal group engineering manager in Microsoft Finance who helps run the Architecture Consultancy Forum. “Once we got approval, our next step was to highlight the value of the forum for Microsoft employees.”
After getting buy-in from leadership, Garg created a core team of people in each core organization who are passionate about helping others mature their infrastructure. Every individual would advocate for folks in their organization to join.
“We started doing monthly meetings with teams that were on the cusp of making system changes,” Garg says. “Then they take the feedback and adjust the design.”
In addition to the feedback sessions, Gagnon schedules workshops and runs community engagement discussions.
“We have a culture of recognition, and these workshops and sessions encourage people to share and what they learned,” Gagnon says.
Narayan also worked on design principles for reference architecture that addresses security requirements and helps developers connect disparate systems.
“These principles gave us common language when talking about people’s systems,” Narayan says. “That way we could easily refer back to the principles, give feedback, and propose alternatives.”
When Satya Nadella took over as CEO, Microsoft embraced an open-source approach to software development. The architecture principles and community space ensure that we can come together and learn from each other.
– James Gagnon, principal group engineering manager, Microsoft Finance
Embracing a culture of learning and sharing
Garg says that the success of these review sessions hinges on a culture that values learning.
“When Satya Nadella took over as CEO, Microsoft embraced an open-source approach to software development,” Gagnon says. “The architecture principles and community space ensure that we can come together and learn from each other. It’s welcome, rather than a forcing function.”
To support this, Narayan runs a Microsoft Teams channel where the community can continue the conversation from the forum by asking questions to get guidance on software architecture and designs. Core members including Narayan are there to respond within two days.
“This community is growing every day, and people have remained active even when they move on to other parts of the company,” Narayan says.
Break down virtual boundaries and encourage employees to engage across levels and disciplines. Create a forum where people could be a part of something bigger outside of their core teams.
– James Gagnon, principal group engineering manager, Microsoft Finance
Currently, the Teams channel connects over 2,600 employees, and the team offers regular sessions and workshops to complement these conversations.
“We see a lot of people helping each other with complex technical challenges,” Gagnon says. “Someone was moving to infrastructure as a code, and she saw someone else’s post about abstraction and invited them to present to their team. It’s a good example of employees learning about technology that they can leverage.”
It’s been invaluable to build this community and encourage networking, and it’s a model that Gagnon encourages other teams to use.
“There are so many people that have subject matter expertise, and we can create connections where people can work together,” Gagnon says.
If your team is creating a community forum for developers to get feedback, it’s important to empower employees to ask questions and learn from each other.
“Break down virtual boundaries and encourage employees to engage across levels and disciplines,” Gagnon says. “Create a forum where people could be a part of something bigger outside of their core teams.”
And if your team is creating a similar opportunity for software engineers to get feedback from each other, Gagnon encourages you to frame it as a learning opportunity.
“Find people who are passionate about helping each other learn,” Gagnon says, “That way they can reuse each other’s architecture solutions or ideas.”
It can help to make a decision matrix to help your team come up with the right solution in terms of leadership priorities, budget, and resources. The most pivotal piece of advice is to ensure that employees are invested and want to learn from others.
“This shouldn’t be a checkbox exercise, but an opportunity for people to make decisions collectively,” Gagnon says. “If you focus on building a community, you’re already halfway there.”
Garg can attest to the power of this forum and how its impact and the community will only grow from there.
“We’re empowering developers to support each other in the end-to-end process of software development,” Garg says.