18
EFFECTIVE ENGINEER BY EDMOND LAU

Effective engineer

  • Upload
    tony-vu

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Effective engineer

EFFECTIVE ENGINEERBY EDMOND LAU

Page 2: Effective engineer
Page 3: Effective engineer

HOW TO BE MORE EFFECTIVE AS AN ENGINEER?• Adopt the right mindsets• Focus on high-leverage activities• Optimize for learning• Prioritize regularly

• Execution• Improve the iteration speed• Measure what you want to improve• Validate your ideas early and often• Improve project estimation skills

• Build long-term value• Balance quality with pragmatism• Minimize operational burden• Invest in the team’s growth

Page 4: Effective engineer

FOCUS ON HIGH-LEVERAGE ACTIVITIES

• Reduce the time to complete a certain activity• Increase the output of a particular activity• Shift to higher-leverage activities

Page 5: Effective engineer

OPTIMIZE FOR LEARNING

• Adopt Growth Mindset

Page 6: Effective engineer

OPTIMIZE FOR LEARNING

• Seek work environments which are conducive for learning• Dedicate the time on the work for learning

Page 7: Effective engineer

PRIORITIZE REGULARLY

• Track To-Dos list in a single easily accessible listHow do you keep track of To-Dos?• Which activities to prioritize

Urgent Not Urgent

Important CrisisPressing issuesDeadlines

Planning and preventionBuilding relationshipsNew opportunitiesPersonal Development

Not Important InterruptionsMost meetingsMost emails and calls

Time wasting

Page 8: Effective engineer

PRIORITIZE REGULARLY

• Limit Work-In-Progress Tasks• Depends on person but generally 1 or 2

• Protect maker’s time

Page 9: Effective engineer

IMPROVE ITERATION SPEED• Invest in time-saving tools• Shorten the debugging and validation loops• Master your programming environment• Get familiar with your IDE• Learn a scripting language• Get familiar with Unix Shell commands• Automate your workflows• Make unit tests fast

• Tackle non-engineering bottlenecks• Manager’s approval• Communication with other teams

Page 10: Effective engineer

MEASURE WHAT YOU WANT TO IMPROVE

• Pick the right metricsBug fixed vs Bug Outstanding?Short Click-through rates vs long click-through rates?

• Instrument everything• Healthcare.gov launch disaster

• Ensure data integrity (Do you measure correctly?)• The only thing worse than having no data is the illusion of having the right data.

Page 11: Effective engineer

VALIDATE YOUR IDEAS EARLY AND OFTEN

• Find the cheapest way to validate your idea• Prototype• Mock-up• A/B testing

• Get feedback early and often• Commit code early and often• Code reviews

Page 12: Effective engineer

IMPROVE PROJECT ESTIMATION SKILLS• Estimate based on small tasks• Think of estimation as probability distribution not as best-case scenario• Beware of anchoring bias• Validate estimates based on historical data• Let the person who do the tasks estimate• Allow others to challenge the estimate• Define specific goals and measurable milestones• Tackle the riskiest task first• Be caution of rewrite projects• Don’t sprint in the middle of marathon

Page 13: Effective engineer

BALANCE QUALITY WITH PRAGMATISM• Standard code convention, styles?• Establish code review process

• Catching bugs early• Increase accountability• Sharing good practices• Sharing knowledge of codebase• Increase long-term value

• Good abstraction can significantly improve output • MapReduce

• Automated testing (unit test, integration test)

Page 14: Effective engineer

MINIMIZE OPERATIONAL BURDEN

• Embrace Operational simplicity• Choose the simplest technologies for the task (Instagram)• A New Feature, A New Tool = Potentially introduce complexity

• Build System to Fail Fast• When a problem occur, it should fail immediately and visibly

Page 15: Effective engineer

MINIMIZE OPERATIONAL BURDEN

• Automate Mechanical TaskWhy don’t we want to automate?• No time• Lack of familiarity with automation tools• Underestimate the future frequency of the task• Tragedy of the commons

Page 16: Effective engineer

RESPONSE AND RECOVER QUICKLY

• Anticipate failures and hone ability to recover• Ask what if• Self-healing?

Page 17: Effective engineer

INVEST IN THE TEAM’S GROWTH• Make hiring a priority• Build a good boarding process• Ramp up new engineers as fast as possible• Impart the team’s cultures and values• Socially integrate new engineers onto the new team

Codelabs? BootCamp?Mentorship? Talks?

• Share ownership of the code- Mentoring and pairing- Rotate types of tasks across the team- Document complex workflows, designs,..

Page 18: Effective engineer

INVEST IN TEAM’S GROWTH

• Build collective wisdoms through post-mortems  • Build a great engineering culture