Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Organized Chaos by Megan Marquardt

bloc
December 04, 2015

Organized Chaos by Megan Marquardt

If you're like most software engineers, you have a long todo list. In this tech talk, Megan Marquardt discusses her strategies for being productive and multi-tasking.

Video: http://code.bloc.io/organized-chaos-by-megan-marquardt/

bloc

December 04, 2015
Tweet

More Decks by bloc

Other Decks in Programming

Transcript

  1. Reasons Not To Multitask • Takes longer to complete the

    first task • Overhead of switching between tasks lengthens completion time task 1 task 2 time without multitasking t1 t2 time t1 t2 t1 t2 t1 t2 with multitasking t1 t2 time t1 t2 t1 t2 t1 t2 with multitasking + overhead
  2. More Reasons Not To Multitask • Difficult or complex engineering

    problems require your brain to retain a lot of information all at once. A lot of analogies to computers here. • Continuous partial attention: you won’t see the details
  3. IRL Examples • New technology is combining multiple media sources

    • Texting while driving • Talking while watching TV • Eating lunch while making this presentation • Walking while talking
  4. Let’s Refute These Reasons • Longer task completion times: ◦

    Multitasking is a requirement, it’s part of the job. • Switching tasks takes time: ◦ Yes, but there are ways in decrease that overhead. • Complex tasks take a lot of brain space: ◦ Breaking up tasks into smaller pieces is beneficial for development ▪ aligns nicely with iterative development ▪ helps organize and modularize code • Missing details: ◦ Some tasks don’t need every bit of your attention
  5. Pick Your Battles • Don’t multitask on a task that

    needs all your undivided attention. Unplug. • Configure your projects so that they can be multitasked • Know your multitasking skills • Small bug fixes: plenty of attention gaps
  6. Does My Workspace Matter? • command+tab, use it much? •

    Headphone rule • Ask for a minute of time • Reduce peripheral attention when necessary (french music, techno, classical) • Proportion screen space to its priority
  7. Working On Multiple Tasks Using the computer analogies: • Reduce

    the amount of memory in short term • Move unnecessary data from short term into long term • For the python fans out there: you have a GIL, be aware of it • Use transaction blocks • Use lists, not sets • Don’t go into swap • Follow common architecture and design patterns
  8. Context Switching Reducing the overhead of context switching: • Use

    analog sources for your list ◦ To do list ◦ Questions ◦ Roadblocks ◦ Priorities
  9. Bug Crushing To Your Advantage Reproduce ∙ Write Test ∙

    Find Offending Code ∙ Fix ∙ Code Diff ∙ Land ∙ Deploy • In the spaces between, switch to something else • Leave comments with hypothesis, ideas, questions • Think “out loud”
  10. Coding To Your Advantage • Pseudocode and leave notes in

    comments • Use stub functions to organize ◦ refactor as you go, don’t leave your code a mess