or mastered a skill. 1. Create a product that makes users happy. 2. Create a codebase that’s maintainable and not fragile. 3. Be intellectually excited by what we’re working on. 4. Do it with limited time and resources. As fast and lean as possible. Wednesday, October 9, 13
makes users happy. 2. Create a codebase that’s maintainable and not fragile. 3. Be intellectually excited by what we’re working on. 4. Do it with limited time and resources. As fast and lean as possible. And that’s why culture matters. Wednesday, October 9, 13
* Planning your code * Writing consistent code * Testing your code * Improving your code * Releasing your code * Monitoring your code * Learning from bad code while(1) { writeCode(); } Wednesday, October 9, 13
for Team Page Lunch: Show & Tell Afternoon: - Talk: Backend Architecture - Talk: Frontend Architecture - Talk: Code Review Process - Deploy first change together! - Meet your team Tuesday: - Work on a small change - Deploy small change Wednesday-Friday: - Pick first big project - Brainstorming meetings with designers - Begin working on it! Wednesday, October 9, 13
was done while in # context-switching topic mode, which has since been removed from the site. # TODO(benkomalo): Remove when all references are dead topic_mode = db.BooleanProperty(indexed=False, default=False) def consume_optional_goog_info(self, goog_user): """Assigns user information from Google to this UserData. Does not call put() on this entity and expects callers to do so. Args: goog_user An instance of google.appengine.api.users.User Returns: whether or not fields were consumed and this entity was modified """ import feature_flags.infection # sad circular dependency fix :( """Holds UserData, UniqueUsername, NicknameIndex UserData: database entity holding information about a single registered user UniqueUsername: database entity of usernames that've been set on profile pages NicknameIndex: database entity allowing search for users by their nicknames """ module function TODOs + deprecation Sadness Wednesday, October 9, 13
is written, as long as it works. Good culture: Values a codebase where the code looks the same and seems to all belong together. Wednesday, October 9, 13
to write “safe” code, that’s magically free of bugs because you’re all so smart. Good culture: Realizes that tests are the key to a stable and maintainable codebase. Wednesday, October 9, 13
What kind of tests? How often are the tests run? Is there a testing requirement for new features? Is there a testing engineer or testing team? Wednesday, October 9, 13
your code or gives you non-constructive criticism on your code. Good culture: Recognizes that code reviews are a great way for everyone to learn from each other. Wednesday, October 9, 13
to how it fares in the wild. Good culture: Recognizes the value of logging, alerts, and user feedback mechanisms to ensure code validity. Wednesday, October 9, 13
rug, refusing to acknowledge or learn from them, or blames them on a bad coder. Good culture: Realizes that mistakes are an opportunity for the *whole team* to learn and improve. Wednesday, October 9, 13
What went right? • What specific action items would prevent this from happening in the future? https://groups.google.com/forum/#!topic/google-appengine/p2QKJ0OSLc8 Don’t blame. Learn. Wednesday, October 9, 13
Share with others “Team Geek” by Fitzpatrick and Collins-Sussman http://blog.pamelafox.org/2013/07/what-to-look-for-in-software.html http://www.joelonsoftware.com/articles/fog0000000043.html Wednesday, October 9, 13