Friday, August 30, 2013

Clocking Back In

I "return to work" next week after two months of "time off."

It's been an interesting two months of being disconnected from something I'd poured everything I had into for five and a half years, with only a couple of notable chunks of time off during that span.

Some thoughts...

I didn't feel like I actually adjusted to being out of the office until about the fourth week. It's hard to explain. When I left to start the break I completely walked away from work related stuff. I stopped checking email outright. I removed my work calendar from my calendars. I stopped taking meetings for the most part. I put the brakes on everything really... right out of the gate. Yet, my mind kept going. Not necessarily on Gnip stuff, but on non-"vacation" stuff. I think part of it was the fact that Gnip has been my baby for so long and that I'm heavily invested in it. I think part of it was simple entrepreneurial spirit and headspace. There are so many people working on so many interesting things out there; I love being engaged in that.

About a month in my mind and body adjusted to something new. I didn't have overbearing business commitments staring at me every morning through calendar eyes. My assistant and I had cleanly broken our synchronized rhythm and became out of touch. On a day to day basis, I realized I wasn't connected to Gnip. It took while to realize that.

Then I had a couple of weeks of complete "time off." A couple of weeks of true mind drift. That was really cool. By week six, work things started bleeding back into my life. Small things. Big things. I'd been able to compartmentalize them until today. Today, a few days before fully jumping back in, the responsibility, the scheduling goop, the challenges that make up getting-shit-done sidled up next to me and said "I'm here. Are you ready?"

I did a lot of personal travel during the past two months. I had amazing life experiences with my kids on a few trips. We travel so well together. I really enjoy those trips. I enjoy showing them the world and its magnitude and culture and ways of doing.

I loved the chunk of time I took off. I didn't have any epiphanies as a result of it though. I am vowing to make some time prioritization changes in how my work and personal lives harmonize, but, I'm not setting myself up for failure and setting unreasonable expectations with myself, my wife, or my work. I am who I am and that is someone who is deeply engaged and interested in the challenges around building great software that has large-scale impact on the world in some way.

Software is my way of life, and that just is. Software is an ecosystem of technology, people, writers, customers, partners, readers, builders, users, sockets, pain, relief, community, comfort, discomfort, randomness, bullshit, bliss, and love for me. My role within it is fluid; always has been, always will be.

I'm reminded of something a friend told me a few months into my first job out of college as a network stack engineer at Netscape (client-side). He said something that didn't make sense to me until  years later. It was something like "The only thing that matters now is the URL." He was making a statement like "Plastics son. It's all in plastics. They'll change everything." I've loved the life I've been able to lead ever since understanding that statement. The Network and the software built on it makes for an amazing way of life.

Gnip continues to "crush it." We have an awesome team building awesome software for awesome customers. We also have awesome (the positive energetic meaning, as well as the "big" meaning of the word) challenges in front of us. We have some core products solving some big challenges for the industry, but there is always the "next big thing" to build to ensure the ball keeps moving up the hill. I'm grateful and excited about jumping back in and contributing to that.


Thursday, August 29, 2013

Calwood Parent Volunteering Experience

Long View Lookout
I just got back from a two-night trip to Calwood just outside Boulder, CO. I was a Parent Volunteer for our 5th grade classes' adventure. It was the first time I'd really volunteered for something of this magnitude with the kiddos. It was profound. Calwood exists because its founders wanted to ensure children of all walks of life could experience the outdoors. It's remarkable how many kids don't access nature.

Thirty years ago I'd attended roughly the same program at Calwood as a 5th grader myself. I had experienced what my son and his classmates were experiencing nearly down to a 'T'. That was wild in-and-of-itself. I was able to connect clear dots between who I am today as an adult, and my experience thirty years ago which was wild, but, that's a different blog post.

I wanted to write about the positive impact a few things an experience like this can have on a child. I also wanted to write about the positive impact it can have on you as an adult. This may be obvious to many parents reading this, but, I'm not the world's best parent, so stuff like this doesn't come easy for me.

The Children

The experience is completely off the grid. There's no-wifi/Network connection. There's no cell-coverage. There are no TV's or radios/stereos. Guess what!?! Every kid survived without their electronics. Remarkable huh? The experience was so powerful it was like they forgot all that stuff existed.

The experience ensured kids cooperated for long durations of time.

The experience clearly defined respect for others. For younger kids to rebuff strangers in authority positions (e.g. the Calwood Instructors) is a lot harder to do in a completely foreign environment like this. It's relatively easy to talk back to a teacher in the classroom versus being a jerk to a hippy with long dreadlocks standing in front of you out in the middle of nowhere during a night-hike who is likely the only person in the group who can get you back to your bed safely. This sunk in for even the "trouble" kids.

The experience was awesomely educational in a very hands-on way. We spent each day out in the wild. We hiked everywhere we went, and the instructors tied everything back to science along the way. The kids were learning the intricacies of what they were experiencing around them. So cool!

The experience bonded kids together. They had to "survive" together and figure out how to get things done alone. No "mom" to clean up after them. No creature comforts of home. They had to figure it all out together. If you didn't... Darwin set in, and that's a powerful motivator.

The Adults

Three sets of us: Calwood Instructors (paid staff), Teachers (our Elementary school teachers coordinating and driving the program), and the Parent Volunteers (me and my crew).

The experience was completely off the grid for the adults too. For the adults who chose to keep their mobiles' "on," every now and then on a hike a morsel of radio waves would bring an inbound SMS to them, but it was rare.

I chose to keep my phone off the entire time. It was the longest period I'd been disconnected that I can remember. We were so slammed with volunteering responsibilities, that I could hardly tell though.

As a Parent Volunteer we were there to basically keep the edges in place. The Instructors and Teachers were driving things (except when my control issues got the best of me a couple of times and I jumped in to try and "fix" something), and the PVs were really there just to assist. We were extra hands just to keep everything manageable.

The Bond

I haven't spent much time "bonding" with "family community" unfortunately. I've tended to keep all of this at arms length. I realized this on the trip. I walked away knowing much of our 5th grade class on a really neat level. I walked away knowing several of my peer parents on a great new level. We all share something now that we'll take with us from this moment forward. That feels really cool.

I have similar bonding experiences in the "work community" context all the time. I just rarely have them in the "family community" context.

I highly recommend volunteering for an overnight-like experience with your "family community" and children if you have the opportunity. I highly recommend that experience be "off the grid" as well; back to basics.

Calwood is a great outdoors program. It was cool to see it continuing to flourish (despite some challenging years at times). If you're considering Calwood for your school, just pull the trigger.

Monday, August 19, 2013

NYC Helicopter Tour Amazingness

Lower Manhattan/Downtown
Canon 6D, 17-40mm f/4L lens: iso100, 17mm, 0ev, f10, 1/100
Last week my 7-year-old daughter and I took a 30 minute helicopter tour of New York City. I've been to NYC many times, but the tour from the air caused everything to fall into place for me (click on any of these pics on a machine with a large screen to see what I'm talking about). If you ask my daughter what her favorite part of the trip was, you get "the helicopter ride" as a response.

I'm sure her reasons for loving it are quite different from mine, but, the tour left such an impression on me that I wanted to blog about it. Here's what hit me.

  • Perspective. When tromping around the boroughs on the ground, everything is so large that you just can't get your head around everything. You certainly need to experience things first-hand on the ground for obvious reasons, but you won't have strong spacial understanding of scale without pondering things while hovering around in the air. I'm a big city nut and love humans in dense live/work situations. After decades of visits to NYC, I now finally feel like I "get it" spatially.
  • Site coverage. Again, while no substitute for hands/feet on a given site (e.g. WTC, 30 Rock, etc), you see everything on this tour. From Harlem, to Yankee Stadium, to Coney Island, to Freedom Tower, to..... You cover a lot of ground so to speak.
  • Fun. I'd never been in a helicopter before. It was just plain fun!
Brooklyn Bridge
Canon 6D, 17-40mm f/4L lens: iso100, 40mm, 0ev, f10, 1/100

Empire State Building
Canon 6D, 17-40mm f/4L lens: iso100, 40mm, 0ev, f10, 1/125

Canon 6D, 17-40mm f/4L lens: iso100, 17mm, 0ev, f8, 1/125

Canon 6D, 17-40mm f/4L lens: iso100, 40mm, 0ev, f10, 1/100

Wednesday, August 14, 2013

Connection, My Daughter, and a Subway

Today I had one of those moments as a parent where something profound comes over you. I don't know about you, but, I'm the kind of parent that doesn't have this happen too often. I'm amazed by my children all the time, I just rarely have that wave of the universe of life change come over me. I love it when it happens.

I took my daughter on the NYC subway for the first time. We took the 5 from mid-town to downtown Manhattan. On the return, we took a more circuitous route. The outbound was fairly sparse as the pic shows. The return was super packed.

I watched my little girl connect with something. She could feel the lives around her.

She heard everything. From the tantruming 5-year-old on the platform, to the "sorry about that" uttered from a nearly 7-foot tall Goth who charged through the closing door of our already sardine-packed car, and loomed over us for 10 mins. From the songs being sung, to the Spanish being spoken.

She saw everything. The drunk. The bicyclists. The businessmen. The chirping tweenage girls. The nannies. The friends going to lunch.

She felt a half-dozen strangers smashing up against her short self, and she smelled it just the same.

She quietly whispered her thoughts and questions to me from time to time.

By the time to head back home, she was insisting on taking the subway. I personally got over the "fun" of the subway years ago (perhaps sadly), but for her of course, we did it.

About half-way through the day it all hit me. Her perspective on people and life and density and cities was shifting right before me. She wanted to "take the subway" in order to absorb more of it all.

Such a beautiful moment. Get your kid on a big-city subway.

Thursday, August 8, 2013

Which Code?

I was catching up with a longtime colleague and friend at one of my favorite cafes in San Francisco the other day.

I'm always a bit amazed at how some things never change. Much of the conversation was around the same old shit. Non-competes and non-solicitation clauses (he's looking at leaving his current gig)... lawyer perspectives (both sides) on the declarations, etc. "What if we both quit at the exact same time?" How many times has that statement/question been uttered? Anyway, we got to important stuff like code.

He made a statement that I think I'm sure we've all heard a thousand times, but it hit me just right this time and I've been sitting with it for a few days now.

"It's not the code we write, it's the decisions around _which_ code to write."

It was a statement about experienced software development, and increasing the odds of success on a project. It was a statement around stepping back and trying to understand the forrest from the trees before you make one of the biggest financial investments out there; writing code.

The battle is not in getting the code written (great programming is assumed and table stakes). The battle is in ensuring you're writing code that is going to best fit the anticipated usage patterns. If you have good vision into the latter, the former is simply brick-laying. 

If I look at software developers (myself included) I've employed over my career, and their pay (equity, cash, reward of having most impact on a project, whatever...), there is a direct correlation between pay and ability to make good decisions around which code to write. There is little correlation between how clean or sexy the code itself is, and pay. There is untold value in making the right decisions about which code to write.

Making the right calls around which code to write can make or break a company or project. You might be able to build something quickly and get it to market, but then if you're successful, you might not be able to get it to scale, your customers might become frustrated and leave before you can resolve the scale challenges.

Of course the inverse is an issue as well. You could spend all your energy getting something to scale early, but then you never capture customers.

Then there's the grand-daddy challenge of them all. In reality, there is no way you can ever anticipate the actual usage patterns of your software. You have no way to predict things like traffic flow and load and usage. You can try (and you should... and indeed try hard), but you'll never get it spot on.

In the end, you have to enter a project knowing you'll never know exactly how the software that gets written is going to operate at scale. You have to enter a project knowing that if you succeed at points along the way, you have to be prepared to tear out versions of the software that got written, in favor of new versions of it that better accommodate the changes in use (e.g. more users, a new feature, whatever). You have to enter a project knowing that if you succeed, change is good, it is right, and it is ok.

Unfortunately of course, writing software costs a lot of money. You have to understand this though, and know that you're going to always be spending money on the evolution of your software. Unless you have a perfectly closed system, your software's needs are going to change, and in turn, it is going to have to change.

After churning on this with my friend and over the past few days, I realized the great software developers I've been lucky enough to work with over time, understand all of this. They know not to bother even thinking about the code they should write, until things  like "what's expected load going to look like?" or "let's model cache hit rates first" are explored. They lead with contextual understanding questions and exploration, long before a single line of code ever gets laid down. The actual exercise of writing the code that will make tons of money in production, is almost an afterthought. Of course that will get written and written well, the challenge is in understanding which code to write.

So, next time you're exploring a software challenge and you ask "how do I solve this?" make sure your answer leads with exploratory questions around the challenge itself, and don't bother diving into the "how" until you've done that.

This is one of the biggest challenges in one's software development career. You want to dive right in and start writing code on the solution itself, not explore all the edges around it. However, if you want to be intensely valuable at writing software, you're going to have to find the patience to explore first. Find answers to the questions no-one else around the table has. In those answers are guideposts along the path to successful software.