Philosophy Major to Shopify Staff Developer

Posted on Sep 17, 2022

It is midnight in Berlin. I am jetlagged from a trip to Boston, during which we were meant to launch a new product, webstore fronted, backend and business system integrations. They were not ready, though, so after a failed launch attempt we rolled everything back.

I own the integrations. They connect the new webstore backend to Salesforce , Netsuite and a Postgres database syncing contacts, customers, accounts, orders and fulfillments between all the systems. I started building them around six months ago using Python , Kafka and Kubernetes . Before that I had never developed software, so I was simultaneously learning those technologies as well as git , GitHub and Jenkins .

I have been back for three nights and each night at 6 PM EST, when usage drops, we have another chance to deploy. The decision will be made, some time between now and 3 AM my time, whether we are attempting a launch tonight, or not.

While waiting I am debating whether to make changes to my code, or not. I know there are bugs in it. I just do not know where and I do not know if making changes will do more harm, or good. I did not know about automated testing while writing the integations, so all of the testing has to be done manually.

I was nocturnal for over a week before we finally went live. It took me about a year before the slack notification sound stopped causing my adrenaline to spike. After launch I was receiving messages at all hours about bugs. There was no redundancy, so for anything to do with integrations I was the only person who could fix it.

I did not have a safety net on my first development project, building the critical business infrastructure that allowed a billion dollar multinational to sell, collect, fulfill and compensate on the orders that were its lifeblood.

There were two particularly bad bugs I remember. One was an infinite loop of status updates between the webstore and Netsuite. Neither system was the source of truth for order status, so updates had to flow both ways. Getting the logic right to have the appropriate order statuses populated and ignored was difficult. The other was forgetting to update the shipment type mapping from sandbox to production. Many customers did not end up getting the expedited shipping they paid for.

I did end up getting the code working and over time making drastic improvements to the maintainability. I even added automated tests. It has been two years since I left the company and they have by now thankfully replaced all of my code.

Looking back I think that launch is when I became a software developer, although it took me a few more years to get comfortable introducing myself as one.

I have had a surprising career so far. At no point have I had any idea what things will look like in five years, much less one, but I have ended up with the ideal job. I love what I do and am recognized for my work. Most of what I read about careers does not fit with my experience, so I want to share my path.

I graduated from college in 2014 with a philosophy major and economics minor. I had been diagnosed with dyslexia my junior year of highschool, but I wanted to study philosophy, so I did. I had been hoping to answer some existential questions, but instead learned that, depending on where you start your argument and how well you argue, you can prove whatever you want.

I also learned to work hard. Reading and writing are not easy for those of us with dyslexia and I went to college in Canada, where grade inflation is not as pervasive (B-/C+ average in the philosophy department). Getting to choose what I studied and having a high ceiling inspired me to go beyond 20% effort for a 80% result.

After graduation I was unemployed for a year. Philosophy degrees do not drop you onto a career path. I did not know much about what jobs exist. Companies are not jumping to hire philosophy majors (I would recommend it, though. Four years of logical problem solving and communicating complex, technical concepts set me up well for a career in tech). I talked to a lot of kind people who helped me understand the business world a little bit. At some point I decided I wanted to be a product manager and, talking to a product manager, received some excellent advice that pointed me in the direction of my first job.

If I wanted to be a product manager, but didn’t have any experience, or skills to land a product management role, support could be a good way in the door. Not long after I saw a HubSpot support job posting on LinkedIn by a woman from my highschool. I reached out to her and she was kind enough to have coffee with me and teach me all about inbound marketing. Without that knowledge I would not have gotten past the first interview.

In preparation for the interview I put my phone on do not disturb. This caused the recruiter’s call to go straight to voicemail. She was kind enough to reschedule, but talking to her six months later she said she had only rescheduled because she was new. Now if someone misses her call they do not get another chance.

I was offered two start dates. One right before I had a planned trip to New Zealand with my sister and one the day I got back. I opted for the latter as going on vacation right after starting did not seem ideal. I left New Zealand at 12:40 PM on Sunday, landed in San Francisco thirteen hours later at 12:00 PM on Sunday (thanks international date line), took the red eye out of San Francisco that night and landed in Boston at 7:00 AM, going straight from the airport to my first day. It was a rough first few weeks of jetlag.

After I recovered I realized I was in a nerve wracking situation. As a controlling introvert, who only texted, I now had a job where I was not only talking on the phone, but I was not even the person initiating the call. The phone rang. I had to pick it up. I had no way to know what question was coming to be prepared for it. I joined the web team, dedicated to email support, as soon as possible.

Given the lack of experience most reps have due to the high turnover rate in support there was a strong culture of self service. Only ask for help if you have searched the documentation, google, chat history and any other possible source. Automation was also important. If you find yourself typing the same thing frequently, use a text expander. If you find yourself answering the same question, write a help doc.

Perhaps most importantly, I learned about setting expectations. Telling a customer that web design is outside the scope of support, but that you will take a look and see what you can do leads to a very happy customer if you do anything. That customer will also not have any expectation that another rep will do the same for them. Thinking about the expectations and precedents I am setting with my work has continued to help me identify gaps in companies’ structures and figure out the best way to fill, instead of obfuscate, them.

I realized support was not for me about nine months in. I was team lead for two new support reps at that point. One was incredibly friendly. On the same day we both fielded the same question. I answered it and wrapped up the conversation in a couple of minutes. The junior rep took twenty minutes with multiple holds. The customer rated my interaction 3/5. Hers 5/5. I had provided the support experience I would have wanted, but it was not the experience our customers wanted.

This left me with the difficult question of what to do next. All of my experience was in support, so most of my opinions and ideas revolved around it. Support management seemed like a great way to realize parts of my vision. The same was true for most of the other support reps. There were never many support manager roles and there were always lots of people trying to fill them.

Customer success manager was another common role out of support, but this revolved around more phone conversations with customers, which was not the direction I wanted to go in. I applied for Sales Engineer, but that interview did not go well. I do not remember how, but I found out about the Services Operations Analyst role. They pulled one per year from support. I landed the job. I think there were only two applicants.

My role as Services Operations Analyst was to be the manual fix in our Salesforce automation, performing excel processes and manual updates where automation was missing, or failing due to complexity.

Maybe it was the mentality I picked up in support, maybe it is innate, maybe I am lazy, but I did not like doing the same thing over and over. Fortunately my team had access to two automation tools, Azuqua and Gainsight , with admin access to Salesforce. We had been allowed to requisition them because the Business Operations team, that usually built automation, did not have enough resources to support us.

Using mostly Azuqua I automated all of my manual tasks (not without mistakes. I accidentally updated a number of customer’s contracts in Salesforce. Fortunately I managed to fix it before anyone noticed). Then I started fielding other automation requests from the services department. An experienced former developer on the team patiently taught me SQL and I used it to calculate variable compensation. I was now not only in the room with managers making decisions about how to run the business, but bringing those decisions to life.

I decided I wanted to continue in this direction and become a Business Systems Analyst (BSA). I already worked with the Business Operations team extensively and had a great relationship with my would be teammates and manager. I applied for the role, but they were looking for a finance focused BSA, where I did not have experience. They wanted to hire me and said they would probably have a role in six months.

I looked externally and landed a job as a BSA at Formlabs a month later. There was no guarantee there would have been a BSA opening at HubSpot in six months and even if there was there was no guarantee I would get it.

I was the first BSA hire on a newly formed Business Systems team. This should have been a red flag since the company had already done multiple rounds of funding and should have had a Business Systems team for a long time, but I did not know that.

The highest priority for this fledgling team was to build better integrations between our business systems. Especially Magento, our webstore, and Netsuite, where we did accounting, collections and fulfillment. We had an out of the box integration, but it was not serving our needs.

I was tasked with choosing an integration platform, learning how to use it and rebuilding this integration. We went with Dell Boomi and a few months later, with some hiccups at launch, went live.

Formlabs’ European headquarters was in Berlin, an office of just over a hundred people. My team was growing in the US, but had been struggling to find a BSA there. I had lived in Germany for three years as a kid and in Berlin for a year in college and was looking to move. I arrived in Berlin in August, just before we kicked off the project I started this story with.

Needless to say, I did not do much in the way of providing BSA support to that office as I transitioned to software development. My lifestyle, getting moved to Berlin for work and spending most of my time learning to write code in a high stakes situation did not fit as well culturally as being a university student had.

Berlin was not feeling like the right place for me. Neither was Formlabs. My team was still not getting great investment, so, despite now being a software developer, I was unlikely to get a title change, or much of a raise. At the beginning of 2020 I transferred back to the US, where I had better community and connections for making my next move, and updated my LinkedIn to show recruiters I was looking for a job.

A few months later, at the beginning of the pandemic, two companies reached out to me, Shopify and an EdTech company. I started interviewing at both. Shopify wanted me to move to Ottawa, or Toronto. They had reached out to me specifically because I had gone to McGill, so I was more likely to be willing to move back to Canada. I had no intention of leaving New England just after intentionally returning, but I had never gone through developer interviews, so I thought it would be good practice. The EdTech company was in the Boston area, but did not have a strong tech culture like Shopify.

Half way through the interview process Shopify became less communicative. After a week, or two, my recruiter scheduled a meeting with me and apologetically told me that Shopify had decided to become a remote company. A month in, it was clear to them the pandemic was not going to end any time soon and, since they were going to have to invest in creating a great remote work experience, they should take advantage of it into the future. Now I was interested.

I made it to the last round of interviews at both companies and received an offer from Shopify and had talked through the specifics of my offer from the EdTech company, but was waiting to get it in writing. I used the EdTech company to negotiate a slightly higher starting salary at Shopify (about 50% more than my current Formlabs salary), but they ended up never making an offer.

Shopify was generous and gave me 6 weeks between acceptance and starting. I gave my two weeks and took a month off.

When I started as an Integrations Developer Shopify was using Mulesoft , a Dell Boomi IPaaS competitor. I will not go into too much detail, since I wrote a Shopify Engineering Blog post on it, but I pushed for us to move off of it and onto Ruby on Rails , Shopify’s default tech stack. After six months there was enough buy in, so in three months I learned Ruby on Rails and built our new integration platform. A year after starting I was promoted to Senior Developer.

We completed the migration off of Mulesoft before our renewal date at the end of the year and validated that the integration platform met our needs. We have continued to rapidly develop integrations on it, including a single developer building three integrations in less than three days to support the rollout of m1 computers at Shopify.

This spring we were kicking off a project to build a Treasury data warehouse to apply a data driven approach to optimizing Shopify’s cash management. We could not use Shopify’s existing data stack, so I had to learn data engineering and build a data pipeline and warehouse.

As a solo developer without much infrastructure, or data pipeline experience the key was to keep it as simple as possible and leverage other people’s knowledge. I read a lot about the space and chose Airbyte , an open source data pipeline, so I could leverage their framework, but build any connections we needed. I used Google Cloud , Shopify’s cloud provider, for all of our infrastructure. At some point I will write about this in more detail. This summer I was promoted to Staff developer.

I learned software development through the generosity of the open source community. Neither my major, nor my first job determined my career. I have gotten very lucky, followed my joy and impact, been trusted beyond my experience, audaciously said yes and stopped waiting for opportunities to be given to me. To everyone who has helped me, including the people brave enough to ask questions on Stack Overflow, thank you. To everyone creating their ideal career, including me, good luck!