Differences between revisions 17 and 18
Revision 17 as of 2007-11-13 23:26:16
Size: 12140
Editor: BrettCannon
Comment: Answered CD's question about what sprinting has done for me.
Revision 18 as of 2007-11-14 15:08:55
Size: 11584
Editor: 03-140
Comment:
Deletions are marked like this. Additions are marked like this.
Line 68: Line 68:

Possible questions (depending on how the "flow" actually goes:

What is sprinting?

What sort of tasks are accomplished at a sprint?
How do sprints benefit the project? The community? The participants?

Where do sprints take place?

What does a sprint in action look like?

What is required of a sprinter?

First-time sprinters, how did you decide to sprint? Were you nervous about sprinting? What surprised you about the experience? How has sprinting effected you as a programmer? What would you say to others who've never sprinted?

This will be an article demystifying Python Sprints. We hope to publish it in a major journal in time to contribute to the PyCon 2008 publicity effort and to encourage first-time sprinters to take part.

Interview participants:

CD: Catherine Devlin : never sprinted; interviewer

BC: Brett Cannon : Python core sprint coach/participant

JB: Jim Baker : Jython sprint co-coach/participant and first-time PyCon sprinter

Begin interview


*Development sprints gather small groups of people for bursts of face-to-face cooperation to advance software projects. They're increasing in popularity in the open-source world, but many developers still don't know whether or how they could take part. We speak with experienced and rookie sprinters to get a better feel for the phenomenon.*

CD: Brett and Jim, can you start by telling us a little about your backgrounds?

JB: I've been all over the place: academia (I'm an ABD in CS), IT consulting, software development, software startups, and recently open source as a community - and not just a place to get generously-licensed quality software. As a result of asking some questions, I found myself leading the Boulder Python Users Group (FrontRangePythoneers), which lead into sprinting. What prompted that was the Arlington Python User Group was sprinting, that looked quite interesting, and that eventually lead to our first sprint on Django. We have had several since then (BoulderSprint). The last was participating in the world-wide Django sprint. Our goal remains the same: everyone who walks in learns the project, and we get some usable contribution out of that day.

Finally, 12 years ago a friend suggested I use Python. About 4 years ago, I finally heeded his advice. It became increasingly clear to me that writing software is many things. It includes not only communicating to the computer, it's also about communicating that intent to other developers. Python excels in combining code clarity with code conciseness. If you think about that, these are virtues especially valuable in a peer activity like sprinting.

My background more formally is over 15 years of industry experience, with roles including CTO, Chief Scientist, and Enterprise Architect. I have co-founded two startups in the business intelligence space, including one that raised $10M in VC financing. I was also a software engineer on a business intelligence product when I first got out of school (not that we called it that marketing term back then, it was a multidimensional array database, with its own language not so different from Matlab or Numpy). I'm a graduate of Harvard (A.B.) and Brown (Sc.M.), both in Computer Science, and I also qualified for the Ph.D. at Brown.

BC: Currently, I am attending the University of British Columbia where I am working towards my Ph.D. in computer science (hopefully only two or so years left). I am researching some Java-related security stuff after trying for over a year to come up with a thesis topic that could involve Python. Previously I got my masters in computer science at California Polytechnic State University, San Luis Obispo (Cal Poly SLO for short). And before that I got my bachelors in philosophy at UC Berkeley. Basically I have been in school for a long time. =)

My involvement in Python started with me getting a pure Python implementation of time.strptime() accepted into the standard library in the summer of 2002 after I graduated with my bachelors. I enjoyed learning about Python and being on the python-dev mailing list so much that I started writing the Python-Dev Summaries that August and continued to do so until PyCon 2005. Got my commit privileges for Python the month after PyCon 2003 when Guido got tired of checking in patches for me. And as of PyCon 2006 I have been on the board of directors for the Python Software Foundation. Python is basically what I do with my free time.

In terms of PyCon and sprinting, I have attended every PyCon since its inception. I have also sprinted on Python's core at every PyCon and been the coach for the core sprint in some capacity at every PyCon since 2004.

CD: Wow. Meanwhile, I'm a complete rookie - I'm planning to attend a sprint for the very first time at PyCon 2008. Help me understand what to expect - what will it look like, what will I do?

BC: It looks like a bunch of programmers sitting at long tables, hunched over laptops with the occasional food break, having fun just programming; not much of a sight, I know, but it is fun when you are a part of it. =)

In terms of what you will do varies from sprint team to sprint team. Some spend the first half of the first day giving people an introduction to the project for those that have no experience with the code base. Others just have you start coding the instant you sit down. But in general you find your group, introduce yourself, and ask how you can help.

Then the sprint coach or group suggest something (unless you come with an idea of what you want to work on, which is great and encouraged). Some teams come in with a list of things they need done, varying based on difficulty, required experience, etc. For the core sprint, for instance, this has varied from having people rewrite tests to use unittest or doctest instead of an old-style test that is really archaic to writing the new string interpolation implementation for Python 3.0. The knowledge for this stuff ranges from just knowing how to program in Python to understanding C extensions. Pretty much anyone at any skill level can help.

You just need to come motivated. At least in the core sprint the core developers come with a list of stuff they want to try to accomplish, so they won't be hovering over you constantly asking if you need help. That being said, everyone in the sprint is quite happy to answer questions when asked! It's rather cool to be working on a bug and having the person who wrote that part of Python actually sitting at the table meander over to you, plop down next to you, and discuss the bug and the possible fix.

JB: The Jython sprint shared many of these qualities. But it had some fundamental differences, due to the succession challenges we have seen in Jython development. It was not too long ago that the project had been given it up by many (including myself), as yet another dying open source project - despite its fairly wide adoption in enterprise apps.

So our sprinting was a bit different. Often, we were trying to figure out how to wrangle a brilliant codebase that had not been touched in many places for probably 8 years. (This not legacy code where you say, I could write this so much better myself in my sleep or whatever, although a good deal is dated.) So there was not only a lot of trying out of code, there was a significant amount of discussion going on. The sprint also was an opportunity to expand the ranks of developers. And the whole time, Charlie Groves did a good job of staying on focus for bug fixes for the 2.2 release he was leading.

So while successful sprinting is going to look more or less the same as an intense peer activity, the dynamics of the underlying project are going to be significant factors as well.

CD: Working with top coders, revitalizing a whole project - it sounds exciting, but kind of intimidating, too. Jim, was it hard to decide to jump in and join a sprint?

JB: Yes. There's a significant time commitment to spending an extra 3 or 4 days sprinting at PyCon. I had signed up for - but didn't go to PyCon 2005, because of other commitments. At the 2006 event, I first heard about this craziness called sprinting, and it sounded intriguing, but I didn't know where to start.

But then there was the various articles, such as [http://www.onlamp.com/pub/a/python/2006/10/19/running-a-sprint.html Steve Holden's], and various announcements out there. The fact that PyPy facilitated its collaboration by sprinting I found fascinating. On the Jython front, I was not certain about jumping in as a co-coach, because my own Jython dev experience was at that time quite limited. But the nature of the open source community is that someone has got to step in, and that person might in fact be you or me. Would the Jython sprint had happened if I hadn't started organizing that sprint, because it seemed like a good idea? I don't know the answer to that counterfactual ;)... But in general, I think the vitality of an open source project is often seen in how willing it is to welcome new people in the fold. Python in general - and Jython in specific - has shown just an amazing friendliness.

And looking back on it, asking was it worth it to jump in and spend that time? Absolutely. This experience transformed my relationship to this open source community. So now I'm a committer on Jython, we had a successful Google Summer of Code project with a working 2.5 compiler, and I'm even going to be a reader of that student's thesis (a continuation of the GSoC project). By working so intensely with other dedicated people, sprinting enables a quick immersion into a project. Also, one cannot discount how important face-to-face is; sprinting goes beyond a meeting by interacting with artifacts that software developers truly respect.

BC: While I can't speak directly for the Jython sprint, I do remember my first time sprinting back at PyCon 2003. I was extremely intimidated! Here I was, really traveling for the first time on my own (all the other instances someone I knew was meeting me at the airport), attending a conference for the first time. But before the conference even began, I needed to walk into a room full of people who I not only knew by email only, but idolized as these great programmers who had developed the Python programming language. Definitely had the small-fish-in-big-pond feeling!

But my fears were for naught. Everyone was extremely friendly, both people I had communicated with on top of people I had never met before. I got to pair-program on developing a new opcode with Thomas Wouters who I had never met before until that sprint.

And I think it is key to remember that people are just genuinely nice in the Python. You should not feel intimidated about sprinting. It's basically sitting around for hours on end with really friendly people, programming on fun stuff.

CD: Finally, I'd like to ask a little more about what benefits sprinting has brought to you as individuals. Jim, you mentioned it drawing you quickly into a big role in the community. How else has it changed you both?

BC: For me, it has led to making many more friends and acquaintances within the Python community. While you are at the conference you run into people and chat, but it is usually just in the hallway, maybe dinner if you manage to arrange it. But at the sprints, everyone is just sitting in the same room, chatting about who knows what throughout the day. You tend to grab all of your meals together as well, leading to more chances to getting to know the folks sitting around you. The camaraderie you tend to gain during the sprints make it as much fun as the conference itself, if not more so.

Plus my abilities as a programmer improves. If you happen to do any pair programming or working on the same thing as another person there you learn a great deal from them. I know for me I have picked up a thing or two from Guido about the language itself as talking to him in person makes it easy for him to explain his thinking behind something.


end interview

AdvocacyWritingTasks/Sprinting (last edited 2008-11-15 13:59:51 by localhost)

Unable to edit the page? See the FrontPage for instructions.