Programmer Anarchy At GOTO Conf Chicago 2014: Mike Hall Interviews Fred George | GOTO Conference 2014
Programmer Anarchy At GOTO Conf Chicago 2014: Mike Hall Interviews Fred George | GOTO Conference 2014
•
UGtastic Archive
Full Transcript Available
Interview with Fred George at GOTO Conference 2014 on programmer anarchy at GOTO Conf Chicago 2014. This recording captures practical lessons and perspective for software teams and technical communities.
🔗 Read the full structured forensic transcript with durable insights at: https://just3ws.github.io/interviews/fred-george-goto-conference-2014
The Interviewer
Mike Hall
Interviewer, UGtastic
The Guest
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
The Conversation
Mike Hall
Interviewer, UGtastic
Hi, it's Mike with Yugotastic. I'm here at GOTO Conference 2014. I'm standing here with Fred George, the programmer anarchist, who's going to be talking about programmer anarchy. Thank you very much for taking the time to speak with me. What is programmer anarchy?
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
And I mean, I don't see a big "A" on your shirt. I do have one of those t-shirts, actually. Fist, you know, anarchy fist. Well, actually, programmer anarchy is kind of a sort of a natural refinement of the Agile processes. I think the more you push Agile processes, the more you learn over time about how fast things can go and get going faster and some other things. And so basically, it was a label I applied that's, frankly, a very controversial label. But it does have the traditional sense of anarchy, which is a team that's basically self-organizing.
Mike Hall
Interviewer, UGtastic
Right.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
It doesn't mean chaos. It doesn't mean chaos, which is number two definition. But number one definition is a group that the organization is actually determined from within the group rather than being imposed from the outside of the group.
Mike Hall
Interviewer, UGtastic
Okay.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
There's a little book, it's kind of interesting, called The Invisible Hook, which was about the social organization of pirates.
Mike Hall
Interviewer, UGtastic
Oh, really?
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
And you think about pirates didn't have a rule book that says you're going to be captain, you're going to be captain for three years, then rotate to first mate, become captain. There's no rule book there. And you wound up seeing these pirates basically morph their organization as they needed to. Mm-hmm. Get the ship from A to B. This guy who's very good about organizing people who's fair will be in charge. But when he gets to be attacking that merchant ship, it's some other crazy dude waving his saber, jumping across, doing silly things. And so to some degree, you want the team to be the same way. Say, here's a team, here's a problem. You guys organize yourself. And it may be over time, projects change, their focus changes, the needs of a project change. You may need different people in there, but you want that organization to know that because they're the people that know what the best and when those critical points are. People from the outside, who are looking in, maybe doing reviews, trying to do stuff like that, they don't really know the magic moment when changes are necessary.
Mike Hall
Interviewer, UGtastic
Right.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
But even we can afford to roll somebody off.
Mike Hall
Interviewer, UGtastic
Right.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
So we try to, basically, we try to push that back into the team. So basically, this is kind of the self-organizing team concept under a very controversial label.
Mike Hall
Interviewer, UGtastic
Right. Or is it more just trying to use that term anarchy to encourage a thought?
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
It is. I mean, I totally took a page out of Kent Beck's book, and he called it Extreme Programming. And I can tell you, back in the day when he talked about that, and I had this conversation with Kent, it's like, dude, this name is very scary. When I go to corporate clients and say I want to do extreme programming, they're already scared of programmers enough.
Mike Hall
Interviewer, UGtastic
Extreme programmers?
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
That's really scary.
Mike Hall
Interviewer, UGtastic
Are they going to be shopping up buildings? What are these guys going to be doing?
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
But it got the attention. And eventually, we kind of watered it down and called it Agile. And that was a much more acceptable word for corporate. So I'm trying to do the same thing. Push the programmer anarchy as being sort of get your attention. But the way we're organizing, you don't have to call it anarchy. It basically is a self-organizing team. You don't have to call it anarchy. It basically is a self-organizing team. There are other people that talk about this as well.
Mike Hall
Interviewer, UGtastic
Okay.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
So it's kind of putting out a seed for people to pay attention and hear the word, but to get them thinking about, no, we don't necessarily need to have always top-down out in organizations. And I got to say, I didn't really come, I came up with the term. I'll take credit for the term or take the blame for the term. But the organization itself was something I observed in one of the companies I worked with in London. And it basically was a small group, but they basically started doing these things. First of all, they didn't have any project managers.
Mike Hall
Interviewer, UGtastic
Oh, really?
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
Nope. It was the idea that we're programmers. We know how to get the stuff out the door. Who's project managers are necessary. I don't need any BAs. I want to talk to the customer directly. Don't need any QA because QA is a very complex process and complex systems. And it sounds like programmer work to me and architect work. So we came with this kind of very flat structure says that we're developers. In fact, we actually got rid of all the even managers of the developers. It wasn't a concept of a manager of a developer. So basically, it's just, you know, we're a team, so basically it's just developers that says, gets the code out the door. And we kind of pushed up the interaction level with the customer. We sort of started out in most Agile things is about stories. It's like customer will sell a story. We'll do it. We'll tell them the next story. Let's do it. Tell me another story. Let's do it. We wanted to re-raise that up to say, tell me what you want to accomplish and then get out of our way. Because we know how to best execute this. We're smart. We can pick up domains. They say, oh no, you don't understand. My domain is really complicated. You're saying, gee, you think your domain is more complicated than a Clojure or more complicated than the tools I work with. I'll switch with you one of the days. We'll sort of see, but I don't think I can understand complex stuff. You don't understand my world. Right, right. It's programming is complexity. And we embrace it. We have it's coming at us like a fire hose. We absorb it and we keep doing this. So accounting, I'm sorry, accounting is pretty well the same as the Phoenicians had, you know, and you look at these various fields and there's nothing really new there compared to the rapid changes that we have in our domain.
Mike Hall
Interviewer, UGtastic
Right. Yeah.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
It's a codifiable system in that you can write it in code, but almost codifiable. I mean, code itself is almost not codifiable. It's kind of crazy. And one of the things we take advantage of is how fast we can go now. So with the advent of the cloud, I can now get virtual machines quickly. And it's not a matter of having to plan what's going to happen for the next year and go get the capital budget approved. I don't do those things anymore. I get one in five minutes. And if it's making money, I get another one in five minutes. It's not a matter of having to pre-plan all this stuff. And so as the cycles got faster and faster, concept of specializations becomes more difficult to implement. The handoffs between various people can be absolutely crazy.
Mike Hall
Interviewer, UGtastic
Yeah.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
And with the focusing on a micro focus that kind of makes me think about the microservices, which are also known for talking about, are these related?
Mike Hall
Interviewer, UGtastic
Is the anarchy and the self-governing similar to the goal of keeping services very small and focused?
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
It turns out they dovetail very nicely. I originally thought there would be orthogonal issues, that there's this process and there's architecture and they're orthogonal. It turns out they're actually highly interrelated. We wanted to go faster. Our business has allowed us to go faster. We were doing internet advertising through Google at the time. And you get feedback cycles in a 20-minute timeframe. From something I do in Google to 20 minutes until I start getting feedback about it, pretty fast. And it was the cycle times that kept driving us to, okay, eliminate the specialists. Let's do a separate QA process. Let's use some techniques like A/B testing and some other things like that to keep driving new code out there. We got to the point where we were delivering something new into production about every three and a half minutes. You know, prodigious, prodigious. Yeah, three minutes. You talked about 10 hours in the previous interview from idea to inception, but now you're talking three minutes. Well, it was the average. Every program is basically shipping twice a day in the close to your entire organization. And it would ship something small. It's a small enhancement. It either works or doesn't work. If it doesn't work, stop doing it. If it does work, feed on it. Let's do something else. And we basically created a feedback system that led us to work in these domains that have fast feedback. We were able to exploit these domains. Frankly, we avoided any domain that would say build a product and you got to figure out it's going to take six months to figure out whether it's successful or not. We stayed away from those domains. We're in e-commerce, we're in internet advertising, that sort of thing. When I hear about small, self-sufficient teams, ironically, I think more about the military and the squad structure where you have a smallest unit of self-organized internal structure where everybody communicates with everybody else and they can all work off of each other, but they still have to be able to operate inside of a larger system. Even though these programmers are working independently and able to define their own way to deliver, but they still have to exist inside of an ecosystem, a larger organization sometimes.
Mike Hall
Interviewer, UGtastic
How do you deal with that?
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
Even going back to, again, squad systems, particularly in some of the Western militaries are a very good example of this. They're given objectives. Say, here's the objective I want to accomplish. We think it's going to succeed. We think it's a good chance of succeeding. But we know that when you get in there and actually try to do it, trying to micromanage you remotely is not going to work. You're going to be in that environment. They've cross-trained around skills. They're basically very poly-skilled workers in their own right. And that works very well. But setting the objectives at a high level, very important. Telling them how to execute the objectives, not so important. You want to train them. You want to make sure they have the right skills and the skills across the team cover the whole spectrum of things they might run into. But they can also run into something completely surprising. They'll either innovate or they'll withdraw. They do the right things. You want the programming teams to be very much the same way.
Mike Hall
Interviewer, UGtastic
Yeah.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
Looking at not just programmers, but stepping outside of our day-to-day programming world, because I'm focused on the community as well, and I look at user groups, do you see any correlation between the desire to self-define what you're working on being reflected inside the community at all? Or is that a totally- There's some analogies there. To some degree, you look at some of the best open source projects and you look at, okay, who's the manager and who's the business guy and who's the QA team? They've got those roles.
Mike Hall
Interviewer, UGtastic
Right.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
They basically are definitely self-organizing. If you guys sort of own the commitment rights and everybody else is sort of contributing and they get invited to the party if they're a really good contributor and they can be inside the group. But basically, it's the same sort of structure. See, the same thing is about startups. You get a new startup and everybody knows what they're working on. As a programmer, I know exactly what business we're in and I know what the marketing stands. But somehow when we get these things a little larger, we feel a need to put a CTO in place who's going to shield me from this and the business team is going to shield me from this. All of a sudden in this organization, I'm not sure what I'm working on and why I'm working on it.
Mike Hall
Interviewer, UGtastic
Yeah.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
And when you say shield, it's like all about encapsulation. Maybe even that sounds like even protection. They want to protect themselves and it becomes a little bit of a ... You want to put up these barriers to protect your own interests. Well, to some degree, it's also VCs sometimes pushing you to put a formal structure in place because they're thinking about, "Okay, you've got to become SAP one of these days. We need the structure and you've got to have a guy named a CTO. You've got to have names, a CFO. You've got to have these titles. " People start thinking about the title as actually part of their job instead of, "Hey, we're still trying to solve problems. We want to make sure everybody understands what problems we're trying to solve. " Right. So with the company in London, we went out of our way to make sure we never put that structure in place. And we ever tried to do that, one of my roles was to make sure it says, "No, no, we don't want this sort of organizational structure. We want to keep ourselves fairly loose and undifferentiated at some level, keep our resources flat. " And we've been very successful in business because of that. And just one thing, as we were walking into this interview, I asked about social anarchy.
Mike Hall
Interviewer, UGtastic
Are you looking at that?
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
I doubt you just use the term "anarchy" just strictly to be controversial and get people's attention. Actually, it is pretty much just a marketing term. If you peel back the covers, we still believe in basic principles of Agile. We believe in feedback, we believe in communication, we believe in simplicity, we believe in courage, we believe in respect. It's just that when you start putting practices around this, particularly in light of microservices, all of a sudden a microservice is 20, 30 lines of code.
Mike Hall
Interviewer, UGtastic
Do we need a unit test?
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
Probably not. It's only 20, 30 lines of code. If you can't do that, find yourself a new career. And we don't care what language you write in because it's running independently of every other piece of code. And so you could write one in Ruby, I could write one in Clojure, and you could turn around and say, "We write mine into Visual Basic. " I don't care because the rest of the interface is adjacent packets. In fact, run some in Node. I don't care.
Mike Hall
Interviewer, UGtastic
Right.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
And so all you're really asking people is understand what it is, and if you don't like it, replace it. It's not a matter of having to refactor it.
Mike Hall
Interviewer, UGtastic
In fact, why would you use design patterns?
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
It's 30 lines of code.
Mike Hall
Interviewer, UGtastic
Why would you worry about any of these sorts of things?
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
Because it's 30 lines of code.
Mike Hall
Interviewer, UGtastic
Yeah.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
But you have lots of 30 lines of code, though. So it's kind of like cells of your body. You think about it, you're still you, but none of those cells that you were born with are there anymore. They're dead. They're gone, but you're still you. But you're a complex organism. And so I think our systems are very complex. We talk about systems that have millions of lines of code in them. Whether it's broken into 30 lines of services or one giant 3, 10 million line of code tarball, it's complicated. You still don't know how it's working. So you don't necessarily lose anything with microservices in a complex environment. You don't necessarily gain anything either. Except if you happen to be outsourcing this piece of code and you just turned out to be a horrible programmer and you write this really ugly microservice, the impact is only the service. I can rewrite 30 lines of code. I can rewrite it.
Mike Hall
Interviewer, UGtastic
Yeah.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
The damage you can do to my applications is very constrained because of microservices. So by keeping things super small, you're able to say, "Okay, if there's something that goes wrong, you can narrow it down onto one. " Exactly.
Mike Hall
Interviewer, UGtastic
Instead of having to be like, "How do I replace this monolithic thing that has all these inner connections?
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
" Some of the problems with object-oriented systems that we've discovered over the years is, yeah, so you build a really lovely object-oriented system. It has all these same traits, but here comes a programmer who doesn't know anything. He starts ripping the data out of it, starts publishing getters and setters along its method, starts pulling the data out. Now everybody knows this data. Everybody's running the algorithms every place and now you can't change anything.
Mike Hall
Interviewer, UGtastic
Right.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
A microservice, it's a little hard to go in there and grab an internal piece of data.
Mike Hall
Interviewer, UGtastic
Right.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
I mean, unless you're going to open this up and put a new API in it.
Mike Hall
Interviewer, UGtastic
Right.
Fred George
Programmer Anarchy at GOTO Conf Chicago 2014
So actually, it's sort of encapsulation carried to a real extreme that's very powerful.
Mike Hall
Interviewer, UGtastic
Okay. Well, thank you very much for taking the time to speak in here. We appreciate it. Thank you. [Music]