40
DEVELOPING A KICKASS (HIGH PERFORMING) ENGINEERING TEAM SUNONDO GHOSH, ENGINEERING EXECUTIVE [email protected]

Developing a Kickass (High Performing) Engineering Team

Embed Size (px)

Citation preview

Page 1: Developing a Kickass (High Performing) Engineering Team

DEVELOPING A KICKASS

(HIGH PERFORMING) ENGINEERING TEAM

SUNONDO GHOSH, ENGINEERING EXECUTIVE

[email protected]

Page 2: Developing a Kickass (High Performing) Engineering Team

Top 10 Ways how NOT to Develop a Kickass Engineering Team

10. Work on stuff with no business benefits – someone, somewhere, sometime assigned this to us and we’re gonna do it no matter what!

9. Hire really bad engineers – slackers, cowboys and duds8. Don’t take any risks – always take the road frequently traveled7. Create complex processes to do anything – at least 3 meetings per day for

“coordination” – mandatory for all engineers of course6. Create looooong and rigid schedules to complete any work – complete in years what

should take weeks5. Always dictate to engineers what to do – don’t let them make any decisions – take a

lot of time to make your decisions 4. Work on boring problems or technologies – if possible both!!3. Never look outside your group for expertise – you know everything! 2. Always follow the rules – no matter how much it slows the team1. Don’t have any fun – that will take away time from work damn it!

Page 3: Developing a Kickass (High Performing) Engineering Team

So how DO you develop a Kickass

(high performing) engineering team?

Page 4: Developing a Kickass (High Performing) Engineering Team

1 – Attitude

Page 5: Developing a Kickass (High Performing) Engineering Team

1 – Attitude• Can Do attitude!!• Figure out a way how to get things done instead of thinking

of why it is impossible to do

• If missing, how to develop?• Starts at the top – find right team leaders with

consistently successful execution experience• Fill resource and skill gaps – that builds confidence!• Review challenges and risks with team and help them

resolve issues quickly• Remove team members with negative attitudes

Page 6: Developing a Kickass (High Performing) Engineering Team

2 – Exceptional Talent

Page 7: Developing a Kickass (High Performing) Engineering Team

2 – Exceptional Talent• Finding exceptional talent (more in appendix)• Look for range of technical skills and passion• Entrepreneurial mindset, open source participation, maintains tech blog, …• Don’t compromise on culture fit – avoid loners and whiners• Keep diversity in mind – talent doesn’t all look the same!

•Develop the talent on an ongoing basis• Encourage continuous learning for career development

•Also leverage experts from outside your group • Partners across the company, or outside talent

Page 8: Developing a Kickass (High Performing) Engineering Team

3 – Teamwork

Page 9: Developing a Kickass (High Performing) Engineering Team

3 – Teamwork• Molding individual talent into great team• Get team excited about mission – define BHAGs – big hairy

audacious goals • Focus!! Be crystal clear about goals and metrics – what will

make team exceptionally successful? • Empower engineers to make decisions – while being

accountable. Self driven teams are most motivated• Encourage helping of others (e.g. prompt code reviews)• Reward accomplishments publicly; provide feedback for

improvements privately• Ensure consistently low performing members are removed

from team

Page 10: Developing a Kickass (High Performing) Engineering Team

3 – Teamwork• Working with external teams can sometimes be a challenge• Look for win-win• Don't dictate, share the problem, and work together on the

solution• Have great leaders and coordination mechanisms in place

• Defining and monitoring key metrics can have a big impact, e.g. • Engineering Excellence: code coverage, velocity, automation• Operational Excellence: availability, performance, FCIs• Team Metrics: happiness index

Page 11: Developing a Kickass (High Performing) Engineering Team

4 – Flexibility

Page 12: Developing a Kickass (High Performing) Engineering Team

4 – Flexibility• Be flexible with Processes, Releases, Assignments, …

• Processes• Minimize processes that slow down the team• Meetings are productivity killers!• Automate as much as possible

• Releases• Have a flexible release schedule• Use agile principles – continuous integration / continuous

delivery if possible

Page 13: Developing a Kickass (High Performing) Engineering Team

4 – Flexibility (contd.)• Assignments• Engineers are encouraged to be multi-dimensional – work

across the technology stack and/or functionality

• More!!• Flexible location – allow work anywhere culture – use Slack, IM,

etc. to stay in touch• Flexible team size – use contractors to vary team size as

needed

• Use judiciously – e.g. distributed teams require better communication but gets you a bigger pool of talent

Page 14: Developing a Kickass (High Performing) Engineering Team

5 – Risk Taking

Page 15: Developing a Kickass (High Performing) Engineering Team

5 – Risk Taking• How to take calculated risks• Make decisions quickly – based on available data

• Follow aggressive schedule• “If everything seems under control, you're just not going

fast enough” - Mario Andretti

Page 16: Developing a Kickass (High Performing) Engineering Team

5 – Risk Taking (contd.)• Rules – meant to be broken!• Don’t follow all rules if they get in the way• Break rules with good intent – live the company values, not all

the rules!

Page 17: Developing a Kickass (High Performing) Engineering Team

HAVE FUN!!!

Page 18: Developing a Kickass (High Performing) Engineering Team

Fun!• If team is having fun, they feel motivated and engaged,

improves productivity and retention• Pay attention to culture – it doesn’t always happen naturally –

make sure team members are encouraged to enjoy themselves and have time and space to do it

• Reward team achievements with fun activities• Plan for team activities that encourage bonding • Encourage participation in company activities such as holiday

parties or innovation jams!

Page 19: Developing a Kickass (High Performing) Engineering Team

Fun Teams

Page 20: Developing a Kickass (High Performing) Engineering Team

How To Develop A Kickass Engineering Team

KickassEngineering

Team

Page 21: Developing a Kickass (High Performing) Engineering Team

APPENDIX

Page 22: Developing a Kickass (High Performing) Engineering Team

EVALUATING TEAM FOR KICKASSINESS

Page 23: Developing a Kickass (High Performing) Engineering Team

Team Performance Evaluation (1/2)• Questions to ask

• Teamwork/focus: What is your team's goal or highest priority and how do you measure it?

• Talent: How do you rate your team's technical ability on a scale of 1 to 10?• Attitude/Talent/Teamwork: How capable do you rate your team in achieving

your goals?• Teamwork: What % of decisions impacting the team does the team make vs the

leaders? Is that good?• Teamwork: Is your team highly motivated to achieve its goals?• Fun: How much fun do you have in your job?• Teamwork: How good is the decision making for the team? How quickly are they

made? • Teamwork: If there was one thing you would change about your team what

would it be?

Page 24: Developing a Kickass (High Performing) Engineering Team

Team Performance Evaluation (2/2)• Questions to ask (contd)

• Teamwork: How helpful are other members of your team?• Teamwork/Fun: How are team members rewarded for achievements?• Talent: Do you have any low performing members on your team? • Teamwork/Risk taking: Is team leadership helping you move fast or slowing you

down? Why?• Fun: What does your team do in their free time? • Teamwork: Is your team productive at delivering for customers? Are customers

happy with team’s deliveries?• Teamwork: What are the biggest challenges facing your team? Are you getting

help in resolving them?• Flexibility: Is your team open to change? How about team leaders?

Page 25: Developing a Kickass (High Performing) Engineering Team

PRIOR TEAM RESULTS

Page 26: Developing a Kickass (High Performing) Engineering Team

Business Banking Team• In 2015, started and grew the new Business Banking team within Digital

Insight from 0 to 25 people within 2 months. Brought in awesome team leaders (managers, architects, tech leads, scrum masters) and engineers.

• Results: Delivery of v1 pilot functionality within a record-breaking 7-month timeframe. Included new platform and business functionality and thorough quality, scalability, and security testing. Resulted in satisfied customers and engaged employees.

Page 27: Developing a Kickass (High Performing) Engineering Team

Business Banking Team (contd.)• Kickass principles applied:• Attitude – in Digital Insight a brand new product had never been

delivered in less than 1 year. The team leadership had a “can do” attitude about getting it done in less

• Talent – an awesome architect was hired from outside who worked closely with an equally awesome engineering manager. Hiring process was set up to move fast and hire amazing talent

• Teamwork – team kickoff organized for team introductions, understanding mission, goals and priorities, setting up team operating principles, defining scrum teams, reviewing plan

Page 28: Developing a Kickass (High Performing) Engineering Team

Business Banking Team (contd.)• Kickass principles applied (contd):• Flexibility – Contractors were added to expand team quickly,

outstanding remote engineers were added to team who could deliver functionality fast with high quality, team was self driven to a large extent

• Risk taking – The aggressive schedule was the biggest risk for the project – risk was reduced by hiring talented team members rapidly and negotiating on minimum features required for pilot release with product team

• Fun – In each sprint the “happiness index” was measured and any issues raised by the team were fixed. After working hard for many months and delivering initial version of the product, the entire team went on an exclusive lunch cruise of the San Francisco Bay! Also later whole team went out for movies

Page 29: Developing a Kickass (High Performing) Engineering Team

Big Data Team• From 2013-15, led the Big Data engineering team to set up and grow

the Hadoop infrastructure at Intuit IFS and Digital Insight. Selected results: • Set up new Hadoop cluster and migrated report processing from data

warehouse to big data system – dramatically reduced processing time from 1.5 days to a few minutes! Also significantly increased processing capacity.

• Scaled from an initial 10-node Hadoop cluster to a set of two 20- node clusters to achieve high availability and disaster recovery.

Page 30: Developing a Kickass (High Performing) Engineering Team

Big Data Team (contd.)• Kickass principles applied:• Risk taking – the whole team was brand new to Hadoop and Big Data

– so there was some risk to migrate to a new technology vs expanding the existing data warehouse. Risk was mitigated by partnering closely with Cloudera and internal engineers learning from them

• Talent and Teamwork – team already had talented engineers and data analysts. Focusing on goals, partnering with external experts in Cloudera and making high performing team member the engineering manager of the team helped boost team performance significantly. Later team was augmented with Big Data architect

• Fun – company and team organized fun events including trips for bowling, to the arcade, holiday parties and others. Also team participated in innovation jams regularly winning prizes which was motivating

Page 31: Developing a Kickass (High Performing) Engineering Team

DETAILED CASE STUDY

JUMPUP / LIVE COMMUNITY TEAM RESULTS(INTUIT)

Page 32: Developing a Kickass (High Performing) Engineering Team

Why was the JumpUp team kickass?- Productivity

25+ releases in last 9 months including 12 major releases with 50+ changes

75+ releases in last 3 years over 3 projects!

Project DateLive Community in intuit.com Aug ‘08Live Community in Quickbooks Casbah!! Sep ‘08Intuit Community goes live! Oct ‘08Live Community in Lacerte and ProSeries Nov ‘08Live Community in Quickbooks.com and Payroll Setup

Dec ‘08

Scaled up site to meet crazy growth! Dec ‘08 – Apr ‘09

Page 33: Developing a Kickass (High Performing) Engineering Team

FY08 goal of 200K posts met by

March! (vs 125K last year)

Satisfaction and Call Avoidance

increased significantly

Why was the JumpUp team kickass?- Results

Page 34: Developing a Kickass (High Performing) Engineering Team

Why was the JumpUp team kickass?- Customer Satisfaction

• “The JumpUp engineering team thrived on hard challenges - the harder it was, the more they seemed to enjoy it. They always had an unstoppable can-do approach.” - Lisa Gevelber (Exec sponsor of JumpUp in ‘06-07)

• “For the Just Start campaign, it was amazing to see how the JumpUp engineering team took on the challenge, in such a short period of time, to deliver such a cutting-edge online experience. It’s no wonder we won the Warrillow Small Business Marketer of the Year award for that effort.” – Kira Wampler (Co-Lead for “I Will Just Start” marketing campaign in ‘07)

• “The JumpUp team’s never say no attitude, iterative mindset accompanied by their customer driven development made for outcomes that were above and beyond just solving for one team which enabled Live Community and Intuit Community to be a success.” – Pranay Kapadia (Product Manager for Quickbooks Live Community in ‘08)

Page 35: Developing a Kickass (High Performing) Engineering Team

Why was the JumpUp team kickass?- Fun!

Page 36: Developing a Kickass (High Performing) Engineering Team

TURNING AROUNDLOW PERFORMING TEAMS

Page 37: Developing a Kickass (High Performing) Engineering Team

Making Low Performing Teams Kickass• Ensure the right attitude and ability among team leaders – including can

do attitude and talent – kickass leaders result in kickass teams• Identify low performers on team – figure out issues causing low

performance – either improve them or transition them out, quickly!• Identify high performers – encourage and promote them. If no high

performers on the team – bring in from outside• Identify challenges in culture or process – fix those, e.g. transition from

non-agile to agile, or negative to positive attitude • Monitor individual team members closely, set high expectations and

provide detailed feedback – both positive and negative• To improve low performers use a variety of techniques – training,

mentoring, providing regular feedback, in extreme cases written PIP (performance improvement plan)

• Celebrate small successes to build confidence and morale

Page 38: Developing a Kickass (High Performing) Engineering Team

MORE ADVICE ONHIRING AWESOME TALENT

Page 39: Developing a Kickass (High Performing) Engineering Team

Hiring Awesome Talent• Creating pipeline of candidates• Use internal referrals • Give good bonuses for anyone hired through referral – it saves

money!• If hiring push is needed, create a contest and give prizes (e.g. gift

certificates or iPads) on a weekly basis to most referrals submitted• Provide text for employees to post job listings on LinkedIn, Facebook

and Twitter – otherwise not too many will do it• Use consulting firms• Find some good consulting firms that have high quality engineers

and augment your team with them • Use recruiting agencies• Try different ones and see which ones send you the best candidates

• Send job postings to mailing lists, Meetups, even Craigs List!

Page 40: Developing a Kickass (High Performing) Engineering Team

Hiring Awesome Talent (contd.)• Recruiting effectively• Interviewing• Create an interview panel and write up the different aspects of what

each member is interviewing for – meet with panel to discuss• Provide pool of questions in advance both for technical and

behavioral interviews • Ensure a few interviewers are designated to get candidate excited

about company and role – the best talent has multiple options• Designate specific days as “interview days” so that all recruiting

agencies can make a push to bring in candidates on those days• Move fast with decision making – best talent will not be available for

long