What can GSoC Mentors take from Commercial Software Development

From Google Summer of Code Mentor Wiki

Jump to: navigation, search

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.
Personal tools