This week I started my next adventure in software making. About six weeks ago, I decided to join Shopify as a Staff Developer working on Shopify Balance to start.
My interest in Shopify started a few years ago when I was exploring their developer platform while working on the developer experience for the HubSpot CMS. The Shopify ThemeKit tool was one of the sources of inspiration for the what is now the HubSpot CLI and the syntax of the liquid template language is very similar to the HubL template language used in the HubSpot CMS. Since then I continued to follow the company and its approach to building platform through efforts like Polaris, data-based API versioning, and more recently Hydrogen. As I learned more, it became clear how focused the company was on its product, its developer platform, and the merchants both serve. The focus starts with Tobi Lütke, its founder and CEO. Being product and customer obsessed was a natural fit for me. The staff developer role also provided an opportunity to push the pause button when it comes to leading a team and focus more on building product and technical leadership.
It wasn’t an easy decision to leave HubSpot after 6 1/2 years. It is a strong company that puts a huge amount of energy into supporting its employees. I am grateful for all the people along the way that helped me as I learned to be a more effective technical leader and product builder. I already miss having many of you one Slack DM away. All of the effort HubSpot engineering put into developer productivity and autonomous teams created an environment where it was easy to build fast while still keeping performance and reliability top-of-mind. The combination of the two makes HubSpot a great place to work as an engineer.
Back to learning a new stack and problem space. Let’s go!
P.S. I am toying around with the idea of rejuvenating my little home on the web. We’ll see how it goes. 😀
Wow! It has been a year since I joined Automattic, a startup with employees scattered around the world working from wherever is most convenient (e.g. their home, a coffee shop, a co-working space, a beach with good wi-fi, etc…). After spending twelve years as a student, a graduate student, an instructor, and an employee at four different universities, the change was more dramatic than I thought it would be. But thanks to lots of support from my wife and colleagues, I was able to adapt and ended up having a bunch of fun, learning a ton, and accomplishing quite a bit.
Fourteen Things I Learned or Experienced
Coming to work everyday is easy when you work on a service with millions of users, and on those rare days when it is harder to start cranking, Automattic’s mission to “democratize web publishing” and the creed are strong motivations.
“Be the change you want to see.” A couple months ago during the annual Automattic Grand Meetup a colleague suggested that the most effective way to make an impact was to “be the change you want to see,” which was sound advice. Action is a more economical form of communication because the effort required feeds directly into creating something. Believing in your idea enough to build something also shows a level of commitment that is greater than just posting an idea.
In the last year, I have made 574 commits to the WordPress.com source code repository, written 188 p2/o2 posts, commented 696 times, and made a couple small contributions to WordPress core. I hope that in the next year I am able to double my code contributions.
“It is not what you say, it is what people hear.” Understanding when the best time to hit publish, reading what you have written from perspectives other than your own, knowing how to communicate the right tone, and figuring out ways to nudge folks to read what you have written are all skills that need constant refinement.
Written communication even via IRC or on Skype is more permanent than a face-to-face chat, which makes reflecting back on conversations easy, but it also makes throwing stream-of-conscience thoughts out more risky because everything is “on record.”
I now use emoticons and appreciate their value, which I am sure would shock those that have known me for awhile. I also have a better handle on geek slang and memes. 🙂
It is fantastic that Automattic trusts employees to make good decisions, to recognize mistakes, to correct them, and to learn from them. Transparency in combination with straightforward policies encourages responsible behavior without requiring the overhead and frustrations that come with layers of bureaucracy.
Traveling to places like to San Francisco, Hawaii, Chicago, and Rome when I have to leave behind my wife and cute little girl is not as much fun as when I was single, although the time away is offset with working from home and able to watch Abigail when needed.
With both code and communication, reading carefully requires more concentration than doing the same when writing.
Knowing when to take the time to create a reusable abstraction is hard, and creating good ones is even more difficult.
Understanding when and how to empathize with your users makes it much easier to be confident that what you are doing will delight users.
I don’t miss Microsoft Office.
It is fun having a book written about your company.
The Big Picture
While I have learned a lot about programming over the last year, much of what I have learned has been about how to work in a distributed environment. It turns out that the process of creating software in a distributed company like Automattic has a lot of similarities with the process of creating and supporting software in large open source projects. In both cases, individual motivation and accountability in combination with transparency and free flowing communication help keep the train running smoothly. The geographic diversity of distributed companies also better reflects the nature and values of the open web than a company where everyone works out of a single office. It is no surprise that companies like Mozilla, Github, Canonical, RedHat, and MySQL are entirely distributed or have a substantial number of employees that work from home.
In order to get a feel for how my peers felt about my first year, I decided to conduct my own informal “performance review” by sending out an email with a few questions to a group of colleagues. I received lots of great responses that made me both feel good and also challenged me to do even better. So as I look forward to 2014 and consider what I would like to accomplish, I came up with the following: