Zach Holman on All Things Github
MAY 30, 2014 14:19 PM
A+ A A-

Zach Holman on All Things Github

Zach Holman

Many of today's most prominent app developers rely upon GitHub, a popular website that facilitates online collaboration between members of all areas of the software engineering community. Learn about the nuts and bolts of GitHub - like Repositories, Contributions, projects and streaks.

Zach Holman, educated at Carnegie Mellon University in Pittsburgh, Pennsylvania, travels the world speaking to coders and other tech professionals at software conferences about the joys of GitHub, a popular web site that facilitates collaboration between developers and other members of the software engineering community.

This interview first appeared on InfoQ and is brought to you by InfoQ and the IEEE Computer Society.

Martin Monroe: We're here at QCon San Francisco with Zach Holman, founder of the popular website, GitHub.

Zach Holman: I didn't found it. I'm one of the early employees. That's all right. You can say that I founded it.

Monroe: Let's get started on the wrong foot, like we are. So, tell us about the founding of the GitHub, Zach.

Holman: There are four founders of GitHub and they started it in 2008. So, I guess whatever the math is, they're five or six years old at this point and it has sort of been growing ever since then.

Monroe: What exactly is GitHub?

Holman: GitHub is a website and platform that helps people share code among their co-workers or you can also use it for open source. The idea is that we build a bunch of tools to make it easier to communicate with your co-workers or with people with whom you want to build something together. Traditionally, that's usually code so we have a lot of programming-related tools, but also a lot of people like designers and managers and a lot of people who use it just to help move a project forward.

Monroe: What do you think the secret of GitHub's success is?

Holman: The secret of GitHub's success? I think earlier on, a lot of the founders were able to get GitHub in the hands of a lot of open source project maintainers. That started the idea that GitHub was a place for open source and that open source could use GitHub to help code and program with each other, then it could be good for their businesses as well. That was the start and I think that since then we have been trying really hard to keep it as simple as possible, as straightforward as possible, as accessible as possible and I think that became the driving force for a lot of GitHub.

Monroe: How did your talk go today at QCon?

Holman: Disastrous. No! It was pretty good. It was a packed room, little warm with all the bodies in there, but it was fun.

Monroe: It's great to be popular. What stands out as some of the more interesting moments of your talk?

Holman: I always love questions. I mean, questions are the most interesting part. I would prefer talks where there would be five minutes of me talking and then 50 minutes of just discussions about points. There were some really good questions about the finer points of things I briefly touched upon in the talk; about managers and their place in the organization, how to just deal with humans, employees in your company. I think there are some interesting things going on that GitHub is doing, but also just in general right now. I think there is some real interesting things happening in the marketplace that people are actually realizing. We don't have to do it the way that we have done for decades.

We can start rethinking some of the ideas about remote work — that's a good example. You can have a lot of people living somewhere else entirely. 60% of GitHub's work force is remote in the rest of the US, in the rest of the world and that really determines how we work. We have an office but you can't assume everyone is going to come to the office because they may live halfway across the world. Those are the kind of fun conversations I like having in those types of settings.

Monroe: Why do you think your talk was so popular? I mean, I went to one where there were only three or four people and, well, I won't say who, poor guy.

Holman: I don't know. I think GitHub is a kind of an interesting thing. We're a tool for developers. Obviously, there's going to be a lot of developers really interested in what we have to say. It's always the idea developers are hackers at their core. They always want to know, "What am I not doing that can make me 5% more efficient?" and that's always kind of fun to see what other companies and stuff are doing, too. The holo-culture track was actually kind of interesting. Greg Brockman from Stripe was right before me and he had a packed crowd, too. I think there is a lot people interested in not necessary the technical side of things, but just the cultural side of growing a company, which I think is great to see.

Monroe: What sort of tips do you impart to developers?

Holman: The ones that are correct. I don't know. My focus is much more on culture, I guess, rather than — I'm not a great programmer. I will be the first to admit it. But I think what is really interesting is just talking about these things and that's mostly what I tried to say in these talks, in general. It's just to start thinking about workplace culture. Because I think a lot of companies don't. It's not a matter of working like how GitHub works or working like a different company works. It's a matter of just sitting down and thinking, "What does my company value? Is there something we can be doing to help make that more interesting in our company? Can we make our employees happier by allowing remote work or something like that?"

I just want to get people thinking about their own situations and trying to rethink these established ideas of what a company means and what it means to be an employee of a company.

Monroe: What's the new paradigm then of what it means to an employee of a company?

Holman: That's a really good question. I would say, on a broader level, I think employees should be afforded more power than they had in the past. And I don't mean that like in a political movement like, "Power to the people!" and stuff — although maybe — but I think it is a matter of trust. I think you should be able to trust your employees to actually care about the company, to actually care about working on things that are going to bring the company the most value. I think that a lot of things stem from that underlying trust.

If you trust that they're going to work as hard as they can to make the company profitable then you can say, "Yes! I don't care where you work because I trust that you are going to do what is best for the company. I don't really care what hours you work or if you are coming at 8 a.m. and you do all these sorts of things because hopefully we can have an open relationship with everybody, that we can trust each other to work on this stuff together."

Hopefully, the employer isn't going to take advantage of that and that the employee isn't going to take advantage of that. It has to go both directions.

Monroe: What's your role in GitHub?

Holman: My role changes a lot. As some people would say, it depends on the day. Today, I do lots of this sort of stuff. I'm going around and speaking and talking to developers and companies, which is really fun and exciting. I love traveling and all that sort of fun stuff, so that's fun. That's sort of been what I've been doing for the last year or two until this fall. Earlier this year I kind of got back into the development role and this is my last talk for a while so I can get back in the code. I like to say I can actually do work as opposed to talking about work for a while. That's going to be fun to focus on building features and building out more things on for everyone else to use.

But it really does depend on the day: I will flip back to doing a talk or I will flip back to doing some internal work in the company and back to code. It's kind of fun. It's that flexibility that I really dig. I can work on whatever is the most interesting to me in that particular point in time.

Monroe: What type of work do you look forward on getting into now that you're getting back to your thing?

Holman: I'll be working on on a couple of newish features that have been in the pipeline for a while. Hopefully, in the next few months, we can start pushing some of those things out and doing some really cool stuff.

Monroe: Right. I suppose those are top secret?

Holman: Top secret, yes. We always keep those under wraps because it's fun to surprise people. More often than not, even though we have all these things in mind and I am totally excited to launch this thing when it is ready, it could be a year before it is totally ready. Which I hope it doesn't because it would drive me crazy but, sometimes deadlines slip and talking about it would be bad for deadlines.

Monroe: What sort of languages will you be working in when you get back to it?

Holman: Traditionally, I'll do Ruby and that's pretty much what I tend to work in. Our stack of GitHub is mostly just Ruby with some C when it makes sense to get some speed. Our stack is pretty boring, which is really exciting to me. I don't have to worry about the stack, it's stable and I can worry about doing really fun stuff and products. That's mostly what I'm super interested in: doing some of the back end in Ruby, doing some of the front end design work. Once I have a good idea of how that stuff works together, I have a web designer come in and make it better than what I had and make a back-end guy make it scale a little bit better. It'll just be really fun to just get back in the code a little bit.

Monroe: Do you have any hints about working in Ruby?

Holman: Not particularly. I have been using it for six or seven years now, so I don't know. Our philosophy with Ruby is sort of the same with everything in technology at GitHub. We don't tend to use the flashiest stuff. The really high level programming we do is very standard stuff. We try not to spend too much time worrying about the hip new whatever is going on. Ruby is a really flexible tool. It can do most of whatever we want to do with it. We just leave it at that and go from there.

Monroe: Is there a mobile version of GitHub?

Holman: There is a mobile web version. That's just still in the main App but it's basically just a front end to underlying code base. And it's mostly just HTML. And there is 70 lines of JavaScript and that's about it. So it's really small and clean and everything.

Monroe: Is it a lot smaller than the regular version?

Holman: Yes. That was a big deal for a long time because has to deal with — it's a really fat App, I guess. If you think about a code diff, for example, actually rendering that on page, if you have syntax highlighting and then you have an actual diff, like the red/green version of a diff, you have to wrap all of those in HTML with different tags to make sure that, like, "OK, this does the work, this doesn't work." It ends up generating a lot of overhead. And that was the main problem before we had a mobile site. The loading would be the usual desktop experience on a mobile browser. We're already loading so many elements into the DOM that a lot of mobile phones would just be slow trying to parse all of that stuff. That was the idea behind the mobile site — that we can do away with a lot of that stuff, simplify the experience, you don't get everything that you would normally, but it's a lot faster and you can get to the information you want.

Monroe: Right. How do you go about building a product? You use Ruby and anything else?

Holman: It's pretty much Ruby across the board with the exception that if you're doing some lower-level stuff that really requires a lot of speed, use C or Go or something like that. But from a product standpoint, it will usually spike out as a Ruby prototype, typically with Rails at this point. We just kind of go from there. We try to do a big emphasis on getting stuff out there. I was saying earlier in my talk that it's a lot easier to take pot shots at code rather than ideas. Before you actually put it to code and actually start building something out, it's just ideas and you can say, "Well, that won't work." And then you all say, "Well, that will work" and then you can't go anywhere. As soon as you can actually feel it and click on stuff, it's much easier to sort of have these discussions and say, "Oh, that doesn't work because of this" and "That does work because of this" and you can take it from there. It's a lot of small iteration.

Monroe: What do you think about San Francisco? Is it experiencing a new tech boom now?

Holman: I would say so. I don't know if that's good or bad. I'm not good at judging industry-wide things. Things are definitely crazy. I mean, as a San Francisco citizen, seeing all of the rent prices go ridiculously high – something is happening. I don't know if that means it's a bubble or just a resurgence of rich, entitled people into the city. We'll see, but it's one part excitement because there's a lot of smart people in the city and doing really cool things and everybody has a new startup that is going to change the world and stuff and I'm one part cautious. I hope this doesn't just go bad because there are some really crazy things. I mean Snapchat just got an offer for 3 billion dollars and they said no. I mean, I would be on to Vegas at that point already.

Monroe: You do a lot of work with startups yourself. How many startups are you involved in?

Holman: Before GitHub, I was at another company for two-and-a-half years or so in the job-related market. That company was about 20 or so people and those were my work experiences, I guess, before GitHub.

Monroe: I guess the open sourceness of GitHub is a way for developers to avoid a lot of stumbling blocks. Do you have any other advice to help them overcome the stumbling blocks that you might encounter in making an app?

Holman: I think one of the things I just say a lot is to get to the point where you have something built, that's beyond the point of code and everything. Just showing people "Hey, look what I built. Is this cool or not?" "No." "Crap, back to the drawing board."

I think a lot of startups try to get to this point where we have to have this perfect "first product" before we show anybody because first impressions are everything. That is true to a certain extent, but there are also a lot of startups and companies that just keep trying to chase that forever. By the point they suddenly start trying to figure out somebody has already beat them to the punch. I mean, it's just getting the ideas out there as soon as possible. We have had a lot of things internally at GitHub where we were really excited about this feature and we know it's going to be so great for everybody and it's going to make us a lot of money and stuff and then we have it shipped internally just for the employees for a month or a year or something like that and we just realize we were just totally wrong. It's not an interesting thing at all and then we end up just killing it. That wouldn't have happened if we kept going down this path to get the perfect product. So, it's just a matter of getting it out there as soon as possible and then just iterating on it over and over again.

Monroe: I see that you're scheduled to speak at the Ruby Conference in 2014 in Australia. What message will you be bringing?

Holman: Probably similar stuff. I may actually give the same talk; I have to figure that out. It will just have more inside Ruby jokes because I am a Rubyist and I love those Ruby people. Also, Australian Rubyists are crazy and I mean that in the best way. Everybody knows everybody else. It's an amazing community. Anyway, just sort of similar stuff. It's fascinating. Melbourne and Sydney and a bunch of other cities like Berlin, Amsterdam, they're starting to get just startup culture all over the place and it's really interesting to travel around and see. I mean, as much as I love San Francisco, I think it's the best place in the world, I am super excited to see all of these other cities just building really cool stuff. Without even caring what Silicon Valley is. I think that's the right way forward. I think that's just fun to see.

Monroe: When people are on GitHub, what are repositories? What are they all about?

Holman: Repository is basically another word for a project. They see you push your code to a repository that holds all of your code. It also holds all of the other stuff like issues, bug reports, documentation and stuff like that — it's your repository. It's sort of the center of what that particular project is, I guess.

Monroe: What happens after somebody makes a contribution on GitHub?

Holman: We have a specific word, I guess. "Contribution," meaning if you contribute to another project or if you file an issue on another project, you are basically trying to help out with that project. The most visible thing is on your profile you get a little dot for that particular day. It sort of goes back to the idea of Seinfeld's calendar — it's Jerry Seinfeld's idea of "Don't break the streak." In the context of open source, a contribution on GitHub we tried to make it very streaky. "I will have eight days in a row where I contributed something to an open source project." It is kind of a nice little motivation.

Monroe: Like a gold star.

Holman: Yes, exactly. And I have noticed this, too. Once you start thinking in that mindset, it's not even just programming, it's anything. You don't even have to care about actually doing something. If you have chores you have to do every day at home. As long as you do something for, like, three minutes and usually you start and you're like "Oh, yes. I can do this and I will clean this and do all this sort of stuff." The idea is that it's the same thing for programming, in that you start learning more about a new language that you had never learned before. It's just trying to get people out there to do sort of new things they wouldn't have done otherwise.

Monroe: On GitHub, how do you start a project then? You say you have this new idea that you want to enlist the help of people in the GitHub community. How do you start setting that up?

Holman: It depends. One thing that pops in my mind is there are a lot of projects that are trendy to work on. Especially if they came from somebody who is very well known. It's almost cheating because that somebody has enough GitHub followers and Twitter followers and they're the superstar developer. Anything they do, people are going to flock to and try to help out with. That is sort of the nature of humanity, I guess, for better or worse. So it's also really interesting seeing the long tail of development. I sometimes mention a project that I had – it is for running basically. I keep track of all the miles I run and there is one service I used and then imported those into another service so I could use that other service. Really niche, not a lot of people would ever use it, but it was fun hooking up with the two or three developers who had the same similar taste as me.

Sometimes it's just fun to see that thing happen and people push up a new – in this case, an open source repository – and say, "This is my hobby. It's really weird. I don't even know. Some small project and I do not know a lot of people with the same interest as me. I'am just going to push it up to GitHub" and then, over time, you end up meeting all those different people who have those similar interests as you. That's really fascinating to see because I think that's more meaningful than just some celebrity's repository you're trying to help with because there are millions of other people. But if you make connections with somebody else whose tastes line up with yours, their technology stack lines up with yours, that's the really interesting stuff.

Monroe: What exactly is a call then? I have this project I want to put on GitHub. What do I look for? It's not a repository, it's not a contribution necessarily, or is it a contribution? How do I start entering my thing in?

Holman: If you have a great idea and you want to start something new, you just create a new repository and then a lot of people would just Tweet that out or send an e-mail to a mailing list somewhere and say, "Hey. I have this great idea for so and so." Then I can just go to your repository, check it out and start helping you out. Or, if that is code or maybe just issues, say, "Hey, I have an idea for this. What do you think about this?" and you start the conversation before you actually start working on it.

Monroe: I don't really have to have any code. I could know zero about code, I just want the new version of Minecraft, the space age version of Minecraft or something and maybe I can enlist a coder and pretty soon I will have my own company?

Holman: Yes. I mean we do that a lot internally at GitHub, too. We'll know something is broken or there is a problem and no one really knows how to fix it yet, but you just start that conversation and you say, "Well, let's create a repository" and it just has one file in it that says "Do something here" or something like that. You just start the discussion. "What would this look like? What sort of problems can we solve with this? What sort of solutions can we come up with?" The code is never really a hard problem in a lot of cases. It's mostly just a matter of figuring out what is the actual problem and what is the actual solution to that. Once you have these things figured out, just start coding. And step by step, hopefully, get to that solution that everyone is excited with.

Monroe: I can't say for sure, but it seems to me that GitHub is getting really big. I mean, what's the next step for GitHub? Are you trying to expand in some area or acquire somebody or what?

Holman: I don't know. We will see. The company has definitely gone big. We have 217 employees today and it's kind of nice. We have the resources to jump into a couple of new areas that we wouldn't otherwise if we were a lot smaller company. It's a lot more risk to say, "You two people, just go work on this for three years and then see what you can end up doing." We have a couple of long-term projects like that that we've been working on for two, three years or so. It's kind of nice just to be able to sit back and be like, "Well, just keep working on it and then when it's ready to go, we'll go for it." So a lot of really cool projects and stuff that we still want to work on. We will see how things go, I guess.

Monroe: We've been speaking with Zach Holman from GitHub. Thanks you so much Zach for being with us here at QCon San Francisco.

Holman: Thank you.

InfoQ logo

This interview originally appeared on (Information Queue), an independent online community focused on change and innovation in enterprise software development and targeted primarily at the technical architect, technical team lead (senior developer), and project manager. InfoQ serves the Java, .NET, Ruby, SOA, and Agile communities with daily news written by domain experts, articles, video interviews, video conference presentations, and mini-books.

[%= name %]
[%= createDate %]
[%= comment %]
Share this:
Please login to enter a comment:

Computing Now Blogs
Business Intelligence
by Keith Peterson
Cloud Computing
A Cloud Blog: by Irena Bojanova
The Clear Cloud: by STC Cloud Computing
Computing Careers: by Lori Cameron
Display Technologies
Enterprise Solutions
Enterprise Thinking: by Josh Greenbaum
Healthcare Technologies
The Doctor Is In: Dr. Keith W. Vrbicky
Heterogeneous Systems
Hot Topics
NealNotes: by Neal Leavitt
Industry Trends
The Robotics Report: by Jeff Debrosse
Internet Of Things
Sensing IoT: by Irena Bojanova