Looking Back on a Year at Automattic

automattic-sunset-cropped
Stephane Daury looks down as the sun sets from an overlook along a road to Waimea Canyon in Kauai, Hawaii. Photo  was taken during the 2013 Janitorial Team meetup.

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

  1. 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.
  2. “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.
  3. 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.
  4. “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.
  5. 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.”
  6. 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. 🙂
  7. 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.
  8. Traveling to places like to San Francisco, HawaiiChicago, 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.
  9. Javascript is the language of the future (and present). Over the last year, I have written more javascript than PHP, and I now have a much better understanding of closures, promises, Mustache, RequireJS, functional programming techniques, HTML5 technologies, and Backbone.js.
  10. With both code and communication, reading carefully requires more concentration than doing the same when writing.
  11. Knowing when to take the time to create a reusable abstraction is hard, and creating good ones is even more difficult.
  12. Understanding when and how to empathize with your users makes it much easier to be confident that what you are doing will delight users.
  13. I don’t miss Microsoft Office.
  14. 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.

Looking Forward

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:

Dream big.
Do more.
Think hard.
Be nice.

Northeast PHP Conference Recap

Over the weekend, I attended the second Northeast PHP Conference at the Microsoft NERD center. Special thanks are due to Michael Burke and the other organizers who did a fantastic job organizing the conference.

Highlights

  1. PHP is still powering a large percentage of the visitor facing portion of the web.
  2. Static arrays coupled with an opcode cache are a high performance way to store application configuration data, translations, and other static data required for an application. The benefit is that the data will be loaded pre-compiled from memory so no disk access or network connections will be needed. Etsy uses this technique for both translations and also feature switches.
  3. mPulse is a pretty awesome looking realtime performance monitoring and analysis tool. To collect the data, the service uses http://lognormal.github.io/boomerang/doc/.
  4. Wikipedia has a new front-end visual editor built using javascript/nodejs that makes heavy use of contenteditable. While there are lots of challenges to bring front-end editing to WordPress, I think that if done right, you can’t beat the user experience of being able to directly edit your content in the proper context.
  5. Building around HTTP (usually RESTful) is basically a no-brainer with the UX of native mobile apps winning right now and the future possibilities around the growing “internet of things.”
  6. It was nice to hear some positive mentions of WordPress sprinkled throughout including a compliment by Eli White on the newer code in the codebase in his opening keynote. Web apps are increasingly stitched together using various services and WordPress fits into this ecosystem well.
  7. Overall, there was not much said about the future of PHP the language. The only exciting thing that I heard was that HipHopVM will likely become part of the main PHP distribution at some point in the future.
  8. Don’t be data-driven, be data-informed. Data-driven takes the human out of the equation.
A tray of "Octocakes" thanks to GitHub. Image courtesy of @bluesmoon.
A tray of “Octocakes” thanks to GitHub. Image courtesy of @bluesmoon.

Slides

Looking to the Past, to Predict the Future- Eli White
http://eliw.com/presentations/2013/ne13/ne13.history.pdf

Practical Responsive Web Design – Jonathan Klein (Etsy)
http://jkle.in/rwd

Scaling PHP to 40 Million Uniques – Jonathan Klein (Etsy)
http://jkle.in/nephp

The UX of URLS – Ryan Freebern
http://blog.rnf.me/ux-of-urls/#/

Pragmatic API Development – Andrew Curioso
http://www.slideshare.net/andrewcurioso/curioso-nephp2013

Agile in the Workplace – Mike Stowe
http://www.slideshare.net/mikestowe/agile-in-the-workplace

Dependency Management in PHP: Better Late than Never
http://sequoia.github.io/composer-talk/#/

Don’t Be STUPID, Grasp SOLID – Anthony Ferrara
http://www.slideshare.net/ircmaxell/dont-be-stupid-grasp-solid

Up and Running with Bootstrap
http://www.slideshare.net/jen4web/up-running-with-bootstrap-3

jQuery Mobile: Sites that Feel Like Apps
https://speakerdeck.com/afilina/jquery-mobile-sites-that-feel-like-apps-3

Workshop: Clean Application Development
http://www.slideshare.net/adamculp/clean-application-development-tutorial

Magic Methods: Spilling the Secret – Matthew Barlocker
http://www.slideshare.net/MatthewBarlocker/magic-methods-25338954

Git Essentials – Matthew Barlocker
http://www.slideshare.net/MatthewBarlocker/git-essentials-25347525

UX

You Can UX Too: Avoiding the Programmer’s User Interface – Eryn O’Neil
http://www.slideshare.net/eryno/you-can-ux-too-avoiding-the-programmers-user-interface-nephp-2013

Workshop: Usability Testing for the Common Man – Heather O’Neill
http://www.abovethefolddesign.com/assets/presentations/usability-testing/Usability-Testing-for-the-Common-Man.pdf

Introduction to User Experience Design – Meghan Reilly
http://www.abovethefolddesign.com/assets/presentations/intro-to-ux-design/Introduction-to-UX-Design.pdf

UI Patterns: A Practical Toolkit – Jim O’Neill
http://www.abovethefolddesign.com/assets/presentations/ui-patterns/UI-Patterns-A-Practical-Toolkit.pdf