Coding, How-To, New York City, Random

How a Copywriter Becomes a Software Engineer

When I graduated college, I had a degree in Philosophy and a desire to work as a writer — specifically as a journalist.

“So much liberal, so much arts.”

This eventually became, “so much for liberal arts!”

And for a while, writing was precisely the work that I did. I moved to NYC and started my career as a creative (copywriter and strategist) at a digital ad agency. I was given a cheap laptop and a seat without much leg room and was put right to work — thank God the work didn’t involve me moving because my legs were asleep from the lack of space (not true, unless I was in outer space, or something).

But before I started that job as a copywriter, I had this crazy tech company idea: Newspanion — “it’s like Pandora, but for news.” Back in 2010/2011, there weren’t a lot of Pandoras for news, so it was a novel idea, which is no longer the case. My business partner, Andrew, was a guy I met some many months earlier in line for a bar (apparently my early-20s self thought it was acceptable to wait in lines to access alcohol).

Together, he and I wanted to start a tech company…

and we had pretty much zero tech skills.

What does that mean? Well, we weren’t going to be technologically engineering anything, unless you count engineering e-mails to try to find a technical cofounder.

So here I was, a copywriter/strategist moonlighting as a tech entrepreneur — writing copy by day and business plans by night. Collectively, Andrew and did a lot of research, wrote a lot of business stuff, sent a lot of business e-mails, and tried our damned-est to find a technical cofounder.

But it never worked out; something always went wrong.

It was around my 5th or 6th month at the agency when I decided that I would try to build a prototype for our startup so we could pitch investors. I didn’t know where to start.

I hadn’t written any HTML since Geocities in 1997.

Hell, I didn’t even know if HTML would do it. I did some research, and everyone was always talking about this Ruby on Rails thing. That sounded like it would do the trick because it sounded fancy enough. But some people said I should learn Ruby before Rails (and I was like, “Where’s the train platform again? Is that near the jewel excavation site?”).

I took their advice and bought a book on Ruby. And the next thing I noticed was that everyone using Rails seemed to be using Macs. In fact, lots of software engineers were on Macs, and I had a rickety-ass, 7-year-old Toshiba that looked a lot like something you could use as an ad-hoc baseball plate (if you were actually caught in a base-less-baseball-game pinch). This laptop looked like a stove, or an ironing board, or a model UFO. Actually, not a model UFO, that would look cool; this thing was so uncool.

toshiba laptop

My Toshiba laptop and netbook. Remember netbooks?!

Coming to terms with these facts, I bought a 13-inch Macbook pro, which I’ve been using as a reliable (and expensive) paperweight recently. When I unpackaged that puppy though, it was like coding Christmas. Ruby was already installed! Things were going to be so great!

… And pretty much every day for a few months, I went to work, wrote some ads and copy.

Then I went home and wrote some really, really bad code.

Actually, a lot of the time I didn’t even write it, I copy-pasta’d it. Those early days were filled with plenty of soup and copy pasta. I might as well have called myself a sous-do chef!

I really had no idea what I was doing. I didn’t have a good framework for understanding the material. I found my studies in philosophy to help me during these Boeing-747-turbulent times by helping me ask good questions (I also had plenty of others… caution: article contains bad words!):

  • “What is the problem I am trying to solve here?”
  • “What is this doing? I want to understand this.”
  • “If this works and that works, what happens when I remove this? Does it still work?

Good ol’ deductive reasoning. I never thought I’d be deducing bug origins (of type software or creepy-crawly) when I was sitting reading Nichomachean Ethics, but gosh was I wrong.

I just kept plugging away, until one day,

I had a really shitty-spaghetti prototype (Bon Appetite!)

of our web application.

But hey, it worked, and now we could at least show people our idea. Long story short: we showed and showed, but just never could get the traction we were looking for, and the startup died.

Meanwhile though, back in real-life world, I was still a copywriter and strategist, writing ads that you probably didn’t even notice while surfing the interwebs. About 12 months into that job, I decided I’d try a hackathon. At the event, I luckily sat next to an engineering wizard, Toby, (basically the Harry F’ing Potter of coding), and we won. With the taste of victory so fresh, I went to another hackathon and won that one too. I will always hold that we won because of our teams; my teammates defined excellence. At these hackathons I provided product/creative contributions, in addition to writing mangled HTML/CSS/Javascript.

It was about this time that I was feeling pretty awesome about my new skillz. I mean, I could actually pay the billz now!

Fast forward a little bit to 2012. I quit my job as a copywriter and joined AppNexus, that global ad tech company you may have heard of. I started at AppNexus as a technical account manager (TAM), since there was no way I could really be hired as a software engineer (well, maybe, if I only did front-end). But still, at tech companies, there are lots of people more technical than you when you are a self-taught web developer. And so I was a TAM, TAMing away at the beat of my drum. TAMing was great because it taught me that I had enormous gaps in my computin’ knowledge. I didn’t know how to use CURL or write SQL statements when I started at AppNexus. But most important of all, I learned that I didn’t really know how to figure things out on my own yet — I mean the type of figuring out that doesn’t include Stack Overflow, but instead, includes RTFMing.

Just RTFM!!

Just RTFM!!

As a TAM, I found myself doing all sorts of repeated tasks in Excel, which I didn’t like much, so I took up scripting and Python.

I’ll tell you what, my first Python scripts were so bad

that someone probably should have written a script…

to rewrite all of mine.

Sometimes I wondered if I should have stuck to writing movie scripts.

With time, though, I got faster and better, and was on to the next challenge: Data Analysis with Python. I moved into a new role as an analyst. Being a data analyst is cool because you get to decide on which tools you want to use to conduct your analysis, and then you also get to decide how you want to display the data. I chose Python for everything I did, just to get better. And better I got. (I also would often do things the hard way just to get the most learning out of the task.)

In August of 2015 I moved into a Software Engineering role,

approximately 1540 days after my initial efforts

to learn how to build software back in May, 2011.

Granted, I took plenty of breaks in between and probably could have accelerated the process by years by going for an internship, or more school (… ew). But I didn’t go that route, because it’s about the journey, not how you get there! Wait a minute. It’s how you got there, not the journey. Uh, scrap the platitudes… Did someone say journey?

What I meant to say is: Don’t stop believing.