Gayle McDowell on Writing Code to Writing Books
Gayle Laakmann McDowell is the founder and CEO of CareerCup.com and the author of the widely acclaimed "Cracking" career book series (Cracking the Coding Interview, Cracking the PM Interview, and Cracking the Tech Career). She graduated from the University of Pennsylvania with a BSE/MSE in Computer Science in 2005 and worked as a software engineer at Google, Microsoft, and Apple. Later, she returned to get an MBA at Wharton in 2009.
Stories Worth Noting
The Ideal Career
Right out of Penn, you got this wonderful dream path that any engineer would want - Microsoft, Apple, and Google. How did you know you wanted to be a software engineer?
I knew since I started programming. My mother was an engineer who went to Penn Engineering as well, and she had forced me in high school to take one programming class before I graduated. I signed up and took it freshman year to get it out of the way, and ended up just really loving it. I loved building stuff and being able to create - it was just something that was very different. I feel like the rest of school was memorizing something, learning an equation, solving and applying it, and programming was something very different. It was actually constructing a design something new and that really appealed to me.
What prompted you to switch jobs?
I worked at Google for three years. It was a great experience, but I ultimately left because I didn't want to be a software developer full-time. I loved programming, but I liked being able to do more than one thing all day. So I left to join a start-up and then eventually started my own thing.
Is that what prompted you to get your MBA? To get more advice on how to be more entrepreneurial?
I was already writing my business plan and wasn't expecting it to be a full-time thing at that point in time. I think an MBA is a useful way to generate a more diverse network. It's very easy in the tech industry to build a great network of engineers and of other founders, and an MBA offers you more connections.
If I need an expert in retail who specifically worked with manufacturing in India, I can find somebody in my network who has that connection. An MBA gives you a big boost in terms of network and credibility. It gave me a lot of exposure to different businesses and a better ability now to pattern match things and look at a business idea and say “this is flawed for this reason.”
On Being a Student
As you said earlier, you wanted to do more than just one thing. This is something that a lot of undergrads think about: should they specialize and be amazing at one thing or should they be a jack of all trades? What is your perspective on that?
For me, it's more of a personal thing. If I had to do one thing all day, programming would probably be the thing I'd most like to do. But, if I had to do one thing all the time, my enthusiasm would drop. Being an engineer all day is not something that I'd ultimately be successful at. I'm best when I'm doing a lot of different things and multitasking.
For other people, I think you can build a great career either way. There's a lot of room for specialists who are really great at machine learning or something like that. There's also a lot of room, specifically at smaller companies, for people who are good at juggling multiple things and you can really build a fantastic career too. The one thing I would encourage people against is needlessly specializing. There are some people who think "I need a specialty" and then they try to pick one, and that's great if they ultimately end up loving it but it's a very risky strategy because they might not and now they're stuck with it.
Let the specialty come to you. If you're passionate about that something, go pursue that passion, but don't pick a specialty because you think you should pick one. That will ultimately hurt you.
Students here get stressed about only having 4 years to figure that out. What’s your advice for those who still don’t know after graduation?
I think, for instance, if you're an engineer, you don't have to stay in any one place for a long period of time. I went to Google as a software engineer knowing that I wouldn't stay there forever, and that's totally fine. One of the values of going down the jack-of-all-trades route is that you can always specialize down the road if you wanted to. It's important for people to develop a good foundation in their career. One of the things Google did is it demonstrated proof that I understand how to code, whereas if I went to an unknown company, that would be much less true.
Knowing that you didn't want to be a software engineer your entire life, was being a writer something that had always been in the back of your mind?
No, not at all. I write because that's a way of educating people, disseminating information, and making money but writing is not particularly a calling for me.
Back to "Stories Worth Noting"
Making an Author
Your "Cracking" career series is so widely read now among students recruiting. What spurred the idea to write them?
I already ran CareerCup, which was a forum for interview questions, so I wrote a small interview guide to help people, and people really liked it. I realized I really like teaching, and one thing that was great at Penn was that I got to experience teaching [as a CIS TA]. So writing the book, to me, is a lot more about teaching than it is about writing.
What were the motivations behind CareerCup?
I started CareerCup after I graduated from Penn. It started with a word document of interview questions and I posted that online and it just grew from there. When I was a TA at Penn, I had a lot of students who were younger than me and looked to me for interview and career advice. So I created the doc to take the knowledge I had from interviewing and give it to them.
Back to "Stories Worth Noting"
Sharing Knowledge
It's awesome to hear that you started this as early as at Penn. How can current students also build up that open knowledge-sharing culture?
It starts with each person doing what they can to get that. I think most people are pretty happy to help out, so the best way is to offer ways for people to help and for younger people to reach out and ask for help. A lot of people don't know how to help. The Computer Science program has a pretty active Facebook group [CIS@Penn] for Penn people looking for advice, talking about the curriculum, etc. It's a great group for allowing people to get help and give back as well. Just understand that you don't make fun of people for asking dumb questions. Everybody has dumb questions and that's not a question of them being dumb.
I've realized that sometimes student mentors have this feeling that being only a year or two older than their mentee, they may not have the right advice to give. How do you overcome that?
What helped me is realizing that everybody feels like they don't know enough. Everybody has this imposter syndrome, that they don't feel like they know enough or that they got lucky.
Just realizing that this is pretty much universal. Given that, logically you’re feeling like you’re not good enough to give people advice has nothing to do with you actually not-being-good-enough. You're a junior mentoring a freshman. You learned a lot in those two years, and it's hard sometimes to quantify it. So it's easy for people to think that they haven't learned that much. But that advice, even though it's just one perspective, is still really useful for people.
Back to "Stories Worth Noting"
The Penn Impact
Do you have a favorite Penn moment or memory that has been very influential to your career path today?
One of the most influential things was being a TA for what's now called CIS260 with Max Mintz. That was super useful. It not only gave me a foundation in a lot of computer science concepts that I needed, but it also gave me a ton of experience in public speaking and explaining new stuff to people.
Frankly, I think public speaking should be required in colleges. Almost nobody gets enough experience with it. Teaching is one way - if you can teach a section, that's really good. I don’t know that a typical TA shift in which you're just answering questions one-on-one is as valuable. That doesn’t give you a lot of public speaking experience. But if you get to teach a section, it's an incredibly useful experience. Otherwise, speech and debate teams can be really useful, as well as taking a class that has a big public speaking component.
Gayle giving Penn Engineering Masters 2016 Commencement Address.
The thing with public speaking is that it's something that probably scares most people, but it's going to be so important later in your career. But by then, it's going to be hard for you to learn it when it's needed. When you're 40 and all of a sudden need to go speak at a bunch of conferences, you can't take time off to learn how to do that. And so learning it while you're in college is really important. Editor's note: Penn offers several public speaking courses, workshops, and resources for students, found here.
There are quite a few teaching opportunities for students now. For example, there are CIS half credits that are taught exclusively by students.
I actually started those classes!
Oh sweet! How did you start them?
I started a class that was just a software development class. This was before the half-credit classes existed. I started somewhat secretly and circumvented certain things around the administration. I did that for two years and then turned it over to another student to teach the following year after I graduated. Once we had several years of proof that students can teach classes and bad things will not happen, the administration actually put this as an official part of the program. Editor's Note: CIS half-credits offered today include Python, Javascript, Ruby on Rails, and mobile development. Check out all of them here.
Education and the Future
Do you think the education of the future is students taking more of the initiative to teach other students, rather than relying on standardized education?
Yeah, it's definitely important.
I realized that there will always be a disconnect between what professors teach and what you need to learn. Professors are researchers. They are not professional developers. And there is value in learning a bit about each, so people have to learn from some resources other than their professors.
I think the half-credit classes are awesome, but the other thing is students taking the initiative to learn themselves, and not expecting the curriculum to deliver the right education for them because it won't. Hackathons, like PennApps, is one great tool for getting kids to learn programing. One of the big weaknesses in the curriculum, which has largely been addressed now, has been a lack of practical experience, and that was what I wanted my independent class to do: give people practical programming experience. Editor's note: PennApps is the original and largest college hackathon, held every semester at Penn. It features a competition, beginner workshops, and a career fair.
Computer science is now one of the most popular majors at Penn. But one issue is the steep learning curve seems to turn away non-major students who just want to try it out. What can we do to help make them more accessible?
First of all, one of the things that makes these classes inaccessible is that you have people who have a lot more knowledge of programming taking these classes. And then you also have a culture where people don't want to admit to struggling, and everybody acts like it's easy for them. We should focus more on recognition and making it more normal to admit that you're struggling, and for juniors and seniors who are doing okay to talk about how they struggled.
Second, there should be more opportunities in the early classes for catch-up. One of the things that I saw a lot of when I was a student was that in the freshmen classes, new people who got stuck in the first homework assignment or two but didn't want to fail cheated and copied somebody else's homework. And when the next assignment comes in, it's cumulative and they don't have the background do it and so they cheat again. By the time they realize how much education is lost, they don't have the ability to catch up anymore. So offering more ways for people to catch up with gaps in their own education is helpful.
Lastly, to take this beyond the classroom setting: What’s the best way for non-technical people to succeed in today’s tech landscape?
It's nice for people who are in tech to have programmed before, but that doesn't mean you have to be a good programmer. ‘Having programmed before’ could be you doing the 10-hour workshop on Codecademy. You don't have to like programming, you don't have to be good at it, but learning a bit can be useful so you at least get over your fear of ‘I don't really know what programming is.’
Beyond that, do things to show initiative. The tech industry as a whole really values that. If building an app is too intimidating for you, which it is for a lot of people, there are other ways of showing initiative without necessarily being technical. What I value are people who have started a club, created a blog, or ran a group that has raised money for some charity. That shows initiative.
Back to "Stories Worth Noting"
From the Editor:
Gayle's Cracking the PM Interview has been instrumental in helping me and countless friends prep for the jobs and internships we have today. Coming from a non-technical background, I appreciated the clarity of concepts the book communicated. I noticed Gayle was active in several tech communities on Facebook, often giving career advice to stressed students, so I reached out about doing this interview. What began as a chat about her career path morphed into deeper discussions about building knowledge-sharing cultures at schools, overcoming Imposter Syndrome, and democratizing CIS education. I hope readers can emulate Gayle's passion for spreading knowledge.
Disclaimers: The views presented here are solely those of the interviewee. They do not represent Google, Microsoft, Apple or any of the other individuals or institutions named above.