to Software Craft Thursday, May 24, 12 (could also probably be titled “how to drive yourself insane by overanalyzing everything, and other people too!”)
& Twitter @seeflanigan Thursday, May 24, 12 Live in Denver, sling code @ groupon, take pictures sometimes, talk too much (esp on twitter,) listen to lots of music, like movies, food, hiking. Lazy student; overthinker.
@ bartmurphy Thursday, May 24, 12 - EVERYONE WHO BOUGHT A TICKET - Organizers, Speakers, Sponsors - Lots of other people for conversation, inspiration, encouragement
in learning about learning. Building an integrated life. - always a student, always a teacher - work is about more than sitting behind a computer - learning is about more than books, screencasts, and classes - software is about more than just interacting with a computer (it’s about people) - lessons are everywhere if we are open to them Apprenticeship patterns suggestion of a meandering path through the book; Glenn Vanderburg’s Real Engineering talk (Ruby Hoedown?) Vid from Lonestar 2010 Should probably read Refactoring Your Wetware but haven’t got around to it. Anyone can summarize? Beers? Breakfast?
a break. Had some fun. (Snowboarding, hiking, dining, reading, watching movies, etc.) Discovered that I wanted to find a better balance in my life; between consuming and producing, learning and teaching, working and resting. Gained a ton of perspective/insight on my relationship with software. Learned some things that I think are interesting, & I want to share them.
are writing part of the story about software that future generations of developers will iterate on. What we focus on is important. Continuous learning matters. Be more functional?
will probably be obvious to some, some of this will be obvious to many, and most of these ideas are new to me; I’m just starting to understand how they work, and how to best connect them. Patience required.
• Review • Summarize Thursday, May 24, 12 Propose a schema for identifying patterns/systems in other real-world domains (IRL) & applying them as analogies to software craft. Explore some examples and observations I’ve considered. Have you thought about this stuff? What are your observations? Please share. Hopefully we can incorporate the knowledge into our practice and grow together.
main() • Inflection Point Thursday, May 24, 12 What is the same? What are the parallels, what maps cleanly from XYZ domain to software? What are the differences? What exists in SW but not XYZ? Vice versa? What is their core value prop? What problem does it solve, what value does it add? (Company, etc.) How do their actions support this? How do they win or lose?
• Communication Thursday, May 24, 12 What challenges do they face? What causes them? Who addresses them? How? What is the pace/style of their communication? (Fast vs slow, formal vs informal? Kitchen staff vs legal proceedings?) History?
apply the wisdom? • What can we teach? Thursday, May 24, 12 Is there something they have that we don’t? (Can we learn?) Something we have that they don’t? (Can we teach?) - is this appropriate? (How) can we communicate the insight? Not every moment is an ideal learning one; more so not every moment is an ideal teaching one let’s remember the spirit of open source; give back when we can.
not for glory but for the love of the game and to make themselves better. ”For us, it’s about benchmarking where we are, finding areas of strengths and critical areas where we need to work... — USA Coach Pete Steinberg.” Besides Scrum, there are some other parallels...
body types, all sorts of factors like a sw team Want to be able to identify which player will be doing what (like naming in SW) Constant training/retrospection/evaluation/refactoring
The social; after the game the players from both teams get together and drink and have fun. social is hosted by the home team. (sort of like a conf afterparty) Similarly, user groups/confs/communities are made up of people from (sometimes competing) companies. Like software, it’s not that old in the grand scheme of things; in modern form, has been around since 1830s.
your feet. Steering, controlling the speed/direction. Being mindful of others on the mountain (your team, future maintainers, stakeholders) Board fit: first step is to assign variables; height, weight, xp then appropriate board size is given. (right tool for the right job, thinking about tools, gear, infrastructure...) project size, team size, size of the mountain ~= scale of team/project/company Gravity pulls us all down the mountain, we’re trying to get down the best way we can. Metaphor for life? Metaphor for software? Might as well try to glide down gracefully.
as the Remover of Obstacles, what can we learn from his tactics? Strengthening the body for Meditation (to strengthen the mind) as devs a strong mind (more imptly a clear mind) seems like a worthwhile idea. Balance - e.g. between adding and deleting code Focus - what is the responsibility of this module (SRP) Core strength - what is this system good at, this team? me? how can we improve?
stack & UX; Chef’s tools; knives, pots, pans, stove || Our tools; git, vim, Infra (Servers) Communication between FOH & BOH, between Chef & his staff UX: user facing stuff, quality ambience (pics, music, lighting, plates, flatware, napkins, cleanliness, smells!) service (attitude/personality/knowledge in waitstaff, speed, accuracy) quality (presentation, ingredients, seasoning, flavors) Striking a balance between all of these things
beautiful art. Requires precision, technique, is largely a reflection of the dev/chef and their xp level/style. WAS NOT MEANT TO LIVE FOREVER. Great food is made with love, care, skill, and meant to be consumed, to give us energy, to sustain us, to delight the senses; sight, smell, taste... Software can do the same. But it is meant to feed us for a time and to become dirt tomorrow. Iterate. Improve. Delete your code.
kind of systems will result? (what will the kids look like? if we outgrow one another, how messy might a divorce be?) How do you address the difficult issues to get a better result with a long-term pair, or project/team, etc. (Communication) Marrying a company; tying your financial concerns together, representing their values...
no longer do the 3K mile migration with 1M wild caribou. If your code (you!) becomes stale/domesticated, it will no longer be able to run in the wild. Some other more apt predator will eat it. Need to constantly refactor, learn, improve, iterate. One aspect of craftsmanship is about improving the craft.
new perspective, and a new way to learn and gain more perspective. Take that, apply it to other domains, see how we can make these new (to us) frontiers more efficient. (Find/create a market, create/satisfy a need?)
friends & team for their help, and to the organizers, speakers, and most of all you, for spending time with us & these ideas so that we may all learn together as we create a better self, life, work, & industry. be happy!