Upgrade to Pro — share decks privately, control downloads, hide ads and more …

cross_domain_hacking.pdf

Avatar for Cory Flanigan Cory Flanigan
May 24, 2012
36

 cross_domain_hacking.pdf

Avatar for Cory Flanigan

Cory Flanigan

May 24, 2012

Transcript

  1. Cross Domain Hacking in the Real World: Life Lessons Applied

    to Software Craft Thursday, May 24, 12 (could also probably be titled “how to drive yourself insane by overanalyzing everything, and other people too!”)
  2. Cory Developer. Traveler. Armchair Philosopher. Person. I live in Denver

    & 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.
  3. THANKS! @charley_baker @rubysolo @decoy_drone @dimacus @jacob_ninja @ajsharp @jremsikjr @ toddkaufman

    @ bartmurphy Thursday, May 24, 12 - EVERYONE WHO BOUGHT A TICKET - Organizers, Speakers, Sponsors - Lots of other people for conversation, inspiration, encouragement
  4. Srsly; Why? http://v.gd/realngnrng Thursday, May 24, 12 Associative thinker. Interested

    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?
  5. Break. Thursday, May 24, 12 Bored/burned out on confs/screencasts/books/talks/code, took

    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.
  6. Legacy. History. Bequest. Heritage. Tradition. Thursday, May 24, 12 We

    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?
  7. For Beginners Thursday, May 24, 12 A lot of this

    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.
  8. The Plan • Consider a framework • Discuss some examples

    • 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.
  9. /\w+/ is to software... • Intersection • Symmetric Difference •

    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?
  10. Other considerations... • Problems • Causes • Symptoms • Solutions

    • 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?
  11. Integrating Lessons • What can we learn? • How to

    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.
  12. Baseball Thursday, May 24, 12 Preseason vs Season vs Postseason;

    where is the focus, self vs team. Running bases is like completing milestones in a project. When we get things done we call it a win.
  13. Rugby Thursday, May 24, 12 Specifically women’s Rugby; they play

    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...
  14. Thursday, May 24, 12 Roles based on strengths, personalities/attitudes, xp,

    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
  15. Thursday, May 24, 12 Only 1 letter away from Ruby

    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.
  16. Snowboarding Thursday, May 24, 12 Balance, endurance, thinking quickly on

    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.
  17. Yoga Thursday, May 24, 12 Hindu Deity Ganesha: Widely revered

    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?
  18. Dinner is served! Thursday, May 24, 12 Think about the

    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
  19. Art Thursday, May 24, 12 Like our code, food is

    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.
  20. Marriage Thursday, May 24, 12 Dependencies, third party code. What

    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...
  21. Nature Thursday, May 24, 12 Life after people. Ecosystems are

    fragile. How will your code adapt to the future? Gardening - controlling conditions, harvest/yield, bugs!
  22. Caribou Thursday, May 24, 12 Domesticated into reindeer, some can

    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.
  23. Space Thursday, May 24, 12 Solar systems are cool; kind

    of like software systems... Diff probs @ diff scales
  24. Dancing Thursday, May 24, 12 Like pair programming, physical form

    of communication, must respond to subtle changes. Feedback cycles - music/rhythm, partners movements, dance floor texture
  25. Difference Obvious disparity No correlation Should create one? Thursday, May

    24, 12 Can we adopt some new practice, process, or insight?
  26. Lessons for greatness. Thursday, May 24, 12 What lessons can

    we learn from our similarities and differences? How can we become better teachers; knowing when & how to share our insights in order to help others?
  27. Y"r Two Cents (talk amongst yourselves.) Thursday, May 24, 12

    Please be courteous; these ideas are new to me. Still refining them as I go along.
  28. Great! Now what? Thursday, May 24, 12 We have a

    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?)
  29. merci beaucoup Thursday, May 24, 12 Thanks again to my

    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!