Zen & the Art of Version Control

Aug 11, 2012

On Progress

Progress is often made in the times least expected. Major advances come, and change ebbs and flows invariably. Success and impediment are two sides of the same angry scholar, and the older I find myself, the more I'm finding that duality to be present in most everything that I do. This is a good thing, inherently; the duality of existence is Zen.

One thing, all things:
move among and intermingle,
without distinction.
To live in this realization
is to be without anxiety about non-perfection.
Sengcan, Hsin Hsin Ming

What happens, however, when we're challenged by day to day realities which make our understanding of progress seem bleak or even non-existent? How are we supposed to act as we're paving our own road to more enlightened thinking? To make matters even more challenging, how should we behave when presented with cogent, highly tuned rationale that succinctly accounts for lack of change within a group or organization? How do we move forward? And, as we would say at IDEO, how do we measure success if we do in fact move the needle upward?

It's a Software Problem

I recently took a brief re-introduction class to the version control software package Git. Version control is explained on Wikipedia, in part, as such:

Version control…is the management of changes to documents, computer programs, large web sites, and other collections of information … [it's] common for multiple versions of the same software to be deployed in different sites and for the software's developers to be working simultaneously on updates … It may also be necessary to develop two versions of the software concurrently (for instance, where one version has bugs fixed, but no new features (branch), while the other version is where new features are worked on (trunk).

I'm fairly familiar with using Git via the OSX command line, but my particular problem was in moving backwards in time. I knew how to contribute to the future, but I didn't know how to navigate the past when I had done something wrong, or not useful for the present moment. I didn't fundamentally understand why I would want to move between different branches of a project. I didn't fundamentally have context around the greater picture. Using version control software, you as a user can bring back past states of a project in order to move forward. Recently, my coworker Dave Desandro introduced me to the GitX interface for managing Git repositories. Inside of GitX, the commits and branches (in other words the features of whatever is being created) are visualized like subway stops on a map:

GitX Visualization

Admittedly, this image looks a bit complicated. What I like about it, however, is how quickly I am able to grasp the non-linear nature of a software project. Changes are being made, and I have context. I can observe and modify. In a true way, I know what's going on. With version control software, just like in life, there are many people contributing to a particular advancement. In Git, I can crystalize the progression and view it in a way that makes sense… albeit with a bit of training. What I like most, however, is the reinforcement that every action that I make is part of the future, and also part of the past, as other developers build or branch the progressions that we all make together. I can look over the history, and if I don't like where things are headed, I can branch the code in entirety and do it a bit differently. I can make my own progress.

One Thing, All Things

I'm starting to think that maybe we're running different versions of the same software inside our heads when it comes to thinking about progress. Progress is all around us, but we may not have a tool like GitX that allows us the same level of insight into what's happening at any given moment. There's no tool that visualizes the subtle complexities of human communication and how people choose to work together. With the right lens, perhaps organizational progress can be thought of as the output of a physical manifestation of version control software on a day to day basis. Can we as human beings, leaders and workers, when faced with (perhaps just the perception of) slow momentum, effectively branch our reality and make our own progress? Even skilled software developers will tell you that from time to time merging code back into a repository from a separate branch can be a challenge, and I believe the same to be true for real-life as well. That being said, merges happen every day. Most likely, every minute of every day. If thought about from a Zen, dualistic perspective, branching our own reality is getting us closer to being able to move around and mingle, without distinction. Progress on my end is progress for the group. Group progress is mine. I chose when to act, and where to act most effectively.

If the change that you want to see isn't happening around you, simply make it happen. Branch your current reality into something better, and when the time is right, merge it back to the source.1 Measure success by your own progress, while keeping an eye to the greater context in which you live and work. And when in trouble, there's always git reset --hard HEAD. It won't be perfect, but I have a hunch, that we'll all be living and operating with significantly less anxiety.

A quick note & followup

1. [My concluding paragraph left me a bit frustrated with myself after rereading this post a few times. I won't take anything down or modify my original content, so I'm hoping that this footnote will suffice.]

By no way am I trying to imply that anything I laid out above is easy. Moving yourself away from a situation where you feel powerless and into a situation where you can measure your own impact (and ultimately being able to migrate your personal progress back into a group setting) isn't a simple or easy process. Some people have better internal tools or natural or experiential advantages available to themselves to be able to conduct such matters more effectively. My intent isn't to imply that it's just a simple matter of "just do it." In my post, I was careful not to point out exactly how someone goes about creating a different branch of organizational reality, and I'm not proposing any specific methods. We all have the ability to find a way to improve our own situations by thinking outside of a siloed way of thinking that an organization may impart on us, and we (especially as designers & engineers) have a duty, I believe, to help shape the culture around us. Every person is different and every situation is different. There is no such thing as a one-stop solution. We just need to aim higher.

Written by Geoffrey Brown on Aug 11, 2012. ▲

The Importance of Cooking & Cultural Fit

Jul 9, 2012

On Beginning

I used to sit in a lot of interviews with designers. Top of mind for me, almost always, was sheer talent. My very first interjection is almost always "describe for me what you’ve contributed to what I'm looking at right now." Providing I receive a solid answer that bodes well in the raw talent department, I continue my evaluation. A candidate's thinking process is critical, and I'm quick to ask simple questions in effort to tease out a way of working. I'll now ask something like the following:

"How do you usually begin a project?"

Clearly, there isn't a single right answer to this question. I'm attempting to find a semblance of process and really understand how someone works.

Allow me a brief tangent: As someone who loves to cook, and especially to make pizza, I've learned the right way to begin making a pie, even if the pie ends up being terrible. Over time, I have also learned the right way of starting to make a truly glorious pizza. Interestingly (or rather, not so interestingly), the process is exactly the same. Any way you slice it, to make a pizza, you need an oven, flour, water, and more. Beginning a design project is like beginning to cook: there are many variations in recipe, but there are only a few proper ways to begin. You can ad-hoc the creation process, but it shows on the backend. If you totally flub the most primitive parts of beginning, the likelihood of success is modified substantially, much like beginning to cook a pizza without an oven. Beginning to make pie without flour and water results in a redefinition of pizza.

Regarding design, my particular background and way of working predisposes me to pen and paper, asking human beings questions, and then spending time marinating on a problem with people that provide insight into the opportunity and challenges in front of me. It's a process, similar to the process of making a pie. Ingredients are important, and variation is critical, but sometimes there are better ways of working. But, back to the interview: If the candidate presents me with an answer to my "how do you begin" question such as…

"Well, I tend to hop right into $_software_tool_of_choice…"

I would tend close down the door of opportunity. If their pixels were of otherworldly magnificence and beauty, I would consider giving them another chance, but often this was never the case. I found that truly great designers began by starting "closer to the metal" so to speak, by starting on paper. This is true of both inexperienced and veteran designers. I've found drawing to be critical. The notion of cultural fit inside of a company rarely mattered towards my recommendation of a designer's merit and worthiness of being part of team or organization. I was evaluating raw skills; color, composition, hierarchy, and ultimately how well the candidate can communicate their decision making process was critical. This was the stuff of value.

The Importance of Cultural Fit

Now that I've been outside of IDEO walls for a few months, the notion of cultural fit and hiring has been more than an occasional fixture on my mind. Cruising around the Internet, I found this gem from Bloomberg Businessweek about the importance of cultural fit and the IDEO hiring process:

Q: What do you look for in candidates?

A: They have to be able to think outside of the box and learn extremely quickly. We don't look for specialists. We look for people who can work across industries and think on their feet. They also have to be really good at working with people in other disciplines. We can't have an engineer who doesn't get the aesthetic or understand design.

Q: How do you know if someone is a cultural fit for IDEO?

A: Our culture is non-rules-based and nonpolitical. I don't want to mislead you that IDEO has no structure. There's definitely a basic process that we follow. But beyond that, we want to put hot teams together and let them come up with great ideas.

The people who fit well are comfortable making their own paths and articulating their point of view. They also have to understand that there's a lot of give and take across the disciplines.

Most people don't have a title on their [business] card, or have a title at all. You can have one if you want. [IDEO] is about working really hard -- and I don't mean that in terms of hours. I mean being extremely engaged and excited about what you're doing. We're all here because we're passionate about the products we're turning out every day.

Bloomberg Businessweek, 2001

Keep that short quote in mind. Now throw into the mix an absolutely genius designer/programmer/filmmaker/whoever who is brilliant, but doesn't fit the cultural needs of what's described up above. Imagine someone of incredible visual wealth that can't articulate a point of view, or someone who's incredibly deep in one particular area of expertise but expresses little interest in exploring other areas. Not only would that person be at a disadvantage from the start in an organization like what's described above, but so would the rest of team he or she would be working with. How would an organization or a team end up working with someone who's an incredibly talented designer visually, but lacks a desire to learn about a human-centered process in an organization that prizes insight? Or, place a designer who values the insight that people bring to the design process inside of an organization that functions without iterative upfront research?

Right now, it's too easy for employers and managers to find talented people who have incredible skills on paper, but would probably work better within a different type of organization. Let's take into better account the impact individuals will have within our companies, and better evaluate how not only we impact them, but how they ultimately will impact us. Raw talent is important, but so is the mindset of the person who will be entering your organization.

Written by Geoffrey Brown on Jul 9, 2012. ▲

Another Crack of the Whip

Jul 7, 2012

Back in 2002, Rands begins his blog with a simple statement:

A friend asked why I didn’t have a weblog to which I replied the following, … a few thoughts:

Ahem. I'm going to try and begin the same way, but potentially with less indulgence. Try as I may, I'm sure that indulgence will surely happen around here sooner or later, but here we go.

I've always had a minimal web presence. The nature of my work has seemingly always fallen victim from NDA-itis. That is, very little of what I've done for a living can be publicly shown. I started off my career at Eastman Kodak in Rochester, NY in the Blue Sky and Innovation lab doing work that I can't show even to this day, nearly 10 years later. Consulting gig after consulting gig, and with nearly nearly 3 years of working at IDEO, I've found myself with little to Dribbble about, and only a few substantial projects that I can responsibly illustrate publicly. The work is there, mind you, but locked down. Until recently, I haven't found myself in drastic need of doing that whole publishing-to-the-web thing. I was fine with keeping my work private (and I still am, mostly) but as I get older, I find that mindset changing rapidly. I need a real home on the web, and I have a strong passion to write. It's time to share what's been bouncing around my head these past 5 or so years. I've decided to buck my perma-procrastination and finally rev the engine on making my log for the web a real thing. Not having truely published before is hardly an excuse not to publish now.

Moreover, when I look around in the industry, nearly everyone I know writes and publishes frequently, contributing not just technical and critical value back to the community, but contributing with a wit and charm that makes their contributions a joy. Simply put: I'm envious of seeing such amazing writers around me and I'm tired of not having the gumption to actually do it myself; my long lost efforts in the area hardly matter. But, I've been hesitant. Expressing yourself in such a potentially long-format way can be a far cry from the ambiguity of a 140 character blast. Time to go all out and make this a reality. Again. Is this thing on?

Written by Geoffrey Brown on Jul 7, 2012. ▲