What I Learned - 2018
The year 2018 is now over and I've taken some time to reflect and document some of the most important things I've learned.
Buying a house and ownership
We recently bought our first house and it's been exciting and stressful, but the key lesson for me was about ownership. Growing up in my parent's house and living in apartments for the last 15 years I never really appreciated being entirely responsible for the place you live and taking ownership of your physical space. A trivial moment I remember was standing outside our new home being really pleased with myself and noticing some garbage that had made it's way into the small patch of grass that is our front yard. I picked it up. I threw it out. I thought to myself, would I have done that if I were living at my last apartment? Why not? It drove home what it means when you are truly taking ownership of anything, a house, a project at work, a product. That pride of ownership compelled me to act. It's almost unthinkable to leave that garbage despite it's insignificance.
Pay attention to your body
I won't go into details, but suffice it to say that I've learned to pay attention and take seriously when me or my partner aren't feeling 100%. Sometimes health changes gradually and it can be difficult to notice, but you know your body better than anyone. Even doctors fall victim to being dissmissive or overly optimistic.
Be present, be conscious
I've noticed time seeming to move faster the older I've gotten. I read an interesting explanation about how perception of time changes as we get older since our days become a smaller and smaller percentage of the time we've been alive. I'd like time to move the same as when I was younger, but that seems futile. A better approach for my overall wellbeing is simply to be aware and conscious. I watched David Foster Wallace's famous commencement speech "This is Water" and the part about floating through life unconscious stuck with me. I'm continuing to work on being self-aware and catching my habits and default states.
I've always been a poor sleeper and usually struggle with getting to sleep. The two things that have helped the most this year are getting a mattress with low motion transfer (when your partner moves you don't move and wake up) and reading a book before attempting to sleep (I use the kindle app on my phone with notifiations off, night shift, and inverted colors).
I didn't spend as much time writing music as I would like, but I haven't made much uninterupted time for it. I worked on improving composition of electronic music and experimenting. I learned to embrace incomplete songs (sketches) and explore as a means to maintain my interest in songwriting with limited amounts of time. To that end, the OP-1 and OP-Z have been great companions for immediate song writing and detaching from the laptop (or guiter) which lowers the friction to me making music. I've even shared my excitement and adoration of the OP-Z by launching a dedicated website opzed.com. Removing my anxiety about capturing the perfect take was another interesting learning and I'll be spending more time with sequencers as a result.
I was lucky enough to take an intensive leadership course at work that was an eye-opening experience. I learned a lot, too much to include here, but the best learnings are more fundamental. I learned to make time for thinking about leadership, the big picture, and making space for continuing to build it as a skill. People tend to think of leadership as something you're born with, but in practice it takes persistence and work to cultivate. I learned to be more aware of how I show up, my tendencies to be single-minded about product, things I avoid, and being really candid with myself and others.
Engineering for growth
Trying to increase growth is a mutl-faceted, hard problem. My focus for the last 10 years has been on building products, but recently I've been focusing on a different aspect of product--user growth. People think of growth as something you sprinkle on top, some sort of mix of marketing and conversion optimization. What I've learned is that it's all-encompassing, to make material improvements you need to think about the entire user journey. The biggest changes to growth from the product side have not come from something like optimizing the conversion of a few form elements--they've come from attacking fundamental assumptions about the product and funnel. Lastly, it's tempting to blame lack of marketing as a key reason for not hitting growth goals, but it's almost never a purely marketing problem. Think deeper, get creative, look closer at your product and you'll find growth opportunities. Calling it a marketing problem is lazy.
Hiring engineers takes focus
I've spent most of the second half of 2018 focused on hiring engineers. In many ways, I got started too late back-filling for people leaving the team, and being able to handle future team turnover. Looking back I think I should have pushed people to move around internally sooner and have new people come in more regularly as it does wonders for getting the team excited and revitalized. I learned to be much more hands-on with recruiting (like I used to be in startup land) and that despite having the great recruiters to work with I absolutely needed to spend focused time on hiring/recruiting to get the results I was looking for. There's no specific tactic or hack to share, just focused work.
Letting go of startup habits, embracing larger orgs
I'm now over two years removed from startup life and I've finally learned to set aside some of my old habits/anxieties and embrace new ways of doing things. I've found myself sharing these lessons with many people who are making the transition from small startups (10+ people) to larger companies (1,000+) since it can be a frustrating experience. I learned to focus on being effective and realizing that the toolset is just different. I don't think I fully embraced working with a larger organization (secretly loathing it) until I realized how much more I could get done and the huge penalty I was paying for trying to use the same startup playbook as before. Keeping an open mind, thinking about what skills I needed, and adapting to a different working environment have been an important adjustment that I wish I had made sooner.
Rust is a systems programming language that I've been covetting for a long time. It's the first statically typed language I've learned and it lived up to it's reputation of having a steep learning curve. There was a lot to learn besides syntax including the borrow checker, a robust type system, and some of the lower level details of where memory goes. Rust, moreso than other programming languages, forces you to think about your data and plan how you are going to operate over it. I worked on a non-trivial program rust-graphplan to get to know Rust better and I found it deeply satisfying.
My biggest learnings from Rust was embracing the type system and the compiler as a companion to writing code. Refactoring was significantly easier and I found myself writing better tests. Exhaustive checking is really powerful (i.e
match over a union type) and something I would love to see in more languages.
Clojure core.spec and data generation
This is totally different from Rust, but I've also written a ton of Clojure this year while working on Workbeam. I wanted to play with core.spec initially out of curiousity and then by necessity as the number of variants of data I was creating was increased and testing it was a mess.
I learned the spec approach to modeling the core pieces of data in your program. I'm really pleased with how expressive I could make the definitions of my data and how many times that helped catch sneaky bugs as data is transformed through a system. The biggest boon was the ability to generate data from specs to use for testing. I think the quality of tests would increase if the ease of generating test data were to also increase.
Static websites are a welcome change
I launched a static website earlier this year using Hugo and the overall experience was mixed, but I definitely see the light. Having an easily deployable static website that needs no servers and no maintenance is pretty great. Hugo is kind of insane if you are building a them from scratch, but I eventually got what I wanted. My takeaway from using a static site for a content blog was that it made me more likely to publish and I don't have to worry about it once it's deployed. I can't understate the value of deploying code/content and not having to worry about something going down when it's a side project.
Wrapping up 2018
Overall, it's been an exciting year with many ups and downs. I've learned many new things and I'm excited fow what will come next. Happy new year!