Railsmagazine60x60 Interview with Sarah Allen

Issue: Vol 2, Issue 1 - All Stuff, No Fluff

published in June 2010

Sarah allen1

Sarah Allen is CTO of Mightyverse, a mobile startup focused on helping people communicate across languages and cultures. The technology is still being incubated, but parts of it are emerging at mightyverse.com. Currently, Mightyverse is primarily self-funded, so Sarah is paying the bills with independent consulting and training at Blazing Cloud. In her spare time, she works to diversify the SF Ruby on Rails community with a focus on outreach to women. In keeping with her belief that programming is a life skill, she also regularly volunteers teaching programming to kids.

Can you please tell us about your background briefly for the benefit of our readers? What are your current projects?

I started out doing desktop applications mostly in video and multimedia. I co-founded the company which created Adobe After Effects and got into Internet software by joining Macromedia to develop Shockwave in 1995. I learned about open source as a member of the OpenLaszlo core team, with the chance to see it go from proprietary tech to open source in 2004.  In the past year I've been developing Rails and mobile applications. I'm co-authoring a book on cross-platform mobile development (Apress) and in my spare time I working to diversify the SF Ruby community.

How and when did you get involved into programming or development in general, and Ruby on Rails in particular?

I started programming when I was 12 in BASIC on an Apple II. I took Computer Science as a back up, while I also pursued a degree in Visual Arts in college. I didn't really get excited about software development as a career until we started CoSA (After Effects). It wasn't till then that I realized that I, personally, had something unique to offer in this field. Before that I had always believed that programming was puzzle solving in a way that everyone would come up with the same answer.  It took me a long time to figure out that it was more like art and language than it was like math. I started developing in Ruby on Rails in late 2008 when I took on an OpenLaszlo project that required a server API to be added to a Rails app. I found the Ruby community to be particularly enthusiastic and helpful when I was first learning on my own, which led me to want to become more involved later.

What are your thoughts on choosing a technical teaching career?

Personally I don't want to be a full-time teacher. I enjoy developing software too much. I also believe that there is great strength in teaching that comes from practical experience.  I am a better teacher because I understand how the technology is applied in the real world. I also find that I am a better developer because of my teaching. By having the opportunity to do both, I learn the language and techniques in a deeper way.

What are your views about "test-first teaching"? How do you go about getting developers excited about testing first, especially in a classroom setting?

I think test-first-teaching is a ground-breaking innovation. The fact that it was independently developed by a number of different teachers points to its effectiveness. It provides a fundamental shift in the way people learn software development. Initially, it helps the student focus on learning very basic syntax, able to independently confirm when they have successfully completed an exercise. That immediate feedback is valuable for cementing knowledge. Test-first teaching also teaches an understanding of all of the arcane error messages in a low stress situation. The first thing you see, before you have written a line of code, is an error. Then you discover what you need to do to fix that error.

In traditional teaching, students may not have the opportunity to see many of the errors that they will routinely see in development. Also in traditional learning, students only see errors when they make a mistake, which is very stressful to a new learner. Test-first teaching helps people intuitively understand that mistakes are a natural part of the software development process. Lastly, this approach allows students to become expert with a test framework before they learn test-driven development. TDD is very hard for students to learn at first and separating the learning of the mechanics of the test-framework from the design methodology of TDD is incredibly helpful. I have also heard feedback from students that the test-first approach is fun.

In your experience, did you find that women come to web development from a particular background more than others (e.g. web design)? What path would you recommend to women interested in a coding career?

I find it is rare that women can easily move from design to development. Bias against designers from engineers is very hard to overcome. There exists a strong mythology in our culture that technical excellence is inversely related to effective communication skills and an understanding of human interaction. Most women developers, like most male developers, studied computer science or software engineering in college. I do find that there seem to be a higher number of men that succeed in the field without a formal education.

I would encourage women who have an interest to pursue it on their own. The best way to learn is to just dive in. A lot of women find that women-only groups provide a fun and supportive atmosphere. I would encourage women to join devchix (http://www.devchix.com/) and systers (http://anitaborg.org/initiatives/systers/) and to start an in-person or virtual study group, but I would also encourage them to participate in the mixed-gender groups: the people on ruby forum are awesome and stack overflow is pretty informative. Consider spending some time answer questions too.

Also, I believe the single most effective thing you can do to speed up learning is to start a blog and write up what you learn. This small form of teaching will cement what you have learned. Plus it has the added benefit of helping other newbies and sometimes experts will drop by and teach you something.

What has been your experience being a woman, when it came to acceptance in the predominantly-male development community?

It was really tough at first. Despite working with some really great engineers and nice people who happened to be men, I often felt like an alien creature. I was frustrated when I felt like people assumed I had great people skills because I was a women and would ignore a man in the group who actually had better people skills because they thought I was a "better fit" for some people-oriented task. Also, it is very difficult when you are inexperienced to distinguish negative bias from valid criticism. However, with experience and confidence, it has gotten easier.

The most significant positive experience has been working with men who value my technical expertise and insight, who clearly see my gender as irrelevant to the work of a software developer, and who have extended their support and trust. 

What can your experiences excelling in this field teach other women and men?

Software development is not some rote exercise that everyone executes identically. Software development is a creative act. The individual who writes the code will influence the result. Our choices change the world.  If you want to pursue software development, if you think you are interested, just do it. It doesn't matter your gender or the color of your hair or skin. You don't need to like pizza or Star Trek. Our differences enrich what we create.

For those who are already established in their careers, note that giving back creates as many opportunities for you as it does for the people you help. Volunteering is an excellent networking opportunity. Giving scholarships to classes that you teach is effective marketing, besides it is the right thing to do and has marginal cost.

Who inspired you when growing up? Are there any women that you look up to in particular or someone who made a difference in your career and life?

My mother inspired me to teach and to relentlessly pursue whatever I wanted to accomplish. For a while, I struggled with the fact that I did not personally know any technical women that were more advanced in their careers than I was. I worried that about whether I was getting the same level of recognition and advancement as my male peers.

Then I read "Nobel Prize Women in Science: Their Lives, Struggles, and Momentous Discoveries" and I chose Emmy Noether (http://en.wikipedia.org/wiki/Emmy_Noether) as my role model. It didn't matter that she died before I was born or that her field was mathematics rather than software development. I decided that I wanted to be like her.  She tutored Einstein in Math and helped him work out some of the equations for his ideas about physics. She was one of the first women to teach at a German university and was initially unpaid for that effort. She held study groups for fellow mathematicians, pursuing her passion for invention of abstract mathematical concepts with a seeming disregard that her sometimes less talented male peers had more opportunity for professional advancement. They respected her and sought her advice and collaboration on projects. It mattered that she had the opportunity to do what she loved and she was eventually recognized for it.

Often the world is not the way we want it to be, but we can't let that stop us from participating and pursuing our passion in whatever way we can.

It can be demanding and stressful to balance work and family, in particular as a woman. How do you do it? Do you have any tips to share?

It helps to have a life partner who is a really great father and very supportive of me pursuing what I want to do both professional and personally. I don't do everything. I fail regularly. I try to be honest with my family and my co-workers when I screw up. It is important to let family come first sometimes. I try to remember to have fun.

The key thing that has helped me create balance is that, when I have a choice, I work with people that I enjoy working with. I work with people who I trust and who trust me. If you have those basics in place, all the rest is possible.