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

Organized Chaos by Megan Marquardt

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for bloc 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/

Avatar for bloc

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