After a four year hiatus, I'm back to writing for my poor, neglected blog. A lot has happened since my last post. For one, my interest in cockroach culture has waned significantly. I am still working at DigitalOcean—4.5 years strong—but I made the career leap from technical writer to software engineer! Having spent a significant chunk of time at DO, I think now is a good time to write about my experiences there. Starting from the beginning.
Back in 2014, Hawaii was my home. I lived in a house with several of my best friends, played music in bands, had many beach sessions, and spent many late nights partying with the savory and less than savory characters of Chinatown, Honolulu.
I also worked for the past several years as a system administrator at University of Hawaii Mānoa. At work, my responsibilities consisted mainly of deploying and configuring things: Redhat Linux servers on VMware hosts, random apps, storage arrays, network appliances, and more. My team also worked on automating away the vast collection of legacy toil using configuration management tools like Puppet and Ansible. It was a decidedly low pressure job that was an excellent match for my free-wheeling, “anything for a joke” lifestyle.
In March 2014, my girlfriend, Natalie, told me she wanted to move to New York City. My response was something like, “Yeah, I would rather not but I guess I could live there.” I wasn't thrilled with the idea of leaving Hawaii because I was comfortable and content. We didn't set a move date but knew it would happen within the year.
We had a two-week vacation planned for April. The first week would be spent in Southern California, capped off by our friends' wedding in Fallbrook. The following week would be spent doing something else in California, like Coachella or the Bay Area. But plans changed a couple weeks before the trip, we decided, “Hey, let’s visit our New York friends for the second week”. Soon after, another change of plans: Natalie’s trip would be one-way. A move date was set; I started looking for a job.
I reached out to some friends who worked in NYC for job leads. Through that I was offered few opportunities but the salaries were lower than I wanted, so I declined. I also searched LinkedIn through which I applied for a handful of jobs, did some phone interviews, and scheduled some in-person interviews during the NYC portion of my vacation.
Fast-forward a few weeks to California. The first few days were spent hanging out and partying with a bunch of our friends in Los Angeles, then we sequestered ourselves to our friend's dad’s house near Encinitas.
On Friday, April 11, the morning before the wedding weekend, I performed my final LinkedIn job search: “Linux System Administrator” in the NYC area. Over the past few weeks I had sent in four job applications, but now I encountered a listing I hadn’t seen before: Linux Sysadmin/Technical Writer at DigitalOcean.
Based on the job description, I wasn't sure what the work would be, maybe a 50/50 split of sysadmin work and writing. I filled the online application, attached my resume, and wrote a two-sentence "cover letter" that went something like this:
I am interested in the Sysadmin/Technical Writer position at DigitalOcean. I have many years of experience as a Linux sysadmin. I pay close attention to detail, and I write well.
I also stated in the application that I would be in NYC next week, available for interviews.
Shortly after, I received a reply from Etel Sverdlov, the Director of Community at DigitalOcean. Abridged:
Thank you for applying to DigitalOcean. Based on your cover letter and resume, we think you may be a fit for this position. We'd like to find out a little more about your writing skills, and if those match what we are looking for, call you in for an interview during the week that you are in New York City.
In order to get a better feel for a candidate's fit, we are asking them to write up a sample DigitalOcean article. Due to the fact that the window of opportunity for us to conduct an in house interview is limited, we'd love to get this sample back by Tuesday, April 15th.
This will be an opportunity to show your thought process in writing articles.
We ironed out the details in a few quick back-and-forth emails. I agreed to the homework of writing a tutorial about installing WordPress with Nginx on Ubuntu on a DigitalOcean Droplet (a VPS or Virtual Private Server).
With the travel and wedding activities occupying the entire upcoming weekend, I knew I wouldn't have much time to write a tutorial. So I went straight to the San Diego Zoo and had my face painted.
Friday night, Natalie and I showed up for the Friends and Family pre-wedding party still in face paint. We were greeted with, "Oh, you must be Beau's friends," by a woman who turned out to be Beau's mom. When Beau—our friend who was getting married the next day—saw my look, he requested that I keep it on for the wedding. "I'll try my best," I said.
To me, the most memorable thing about this party was that somebody left HBO Late Night—softcore porn, if you're not familiar—playing on the TV. The audio was muted but it was nevertheless amusing to have that playing in full view of everyone there, including a couple of elderly ladies chatting on the couch.
After a couple of hours drinking and socializing, about 30 of us left for a big house the wedding couple rented for the weekend. At the house, we partied for several more hours.
When it was time to sleep, I kept my face paint on. This turned out to be a mistake! I woke up feeling very ill a few hours later, Saturday morning, and had to wash off the tiger face. Sorry Beau! I tried my best!
Anyway, Saturday was the wedding. It was beautiful and fun like all weddings should be. After the festivities, we went back to the party house and partied some more.
Sunday was a mix of random post-wedding events and tasks. By the evening, Natalie and I made it to airport and wrapped up the California leg of our trip.
NYC Day 1: Sleep and homework
On Monday, April 14, we arrived at JFK airport at 6am. Exhausted. After making it to our friend's studio apartment in Williamsburg, Brooklyn, I slept all day until 7 pm. I wasn't sure if the DigitalOcean homework deadline, April 15th, meant I had to submit before the start or end of the next day. I decided to play it safe and assume the deadline was 10am of the next day—less than 15 hours away. I immediately got to work.
Understanding DigitalOcean tutorials
The DigitalOcean tutorial formatting and style guide was included with the assignment, and it was recommended to follow it. It wasn't as developed as it is now—I don't remember what its exact contents were—but I remember it informing my decision to emulate the style of existing DigitalOcean tutorials as closely as possible. The look and feel of DO tutorials is as important as the information they convey.
When I received the homework assignment a few days prior, I briefly perused a few existing DigitalOcean tutorials to see what I was getting myself into. My initial take was that they were too verbose but had well-written content. Now I had to read several more DigitalOcean tutorials to get a better handle on what they actually consisted of. That, and I had never written a tutorial before.
After this research session, my takeaway was that a DigitalOcean tutorial should be written like a procedural essay that assumes the reader knows almost nothing:
- State a desired task to complete
- Explain why someone would want to complete the task
- Lay out all of the steps to complete the task, explain why they should be done
- Explain technologies or concepts that were mentioned along the way
- Provide a way to validate the task was completed
- Conclude with a "next step" to remind the reader why they followed the tutorial
Researching the topic
Now it was time to figure out how to install WordPress with Nginx on Ubuntu on a DigitalOcean Droplet. I had prior experience with similar technologies but not this particular combination. I knew WordPress was a PHP app that used a database, Nginx was a web server, and Ubuntu was a Linux distribution.
Of course, once I started googling I found there were countless articles on how to install WordPress. In order to avoid straight up copying what I was reading, I gleaned the installation basics then took to the official WordPress installation documentation to start fresh and figure out how to make my tutorial the best WordPress tutorial in existence.
Writing the tutorial
I spent the next several hours writing and refining my homework submission. After a dozen iterations of spinning up a fresh Droplet then installing and configuring WordPress, I finalized what I thought was the best process. Then I spent close to an hour matching the tone of a DigitalOcean tutorial.
At 7:14am, Tuesday morning, I drafted an email to Etel with my tutorial attached. In addition to usual pre and postamble, I listed out what I did to make my tutorial better than the rest:
- Write commands without dependencies on working directories
- Eliminate ambiguity of database name, username, and password in code blocks, so the reader can be sure they are substituting the correct thing
- Separate the MySQL commands from the output so they can be copy-pasted easily
- Write string substitution commands, with detailed explanations and expected output, to avoid forcing the reader edit config files visually. I am aware that this is a huge difference in style but found that the config files were much easier to reproduce accurately with this method, and I think that it still reads like a tutorial as opposed to an automatic script
- Simplify salt/key config
- Make installation foolproof
Then I hit
Send and went to sleep.
NYC Day 2: Early success
When I awoke, a reply from Etel was waiting in my inbox:
Thanks for sending in this tutorial. I read it with great interest. We'd love to meet you and see if you'd be a fit for this position.
Would you be available to come for an interview tomorrow (April 16th) at 12pm? If not, is there a day and time that may work better for you this week?
Instant gratification is always nice. Needless to say, I was very pleased with the outcome! I scheduled the interview for Tuesday at 5pm.
I still wasn't sure what the job responsibilities would be but had a strong suspicion it would mostly involve writing tutorials.
I took the rest of the day off for some much-needed relaxation.
NYC Day 3: DigitalOcean interview
When I arrived at DigitalOcean HQ at 270 Lafayette St., I was cheerfully greeted then ushered a few feet away to a couch. It was a small open office layout containing 20-something people at desks, a ping pong table, and a few private offices. After waiting a couple minutes, Etel appeared and led me to one of the private offices to kick off my interview.
The interview was with Etel and two people she managed under the DigitalOcean Community team, a technical writer and a community manager. It was a simple, conversational interview but we covered a lot of ground. The questions ranged from my Linux sysadmin knowledge and experience (several years at a university), my writing experience (none), why I wanted the job (my girlfriend wanted to move to NYC), and what my future aspirations were (become a software engineer). They also explained the day-to-day duties of the position (writing tutorials, as suspected), the DO Community ideology (show customers love), and why they enjoyed working at DigitalOcean.
They showed particular interest in my process for writing the homework tutorial. I walked them through it, and they said they were very impressed by how well I emulated the DigitalOcean style. It took a lot of work in a compressed time frame but it seemed the effort was paying off! They liked me and said the next step in the hiring process was to schedule a trial day, where I would come into the office and do a day of work.
I wrapped up the interview with my own questions and tried to get a feel for the company. No red flags. They all seemed like nice, decent people. It actually seemed like a fun place to work.
Then I went to another room where I was interviewed by DO's Chief Marketing Officer, Mitch Wainer under whom, organizationally, the Community team existed. For me, it was a very easy, non-technical interview that was more-or-less a pitch to get me excited about working at DigitalOcean, which I was totally fine with.
I left the office. Twenty minutes later, I received the followup email from Etel:
Thanks for coming in to the office today. We enjoyed meeting you.
To follow up with our discussion, we'd love for you to come in for a trial day on Friday. Our schedule is 10am to 6pm.
I was happy with my interview performance, and it sounded like they were too.
NYC Day 4: Other interviews
Instead of enjoying my vacation, I spent Thursday doing a couple in-person interviews I had set up prior. One was for a sysadmin position and the other was for some sort of systems automation role, both with offices in the financial district. I didn't accept either of the job offers so I won't go into much detail.
One annoying thing though was that the recruiter told me to wear a suit for the interview. So I showed up at the interview in a suit only to be interviewed by three groups of guys, all wearing jeans and t-shirts. Cool advice, recruiter person. I digress.
NYC Day 5: DigitalOcean trial day
On Friday, I used my imagination and pretended I was an employee at DigitalOcean. I took the L train from Bedford Ave to 14 St-Union Sq, transferred to the R train, walked by the line forming for the latest Supreme drop, and appeared at the office by 10am.
Etel set me up at a desk and relayed her expectations. Chiefly, I was to choose one topic from a short, pre-approved list and write a complete tutorial before 5:00pm. She let me know to not hesitate if I had any questions or needed help with anything. I scanned the list and picked "How To Install Apache Tomcat 7 on Ubuntu 14.04 via Apt-Get".
I got straight to it. I remember it being a little stressful but manageable. On the tortoise-hare scale, I would place my writing skills on the slow and steady end; I have never been a fast writer but I stand by the final result. I made some progress before taking a break for a few slices of delicious Rubirosa pizza because, as the office manager told me with great excitement, "It's Pizza Friday".
At 2:31pm, I sent Etel a draft of what I was working on, and she gave me feedback. Not much feedback, and most of it was to include more background info and explain steps in more detail. For example:
I would recommend that you actually do a quick summary of those steps as well. In general DigitalOcean article look to be self contained :)
I can't remember the exact reasons but I was really cutting it close to the 5:00pm deadline. Again, it probably had to do with having only a single tutorial under my belt. I finally wrapped it up and submitted my final draft at around 4:50pm. Etel told me not to go anywhere while she and her team reviewed it.
After about 15 minutes, Etel came back with good news: I passed the test! She wanted me on her team.
I went into one of the offices with one of the recruiters, we did some negotiations, and I walked out by 6pm with an offer contract for a Technical Writer position at DigitalOcean!
Later, Etel told me she didn't want me to leave the office without an offer because she was so excited about finding someone who had a rare combination of sysadmin and writing abilities. I must admit, it was delightful to be the subject of such enthusiasm and to land the job just seven days after first applying!
At the time, DigitalOcean didn't pay for work during a trial day but they were offering $50 per tutorial published (it's now a $300 payout). Mostly as a joke, as I was leaving, I asked, "Do I get $50 for this tutorial?" Etel paused briefly and replied, "Yeah, you're right. I'll Paypal you."
My $50-earning, job-securing tutorial is available here: How To Install Apache Tomcat 7 on Ubuntu 14.04 via Apt-Get.
With a few job offers in hand, it was time to make a choice. The salaries were all within a $10k range but DigitalOcean's benefit package was outstanding:
- DigitalOcean pays 100% of the premium for health, dental and vision and 50% of the premium for dependents
- Competitive compensation including a 401k with up to 4% employer match
- Stock options
- Corporate Seamless account to keep your hunger at bay
- Monthly commuter expense and gym membership allowance
Also, based on the interviews alone, I could tell DigitalOcean would be more fun. So, I decided I would be a technical writer at DigitalOcean.
Celebrations were in order! I honestly don't remember how we celebrated but my Google Photos has a single photo from April 18, 2014:
NYC Day 6: Enjoy my only real day of vacation
After my arduous weeklong job hunt, I spent Saturday as a New York tourist before returning to Hawaii to quit my old job, pack up, and move out.
Stay tuned for more stories about technical writing and software engineering at DigitalOcean...