Emily, on her wedding day!
Emily Davis is a PHP developer based in Boston. She currently works at the Broad Institute, a genome research foundation run out of MIT and Harvard. In her free time she listens to music, and helps build Skillcrush. Follow Emily on Twitter @emlaser.
When did you start coding?
I started learning PHP at the beginning of 2009, but I knew some basic HTML before that. It’ll be my four-year PHP anniversary soon!
Why did you want to learn to code?
I wanted to stop being bored to tears by my job. Literally, tears. I spent six years after college bouncing around different jobs. I was a tech at a frame shop, I put in some time as an administrative assistant, and I managed inventory for a clothing retailer, among other things. All those experiences were good for me, but at the end of the day, I felt like I hadn’t really learned anything. I was sad. My boyfriend at the time, now my husband, had been a developer since 2001, and back then he would always tell me about fun things he was doing at work (he used to make websites for rock stars!). It seemed pretty cool, and I was jealous. In late 2008, I had the good fortune of finding a job in an IT department where they were willing to teach me code. I seized the opportunity and knew pretty quickly that I had found something that felt right. I haven’t looked back!
Was it hard to learn? What helped?
Yes! So hard! The most helpful thing was having a very patient mentor when I was first trying to grasp the fundamentals. Learning a coding language is just like learning an oral language, and I felt like I was stumbling around a busy square in a foreign city for months. Sometimes I needed to hear things five or six (or ten?) times before they really clicked, and having a mentor there to be that broken record I needed was so helpful.
What tips would you give someone who is interested in learning to code?
What excites you about coding?
I love feeling challenged by something I’ve been doing for quite awhile now. I like knowing that I don’t know everything, and will probably never know everything, and so there will always be something new to learn.
What is good code?
Good code is code that is written to be consumed by both machines and humans. It’s easy to be in a time crunch and to whip out some code that works and solves a problem, but there is a good chance that it only makes sense to you. More often than not, I come across code that is impactful but is impossible to read, or I hear people describe their code like, “…well, it works…” I try to follow an iterative process when I write code. I usually start by pseudocoding out all the ideas swirling around in my head, and then going back to write code and refractor. Then I add in lots of comments and documentation so that other developers can easily understand what I’ve written. You never know how your code will be used in the future, or who will inherit it from you, so it’s really important to treat it like a manual for an application. Applications are used by both machines and humans!
What applications do you have open while you’re working?
I always have Terminal open, and usually some kind of database GUI like Sequel Pro or RazorSQL. My current text editor of choice is Sublime Text 2, but TextMate finds its way in there sometimes. A browser, of course, for reading documentation and researching problems. I usually have various chat clients running; I often work alone, and it gets lonely! Oh, and Rdio, for the tunes.
Who inspires you most?
Honestly, people new to writing code inspire me! When I see newbies have that ah-ha moment, when something finally clicks, I remember how amazing that feeling is. It’s incredibly addictive. The more I learn, the harder it is to capture those first amazing ah-ha moments, and so I challenge myself to keep that excitement going.
Who do you rock out to while you code?
I’m a 90s indie rock girl all the way, so that’s what I’m usually listening to. I really like My Bloody Valentine and Stereolab. Lately I’ve been on a Washington D.C. kick: Faraquet, The Evens, Fugazi.
Are there any coding rules to live by that we should know?
I think one important rule is to know when to take a break. It’s easy to get blinded by frustration and miss a solution that is most likely staring you in the face. Sometimes even a five-minute break helps to clear the mind.
I think another really important thing is to get involved in user groups. When I was a brand new developer, the idea of going to a user group meeting and being around, gasp, other developers scared me. I was worried about people asking me what I did and having to admit that I was new. My first user group meeting made me realize that my anxieties were completely unnecessary. For as many veteran developers as there were, there were just as many beginners testing the waters, getting a sense of the what the community is like. It was almost comforting to know that I wasn’t the only one getting my footing.