If you're seeing this message, it means we're having trouble loading external resources on our website.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

Main content

Tom Heinan, Mobile Developer, Pilot, and Zombie

Photo of Tom in front of plane
Ready to fly
Hi, I'm Tom Heinan!

What do you work on?

I work for a company called One Medical Group, which is a technology-enabled medical practice. I spend most of my time working on our mobile app in Objective-C, where we’re implementing all sorts of cutting edge product features aimed at helping people manage their health and wellness effectively. I also do a bit of back-end code in Ruby, developing the APIs that our app needs in order to communicate health data securely and reliably.
Our patients use the mobile app to schedule appointments, get virtual triage for common issues, and communicate with their doctors, so I try my best to squash bugs and improve usability with incremental updates while at the same time planning and prototyping exciting new features.
Three screens from the mobile app in action
Three screens from the mobile app in action

How did you learn to program?

Apple IIGS
Apple IIGS
My parents bought our first family computer in 1986, the year I was born. It was an Apple IIGS, and I started playing around with GS/OS as soon as I could read. I learned basic HTML and JavaScript in elementary school (I even got the Computers merit badge in Boy Scouts!) and then took AP Computer Science in high school, the curriculum for which was mostly introductory Java. When I got to university, I skipped over many of the more traditional language courses (BASH scripting, C++) and instead taught myself the basics of Ruby, which remains one of my favourite languages today.
For me, the hardest thing about learning any language is finding a good place to start. Taking a hundred pages of documentation and turning that into something cool is a pretty insurmountable task, so instead I try to take an idea and find a similar open source project in the language I’m trying to learn. Then I can follow along with the code and get a basic structure down into which I can pour my own logic, Googling as I go. Identifying similar concepts is also key - Understanding Categories in Objective-C is a lot easier if you already know what Open Classes are in Ruby.

What do you do when you’re not programming?

I code a lot at work, and I also code a lot for fun, but when I’m not writing code, I like to spend time outside. Camping and hiking are always a good time, and we’ve got plenty of great places to do so here in California. I’m also working on my pilot’s license right now - there’s nothing more relaxing after a long day of meetings than heading up to 3,000’ and enjoying the sunset over the bay.
View from outside the pilot window when flying over the bay
Flying over the San Francisco bay
I also play piano and guitar and do a bit of songwriting here and there. I love acting, and I was a member of my university’s improv comedy team for several years - we still have the occasional nerd reunion in Nova Scotia, where I went to school. Being a software engineer doesn’t give you a whole lot of extra time for theatrics, but if you’ve watched AMC’s The Walking Dead, you might’ve seen me get killed once or twice. I’ve been told I have a pretty solid shamble.

What’s your one piece of advice for new programmers?

Find a language you love, make cool stuff with it, and never be afraid to experiment.

Want to join the conversation?