Building is in my DNA. Nothing excites me more than making. The satisfaction of seeing folks use my products is my primary motivator. It's what pushes me to extend my knowledge and capabilities.
Before I could walk, I was taking things apart to see how they worked.
To me, quality is elemental. Everything I make, no matter how trivial, must be high quality. In my code, this usually means taking a test-driven approach. My tests shape and document the product. Quality can also come from expressive, clear code. Even when I'm re-writing, I make the effort to leave the code cleaner than I found it.
I'm a born generalist. Anything I don't understand is, to me, a source of frustration. I'm urged to embrace and encompass all layers of the stack. For me, this extends all the way down to bare metal and all the way up to human-computer interaction.
Snapshot of me at age 24: Dozen-machine computer cluster in my closet. Hacking on the world's first multi-touch keyboard.
I believe organizations work best when information isn't partitioned. When all of us have a hand in all layers of a project, we see a better dynamic. Vigorous debate is encouraged. Design decisions are questioned. When we are overly confident in our area of specialization, we become more defensive and less open to new ideas.
In team projects, I seek to fill three roles at once: student, teacher, and leader. As a student, I maintain a "beginner's mind". The beginner's mind encourages me to set aside my preconceptions and be receptive to new and different ideas.
Relationships between teammates are little different from our relationships with customers. The central question is this: "What is the action I can take that most benefits the other?"
As a teacher, I focus on sharing and refining my expertise. In a sense, all code is teaching. My code is an expression of my intentions, and it should be clear both to myself and my collaborators what every single line is trying to teach.
Leadership is all about forging personal relationships. Every team member has incredible strengths. I relentlessly pursue these strengths, and in the process discover new strengths in myself. I lead by example. If I'm aware of an improvement in a team's process, I expect it to be compelling only if I'm demonstrating that improvement.
There will always be many and differing opinions on how best to approach a challenge. Our approaches will be based on our mental maps of the territory of the challenge. I endeavor to keep my map as fluid and changeable as possible, so that it might as closely as possible match the territory.
My data gathering apparatus stretches across dozens of tools and methodologies. Beeminder is just one such tool.
I'm hungry for data that will update my map. I solicit feedback whenever possible. I attempt to quantify and record anything that might serve to guide future decisions. Negative feedback, to me, is just as valuable as positive feedback.
One of my goals is continuous improvement. I'm always looking for new and more difficult challenges that will stretch the capabilities of myself and my tools. Only by trying and failing can I learn what strategies are truly effective.