September 19, 2013: People of ACM: Kate Matsudaira
Thursday, September 19, 2013
Kate Matsudaira is founder of her own company, popforms. Prior to that, she worked in engineering leadership roles at companies such as Decide, SEOmoz, and Amazon. She has also worked at large companies including Microsoft and Sun Microsystems. Her extensive management experience has involved building and managing high performance teams that create technology to solve important problems. Her technical experience spans a wealth of areas, but she has consistently been involved with the construction of high performance distributed systems and systems addressing data collection and analysis. Kate is also well known for her blog on which she deals with issues in leadership and management. She has a B.S. in Computer Science from Harvey Mudd College, and has completed graduate work at the University of Washington in both Business and Computer Science.
What factors influenced your career path from working at top tech firms to joining startups to founding your own firm?
I started my career at Amazon and Microsoft as a software engineer and shortly became a manager. I learned a lot working about software and leadership at both companies. However, despite my success I knew I wanted to have more exposure to the business side of things, and be in the meetings where key decisions were being made. It would take years to do at a big company, and with the impatience of youth I decided the best way would be to go off on my own. I had a passion for entrepreneurship and a passion for products, and I just knew I wanted to start my own company.
Since I didn't yet feel equipped to launch something on my own, I consulted with several startups and ended up going full time as the VP of Engineering with one of my clients, Delve Networks. After working there, I realized I had a lot to learn about business. I knew products and engineering, but where we struggled was in sales and marketing, which is what led me to my role at SEOmoz. I figured, what could be a better way to learn about marketing than building tools for marketers?
My role at Moz combined my background in search and big data, and allowed me to build and grow a team and a product in a high-growth startup. My last startup role was with Decide, where we used applied data mining and machine learning to help consumers make better purchase decisions.
In January 2013, I left Decide to found popforms, based on one of the passions I had developed over all my years of experience at big companies and small startups: leadership development. I wanted to make it ridiculously easy for managers and employees to stay in touch on progress and performance, and to help everyone to feel more empowered in their career—an executive coach in a box that can work with individuals and teams.
We are launching a software tool for managers and employees this fall, and just launched leadership sparks—bite-sized email courses to help you be better, smarter, and happier—this summer. Our goal is for popforms to be a place where anyone in any role can come for help taking the lead in their career.
Why do you describe yourself as a hacker — in your code and projects, at work, and in life?
To me, being a hacker means being someone who gets things done. With popforms, I have been the only engineer and I've been learning so much as I go along. Normally I have worked in the backend of large systems, focused on data and scaling, but this year I have really dived into client-side development. And like most startups there's not always time to find the most elegant solution, but a lot of the time it turns out that often you don't really need the most elegant solution anyways. You just need one that works.
At work and in life, I think being a hacker means being a really good at prioritizing. What has to be done by me, and what can I spread out to an assistant or a tool? Where are my skills most needed? Where can I make the biggest impact with the least amount of work? I think really carefully about my time every week, and do the most I can with what I have.
What are some strategies you developed for caching large data sets using software and data design rather than lots of expensive hardware?
This is probably one of my specialties—only because having spent the last 7+ years working with very limited budgets and resources, you have to figure out how to do more with less. At a high level you want to make sure that you optimize when it makes sense. You don't want to invest in optimization or scaling unless the business problem warrants that type of investment.
From a process perspective, you can build software differently, doing more prototyping to actually get customers using your product, then see how your data is going to grow and be queried, and lastly rebuild or optimize accordingly. I wrote about this process on my blog in Lean Software Development.
Technically, there are tons of options, but it really depends on your problem. The biggest thing is to really understand your data. How is it being queried? What layers can you cache and store data to make things faster? Essentially, with big data you want to balance the cost of storage and computation in your system design. More compression means faster transmission over the wire and smaller storage costs, but it can cost extra time to compute to decompress it, and that can really add up.
The other question is, do you really need all that data? With some data sets you can just store the aggregates instead of all the data points (or make the aggregates faster to retrieve perhaps). Or you can use techniques like run length encoding to represent the time series data. When it comes to compression, there are so many different algorithms and they work differently depending on the nature of the data set, so picking the right one or even writing your own may make a lot of sense. You can make your big data small.
All these depend entirely on your problem set and data, but they are some of the things I have leveraged in the past. I gave a talk about some of this last year called Big Data Without a Big Database.
As a 2012 honoree in the Puget Sound area for outstanding achievements in career and community by people under age 40, what advice would you give to young people considering careers in computing?
My best advice would be: work really hard all the time. And be nice to people. You have no idea when the people you meet will come back around, and which people may have the potential to be powerful allies if you are really conscientious about relationship-building.
When you are in computing, it's really easy to isolate yourself and just focus on your work. It is comfortable. I generally prefer computers to people because they are predictable. But that isn't necessarily a good thing if you want to get promoted or advance in your career. At the end of the day you work with people (they are the ones that give you opportunities), not computers.
And of course, having a really strong technical track record is important. You want to be known as someone who works hard and makes things happen. I spend most of my free time reading and writing about my industry, and trying to find ways to do my job even better. I work basically every day and I care a lot about what I do. My work is my passion, but it didn't start that way. I had to really get in touch with myself and figure out what role would allow me to do that.
Really, you want to be as great as you can. But you can't do everything on your own, so it helps to try to become someone other people want to help at the same time. You can get that reputation by helping other people yourself. Put a little goodness out in the world. Try to make people feel like they're walking on sunshine. It will almost always come back to you.