by Matthew Heusser

The full Java life: Interview with William Weiss at Zappos.com

feature
Jul 18, 201217 mins

On passion, determination, and playing at work

There’s more to being a code slinger than late nights, coffee, and grey cubicles. In this first installment of The Full Java Life, Matthew Heusser travels to Las Vegas, Nevada, to talk to William Weiss, a veteren Java programmer for Zappos.com. Weiss talks about his career trajectory, life at Zappos, why he’s not interested in management, and what Java tools he finds currently most exciting, as well as indispensable.

A few months ago I ran into a video produced by our friends at Oracle called “The Java Life Rap Music Video” (see Resources). The video is funny. It includes standard stereotypes like the geek with the high-water pants and horn-rimmed glasses. One scene is a late-night pizza session where, In the background, we see an old data center with wires everywhere, dimly-lit grey cubicles, Cheetos and Red Bull in the on-site vending machine.

Why is “Java Life” funny? Maybe because it’s a little too true. Here’s the question, though: is the best thing about living the Java life really getting a Herman Miller Aeron Chair? Is there something wrong with a programmer who is still programming after 10 years or more, rather than switching over to management?

I don’t think so, and I hope you don’t either.

The Full Java Life is a new JavaWorld series that asks how Java developers really work. What keeps mid-to-senior technical professionals engaged with programming and how do they create lives that escape the cliches of grey cubicles, coffee stains, and geek pride? What inspires young guns to do their best work, and how do they temper and hone themselves into the seasoned programmers their profession needs them to become? How do career programmers break out of the cubicle, or make peace with it? These are some of the questions I’ll ask with this series, interviewing one developer at a time to find out what we can learn from each other about living a full Java life.

For this first episode I travelled to Henderson, Nevada, to interview William Weiss, a programmer at Zappos.com.

About Zappos

You know Zappos, it’s that little company that grew from startup in 1999 to $1.01 billion in sales in 2008, when it sold to Amazon for 10 million shares of common stock. Today, the company is a wholly owned division of Amazon.com with stock worth around $1.2 billion.

The ethic at Zappos is service, the motto is to deliver happiness. That’s also the title of the book by Tony Hsieh, the company’s CEO and co-founder. Zappos takes its service ethic seriously, too; the car it sent to pick me up was painted with big white letters promising to “Bring the wow.”

The offices at Zappos are actually fun. The environment is freewheeling, and outside of the call center (where someone has to be on the phones at all times) no one watches the clock.

When I asked whom I should interview for this series, Director of Software Development Rick Duggan suggested that I talk to William (Bill) Weiss. According to Duggan, Bill is serious programmer who takes his craft seriously, and has made a personal commitment to Java. Several of Bill’s projects have become internal tools that people actually use — and like. Other programmers go to Bill when they get stuck, and many look up to him.

I met up with Bill in the “Blue Man Group” room, which is decorated like the famous improvisational show. We only had a few minutes to talk, but we made the most of it.

Matt Heusser: You’ve got an interesting resume. Five years as a bartender at OutBack Steakhouse, then you became a programmer in 2002. How did that happen? What can you tell me about your education?

William Weiss: It all started with a little Commodore 64 that my parents had the foresight to purchase in the early ’80s. At the time, our family lived in the little Nevada mining town of Round Mountain. Not a whole lot to do there. The closest town with a McDonald’s was 57 miles away, and that didn’t even happen until 1991! Given the lack of options, my brother and I chose to manually type in games from computer magazines … and pray the power didn’t go out since we didn’t have a floppy drive at the time. This led to actually wanting to learn what we were doing, and two BASIC programmers where born.

As far as education, I’m either highly educated, or completely uneducated — depending on who you ask. I’ve been fascinated by computers from the first day I sat down in front of one. Since then I’ve spent countless hours reading, programming, and designing on both my own time and my employer’s. From an academic perspective, I took computers in high school, received my diploma and have six totally non-computer related credits from UNLV. I’ve just never enjoyed the academic setting. It has always bored me to tears. I just wanted the teachers to get out of the way so I could actually do something. On the other hand, my brother went on to get a Masters in Computer Science. Go figure.

Given this background, I never really thought that I would become a “professional” programmer. It was a hobby, something I did because I had a passion for it and enjoyed creating cool stuff, not because I thought anyone would pay me for it. However, I had done a little freelance web work in ASP, and was thinking about applying for web designer position open at the company my brother worked for. Against my better judgement, he convinced me that I should apply for a programming position. Amazingly, I made it through my interview, completing the programming sections in Applesoft BASIC!

In 2000, when I told my regulars at the bar that I was leaving to do programming, they gave me funny looks. They thought you needed a degree to do that. Guess not.

Matt Heusser: I’m curious about the choices you’ve made. Why Zappos? Why Las Vegas? Why Java?

William Weiss: I’ll try and tackle these in chronological order. First, Vegas. I moved to here in 1995, which practically makes me a native. Las Vegas being only one of two decent-sized cities in the state (Reno being the other), it was kind of a natural fit for a guy looking to escape the small town life and find more opportunities. It also helped that my brother was already attending UNLV and I already had established friendships here.

Next came Java. After I landed my first programming job, it was time to learn something a bit more marketable than BASIC. In 2000, at least where I worked, Java was still the new kid on the block. Coming from BASIC and ASP, I loved the concepts I found in OOD. The idea that I could encapsulate my logic and use it over and over again was great. Interfaces? Polymorphism? Awesome. When I began to discover the persistent nature of servlets, I was hooked and never looked back. Of course, that was back in the time when rolling your own servlets was still common.

In 2007, when the funding for the government contract our company was working on started to look iffy, I began putting out feelers. In the end I was offered a job by two companies in town. The first company was a Java shop, quiet cubicles … you know, familiar. The other was Zappos, pretty much the polar opposite of all my previous programming experience. Zappos was loud. Really loud. Everyone worked in a big bullpen … writing Perl. Despite this, my gut told me that in the end, I would grow more, have more opportunities and way more fun at Zappos. The gut got it right.

The idea that I could encapsulate my logic and use it over and over again was great. Interfaces? Polymorphism? Awesome. When I began to discover the persistent nature of servlets, I was hooked and never looked back. Of course, that was back in the time when rolling your own servlets was still common.

I should also mention that during the interview, when asked where I saw myself in five years, I said: programming. I made no secret that I had no interest in management. I’ll take designing and writing actual code over meetings every time. Five years later, I’m still at the keyboard and my calendar is very light — life is good.

Matt Heusser: You’ve been at Zappos since 2007. Over the past few years, what are you most proud of that you built? What are you working on right now?

William Weiss: I’ve always agreed with the “eat your own dog food” paradigm. Actions speak louder than words. If you’re proud of what you’re writing, whenever possible, you should be using it yourself. This thinking led to probably my proudest moment: my dog food eating itself.

I had written a session-management tool to meet our peculiar set of requirements. Along with this I had written a dashboard for management and monitoring. Inevitably, before this dashboard could really be put to use, it would need to be secured. How would I manage the dashboard’s sessions? Using the exact same tool that the dashboard was monitoring (and no, this did not cause an infinite loop). This wasn’t the most complex or cool code I’d ever written, but it clicked right into place — that is a great feeling.

As of late, I’ve been working on a lot of things at the same time. One library that I always come back to is our core “commons” library. As of late, I’ve been working on a lot of things at the same time. One library that I always come back to is our core “commons” library. Not the sexiest code, but this is a project where I can quickly see it help my fellow developers. Frankly, having someone tell me that something I’ve written made their job easier, or that they love this new feature is the best part of being a programmer.

Matt Heusser: You self-identified as a Java programmer going way back, but when you started at Zappos, they were a Perl shop. In the time since, the company has transitioned back to Java. What was that experience like? What did you learn?

William Weiss: I relearned Perl for one thing. I also learned that I am not a very terse Perl programmer. In fact, my Perl code tends to look a lot like Java, pretty verbose. I take my hat off to those masters who can write an entire program in one line of Perl. In the words of Wayne and Garth: I’m not worthy!

Overall, I’m very grateful to my very patient colleagues that helped me comprehend the existing codebase and made my work a success during those early days.

So, I was pretty happy to be playing in the world of Java again when I was moved over to work on some of our search capabilities with Lucene.

Matt Heusser: What is it like working at Zappos? What is your favorite part of the company culture?

William Weiss: Loud. Seriously though, it is constantly evolving. I feel as a company we work really hard to try and retain the sense of fun despite the fact that we are growing. It makes for an interesting mix of trying new technologies / in-office parade / solving the hard problems / happy hour down the street / hit the release date. In short, working at Zappos keeps you on your toes. But don’t get the wrong idea. While Zapponians may play hard, we work hard too. A great deal of effort is put into ensuring code is robust and scalable.

If you can be passionate and determined in what you do for a living every day, then you don’t have to go to work anymore — you’re going to play.

A great part of our culture in the technology department is that we are always exploring. In fact, we are actively designing with freedom to try new things in mind. Design the system interactions in such a way that we are not tied to any given technology. This always gives us the option to change when a better way comes along.

The 10 core values at Zappos have been covered a number of times in various articles. I’d have to say the part of our culture nearest and dearest to my heart is “Be Passionate and Determined.” Working at a company that encourages this is priceless. If you can be passionate and determined in what you do for a living every day, then you don’t have to go to work anymore — you’re going to play. I love what I do, I’m passionate about writing the best code I can, and I’d do that even if nobody paid me for it. I have to admit that this is one of the key things I look for when speaking with job candidates. Is this something you love, or is it something you do for the money? If you love it, you will strive to excel and learn all you can.

Matt Heusser: What is new and exciting in the world of Java?

William Weiss: I’m not sure that these would be considered “new,” but they are definitely exciting to me and I’m just getting a chance to really get my hands dirty with them: First, projects like GWT and Echo3. Yes, they are vastly different architectures, but the end goal is similar: make it easy to create your app’s front-end in a programmatic fashion. Combine that with Jetty and you can pretty quickly iterate through development.

Along the same lines of making things easier and quicker, I’m a big fan of pretty much everything from SpringSource. The Spring framework itself just seems to keep getting better and more useful, although I’m a little worried about some of the annotation stuff. While I have not had a chance to play with it much yet, I really like the idea of Roo. Anything that lightens the load of getting a project off the ground gets a thumbs up from me.

Matt Heusser: Okay, forget new and exciting. What do you think is the most under-appreciated feature or library in Java? What are the one to three things you use every day but suspect some folks have never heard of?

William Weiss: I can only speak based on the developers I interact with, but I would say the most under-appreciated feature would be the concurrent packages. Admittedly, if you aren’t doing multithreaded development, you’ll never miss them. But if you are — wow are they helpful. I was so glad when they were folded in to the JDK.

As for three things I use everyday, I’d start with Hazelcast. It has been a lifesaver. A great tool for atomically sharing data in a cluster. ElasticSearch is another technology that has just become part of our arsenal. Provides great speed and awesome scalability for doing searches. Finally, I would probably have to say MyBatis. If you have to deal with legacy databases, this is a must, and we use it extensively.

A developer’s toolbox: Bill Weiss

  1. Hazelcast
  2. ElasticSearch
  3. MyBatis

Matt Heusser: What do you think is happening in the world of Java development right now? What do you think the future holds for Java technology?

William Weiss: Personally, I think we are in a very delicate place with Oracle at the helm. From where I sit, Java 7 didn’t exactly wow anyone. On the other hand, other languages are being developed on top of Java, a good sign. Given the diversity of devices Java is used on, and the number of developers, I think it will continue to be a solid player in the heavy-lifting category. But will newer developers adopt it, or go for something with a lighter learning curve? Whether or not Java stays relevant will depend greatly on where Oracle takes it and more tools like Roo that make the cost to start a project easier to swallow.

Matt Heusser: One of the reasons Zappos gave for converting from Perl to Java was simple availability of talent — yet I know of COBOL shops still training their own staff, holding on by the skin of their teeth. What do you think about a company’s decision to move to Java for HR reasons, not technical ones? How did it turn out? What are some of the pros (and cons) of this kind of decision?

William Weiss: Being a Java developer, of course I thought the decision was pure genius! In reality, going back to what I was saying about being passionate and determined, I think if you are able to find developers with those qualities, it doesn’t matter what language you choose — they will pick it up and do a great job; it just may take a bit of time to spin up.

While it is true that a lot of our code has converted to Java, there is still a lot in Perl. In fact, more and more of our front-end rendering is being done via PHP with Java moving to more of a back-end service role. We also have different parts that are Ruby. So it wouldn’t really be accurate to call us a “Java shop.”

I believe you can write anything in any language. I also believe you can pound a screw into a board with a hammer. This doesn’t make a screwdriver a superior tool just because it does one particular job better. Obviously, Zappos could be written in Perl; it was. But at some point, you realize there is a better tool for a given task. Perl started to become that hammer in some cases. The same can be said for Java when it comes to content management. At least for us.

I’d have to say the end result is that the technology department has vastly expanded. We all pretty much fit in one room when I was hired. I can’t speak to the pros and cons, since, as I mentioned, we are not really a Java shop. We are still very diverse. This is a two-edged sword. It’s great to have talent in many languages. At the same time, while you have many language pools, they may not be very deep.

Matt Heusser: When I visited the Zappos campus, I certainly didn’t see the old, cheap pizza and coffee stains associated with the classic “Java life.” What does the Java life mean for you? Do you mountain bike, climb, marathon run, game, play chess, build robots? How do you spend your off hours?

William Weiss: Java — programming, solving problems — is a part of who I am. These are things I enjoy and I’m very fortunate to be able to be paid to do them by a company I like to work for. But, as the saying goes: “I work to live, I don’t live to work.” While I do have some personal programming projects going, I’m also getting more and more into photography. My wife and I love to travel, and we do it whenever we get the chance. You mentioned marathons. We actually have run a 5K together through Disneyland. It was a blast.

The most important things to me, however, are my faith and my family. Those two things trump all others, always. Having those things, I’d say I have a “real life.”

Living the dream?

There you have it. A programmer, 10 years out, looking forward to 10 more years of it, in a city that never sleeps, working for a company that understands that the process of programming can be creative and exploratory.

You could say that Bill Weiss is “living the dream.” But for a great many programmers the picture in the Java Life video is closer to their everyday working experience. If that’s you, then you might be in exactly the right place for your career right now. What’s important — and what this series is about — is to explore our options. There are a lot of ways to be productive, creative, efficient, and fulfilled while programming for a living. That’s what I call living the Java life.

Matthew Heusser is a writer and consulting technologist who lives in West Michigan. You can follow him on twitter @mheusser or learn more about his company, Excelon Development.