Liz Marley, unlike your host, is not afraid of math — and she brings that fearlessness to work every day on OmniGraffle, which is chock-full of math-y goodness.
After getting a computer science degree from Harvey Mudd, then joining The Omni Group in 2005 and working as a tester, OmniBugZapper PM, tester, OmniFocus PM, and tester, two years ago she walked down the hall and switched to engineering. She also volunteers for App Camp for Girls, does innovative technical talks (using Swift playgrounds), and keeps up on her knitting.
You can find Liz @emarley on Twitter.
Some other people, places, and things mentioned:
- Africa by Toto
- Ken Case
- Brian Young
- Swift and Objective-C Interoperability
- Kristina Sontag
- Fritz Klug
- Delta Drawing
- Microsoft SQL Server
- Craig’s List
- Best Buy
- Hula hoops
- App Store
- Grey Osten
- Laura Savino
- Seattle Xcoders
- Affine Transforms
- Swift by Northwest
- Curt Clifton
Brent Simmons: You're listening to the Omni Show. Get to know the people and stories behind The Omni Group's award winning productivity apps, for Mac and iOS. Music!
Brent: Hey. That's not our music. Come on, Mark.
Mark Boszko: Sorry!
Brent: Play our music!
Brent: I'm your host, Brent Simmons. In the studio with me today, is Liz Marley. Say hello, Liz.
Liz Marley: Hello, Liz.
Brent: Thank you. It's amazing how happy that makes, that everybody comes in and, who comes in is willing to play along with, the oldest dumbest joke in the world, and yet ... Feels good. Anyway, so Liz, you are an OmniGraffle Engineer.
Liz: Yup. I'm an OmniGraffle Engineer.
Brent: You definitely are. You were a tester. The PM of OmniBugZapper, our internal tracking, bug tracking tool, a tester again. OmniFocus PM, then a tester, and then an OmniGraffle Engineer.
Brent: You've worn a few hats.
Liz: I have done several different roles around here.
Brent: You started here in 2005. That was back in the era of ... I've heard it described as the scary stained carpets era, and something ridiculous with wall sconces. I don't know. I wasn't there.
Liz: Yeah. You can listen to Brian's interview, if you wanna get some of those details. That first office — well, the first office that I saw — of Omni's, was charming, is how a real estate agent might put it.
Brent: Uh huh.
Liz: It had character.
Brent: Okay. Tell me more about the sconces.
Liz: Oh right. There were-
Brent: Since I never visited the office, but ...
Liz: Right. There were wall sconces on both floors, and on one floor, they were horns, like antlers.
Liz: On the other floor, they were like, french horns.
Brent: Two totally different types of horns.
Liz: But clearly a matched set.
Brent: I have no explanation.
Liz: I don't either and I —
Brent: Can we just pretend that Ken designed the whole thing?
Liz: Sure. That makes a good story.
Brent: That's the one I'm gonna go with. I like that one. That's cool. I'm gonna jump right into a question from a listener, [Brian Young 00:02:27] on Micro.blog. He asks ... I'll read the whole thing, and then we'll break it down. He asks, "This may be overly obvious, but I'm interested in hearing about all the transition from software testing to software engineer. What skills overlap or not? How did she expand her skills, to make the switch? Does she miss testing, or is it all the same, plus, writing application code?" Let's talk about the overlapping part. He's wondering what skills overlap, or don't overlap, between testing and engineering.
Liz: Yeah. I was a tester for most of 10 years. Then, I started doing engineering for the last two years. I think I've got enough experience to speak to this question.
Liz: I think that there's sort of a continuous flow from the first moment, when you say, "Hm. There's something funny here," through finding a bug, digging into the details of exactly when it happens and when it doesn't happen, through changing the code to prevent the bug from happening, and confirming that that change actually made the bug go away and didn't cause some other issue. That's like a continuous process. Some people are really good at the first half of that process. Some are really good at the second half. I think, whether you're a tester or an engineer, you need to spend a bunch of time in that middle phase of breaking it apart, and really diagnosing the exact nature of the bug.
Brent: I found in my own experience that often, that is everything, and then at the end, I added a ... The other day I fixed a crashing bug by adding two characters. I put a thing inside square brackets, and then it didn't crash anymore. It took me all this time to find. Yeah. And so, you're saying that's about the same thing.
Liz: Absolutely. You know, at Omni we don't draw a super hard line of exactly when testers have done enough diagnosing, before it's written up as a bug, and where the engineers jump in. It just depends on whether a tester found the bug first, or maybe a customer found it, or maybe I found it myself, as an engineer, but ...
Liz: That middle diagnosis phase is really important. I think another way that the skills overlap is that, I spend a lot of time as a tester writing up bugs, explaining my thinking, explaining what I knew. As a developer, I still need to be able to explain my work clearly and commit messages. Since we're working on Apple's frameworks, filing radars.
Brent: Uh huh. Yeah. Right. We're all Apple testers in a way, right? Yeah. Organization and communication skills are about the same thing, I guess huh? Yeah.
Liz: Yeah, there's nuances, but I reuse that skillset a lot.
Brent: He also asks, how did you expand your skills, to make the switch over to engineering?
Liz: Shortly before I moved to engineering, Apple turned every engineer's world upside down, perhaps, by announcing Swift. That actually is part of what made me feel more like I could switch to being an engineer, is that all the other engineers around me, were suddenly learning a new language, and maybe not completely starting over ... There's a lot of skills that you carry from language to the next, but ...
Liz: definitely asking each other a lot of questions, needing help, offering help. It felt like a good time to make the jump. It turned out to actually be a lot more challenging than that, because working at Omni, not only do I need to learn Swift, I'm also learning Objective C, and learning how to use those two languages together in the same project in the same framework.
Brent: If you needed a new adventure, you picked up three new adventures practically.
Liz: At least three.
Brent: Yeah. Right. How the two languages work together is maybe even the hardest one of all of them, or the most frustrating sometimes.
Liz: There's a reason I have that particular page in Apple's documentation bookmarked.
Brent: Yeah. Right. Smart. I should do that. Swift is interesting though, because it does feel like a fresh start. We're all coming in on the same page at once, which I found really refreshing. I mean, after years of pretty much working the same way all the time, with incremental changes, this was a really big change. I've noticed other developers ... I'm a little bit older than you. Well, some other developers my age, just, they just don't want to do it at all. They just don't wanna make the jump.
Liz: I really like Swift. I find that it ... When I was a tester, I noticed that there were patterns among engineers' bugs. Certain engineers tended to make certain mistakes. There's a whole clump of mistakes that would show up as crashes in Objective C, that they're now getting caught by the compiler with Swift.
Liz: I think it's shifting some of the testing cycle, so that an engineer can just find their own bugs, as they go. In some cases. Obviously there are still a lot of bug that stick by and keep our testers entertained.
Brent: Oh sure. You didn't switch to engineering, because all testers would be out of work soon, because of Swift.
Liz: I think there's still a lot for testers to do. If nothing else, as Kristina said a few episodes ago, our apps are used by humans, so we need humans to look at them, and use them to make sure that they are really enjoyable to use.
Brent: Yeah. There are ... Yeah, all those classes of bugs that Swift won't catch yet. I do love that, when I find a bug. Then, I think to myself, "You know, if we had been writing in Swift, all along, before it was even invented, this crash would never have happened." Do you miss testing? ... is the third component of this question.
Liz: I think that I get just about all the testing time that I want in doing my own work, my own engineering work. When I first pick up a bug that's assigned to me, I'm likely to do a little bit of testing to make sure I understand the problem, that what I see in the app matches what the tester reported.
Liz: And then, once I've got what I think is a fix for the bug, I'll do a little bit of testing — hands on testing — myself, to make sure that I fixed what I thought I fixed, and I didn't break something else obvious. I try to take the time to write units tests, probably not quite as many as I should.
Brent: Yeah. That's always true. It's never enough. It reminds me of what Kristina said though. I think it was Kristina who said that, "We're all in QA," right? That's everybody's job, right? We may have testers, but engineers, everybody's in QA.
Liz: Yeah. Everybody affects the quality, from the support, test, engineering, even I think indirectly our kitchen affects the quality by helping the rest of us stay well fed and energized to get the work done.
Brent: Well, we don't start figuring out around 11:30, where we're all gonna go for lunch. We all know where we're going for lunch. Yeah. It helps.
Liz: Yeah. Bacon and pancakes today.
Brent: Yeah. Yeah. Bacon day! Shoo. Pancakes. Course, we probably would have written an internal tool for figuring out lunch.
Liz: We definitely seem to write a fair number of our tools.
Brent: Yeah. You would have been the PM of that tool at one point in the past.
Liz: Yeah. Yeah. I was the product manager for internal bug tracker. I care more about bacon, than I do about bugs some days. Yeah. I could definitely see that happening.
Brent: OmniLunchZapper. Omni. I don't know. I'll have to come up with a name for it. We're never gonna write it. We don't need it. You have another user question, from [Fritz Klug 00:11:45]. I hope I'm pronouncing that correctly, on micro.blog. He would love to hear how folks who work at Omni use your applications to get work done. I'm thinking you probably don't necessarily use OmniPlan say, to plan out your work. That's kind of a mismatch. Do you use Graffle to write Graffle?
Liz: I do use Graffle to work together with the rest of the Graffle team ...
Liz: ... to write Graffle. The code that powers OmniGraffle, has some interesting geometry problems. I might sketch 'em out on my whiteboard first, or in my notebook, but by the time I'm talking to my teammates about how to rework some of our math ... Like, the recent feature we added for canvas sizes being, like you could ... The graphics on the canvas could determine how big the canvas is.
Liz: We reworked how that worked, so it was more powerful and you can have a flexible canvas, or a fixed canvas, or an infinite canvas. The geometry details of that, was a significant re-architecting, and we wanted to make sure we got it right. I put together a Graffle diagram of how the canvas should behave with different combinations of canvas settings and graphics, and shared that with the team to make sure we all understood the change we were making.
Brent: That's cool.
Liz: It got a little bit confusing, and meta, to look at that document in OmniGraffle, because there's the canvas, that the Graffle file has, because it's a Graffle file, and then there's the canvas that I'm trying to refer to — the conceptual canvas that we're going to modify the behavior of.
Brent: Yeah. I could see that getting confusing. I'm sure it was useful. That sounds awesome. Did you grow up with a computer at home?
Liz: I did. I don' think I realized until recently, just what a privilege it was, and how much it set me up for getting to where I am now; but I do not remember living in a house without, not just a computer, but an Apple computer.
Brent: Darn right. Yeah. That's cool. Did you have favorite games, or apps or anything?
Liz: The first app I remember using, was Delta [Drawing], which ...
Brent: I don't think I used.
Liz: Seems like a, kind of come back full circle. A lot of people are probably more familiar with Logo.
Liz: It's a similar app. I guess we didn't call 'em apps back then.
Brent: Oh yes, they were-
Brent: Programs. Software applications.
Liz: But, writing something like basic, or a simple scripting language to draw lines and curves on the screen.
Brent: Move to this point. Line to another point. Yeah.
Brent: Classic stuff. Yeah. That's fun. Later on, you went to, notes tell me, Harvey Mudd ...
Brent: for an engineering degree.
Liz: Yeah. I set up to major in engineering. The first engineering class that you're supposed to take at Harvey Mudd, at least when I was there, is all about group projects.
Liz: That was my feeling exactly, and so I never took that class, which meant I couldn't be an engineering major.
Liz: I switched my —
Brent: No introverts need apply.
Liz: I switched my major to computer science, so that I could avoid taking that class, which turns out, totally ironic, because as programmers, we still have to work in group projects generally, unless you're truly an indie developer ...
Liz: You're probably working in a group. When I was a product manager, I looked back at me, who hid from group projects, and was like, "Well, that's my whole day today, is wrangling the group project."
Brent: Even a single person indie developers I know, they're on Slack. Used to be IRC, whatever, all day, asking question, getting help, helping their friends. I mean, programmers do work together, even though we all thought, growing up, that we wouldn't have to work with other people, it'll just be me and a computer. That's all right though. You got your CS degree from Harvey Mudd, then went to work.
Brent: Your first job, not at Omni.
Liz: No. I went to work for a company that made Windows software that talked to a Microsoft SQL server. My first day on the job, they asked me, "So, we hired you to be a developer, but we also need testers." I was fresh out of college. I knew everything.
Liz: I knew everything there was about being a programmer. I said, "Huh. I'll try testing. Sounds interesting. I can always come back to being a programmer later."
Brent: Sure. Your fall back position.
Brent: Yeah, right.
Liz: I didn't really think it would take me 10 years — no, 12 years to do so.
Brent: It worked.
Liz: Yeah. I'm really glad I was arrogant and flipped that coin in that moment, because two years later, when I was looking to move to Seattle, there was this Craigslist posting for a Mac software company, that provided lunch and ...
Liz: had a cat, who lived in the office.
Brent: You knew.
Liz: It sounded perfect. I came up here and interviewed, and these people were quirky like me. It was great!
Liz: That, of course, was Omni.
Brent: You were the first tester?
Liz: Yeah, well they had a tester before me.
Liz: But when I was hired, I was the only tester.
Brent: All right. In those days, I'm imagining the product lineup was ... this was 2000 ...
Brent: Five. We're talking about Graffle and Outliner.
Brent: All right.
Liz: It turns out people actually used to pay money for a web browser.
Brent: That's insane.
Liz: We shipped it in a box.
Brent: Wow. Yeah. I remember seeing the boxes at the stores. Maybe even Best Buy, or something like that. Crazy days. You doing App Camp again this year?
Brent: You organized the last three years?
Liz: I've been involved with App Camp for girls since the first year, when it was sort of a beta test in Portland. Kristina and I organized App Camp Seattle, for the past four years.
Brent: Four years, wow. Yeah. Time flies.
Liz: I'm suddenly fumbling with math, but that sounds right.
Brent: Yeah. Okay.
Liz: Yeah. We've grown quite a team of volunteers, who jump in and help middle schoolers get comfortable with all the different aspects of iOS development.
Brent: Aside from knowing that you're helping girls out, which is a great thing, what do you get from it?
Liz: I think that my experience volunteering with App Camp ... Part of it is purely selfish. I really enjoy the opportunity to be in a room, where we're talking about code. We're doing our nerdy Mac and iOS developer thing, and it's not me and a bunch of guys.
Liz: It's really healthy to have opportunities to connect with other women. It's also been a great opportunity for me to practice skills that maybe I don't feel quite ready to put on a resume, or even use every day at work. I have handled a lot of logistics for Camp in the past, so organizing the orientation event for our volunteers, making sure that they know all the logistics they need to know in order to lead Camp, and buying snacks at Costco, and ...
Brent: Oh sure.
Liz: hauling hula hoops around. All those funny little details that you don't even think of.
Brent: I wouldn't have thought of the hula hoops, but that sounds key. Right? People need a little break.
Liz: Definitely need a little break. We're exploring alternate ideas, maybe jump ropes next year?
Brent: Good one.
Liz: I also got the opportunity to work on the curriculum for Camp.
Liz: Preparing the code that our campers used, and then also taking the apps that our campers build during the week, and compiling those into an app, that we post on the App Store, so every camper who comes through our program can tell people that their app is on the App Store.
Brent: What a great thing that is. I'm just trying to imagine. You know, being so young. Doing some work for a week, and then like, "Look, in the world, my thing exists."
Liz: It's pretty magic. Yeah.
Brent: How did that feel, especially the first time? You had put together this app, working with Gray?
Brent: And pressed the button. It's going up to the App Store. It's like, your thing that you've done with some other people.
Liz: Yeah. There's ways in which I felt ... I helped ship a bunch of Omni's apps in one way or another, but I think that first App Camp app, going to the App Store, I felt a lot more ownership of. I think I actually got to push the button on that one, and say, "Okay. It's on the App Store. Go."
Brent: That's a memorable moment right there. That's cool.
Brent: You got to meet other women in tech, particularly local tech. When we were talking earlier, you mentioned Laura Savino ...
Brent: as one of the people who helped out. She also had done a talk that influenced you quite a bit.
Liz: Right. At this point, I don't remember where I met Laura first, but she and I got to know each other through App Camp, through Xcoders, through Xcoders, through CocoaConf. We've crossed paths a lot now.
Brent: Yeah. Sure.
Liz: She was practicing a talk for some conference. The point of her talk was to help, to take her experience as a teacher, and help other developers give technical talks that were more effective at teaching people things. I was really struck by that, and I've actually taken that, and written and given my own talk that was really inspired by her ideas about teaching people your idea, instead of just ... Some people's conference talks are just walls and walls of text on a slide and ...
Brent: I'm sure.
Liz: or they just ...
Brent: ... and the monotone talking.
Liz: Yes. I don't learn a lot from that. I'm not sure how many other people learn from that either, so I wanted to try something different. The combination of her ideas about really taking classroom-type teaching, and bringing it to conferences, and I was also at that point, paying attention to what Apple was doing with Playgrounds.
Brent: Hm. Ah.
Liz: Partly because they seemed like a great tool for App Camp, or other people, just first learning to code. I feel like they have a lot of potential for even experienced developers, who are just trying to learn a new framework, or figure out a new language, like Swift.
Brent: Oh sure. Yeah.
Liz: I put together a talk that was based around a playground, and basically walked people through a playground to teach a concept, so that they could actively engage with the math involved and the APIs involved, and learn by doing instead of just, listening or reading, or falling asleep.
Brent: Falling asleep, that's what I do.
Liz: Yeah, if someone could actually implement learning by falling asleep ...
Brent: Oh, I'd be all over that.
Liz: We'd be geniuses!
Brent: Yeah. The concept ... I should tell the reader that I was lucky enough to attend a beta of this talk, which I enjoyed tremendously. The concept you're trying to teach is affine transforms, which is frightening, and mathy and difficult. And yet, when I went through it, I actually had ... I'm kind of math phobic, but I had some idea of what's going on here. It was really, really cool.
Liz: Well, thank you.
Brent: I enjoyed that. The best part of it, funniest part of it, was that there actually is a view component, so you are positioning ducks on a screen. You are literally getting your ducks in a row, which is just brilliant.
Liz: I'm really glad you got that joke.
Brent: It's so great. Will you be giving that talk some more at future Swift by NorthWest, or ...
Liz: I don't have any conferences scheduled right now.
Brent: Oh. Okay.
Liz: I would be ...
Brent: You would be delighted.
Liz: Happy to give that talk, or ... I don't think that affine transforms are the only topic that could be taught that way.
Liz: I don't know what my next topic would be, but I'd like to have one.
Brent: Yeah. Okay. As soon as I run across some more frightening math, I'll just let you know.
Liz: It's not frightening math. It's fun math. Maybe that's why I'm on OmniGraffle.
Brent: Yeah, and that's why I'm on Outliner and now Focus. Yeah.
Liz: How do you feel about date math?
Brent: There's API's for it. date math is not that hard. Yeah. — Nah, I'm lying. I'm terrified of it. It's awful stuff. When you're not engineering, and you're not organizing and doing stuff with App Camp, you're a knitter.
Liz: I do knit. Everything that I do with code at work, and even a lot of what I do for App Camp is very digital, and intangible. It's great to get my hands on something and just create something that is physical and touchable, and ... Knitting is actually really great at being un-doable. The undo button in kitting works.
Brent: Oh. You can ...
Liz: You just-
Brent: How does that work?
Liz: You just take the needles out of your work, and you start pulling on the ...
Brent: Pull the thread?
Liz: Yeah, you just pull the yarn and it unravels, and now you've got your yarn again and you can reuse it to make something else.
Brent: Oh. That's cool. Huh. You're not the first person that I've talked to, who has actual, physical world interests. I think Curt was into woodworking.
Liz: Yeah, that's a little harder to undo, if you make mistakes.
Brent: Yeah. That's a good point, but still. It's that tactile thing of actually doing something real in the world, seems to be important.
Liz: I think App Camp fits that theme too.
Brent: Yeah. You know, actual real people in the world are important. How can people find you on the web?
Liz: My Twitter handle is @emarley, because Liz starts with an E.
Brent: Of course it does. Well, thank you very much Liz. I would also like to thank our intrepid producer, Mark Boszko. Say hello, Mark.
Mark: Hello, Mark.
Brent: And especially, I want to thank you for listening. Thank you. Music!