Daniel Berlin BS '00
Interview from 2007 Multicast Newsletter
Daniel Berlin ’00 received his law degree from George Washington School of Law in 2004. After two years of working on compilers for IBM Research in Yorktown Heights, NY, he now works at Google in Washington, DC. In 2006, he married his college sweetheart, Melissa Kucinski at the Interfaith Chapel. Though he has worked as a Google attorney, he now works as Director of Software Engineering at Google Mountain View, where he oversees all programming language staff (toolchains, core libraries, optimization and efficiency, etc.) for all languages Google supports both internally and externally.
Before you entered UR as a freshman, you had already published the book "CGI Programming Unleashed" (1996). How did this opportunity present itself to you in high school?
DB: In the relatively early days of the world wide web (1994), I was lucky enough to have a nice internet connection, and be a participant in the mailing lists related to writing web servers (unlike now, there were probably two mailing lists total on the entire internet for this subject). I made some friends through answering questions and writing some code (It was to do a Visual Basic CGI interface for an early windows web server). As a result, I was asked to do some tech editing on a completely unrelated book through one of these friends who had some work published. To their credit, it turned out Macmillan Computer Publishing actually did not care how old I was, because I did a good job tech editing for them in my spare time. Macmillan was happy enough with the job, and when they discovered that the WWW might actually turn out to be a good area to publish books about, they asked me to author "CGI Programming Unleashed".
Was it difficult to get published?
DB: Surprisingly not. But this was a different time, when it was easy to get noticed and make good contacts. These days I seriously doubt I could follow the same path I did then. There were also many orders of magnitude fewer people who were knowledgeable about this stuff, and I was the only one with free time. There is also the money issue: While $25 a page was a lot of money to me in high school, to someone getting paid $150 an hour for software development, it wasn't.
Interestingly, the book sold really well. It was named Amazon's computer book of the month way back when Amazon was pretty small, and there was actually a display or two in a few bookstores. The book ended up getting translated into three languages. Humorously of course, I got negative reviews from people reading in 2000 or 2002 claiming "This is all basic stuff everyone should know anyway", as if times had not changed.
Are their other books in the works?
DB: Actually, I just finished doing a favor and revising "Practical Subversion" (which is a about a version control system named Subversion). Past that, sadly I'm too busy to write books. I've been asked a few times, but I just don't have the urge to write. It is significantly harder than it looks :)
Would you consider yourself a non-traditional learner? What kind of challenges have you had to overcome to get where you are today?
DB: I am definitely a non-traditional learner, but this is mostly an outgrowth of the need to cope with serious ADHD (which has become "fashionable", hurting a lot of people who are actually learning disabled). People mistake the ADD part of ADHD for not being able to pay attention. The reality is you pay attention to *everything*, when you should be focusing on single things. This is very different from not paying attention at all. My coping mechanism has thus been to stop trying to concentrate on single tasks for long periods of time (which I am very bad at), and instead learn multiple things at once, rather than "try to learn one thing while also pay attention to the bird outside the window". The hyperactivity portion of ADHD has enabled me to also do trial and error learning when it comes to certain things. For example, when figuring out algorithms, it is often much quicker for me to code the algorithm I am working out and try it than it is to try to reason out every corner case (though at some point, you do have to do this, but it works fast for weeding out what turned out to be bad ideas). I can also do this while thinking about something else entirely. Medications only help you cope with these issues, they don't really fix the underlying problem.
All of the above make it possible for me to learn things to a certain threshold. Past some point you have to focus entirely on one subject, and when that happens, my learning rate slows down very much.
As an undergrad, what preparations did you make to go to law school? As a CSC student in law school, how did your undergraduate program compare or differ from others in your law classes? What type of law did you study?
DB: I actually did not prepare very much for law school. I took a small number of courses in philosophy and logic (which, thanks to the great teachers I had at the U of R, served me enormously). It turns out CS and a law degree actually require a good deal of the same skills. My CS program at U of R taught me an enormous amount about how to reason about things in general, as well as how to fit together algorithms, data structures, and come to sane results. This turns out to be exactly the skills you need to succeed in law school, and as a lawyer (though it does vary depending on the type of law). Most people in law school floundered through trying to apply laws and statutes to actual real-world situations that aren't exactly the same. Having learned in my CS program how to apply unrelated or slightly different algorithms to new tasks, the task of applying normally rigid laws and cases to unrelated or slightly different situations was a walk in the park. I am able to see the connections a lot of people seem to have trouble with. Sadly, these skills only really apply to most of the required subjects in law school.
I specialized in Intellectual property (patent, copyright, and trademark law), which at one point in the past, had a very sane and logical set of rules. This is no longer true. Undergrad CS taught me there are often no best answers, just a lot of good answers, and it is more important to know how to get to the good answers. In any area of law like IP, where statutes are rather vague and were written for a very different time and place than our world is today, being able to come up with good answers is essential.
What advice would you give to undergrads interested in pursuing a law degree?
DB: A lot of people who say they want to be a lawyer, really seem to mean they want to argue in front of a judge and jury. The majority of being a lawyer is actually doing mountains of paperwork. Most people do not comprehend the amount of paperwork you would do on a case before you ever stepped foot in a courtroom for that case. If you work for a major firm, you will make large sums of money, but you will be doing this paperwork for 2000+ billable hours a year (for 5-7 years), where whether you can bill something to a client or not is tracked in 5 minute increments. If you work for a public service organization, you will be doing things on more reasonable schedule, and most people find the work more fulfilling, but you will likely not make enough money to pay back your law school loans *and* really support a family. These are of course, generalizations based on what the vast majority of law students end up doing. This is simply the accepted "way of the world" in the field of law, and has been this way for a large number of years. A large number of people become disillusioned with being a lawyer after a few years and do something else. Another large set of people simply do it anyway because eventually you become senior enough that other people take care of the non-interesting grunt work :)
The kind of jobs CS people seem to want, where they are out there doing something real, fighting patents, or being on the leading edge, are rare. Most people who do work on cool things in a non-public interest organization, take on very mundane regular cases because those are what pay the bills. Those that don't work on mundane things at all usually have many years of experience, and slogged through hell to get where they are.
I'm really not saying all this to discourage people, but to make them aware of what they are getting themselves into. If you are willing to put in the time and effort, and suffer for a few years, you can certainly do cool things. But it really does take a lot of time and effort, and you should be aware of what kind of sacrifice you are in for.
How did you end up at Google? What does a computer scientist/lawyer do at Google?
DB: When I left for Google, I was working at IBM research doing engineering work on GCC (A free software compiler), as well as being involved in legal related work around open source. I ended up at Google for two main reasons. IBM was pretty hesitant to let anyone outside their legal department do anything interesting on the legal side. I was okay with this, and considering officially working part time in the legal department, but this was somewhat bothersome. However, the main reason I left IBM is that, even though the people at IBM research were incredibly smart and innovative, I did not feel that the company overall was still willing to take the large risks you need to take to achieve real innovation. It came down to me not wanting to work for a company that only wants to be as good as every other company. I wanted to work for someone willing to take the risk associated with doing better than everyone else.
At Google, I work for the Open Source Programs Office. I split my time between engineering and lawyering for the group. On the engineering side, I work on Code Hosting for Google Code (http://code.google.com/hosting), as well as contributing to open source projects, particularly, GCC and Subversion. On the legal side, I help us ensure internal license compliance (i.e., tell engineers what they need to do if they want to use a certain piece of code), answer legal questions that come up about open source (both by engineers and our legal department), and help figure out what our legal requirements and policies should be around open source (which is a multi-person effort). I can multitask and do these several roles at once, so the job I have now is ideal for me. Google is a great company to work for. It is one of the few companies I've worked for with a real internal conscience, and where the "voice of engineers" actually matters at the highest levels.
You're back in DC where you completed your law degree. What do you like about DC?
DB: I work in DC, but live in a suburb in Maryland named Rockville. DC is a good place to be if you want to have any impact on current policies and laws, and I am quite passionate about our policies and laws around Intellectual Property. I also get to work next to the rest of Google's policy team on these issues by virtue of being here.
As for where I live, both my wife and I love Maryland. It has a nice climate, and I can take the Metro to get to my job from here without the commute being painful. There are actually a couple other suburbs of large cities (neither of us want to live directly in the city) we've considered living in before, but we've been happy here so far, so we see no reason to go elsewhere.
What do you do in your non-work time? Any favorite pastimes, interesting recently-read books, or places to travel to?
DB: My wife and I bought our first house in January, and I've been spending a lot of spare time remodeling and fixing things up. It is actually very enjoyable sometimes to be able to get away from the computer and just build new cabinets, put in new flooring, or fix plumbing. My father has done woodworking for a number of years, and it has rubbed off on me. It is also hard to find contractors who charge a reasonable price around here (side effect of living in an upper middle class suburb), so I usually do most of the home improvement myself.
Besides that, my wife's free-time work for the ABA's international law section has meant we have been traveling a bit, but usually not for long periods of time.
Is there anything particular in your undergraduate experience in CSC that stands out as significant to your current success? Any favorite course or project that you can remember?
DB: It's hard to say. I enjoyed it all so much, and I use almost everything I learned on a daily basis. I do remember trying to do seemingly impossible homework problems in "Design and Analysis of Efficient Algorithms", and having weeks to rederive theorems it took people much smarter than me years to do, in "Theory of Computation" seminar. While they were quite harrowing at the time, I just laugh about them now.
Are you in touch with other URCS alums?
DB: Mildly. At Google, we actually started a mailing list internal to Google of all of us who work there that were at U of R, but there are only a few that were actually students when I went there. I try to keep up with people, but of course, life gets in the way.