building great software engineering teams

59
Building Great Engineering Teams Brian Link Jan 2014 Image Cre dit

Upload: brian-link

Post on 13-Jan-2015

751 views

Category:

Technology


1 download

DESCRIPTION

Being an effective software engineering manager is a tricky job. Whether you’re hiring the engineering manager, are already one or report to one, in this session you’ll learn what makes the best engineering managers and how to build, participate in and manage great engineering teams. I provide tips and advice in five areas of focus: people, process, technology, product and execution. Topics include: hiring, building a team to complement your strengths, management style, effective communication, mentoring, virtual teams, career guidance, technical leadership, team size/structure, agile development, strategic roadmap building and delivering on-time.

TRANSCRIPT

Page 1: Building Great Software Engineering Teams

Building Great Engineering Teams

Brian LinkJan 2014

Image Credit

Page 2: Building Great Software Engineering Teams

2

Who is this guy?

• http://BrianLink.me @blinkdaddy• Engineering Manager Experience

– Dell Software Engineering Director of 5 teams– Dell KACE Engineering Manager for ITNinja.com– CTO and Engineering Manager at ShapeUp.com– CTO and Engineering Manager at Toobla.com (dead)– CTO and Engineering Manager at Digg.com– CTO and Technology Advocate at NSB Group– 13 years in software development consulting at Cambridge Technology Partners– VP of Engineering at other startups and companies

• Just a guy passionate about technology glorifying a hobby into a career

Page 3: Building Great Software Engineering Teams

3

What will I get out of this?

• If you are an engineering manager or aspiring to be one– How to be better at what you do– How to hire and manage great development teams– How not to screw it up

• If you’re a software developer– Learn how to participate and contribute to your team– Learn what you should expect from your manager – Learn how to support your manager

• Every great engineering manager was once a great software developer

Page 4: Building Great Software Engineering Teams

What Makes a Great Engineering Manager?

Page 5: Building Great Software Engineering Teams

5

What is an Engineering Manager?

People

Staff Mgt

Recruiter

Career Guide

Mentor

Facilitator

Culture Cultivator

Technology

Architecture

Strategy

Problem Solver

Instigator

Programmer

Product

Lean Thinker

Vision

End-user Advocate

SME

Roadmap Planner

Execution

Budget

Risk Mitigation

On-Time

Expectation Setter

Operations

Process

Change Agent

Scrum Master

Obstacle Remover

Coordinator

Page 6: Building Great Software Engineering Teams

6

Process

Change Agent

Scrum Master

Obstacle Remover

Coordinator

People

Staff Mgt

Recruiter

Career Guide

Mentor

Facilitator

Culture Cultivator

Do You Need to Be Good at All of These?

Technology

Architecture

Strategy

Problem Solver

Instigator

Programmer

Product

Lean Thinker

Vision

End-user Advocate

SME

Roadmap Planner

Execution

Budget

Risk Mitigation

On-Time

Expectation Setter

Operations

Page 7: Building Great Software Engineering Teams

Process

Change Agent

Scrum Master

Obstacle Remover

Coordinator

People

Staff Mgt

Recruiter

Career Guide

Mentor

Facilitator

Culture Cultivator

Do You Need to Be Good at All of These?

7

Technology

Architecture

Strategy

Problem Solver

Instigator

Programmer

Product

Lean Thinker

Vision

End-user Advocate

SME

Roadmap Planner

Execution

Budget

Risk Mitigation

On-Time

Expectation Setter

Operations

Page 8: Building Great Software Engineering Teams

Process

Change Agent

Scrum Master

Obstacle Remover

Coordinator

Do You Need to Be Good at All of These?

8

Technology

Architecture

Strategy

Problem Solver

Instigator

Programmer

Product

Lean Thinker

Vision

End-user Advocate

SME

Roadmap Planner

Execution

Budget

Risk Mitigation

On-Time

Expectation Setter

Operations

People

Staff Mgt

Recruiter

Career Guide

Mentor

Facilitator

Culture Cultivator

Page 9: Building Great Software Engineering Teams

Do You Need to Be Good at All of These?

9

Process

Change Agent

Scrum Master

Obstacle Remover

Coordinator

Technology

Architecture

Strategy

Problem Solver

Instigator

Programmer

Product

Lean Thinker

Vision

End-user Advocate

SME

Roadmap Planner

Execution

Budget

Risk Mitigation

On-Time

Expectation Setter

Operations

People

Staff Mgt

Recruiter

Career Guide

Mentor

Facilitator

Culture Cultivator

Page 10: Building Great Software Engineering Teams

Do You Need to Be Good at All of These?

10

Process

Change Agent

Scrum Master

Obstacle Remover

Coordinator

Technology

Architecture

Strategy

Problem Solver

Instigator

Programmer

Product

Lean Thinker

Vision

End-user Advocate

SME

Roadmap Planner

Execution

Budget

Risk Mitigation

On-Time

Expectation Setter

Operations

People

Staff Mgt

Recruiter

Career Guide

Mentor

Facilitator

Culture Cultivator

Page 11: Building Great Software Engineering Teams

11

Page 12: Building Great Software Engineering Teams

12

The Ideal Engineering Manager Scores High in All Areas

Manager (People)

Leader (Execution)

Architect (Technology)

Programmer (Technology)

Scrum Master (Process)

Strategist (Product)

0

5

Page 13: Building Great Software Engineering Teams

If You Don’t: Share Responsibility and Delegate

• Manager: Great (4)• Strategist: Great (4)• Scrum Master: Awesome (5)• Leader: Awesome (5)

13

• Architect: Awesome (5)• Programmer: Awesome (5)

You Someone else on your team

Manager (People)

Leader (Execution)

Architect (Technology)

Programmer (Technology)

Scrum Master (Process)

Strategist (Product)

0

5

YouIdeal

Manager (People)

Leader (Execution)

Architect (Technology)

Programmer (Technology)

Scrum Master (Process)

Strategist (Product)

0

5

Tech LeadIdeal

Page 14: Building Great Software Engineering Teams

14

Horrible Engineering Managers

Obvious

• Not technical enough

• Arrogant

• Stubborn

• Indecisive

• Poor Communicator

Not so obvious

• Coding full time

• Overprotective of team

• Too nice

• Jumps to conclusions

• Talks too much

Page 15: Building Great Software Engineering Teams

15

Essential attributes of an Engineering Manager

– Build trust– Earn respect– Ask good questions about challenges and technical details– Contribute code and insightful ideas– Express an opinion– Know when to delegate– Be transparent, share company news, executive decisions– Protect team from unnecessary interruptions– Involve team in decisions whenever possible– Drive productivity by creating just enough process for your team size– Be an advocate for your developers– Shield developers from politics– But shine a spotlight on successes and amplify their voices

Page 16: Building Great Software Engineering Teams

What Makes a Great Engineering Team?

Page 18: Building Great Software Engineering Teams

18

Horrible Hiring Strategies

Bad Ideas

• Coding syntax

• Theoretical questions

• Tell me about your jobs

• Tell me about yourself

• Best/worst attributes

Good Ideas

• Coding problem

• Specific thinking Q’s

• Deep on most recent

• Ask for specific stories

• Proud/regret stories

Page 19: Building Great Software Engineering Teams

19

Richard Branson – Founder and CEO of Virgin Group

"The first thing to look for when searching for a great employee is somebody with a personality that fits with your company culture. Most skills can be learned, but it is difficult to train people on their personality. If you can find people who are fun, friendly, caring and love helping others, you are on to a winner."

Credit: LinkedIn “How I Hire” series

Page 20: Building Great Software Engineering Teams

20

Jack Welch – Successful Executive from GE

Must haves: Integrity and IQ.

Should haves: Energy (lasting enthusiasm), Energize (infect others), Edge (make hard decisions quickly), Execution and Passion (work and life).

Game changer: “Generosity Gene" (passion for people, rewarding/positive manager)

Credit: LinkedIn “How I Hire” series

Page 21: Building Great Software Engineering Teams

21

Steve Blank – Retired Serial Entrepreneur and Author

Senior executive: “Searching For” or “Executing”… a business model?

Greatly affects characteristics.

Make pie chart of desired attributes - change size, measure candidates by how well they cover each pie slice.Compare visually.

Credit: LinkedIn “How I Hire” series

Page 22: Building Great Software Engineering Teams

22

Randi Zuckerberg – Zuckerberg Media, Facebook Marketing

Excited about your specific company. Knowledgeable of interviewer.

Could I see myself ever working for them? Learn from, be inspired, taking company to next level.

Relevant and interesting social feed.

Credit: LinkedIn “How I Hire” series

Page 23: Building Great Software Engineering Teams

23

Eric Ries – Author of The Lean Startup

Finding great engineers: conduct good tech interview.

Requires a whiteboard.

Ask question like creating an algorithm, which forces them to show you how they think, execute collaborative problem solving. 

Credit: LinkedIn “How I Hire” series

Page 24: Building Great Software Engineering Teams

24

Elon Musk – CEO of Tesla, SpaceX, SolarCity

“It Matters Whether Someone Has A Good Heart” and Passion

Biggest mistake: Hiring the wrong people. (Don’t hire talent over kindness)

Better to balance personality and kindness with talent to find better hires. “No a**holes policy”

“I hire people in spite of an MBA”

Credit: http://read.bi/J1dBlO

Page 25: Building Great Software Engineering Teams

25

Personality, heart, passion, culture-fit, intelligence, aptitude

• Resume– Not real important

• Experience– Think carefully about what matters– Use standard questions? Use a coding test?

• Recruiters– Don’t just trust the recruiter. Coach them.

• Personality and Culture Fit– Start here. Everything else can be learned.

• Trust your gut– Think you found an under-qualified person who might just surprise you?– Think some senior guy can learn a new language and be your tech lead?– Be open. Paint a very true picture of reality of the role and your expectations.

Page 26: Building Great Software Engineering Teams

26

People

Staff Mgt

Recruiter

Career Guide

Mentor

Facilitator

Culture Cultivator

Culture

Photo Image Credits

Page 27: Building Great Software Engineering Teams

27

Building a great company culture through hiring

“More than just atmosphere (great benefits, snacks and ping pong) the best developers want to be challenged, fulfilled and rewarded for doing work they love in a way they can help define.”

Page 28: Building Great Software Engineering Teams

28

Embodying Company Values

• Netflix culture deck describes 9 company values (behaviors and skills): judgment, communication, impact, curiosity, innovation, courage, passion, honesty, and selflessness

• Facebook lists their values up front on its jobs page too: focus on impact, move fast, be bold, be open, build social value

Netflix Culture Deck Facebook Hiring

Page 29: Building Great Software Engineering Teams

29

The Manager’s Behavior Directly Changes the Culture

• Honesty Always• Not rewarding hours worked but quality, focus• Live the work-life balance you want for your team• Groom and reward responsible people (self-

motived, self-aware, self-improving)

• The developer has an equal responsibility in maintaining the company culture

• Everyone must embody the company values

• Happy developers are loyal and hard working

“A great workplace is stunning colleagues”

“Responsible people thrive on freedom and are worthy of freedom”

-- Reed Hastings

Page 30: Building Great Software Engineering Teams

30

People

Staff Mgt

Recruiter

Career Guide

Mentor

Facilitator

Culture Cultivator

Team Mgmt

Credit

Page 31: Building Great Software Engineering Teams

31

Hiring Strategy

• How quickly can you ramp up a developer? 3 wks? 3 mos? Build a timeline.• What mix of senior and junior developers make sense for your team?• Do you need to hire another senior person before you can absorb more junior

ones?

J F M A M J J A S O N D

Page 32: Building Great Software Engineering Teams

32

Team Management

• Management style should complement your hiring strategy– Are you a better disciplinarian who can coach and mentor junior team members?– Do you focus on product and process and rely on a senior self-managing team?

Page 33: Building Great Software Engineering Teams

33

What’s the right team size?

• Agile says 5 +/- 2• Five seems to work well• But decide for yourself and experiment

• Complexity of intra-team communication increases according to Metcalfe’s Law

• As team grows, split into more teams• QA: dedicated or central?• UX: shared? how thin?

• Defining roles and structuring teams is an art. I often trust my gut instincts and commit to adjust as needed

Credit

Page 34: Building Great Software Engineering Teams

34

What can a developer do to help the team?

• Culture of sharing vs. heroism. Demo day Fridays? • Speak up when something’s not working• Volunteer to help people in need• Understand why you’re building stuff• Contribute ideas that solve business problems• Identify risks• Keep track of technical debt• Be brave about trying new things• Be bold about trying new technology, but ask first

Page 35: Building Great Software Engineering Teams

People

Staff Mgt

Recruiter

Career Guide

Mentor

Facilitator

Culture Cultivator

Career Guide & Mentor

35 Credit

Page 36: Building Great Software Engineering Teams

36

Career Guidance and Performance Feedback

• What do you want to do with your life?– Don’t be selfish as you give advice about career growth

• Annual reviews– No one likes them. Why?– Be direct. Be succinct. Truly aim to help your team grow, meet their goals.

• Performance feedback. Good and bad– Be timely in sharing feedback. No surprises in annual reviews.– Praise team members. Share appropriately.

• Poor performers and culture misfits– Immediately on an improvement plan. Remove if appropriate.– PIP needs to happen right away and create an audit trail. Build path to success.

Page 37: Building Great Software Engineering Teams

37

Mentoring• Are you the architect or are you grooming one?

– Should the engineering manager tackle all the most difficult problems?– If you help someone else solve the problem on their own it’s much more beneficial

• Mentoring is about understanding people’s goals, instigating them to explore areas they’re good at or need improvement in + coaching them on how to grow

Credit

Page 38: Building Great Software Engineering Teams

38

Technical Leadership

• Look for opportunities for sharing and spreading knowledge– Everyone can learn something

from each other

• Ask dumb questions– “So when I run this code,

this happens… oh nevermind, I figured it out”

Credit

Page 39: Building Great Software Engineering Teams

39

Regular Communication

• Best if manager schedules regular 1:1’s with each direct report– Weekly or every other week as needed– Two way open agenda. What’s going on? What’s on your mind?

• What do you do if your manager isn’t doing this?– Proactively send a brief status every week perhaps– Schedule a 30 minute meeting to discuss your topics– Ask for specific advice– Send short messages on achievements and successes (review fodder)

Page 40: Building Great Software Engineering Teams

40

Process

Change Agent

Scrum Master

Obstacle Remover

Coordinator

Agile Scrum

Credit

Page 41: Building Great Software Engineering Teams

41

Scrum Best Practices

• User stories, estimated with story points. Track and adjust velocity each sprint.

• Just in time everything: estimates and design. (Limited documentation)

• Daily standups kept brief: what’d you do, what’s next, any impediments?

• Use epics to plan a healthy yet rough roadmap for 12-18 months

• Concentrate on 1-2 month horizon in detail, some detail on next quarter and fuzzy goals beyond that

• Don’t waste time estimating a future that will change

• Software company? Consider release planning process to set expectations

Page 42: Building Great Software Engineering Teams

Scrum Master – Obstacle Remover

• Owner of process – adjust as needed– Just enough process– Adjust process with team size as needed– Ears open for ideas in hallways– Rigor in tracking, updating ideas as they change

• Remove Obstacles– Politics or prerequisites– Dependencies on upcoming sprints

42

Success

Do

toLots

• Remove

• Protect Team

Bad Thin

g

Page 43: Building Great Software Engineering Teams

43

Technology

Architecture

Strategy

Problem Solver

Instigator and Advocate

Programmer

Strategy

Credit

Page 44: Building Great Software Engineering Teams

44

Technical Strategy

• What does a CTO do? [article reference?]– Vision– Future roadmap and impact on technology– Architecture– Technology selections

• Engineering manager hat– Logistics like code streams– Team structure and hiring plan (balance of skills)– Technical debt and technical backlog items– Estimation gut check and unturned rock finder– Process challenges

› Product strategy coordination – clarity on user stories› QA integration, continuous delivery model (2:1 ratio?)› UX integration, ahead of time or just in time?

Page 45: Building Great Software Engineering Teams

45

Technology

Architecture

Strategy

Problem Solver

Instigator and Advocate

Programmer

Advocate

Page 46: Building Great Software Engineering Teams

46

The Developer’s Advocate

• Are developers visible enough?– A good manager amplifies the voices of his or her team– The best ideas often come from the developer who’s quiet– Let everyone be heard. Encourage it.

• Focus– “Can I ask you a quick question?” 30 second interruption

can cause 30 minute delay– Communication style. Meeting window? Most productive

time? Flexible hours?– A good EM is the roadblock remover and team productivity

protector

Page 47: Building Great Software Engineering Teams

47

Technology

Architecture

Strategy

Problem Solver

Instigator and Advocate

Programmer

Programmer

Page 48: Building Great Software Engineering Teams

48

You’re not that slick anymore!

• The Engineering Manager is also a programmer, maybe hasn’t coded full-time in a few years but stays sharp so he can still think like a programmer.

• Good career trick: straddle the line between technology and management

• No matter how much responsibility, I think it’s important for the Engineering Manager to contribute some code occasionally

Page 49: Building Great Software Engineering Teams

49

Product

Lean Thinker

Vision

End-user Advocate

SME

Roadmap Planner

Roadmaps

Credit

Page 50: Building Great Software Engineering Teams

Lean Thinking

• Goal: Eliminate waste– Does this product even make sense? Can we prove it?– What’s the least we could do to validate our idea?

• Feedback: Hey, you, would you use this? Tell me why not. – People tend to give positive feedback.

50

V1 Working Product

$5 Million

MVP

$1 Million

Prototype

$50K

Paper

$5K

Page 51: Building Great Software Engineering Teams

Product

Lean Thinker

Vision

End-user Advocate

SME

Roadmap Planner

Roadmaps

51 Credit

Page 52: Building Great Software Engineering Teams

Product Technology

If Product Owner owns product what does Eng Mgr do?

• Should have a strong cooperative relationship• Help prioritize the future roadmap• Help define product with technology bent in mind• Add clarifying details (“don’t forget about this and that”)• Facilitate conversation between engineering and product• Ensure estimates are conducted properly using story points

52

Page 53: Building Great Software Engineering Teams

53

Product Definition

• User stories, MRD/PRD or requirements doc

• Why create an Marketing Requirements Doc (MRD)?– Clarity, purpose– Metrics, expectations– Go back and validate, track those expectations. Teams rarely do.

• Well structured User Stories– As a <user>, I’d like to accomplish <task> because it will <benefit>– Acceptance criteria

› Must work in the following browsers, OS’es, etc.› Don’t forget to try doing this without logging in› Must prohibit two users from performing action at same time

Page 54: Building Great Software Engineering Teams

Tactical window vs. Strategic window

• Different kinds of product roadmaps and timelines• Short term: what are you doing this month or so?• Long term: what are your goals by quarter?

54

Product Roadmaps

Release Plans

Sprint Backlogs

Page 55: Building Great Software Engineering Teams

Execution

Budget

Risk Mitigation

On-Time

Expectation Setter

Operations

Risks & Delivery

55 Credit

Page 56: Building Great Software Engineering Teams

56

How to delivery on-time and mitigate risks?

• Use your tools: communication, metrics, hire/fire, process changes, team changes and don’t forget about you (you are the twelfth man)

• Ultimately, you’re responsible for getting things done. Everything. – Not meeting goals? Address it. Not getting there fast enough? Hire or innovate.

• It means owning the budget. – Working with the business. Spending their money like it’s your own.

• It’s understanding, recognizing risks and knowing when to take them. – Also, knowing how to build mitigation strategies.

• Execution is the intersection of process, technology and people. – Your job is to craft the recipe just right.

Page 57: Building Great Software Engineering Teams

Summary

57

People

Staff Mgt

Recruiter

Career Guide

Mentor

Facilitator

Culture Cultivator

Process

Change Agent

Scrum Master

Obstacle Remover

Coordinator

Technology

Architecture

Strategy

Problem Solver

Instigator

Programmer

Product

Lean Thinker

Vision

End-user Advocate

SME

Roadmap Planner

Execution

Budget

Risk Mitigation

On-Time

Expectation Setter

Operations

Page 58: Building Great Software Engineering Teams

58

Summary

• People: Great engineering teams are built first on great people

• Process: Agile drives success through predictability

• Technology (Architect): Steer the ship but amplify the team’s voices.

• Technology (Programmer): Must earn respect to lead a great team.

• Product: Do the bare minimum, then iterate. Stay lean my friends.

• Execution: Requires style (rope vs. whip). Heavily depends on culture.

Page 59: Building Great Software Engineering Teams

Thanks!

Questions?

Contact Infohttp://brianlink.me

Twitter@blinkdaddy

[email protected]

Linked Inlinkedin.com/in/brianwlink

Presentation:bitly.com/greatsoftwareteamsslideshare.net/blink21

Download