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

How development models affect the team by Maciej Fijałkowski

Pycon ZA
October 07, 2016

How development models affect the team by Maciej Fijałkowski

There has been a lot said about how to ensure correct quality control using tests, continuous integration, peer review etc. In this talk I would like to focus exclusively on my experience as an open source contributor with various projects. I've contributed extensively to projects I don't manage (like twisted, mercurial, cpython) and I've overseen contributions by others to projects like vmprof or PyPy. I would like to share my experience on how various methods (tests, reviews etc.) make me feel as a contributor and how easy it is to integrate changes based on that. I think the human factor of contributions is often too omitted from the process.

Pycon ZA

October 07, 2016
Tweet

More Decks by Pycon ZA

Other Decks in Programming

Transcript

  1. Who am I? Maciej Fijałkowski come from Poland, live in

    South Africa mostly PyPy project baroquesoftware - PyPy consultancy October 6, 2016 1 / 29
  2. What am I going to talk about? there has lots

    been written about team & code quality there is not enough on "how it affects the team" October 6, 2016 2 / 29
  3. Background open source development (pypy, vmprof, twisted, hg, cpython) volunteer/work

    for a decade lots of ideas about software engineering October 6, 2016 3 / 29
  4. Open Source my main focus is open source some of

    this might apply to corporate teams everyone is a newcomer at some point October 6, 2016 4 / 29
  5. Caveat this is not scientific research none of the stuff

    here means I’ve done proper studies October 6, 2016 5 / 29
  6. But... all the projects are different it’s hard to do

    sound statistics in a team of 3 (un)voiced opinion matters October 6, 2016 6 / 29
  7. What makes developers happy? very difficult question, depends... ability to

    feel empowered doing cool stuff October 6, 2016 7 / 29
  8. Ideal scenario? everything is nicely tested deployment takes no time

    your turnaround time is <15s (test, deploy) ... but you can hack as much as you want October 6, 2016 8 / 29
  9. Ideal scenario? everything is nicely tested deployment takes no time

    your turnaround time is <15s (test, deploy) ... but you can hack as much as you want October 6, 2016 8 / 29
  10. Developer workflow find out what has to be done try

    to do it try it and see it fail debug/test repeat commit October 6, 2016 10 / 29
  11. Developer workflow find out what has to be done try

    to do it try it... check facebook/HN ... wait for tests to complete debug/test repeat commit October 6, 2016 11 / 29
  12. But not... find out what has to be done do

    it quickly wait 30minutes/2 weeks to test prevalent in the era of punchcards! October 6, 2016 12 / 29
  13. But not... find out what has to be done do

    it quickly wait 30minutes/2 weeks to test prevalent in the era of punchcards! October 6, 2016 12 / 29
  14. What can be optimized? all of the above! but let’s

    focus on the iteration ... and developer happiness October 6, 2016 13 / 29
  15. Let’s get to details I’m going to talk about open

    source projects I contributed to ... or I helped to contribute to pypy, cpython, hg, twisted critique of processes, not projects October 6, 2016 14 / 29
  16. Project quality all of the above (pypy, cpython, hg, twisted)

    are high quality they all have vastly different development process what improves/decreases team moral seems to be a good question? is your project welcoming? October 6, 2016 15 / 29
  17. Power structures there is always a power structure lack of

    explicit one makes the power structure implicit October 6, 2016 16 / 29
  18. Problems of distributed development deadlock (A waits for B who

    waits for A) starvation (your patch never gets looked at) fairness (people can commit to core, but you cannot) October 6, 2016 18 / 29
  19. Tests everyone has to write tests(or are some people excluded?)

    proving things about your code very useful makes it easier for developers to feel confident long test runs are frustrating October 6, 2016 19 / 29
  20. Continuous integration makes you more confident about other platforms if

    not delayed can increase the testing time significantly October 6, 2016 20 / 29
  21. Code reviews someone looks at the code you wrote very

    useful! can be potentially personal people tend to bikeshed smaller harmless patches more October 6, 2016 21 / 29
  22. CPython very bugtracker based code reviews mandatory for newcomers (but

    not core) hard to get commit bit easy to wait months or forever for a review different responsibilities for different people tests less mandatory, but welcomed quick build time, slow tests October 6, 2016 22 / 29
  23. Mercurial mailing list based hard to get commit bit code

    reviews mandatory relatively quick review process doctests, but required October 6, 2016 23 / 29
  24. Twisted very test based very fast tests easy to get

    commit bit code reviews strict and mandatory tests strict and mandatory ... networking is hard October 6, 2016 24 / 29
  25. PyPy very test based slow tests slow build time code

    reviews optional, post process delayed CI very easy to get a commit bit October 6, 2016 25 / 29
  26. My personal view PyPy is a hard project - let’s

    simplify the contribution process having a swiss on the team helps a lot reducing test times/build times would help a lot October 6, 2016 26 / 29
  27. Is this contribution relevant? if we think this is a

    net positive - we’ll merge it for code that noone touches - let’s merge it instead October 6, 2016 27 / 29
  28. Summary the iteration time is crucial the frustration can come

    from both humans and robots robots are harder to hate (they mean well) October 6, 2016 28 / 29