Well, 12 weeks isn’t a lot of time to write all the code and have all the fun that you’re supposed to have during GSoC. Efficient time management goes a long way in helping you make the most of your GSoC experience. Even though Google puts out a timeline for making sure that things do happen on time, you and your mentor should come up with a custom time line that fits in well with your project requirements and also with your plans for the summer.
You and your mentor can decide together (with the organization administrator’s approval) that you wish to extend the project longer than the standard 12 weeks (for medium and large projects) up to 22 weeks. Be sure you have a clear path and expectations on how the work will be divided over this new adjusted timeframe. Maybe there is a full month in the middle where you have finals or are expecting a child and know you won’t be able to fully commit to GSoC during that time, that can be okay as long as you and your mentor have agreed on a plan together.
The following are some suggestions that can help you to manage your time well:
Community Bonding Period
There’s already a complete section in the guide on this. (It is that important.) Use this time to get familiar with your community, setup your development environment and get an early start on the code development. This is time where you’re getting to know your mentor and other GSoC contributors. Chat with them in chat rooms, ask questions and share ideas on projects and get ready to begin the fun ride ahead.
Be upfront about your time commitment
GSoC needs an investment of about 90 hours for small projects, 175 hours for medium size projects and 350 hours for large projects. If you know in advance that you’ll need to take a few days or even weeks of vacation/break during the Summer of Code, you should communicate that with your mentor beforehand and plan to make up for lost days by extending the standard 12 week program or having heavier coding weeks to accommodate the missed time. You and your mentor have the opportunity to add some flexibility into your schedule up to a point. However, you both will need to agree on any planned breaks, an adjusted end date for your project, etc.
Regular meetings with your mentor
You should absolutely, absolutely make sure you’re interacting often with your mentor through mutually agreed upon communication channels. It is extremely important that you and your mentor are on the same page in terms of the project status and plans. Your mentor is your biggest resource and you should make sure that you capitalize on that well.
Have mini-goals for each week
It always helps to set short-term goals that you can discuss with your mentor. Breaking down your project into smaller tasks helps in many ways:
- It gets you started!! You have a smaller, well-defined task to work on which is easier to manage.
- Mini-goals help create a road map to get to the final output you’re trying to produce.
- Smaller goals are less daunting, and completing a small goal gives you the confidence to tackle the next one.
Regular code reviews
Regular code reviews are extremely important for staying on track. Don’t be afraid to ask for them as frequently as you need them. It is much better to ask for a code review after 10 or 20 lines instead of hundreds of lines. If your mentor tells you that you are going about something the wrong way, you don’t want to find out after writing a ton of useless code.
Maintain a log to keep track of your progress
Keeping a log of your progress is a great way to monitor progress both for yourself, your mentor and anyone else. It also turns out to be valuable in cases when you need to go reconsider a decision and figure out why you made that choice in the first place. Blogging is a good way to achieve this, since you may get good advice in the way of comments from people that you normally wouldn’t communicate with, and it gives you a bit of limelight as well.
Handling the time-zone differences
It’s very likely that your mentor is in a different time zone than you are. Be sure that you take this into account while you’re preparing your plan. Time zones should be included for any meeting times, and UTC is often the best time zone to use, since it is not affected by Daylight Savings Time.
Be prepared for the unexpected
Things usually don’t go the way you plan them. Make sure you have room for the unplanned changes. It’s always best to keep aside some buffer time that you can use in case you do digress from your original plan and save yourself from considerable pain and panic attacks.
Of course, do remember that GSoC is not just all coding and working. It’s about having fun too! If you manage your time well, you will have a great Summer of Code, meet interesting people and have lots of fun.