One Month at Atomic Object: Musings of a Corporate Defector

My on-boarding process at Atomic Object was almost a year in the making. While I was on assignment for GE Aviation to their joint venture company in Shanghai, China, I learned that my contract was not to be renewed for another year. It was part of a cost cutting measure to trim out a large number of corporate expats. This was not totally unexpected as our costs were extremely high.

I received a highly financially attractive offer to live and work in Phoenix, where the joint venture company with which I was assigned had opened their US offices. I rejected the offer because I knew that I wanted to return home to the Grand Rapids area, a place I had been eager to leave only four years previously. My perspectives had completely changed while living overseas.

I began the interview process with Atomic in early 2015 and was offered a position. I ended up not taking the position but instead asked for a raincheck, which was graciously offered to me. I thought that I would give my current employer another chance back in my home office, here in Grand Rapids.

I went back to my old team and found that the team dynamic that I had enjoyed was gone. I had been away for four years, and many things had changed. The project that I once worked on was scaled down to just a small set of developers, as the bulk of development had been completed while I was away. I ended up working essentially on my own for four months finishing up some work on a project contracted to GE.

To be honest, for most of my career, I have felt that I have been on my own, even in teams of 100+ developers. I have mainly worked on developing tools for automating processes and simplifying tedious work, in support of the main development teams, but outside of the main product development, which mainly consisted of embedded systems. For all except a couple of years, I wasn’t able to receive any feedback from my peers because they had no domain knowledge or language experience with what I was working on.

My first month at Atomic Object has been totally different.

My first week at Atomic was very tough for me. After only the first several days, I was questioning my decision to leave the perceived safety of the familiar environment of a large corporation. Jumping into a new environment is scary, especially what that environment is vastly different from the one where you’ve spent most of your career. Things have gotten much better for me after that first week, and I have gained some valuable insights that are pervasive at Atomic Object.

The first lesson that I learned was the expectation for productivity that the team has. There really is great care taken to maximize the value of the customer’s money. The team spends every last moment working toward providing value to the customer, right up until they head home each day. People work hard here.

The second lesson that I learned very quickly is that Pair Programming is exhausting but even more rewarding. This is the first time in my career that I have been able to pair with another developer. The first week was mentally exhausting. When you are new to the codebase and technology stack, pairing is more of a passive learning experience and not so interactive. I learned that it helps to “switch drivers” every few hours to help minimize fatigue. After more than a month and having paired with three different developers, I have become a lot more comfortable and feel that I understand the architecture of the project and am able to add new functionality and refactor existing code while in the driver’s seat.

The third lesson that I learned is the value of test-driven development. While not entirely a new lesson for me, it is one that I have not been able to practice for some time due to project constraints. I have already seen the value of having tests at multiple levels that test the layers of our project architecture, including acceptance, request, and the model level. Errors introduced while adding new functionality and through refactoring are immediately known to us and can help us to write higher quality code earlier on in the development.

I have especially enjoyed the opportunity to join this highly-motivated group of people and for the opportunity learn a new technology stack. I look forward to learning even more as I continue to develop my career here at Atomic.