The Stockton Historical Geolocation Service (SHiGS) takes historical data with any number of attributes, geolocates it, and allows the user to filter the data with search criteria on a Google Map. We created SHiGS for our final project in Software & Security Engineering.
I learned a lot about working on a team and the software creation process. Here are a few of the points that stand out:
- Open communication early. Find out exactly what the user needs and which requirements are most critical.
- Communicate with everyone often. Stockton had a progress log that we posted updates to. Besides keeping everyone in sync, the progress log was a subtle “I should catch up” alarm. We had a leg-up over the other teams in that we all participated in an IRC channel together and otherwise we friends prior to the semester.
- Leverage technology to increase communication. We used GitHub’s post-receive hooks to send text messages and emails to each member of the team when someone pushed. There was no excuse for being out of the loop.
- Most of the actual work was finished when we weren’t together. Although a lot of the design was a result of our discussions, the bulk of our code was made by each individual member by themselves. We still programmed when we were together, but it became too easy to become sidetracked.
- Meetings in person help the design process. It was easy to talk about the benefits of one type of design in person. You can talk with your hands in person and use whiteboards in person. It’s perfect for discussing ideas.
- Spend time choosing your team members. It’s a lot better to go through one awkward rejection than to suffer through a semester of disappointment. This might not be applicable in all situations. If you can’t get rid of a slacker, try hard and fast to find something that fits their skill set. If that fails, talk to someone with more power than you.
I also learned that I should keep passwords out of git if I plan to release the code as open-source. A link to a working version of SHiGS (along with the code) will be made available as soon as I move any sensitive data to a config file that isn’t tracked in version control :).
Another lesson learned: If your team member gives away the password to your server, it’s probably a bad sign.
I lost my password to the server, can you remind me?