What can GSoC Mentors take from Commercial Software Development
From Google Summer of Code Mentor Wiki
Slides from the presentation -- http://docs.google.com/Presentation?id=dg92bg6s_1879xmm9dd
Presented by Garth Dahlstrom / "jumpkick" (Mixxx)
Goals of GSoC
- Teach the students how to be better developers
- Deliver something usable to the community as soon as possible
- Deliver something complete by the end of the program
- Give a good impression of what OSS development is about
- Retain the students in community if possible
Parallels in Commercial Development:
- Deliver something usable to user as soon as possible
- Deliver something complete by the end of the contract
- Deliver as cheaply as possible
Mentoring in GSoC
- Heavy time cost to bring new students up to speed
- Plan to spend a lot of time getting student up to speed in the early stages
Hiring in Companies
- Big overhead at companies bringing new employees up to speed
- They take this into account
How to kick off a project in GSoC
- Proposal/Acceptance
- Establish best methods and times for communication
- Onboard students, give them a checklist of things to do as soon as they start
(establishing communication with community, introducing themselves and project goals, setting up build environments and build tools.)
- Eg. Getting on all communication channels (IRC, mailing lists, etc.)
Kicking off a project in Commercial Development
- Proposal/Acceptance (Same)
- Establish project timeline, milestones, gating points
- Hire resources, set-up PC, train on company tools, procedures and policies....
Key point:
- Figuring out how to plan and scope projects is something that new employees/students will be bad at. GSoC students might be fantastic programmers, but a mentor will be able to help a student plan a project with appropriate scope.
Encourage Efficient Behaviour (GSoC):
- Tell students to take initiative, try to solve problems by any means necessary.
- Teach about managing expectations of Mentor and Community --> Communication is absolutely essential
- Encourage your students by giving them feedback (communication). Even simple stuff like commenting, "Hey, I saw you checked in code XYZ, cool!" is good.
- Informal communication builds a trust that you can't build through formal communication. Being friendly allows your student to be less shy and come forward for help when they need it.
Encourage Efficient Behaviour (Commercial):
- Tell employees to be proactive
- Manage expectations of Boss and Client --> communication is essential.
- There should be no surprises about overall progress --> Communication!
Project Progression (GSoC):
- Communicate informally as well as formally.
- Let the student drive idea generation
* * Pair down ideas to their basic purpose to decide if they are worth the effort, help determine focus and reduce scope to things that are deliverable on a short timescale and that build into their overall vision. This will help keep the students' enthusiasm high, while keeping the goals realistic.
- Force students to plan : Project proposals
- Present plan that to the community (ML, forums) and solicit feedback
- * Gate this feedback as a mentor
- Help the student manage community feedback, reject ideas that are bad, defer good ideas that are too much to work to after GSoC
- Have students give community updates, post experimental builds
Project Progression (Commercial):
- Manage scope changes to requirements / Change Control Process
- Present project plan to project control board
- Managers and BAs phased approach to delivery, simplify ideas, pair down stuff...
- Client demos.

