Undergraduate Capstone Open Source Projects

What Should Greg Say At PyCon?

Posted by Greg Wilson on 2010/02/15

I’m speaking at PyCon on Saturday. The blurb I sent in says:

What We’ve Learned From Building Basie

Since September 2008, teams of undergraduates from half a dozen different universities have been building a Django-based replacement for Trac called Basie. This talk will present what they’ve accomplished and discuss what we’ve learned about getting junior developers who are juggling half a dozen projects at once to build production-quality code.

I’d enjoy hearing from past and present project students—49ers, GSoC and UCOSP alumni, and everyone else, not just those who worked on Basie—about what they got out of the various project courses I have run, and why.

3 Responses to “What Should Greg Say At PyCon?”

  1. Pierre LaFayette said

    As undergraduates, typically the code that we write for assignments is throw away code; not useful for anything but helping us achieve a good grade and learning some arbitrary programming concepts. One of the reasons the project courses are so appealing is that you get a chance to work on something that fills a need and will actually have users other than those who created it. In many cases, the projects will also be worked on by other undergraduates. This motivates students to write better code knowing that they will be judged by their peers. Add the fact that you get to choose a project that is of interest to you and it is quite evident why students would have a much more enjoyable experience in a project course. For the case of the UCOSP projects, there is an invaluable learning experience that students are getting earlier than usual. Much of what new grads would normally learn at their first software development job, they get to learn while working on an established open source project in their final year. They get to be exposed to software professionals who act as mentors and role models for the young developer. I think any student who does a UCOSP project will be much more prepared for the real world of software development. It’s the next best thing to doing an internship.

  2. Sana said

    Some of the things that I learnt during the project

    * learning how to read existing code before writing any new code. Software courses should also incorporate reading comprehension in their course exams. So many times in the real world you’ll encounter code that may not make sense. Don’t try to rewrite everything you can’t understand.

    * Solving long-term bugs. For assignments in most courses, problems go away when you hand the assignment in. You always start fresh for new assignments. In real life the bugs exists even after the deadline and the release.

    * Gathering requirements and/or interacting with clients

    Thats all I can think of.

  3. Teren said

    Gah! I’m too late! šŸ˜¦

    Anyway, here goes:

    1. Requirements are just guidelines. While you do have some sort of a blueprint to work with, you quickly realize that in reality, there is no such thing as a set specifications. Requirements change quite often from when you first start out and it’s very different from the assignments provided in school where methods, variables, structure are all provided to you and you merely have to implement.

    2. Code reading and documentation are so so important! There’s never really a time when you start developing something from scratch. Even using documentation on JavaDocs is already requiring you to read something. It’s such an important skill at being able to read code.

    3. Overall structure and flow of the software – Greg put me to this task when I was somewhat lost. He made me go through the workflow of the software and had me map it out and explain how everything works and ties in. I reckon this is probably one of the most important things I learnt and it’s helped me a great deal in my career.

    4. Exposure to production-grade code is a big thing that I learnt. Coding styles by people already in the industry is big eye-opener. At school, you never really see any of it unless you’re really interested in open-source software and seek it out yourself. The course had me looking at advanced JavaScript that has set the foundation for my work today.

    5. Teamwork – being able to work with other students on a project that’s ongoing is huge. It was also nice to have people from the industry help guide us along the way while also leaving us with something to figure out on our own. That really perked my interest back into computer science and software engineering. You never know how challenging it can be to work in a team to build something – especially when most of the team is remote.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: