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

Software Engineering for Hackers: Bridging the Two Solitudes by Tavish Armstrong

PyCon 2014
April 13, 2014

Software Engineering for Hackers: Bridging the Two Solitudes by Tavish Armstrong

PyCon 2014

April 13, 2014

More Decks by PyCon 2014


  1. What is this talk about? • Let's use our data

    analysis tools to analyze our FOSS projects • Let's make smarter decisions based on what we learn • Teach others what we've learned and help them reproduce our experiments
  2. A CHALLENGER “My impression is that the Haskell shrinking factor

    averages around four, but obviously it varies a lot.”
  3. Python is more readable than other languages. Unit testing helps

    us maintain quality. We don't do unit testing; it takes too much time for too little benefit. Python is good for beginners. C++ is better for beginners. Happy programmers make better programmers.
  4. Most patches don't get many reviewers. You should keep your

    patches small. Most code review is just nitpicking. “Many eyeballs make all bugs shallow.”
  5. We do benchmarks to test performance. We usability test our

    UIs. We use analytics on our websites.
  6. Making Software • Offices: doors open or closed? • Pair

    programming: yea or nay? • Modern code review • Failure prediction using organizational structure
  7. Rigby* and Bird, 2013 @ FSE “Convergent Contemporary Software Peer

    Review Practices” * my supervisor last summer
  8. Science • People read it • People reproduced it •

    People fixed it • People improved it
  9. Gousios, G., Pinzger, M., and van Deursen, A., 2013 (ICSE)

    gousiosg/pullreqs gousios.gr/blog/on-github-pull-requests/
  10. • 80% of pull requests merged in < 3 days

    • while 30% merged < 1 hour. • 70% of all pull requests are merged.
  11. To merge or not to merge: 1. How active the

    area affect by the pull request has been recently 2. The size of the project 3. The number of files changed by the pull request.
  12. Tools • git2json: Tools to pull out data from VCS

    history • gitcoach by Mike Hoye: “You modified file X? Consider also modifying file Y.” • Idea: PR-lint: suggest improvements to pull requests based on Gousios
  13. • Study how you write software • Teach your friends

    something cool • And back it up with evidence • Share what you learn with others • Build tools to make this easier THANKS http://tavi.sh/solitude Send me emails! [email protected] @tavarm