This is the first in a new series of podcasts from the people behind InfoQ.com and the QCon conferences - the Engineering Culture Podcast.
In this podcast, Wes Reisz, chair of the QCon conferences in San Francisco, London and New York talks to Phil Haack, an Engineering Director at GitHub focused on software pushed mostly to the desktop. He’s shipping software like GitHub Desktop, GitHub Extensions for Visual Studio and the Atom text editor. Haack joined GitHub in 2011 and is a prominent member of the .Net community. At Microsoft Phil was core to shipping NuGet and ASP.NET, MVC.NET.
Key Takeaways
- There is often too much focus on the nitty-gritty details of software development practices but as you scale out to larger projects and teams the challenges are not technological- they are sociological.
- Research shows that teams which are more diverse are more effective.
- Engineers shifting to management should consider it a discipline like any other technical field; it’s not something that you should “just wing”.
- Building an effective team requires trust and that allows candid discussions and healthy debates without disrupting the relationships. One-on-ones can be an effective way to do that.
- To be an effective coach for engineers, a manager needs to be seen as a strong technical leader. Someone without technical credibility is generally not received well.
Subscribe on:
Show Notes
1m 59s There is often too much focus on the nitty-gritty details of software development practices but as you scale out to larger projects and teams, the challenges are not technological- they are sociological (quoting Peopleware). Working with other people, coordinating well and getting the most out of other people are the hard challenges when you go from a one person hobby project to large development projects with tens and hundreds of people working together.
3m 09s It’s important to be able to take an evidential approach to identifying the practices and approaches that work for collaborative outcomes, however there is not a lot of research in these areas. Take what research we do have and try it out – does it really work or is it just “conventional wisdom” that may not actually apply in the development space?
3m 40s Sane Development Practices: techniques like setting up a build environment that just works – download the project and hit F5 to have it build without having to configure many different things before you can even do the simplest activity. If you clone a repository there should only be a couple of steps needed to have it running on your machine.
4m 26s Having things like automated builds and continuous integration are about helping developers maintain their sanity.
4m 52s The Qcon SFO talk “Social Coding for Effective Teams and Products” is in a track called “Soft Skills”, but these are actually pretty hard to learn and apply in day-to-day life.
5m 09s The big problems we have are sociological, and frequently companies and engineers don’t pay enough attention to these problems because they try to focus on the technical practices instead; but the root cause is how people interact with each other and how they are working together.
5m 36s The talk covers some personal lessons learned and the research that backs those personal lessons. There is validated research that shows certain things make for more effective teams.
5m 56s Research shows that teams which are more diverse are more effective. Engineering teams with a more diverse makeup are more productive. The social justice aspect is important and it is supported by empirical evidence which shows the value of diversity in teams.
7m 11s Haack worked at Microsoft on open source tools and products, working outside the firewall and moving to GitHub. Scott Guthrie was a leader who supported the thrust to open source ASP.NET MVC and understood that the future of Microsoft depends on it embracing open source.
8m 25s The NewGit package manager was open source from the very beginning although it took a long time before the team could accept contributions from the public.
8m 51s The difference when moving from Microsoft to Github was primarily moving from a company of 100,000 people to one of 30-50 people and seeing that grow to about 600 people.
9m 23s There were cultural changes needed to make ASP.NET MVC open source, initially released under the MSPO license. Initially they had the overhead of IP reviews before releasing the code but that has been streamlined.
10m 20s With NewGit, Haack wanted to move to GitHub rather than Codeplex from the very beginning to support the larger development community. The goal was making the products appealing to the broader development community, not just the Microsoft fandom.
11m 00s Tips and advice for developers wanting to release products into the open source environment:
- Start small
- Pick something that is stand alone and test the waters
- Learn from the examples of others
- Respond to feedback
- It will require extra work to respond to community feedback but it is worth the effort
12m 52s Haack was pleased to see ASP.NET on GitHub and surprised at how quickly it has happened.
13m 34s PowerShell has been released on GitHub as a cross platform scripting tool.
13m 58s Cross platform .NET gives Microsoft the ability to make more products open source easily.
14m 26s The goal of Atom was to be “the most hackable text editor”, based on Javascript, CSS & HTML as those are tools that the majority of developers are likely to be familiar with. Your existing Web development skills can be applied to extend and hack your text editor.
15m 36s Haack wrote a blog post about encourage-atom that gives you a little bit of encouragement every time you save a file. How much fun it was to build the extension.
16m 43s Electron extracted from Atom and turned into a separate project. It has become an important community in its own right. The Slack client is built on Electron, Nuclide Facebook IDE built on Electron and Atom, and Visual Studio Code is built on Electron. Lots of companies are using Electron as a foundation for cross-platform applications.
18m 00s Electron applications are like Node applications that run in a Chromium client shell with Node and NPM which means that any NPM package can be pulled in to help build your desktop application.
18m 35s The Slack client was built with Electron. One of the Lead Engineers at Slack, Paul Bets, was originally from GitHub and heavily involved in the Electron community.
19m 06s The idea of leveraging your web development skills to build desktop apps has been around for a long time and the tools and the performance now make it viable to build good cross-platform applications.
19m 44s Haack became a manager at GitHub in response to an emergent need.
20m 22s Advice for developers who are moving into management:
- Consider management a discipline like any other technical field; it’s not something that you should “just wing”
- Learn and practice the skills needed for management
- Learn how to be good at holding weekly one-on-ones with everyone that you manage
- Build and develop trust between you and each person you work with
- Good one-on-ones are not status updates but time for you to listen to your team members
21m 39s A great resource – The Manager Tools Podcasts
21m 45s A structure for one-on-ones (30 mins): 15mins what the team member wants to talk about / 15mins what the manager wants to talk about or 10/10/10 what they want to talk about/what the manager wants to talk about/focus on the future. It is important to always start with the team member’s focus – it’s about them. This allows you to get to know each other as people and build a trust relationship.
22m 22s Building an effective team requires trust and that allows candid discussions and healthy debates without disrupting the relationships.
23m 14s Tips for building the kind of great teams needed to develop modern software:
- One-on-ones & building trust
- Building a culture that can deliver feedback well (which is hard)
- Good feedback is consistent, regular, constructive, positive
24m 10s When you have a team that is comfortable and safe in delivering candid feedback to each other, then the team has the ability to constantly improve.
24m 40s How do you hire or grow good managers?
- At GitHub, managers are technical leaders – senior engineers who have some personnel responsibilities as well
- Managers lead teams of 4-6 people
- Responsibility split – 80% technical, 20% personnel stuff
- Supported by a Director who has the inverse relationship (80% people, 20% technical)
26m 11s Building leaders who have strong technical skills and have high empathy with the ability to coach and help people to grow.
26m 30s To be an effective coach for engineers, a manager needs to be seen as a strong technical leader. Someone without technical credibility is generally not received well.
Phil Haack will be speaking at QCon San Francisco (November 7-9, 2016) in a new track called Software Engineering Soft Skills that is all about how to be an incredible software developer with a focus on the people skills needed to be effective in the role. Haack’s talk is called Social Coding for Effective Teams and Products.
Products and tools mentioned
Companies mentioned
Resources