From 8-bit micros to classic Mac and Unix systems, as well as OS X and iOS, Mark Dalrymple had been programming for years at large companies including AOL and Google. Cofounder of the international Mac and iOS programming community CocoaHeads, he is now a programmer and instructor at the Big Nerd Ranch. For Behind the Code, he discusses how it all started with programming and CocoaHeads, how developing relationships helped him to build his career, and why including your hobbies on your résumé can make all the difference when applying for a job!
Apple II as the trigger
My first dream job when I was a kid was being a physician, being a doctor like my dad. But he brought an Apple II home one day when I was in high school and it was like, “No I don’t want to do medicine anymore, I want to be a programmer.”
Understanding computation complexity
Right after college I went to work for a small start-up on the east coast of the United States. It was called Visix Software and they essentially did Macintosh-style programming and created toolkits and apps, but for Unix workstations. I spent five years there and that formed the core of pretty much everything I’ve done since. It was a shop that had a very strong emphasis on performance. So the CEO of the company was just obsessed with software performance, and it was absolutely essential for me to understand computation complexity and how that can affect software development, as well as look at not only micro optimizations but the whole gestalt of a system.
Founding CocoaHeads as a way of meeting programmers
CocoaHeads is an international Mac and iOS programming community, and it pretty much started by accident. I’m based in western Pennsylvania, and I had just gotten laid off from a dot-com job and was wanting to get into Macintosh consulting. And the only way you can do that kind of stuff is if you make contacts. And what’s a great way to make contacts? Through users’ groups. So I looked around and there was a thriving Unix users’ group, there was a Mac users’ group, but there was nothing for programmers. I came across a CMU (Carnegie Mellon University, Pittsburgh) student who goes by the name of Agent M and was really into Macintosh programming as well. I asked him, “Do you know of any programmers users’ groups in Pittsburg?” And he said, “I don’t, so let’s start one!” And wherever he went, he essentially opened a CocoaHeads chapter. So now we’ve got 100 chapters on every continent except Antarctica. All by accident!
Getting jobs thanks to word-of-mouth
My career advice to pretty much every young person I talk to is build and nurture a contact network, because that is pretty much how you will find really good opportunities. So my first cold call was to Visix. After that, every single job and position I got for the next 20 to 30 years was thanks to word-of-mouth. So it’s all about building off the contacts made through meetups and users’ groups and just being a good person in general.
The human side of developers
In terms of regrets, one thing would probably be my behavior as a young programmer. Right out of college, going into my first job, I was really big on object-oriented programming and software engineering kind of things. And I was pretty full of myself, so I didn’t necessarily treat my colleagues well when it came to bugs occurring. Bugs happen in software and I was kind of intolerant of designs that weren’t good, or of bugs that were there, and inadequate performance. So some of the things I said probably could have been phrased in a more understanding manner. And in retrospect, things that I said, attitudes that I had, snarky comments of mine that got back to people—they kind of make me sad to remember. I atone for my sins through a talk I’ve titled The Squishier Side of Software Engineering that I’ve given at a number of college computer-science seminar classes. It talks about things like the more human side of being a developer. Like getting out and meeting people—meeting people where they are, trying to connect on a personal level, and also behavioral things such as “praise publicly and correct privately.”
Including interests on your résumé
I have “proficient balloon twister” at the bottom of my résumé. And that actually came up during an interview situation at Google—I had, “Hey, I see you have proficient balloon twister at the bottom of your résumé, can you make me something?”, expecting me to be caught off-guard. But at the time I traveled with a bag of balloons, so I pulled it out and was like, “What do you want?” So when I’m hiring I look for that kind of stuff because languages are fine, people can learn languages—I’ve got 20 languages on my résumé. People can learn toolkits, but it’s like, what makes them interesting, what makes them unique? By looking at their interests you can kind of get an idea about how they attack problems. Are they really analytical about things or are they more of a “get a gestalt and see a big picture at once and then use that to extrapolate software design” person, or whatever.
Ask questions during your technical tests!
If you’re currently going for interviews, the best thing to do is to try to figure out what it is that the recruiter is wanting exactly. The current trend is to take on problems—to check out a Git repo, add a feature, fix a bug, add a text, or something. But you don’t know if the company is looking for somebody who can implement a feature in four hours or analyze a problem space and figure out what the best thing to do is. So ask your recruiter, “What’s the goal?” Because I’ve seen a couple of situations where friends have been given a coding problem, and the directions have been kind of ambiguous, so they solve it one direction, but the company was actually looking for them to solve it another way. And so it was like, “Oh, you didn’t do it our way, the way we were expecting, so we’re not gonna hire you.”
This article is part of Behind the Code, the media for developers, by developers. Discover more articles and videos by visiting Behind the Code!
Want to contribute? Get published!
Follow us on Twitter to stay tuned!
Illustration by WTTJ