A week or so ago I read a blog post about how engineers tend to have trouble finding the “right” job for them. This led me to think about how I got into writing code in the first place.
My “how I became a software engineer” story: I grew up on the East Coast, where I enjoyed digging rivers in our back yard, building dams, and seeing how much water flow it took to overflow them. I really enjoyed chemistry in high school, and decided to major in that when I went to undergrad.
I did my undergraduate degree in chemistry and German at a small liberal arts school. I enjoyed studying chemistry because nearly all of the chemistry we observe is derived from just a few governing principles. After that, I went to grad school for chemistry. I liked it, and there was a lot of pressure from my professors to go on in it.
About 5 years later, I finished my Ph.D. in bioorganic chemistry at Stanford. What I learned during that time is that while I enjoy discussing science and thinking about technically challenging problems, I don’t particularly enjoy doing and re-doing (and re-doing) experiments to get a “pretty picture” suitable for publication in a scientific journal.
At that point, the “normal” thing to do would be to go find a postdoc(toral research fellowship) in an academic lab somewhere. I wasn’t too thrilled about that idea, so I took a teaching fellow position at a women’s university in Bangladesh. I loved my students and my job, but needed to return to the U.S. for personal reasons.
While working there, I developed a great appreciation for the pragmatic — you kind of have to, when the power goes out 6 times a day– and an interest in actually applying my knowledge to real problems out in the world, instead of holing up in an academic lab working on something that doesn’t seem to have any tangible applications. As part of my work, I visited an HIV clinic in India that takes just such an approach to treating the disease– focusing on what is and how to improve it, rather than just sitting around and imagining things away.
After returning, I applied for and was offered a postdoc at the USDA research facility, doing applied science in a prion disease lab (think Mad Cow Disease). I was really excited about trying to do science in a more directly-applicable way, but was reorg’ed out before I started. So it was back to square 1.
At this point, you might be asking where the software engineering comes in. That was entirely an accident.
When I went back to square 1 in my job search, I started thinking about the basics of what any job should have. I wanted something where my science background would be an asset. I did not want to do research on things that would never have any practical application. Ideally, I wanted to work with nice people as well. I started to look into positions in clinical research, which led to looking into clinical research data management, where having an understanding of how experiments should be designed would be an asset. I was employee 4 at QuesGen (it was 6 people at its max), and I was hired to be a project manager. After about a month, however, my boss asked me if I wanted to learn to code. I said sure, that sounds interesting.
It was kind of a slow month or so, so I worked my way through a PHP beginner book. And then my office mate (who is an excellent teacher, btw) needed some help with SQL stuff. I was a novice, but apparently asked good questions, and so was helpful in putting together some of the trickier stuff. I learned a lot of weird SQL tricks doing that…. That was over 2 years ago now, and in good weeks I’m writing a fair amount of code. And it’s fun.
Things I like about programming:
- Like chemistry, programming languages run by certain principles. It appeals to me.
- I can use those basic things to build pretty cool and functional software that people find useful, and can help solve their research problems.
- It’s fun to solve tricky problems, and to talk about those tricky problems with my office mate. It’s fun to try to poke holes in a strategy (mine, someone else’s) and work out where the functionality/ code prettiness line is.
So that’s my “how I learned to code” story.