7 ms·
How GitHub Works: Be Asynchronous
- jherdman 15y agoI really wish the author didn't use such an inciteful title for his section on meetings. The title offers another catch phrase to avoid meetings. I'd much rather have seen Zach focus more on his actual point: holding short, focused, and tiny meetings. I fear that his title, and other catch phrases like it, encourage siloing. Siloing is far more "fucking toxic".
- famousactress 15y agoWhere did you pick up the fact that his actual point was to hold tiny focused meetings? Working asynchronously is pretty anti-meeting, and frankly it's totally independent of a culture that supports silos. I work in a very asynchronous culture right now. Very few meetings.. but that's not to say we don't communicate. We communicate very thoroughly. However short and focused they are, my definition of a meeting is a schedule block of (any size of) time where a number of people are expected to party on something and decide on some action. To extend Zach's metaphor, meetings are a communication mutex. They force a topic to be wrestled by a group of people at the lowest-common-denominator of pace. I think they're rarely the best or most efficient way to collaborate.
- jherdman 15y agoI'm reading a bit into his words, yes. Here's the part of interest: """You don’t have this problem with chat transcripts. Forcing people to reduce their otherwise rambling thoughts into concrete sentences helps focus discussion, too. We’ll have meetings at GitHub, but I can count the number of full “meetings” we’ve had in the last year and a half on one hand.""" The former bit implying that the focus of sentences helps, the latter bit implying to keep the membership of the meeting to only those required. Again: siloing is far more toxic than meetings in my experience. It's far too easy for a dev to wander down a path that has no value when operating in a silo. Agile tells us that we need to exist in a state of constant communication and feedback. This necessitates meeting with people in some fashion.
- famousactress 15y agoApologies, but my brain turns off when the word 'Agile' is used in a sentence in such a way that it could be comfortably replaced by the name of a deity. Anyways. Maybe semantics.. My points were just that meetings are basically awful, and that there's a distinction between communication and meetings... Meetings aren't the only form of communication.
- daleharvey 15y agothey are on campfire, they are constantly in communication I echoed his sentiments in a post I wrote about working remotely - http://arandomurl.com/2011/09/03/working-remotely.html http://arandomurl.com/2011/09/03/working-remotely.html
- randomdata 15y agoThey haven't really eliminated meetings, they have changed the way meetings are conducted. Thanks to the technology, you can step out of a meeting at any time to have lunch or, you know, work without missing out on anything. As a result, meetings never need to end. I have worked under a similar model for almost a decade now. It comes with so many benefits over a traditional meeting that I am uncertain why any software development company would do it any other way.
- bguthrie 15y agoThe trouble with working asynchronously is that you're relying on everyone to contribute their knowledge diligently. Github has a great culture and this works well for them. In places where it doesn't, brief standup-like meetings help get everyone on the same page at least once a day - a chance to say 'sup. The goal isn't to decide on anything, just to let everyone know where you're at.
- SoftwareMaven 15y agoMost engineers focus in meetings about "what I got". The reality is meetings should be about "what the organization gets". Sometimes an engineer may come away with nothing but the organization profited significantly. That said, too many meetings are intensely toxic for any company, and nothing is worse than working at a company that thinks meetings are "getting things done".
- ellyagg 15y agoWell, then you object to more than just the section head, right? Because he didn't suggest anywhere that he approved of short, focused, tiny meetings. As far as I can tell, he meant precisely what he said in the title.
- masklinn 15y ago> I'd much rather have seen Zach focus more on his actual point: holding short, focused, and tiny meetings. That is nowhere in sight in the post. In fact, the content of the section is even more damning than the title: > I tend to loathe meetings even more than 37signals. I despise them. > meetings pull you from doing actual work in order to talk about doing work. > meetings are utterly forgettable. Even if you take meeting notes, you can’t capture them all. Zach does not say he likes "short, focused and tiny meetings", Zach says he hates meetings as much as a human being can hate a concept.
- famousactress 15y agoUseful terminology (working asynchronously). There was a discussion recently about working remotely and I struggled to convey the difference between a remote-employee and a remote-team (http://news.ycombinator.com/item?id=2847012 http://news.ycombinator.com/item?id=2847012)... This is really the core of it. Teams that operate like this have a much better ability to adopt remote workers, for one thing.. and I suspect a much higher index of developer happiness, for another.
- colinhowe 15y agoThis seems a little far from the truth. What if someone needs to fix an urgent live issue? You can't always work async. Sometimes things need to get done, now. E.g. issues on a production system that are breaking the site for everyone. Sadly, people often think that everything needs to be done now and I think forcing less meetings on people helps that happen.
- holman 15y agoWe'll still work in Campfire though. We have an infrastructure room where we get all of our notices and systems-level logging piped to, and all of our on-call sysops can get together and deal with stuff immediately when it's necessary. But it's still async... from the perspective of others. I'm not typically deep into the systems-level maintainability on GitHub, but I can check the transcript during or after the downtime happened and can figure out what happened, how the discussion around it went, and how it was dealt with.
- billpaetzke 15y agoAt my job, chat (via IM client) is urgent and email is (a little) less urgent. This makes a lot of sense to me. If I want to not bother someone, I'll send them an email. If I want to bother someone, I'll IM them. Is there something special about Campfire that makes it non-urgent?
- mseebach 15y agoBoth IM and email is private. Chatrooms are public.
- rahoulb 15y agoWhat I like about Campfire is looking back through the transcript is easy - even for the times when you have left the room. Plus it has the ability to star parts of the conversation so you can see the important points as you scroll through. So you can use it as a synchronous "have a chat now" tool - or as an asynchronous "leave a message and I'll deal with it when I return" tool at the same time.
- ethank 15y agoFor a number of years I had a team in five offices in four timezones, so asynchronous working became the norm. We used Skype however. The only "rule" that needed to be enforced was "Away means Away, Available means Available" A lot of realtime problems got stymied by people thinking others were ignoring them.
- mseebach 15y agoThe "away" rule seems counter productive. The value of async is that I can ask you a question when convenient for me, and you can answer when convenient for you. If I have to wait for your status to become available, I'm wasting my attention.
- famousactress 15y agoI wonder if by 'available' he means 'will answer immediately'. My group uses Skype like campfire also.. and Away means 'I won't see this until I get back'.. Available means "I'll be notified immediately, and am likely to respond relatively soon". I still leave messages for people who are away all the time.. I just know that it's unlikely we'll end up in a real-time conversation at the moment, and as such.. I can just fire-and-forget until they return and reply
- eric-hu 15y agoThis seemed implicit in the article to me, but the way they use chat seems to be the way IRC chat is used for devs (though I haven't used IRC that much). If my understanding's accurate, then I'd agree with you: ignore someone's status, ask a question, don't expect an immediate answer.
- ethank 15y agoBasically it means we should trust the "away" message, but still can drop a line if you want. Away could also mean "mentally busy" or "on the phone" If I could trust the away messages, as a team lead I always had a status board as to where my team was (since we were in five offices)
- rgarcia 15y ago...meetings pull you from doing actual work in order to talk about doing work. It’s easier to push a branch up, check out the diff, and then iterate on that diff rather than assuming you’re going to perfectly whiteboard system design ahead of time. This seems over-broad to me, and seems to violate the accepted wisdom "Good programmers spend 10% of their time coding, and 90% of their time thinking." A good system/design meeting can go a long way to producing better code.
- j_baker 15y agoA good system/design meeting can go a long way to producing better code. The problem is that these are so rare. The vast majority of meetings in every company I've worked at are of the "invite everyone so it turns into a contest to see who can make their point the loudest" variety, and almost always end up with a few people who view it as their chance to be the "star" to a captive audience and thus draw out the meeting as long as they possibly can. Plus, if your programmers are any good, they're probably holding these meetings already without management having to formally call a meeting. I think that's the real problem: "formal" meetings almost always suck. Ad hoc meetings held by people who need communication to finish their job usually make up for themselves in increased productivity.
- rgarcia 15y agoAgreed. I should nave been more specific with what I meant by a "good" meeting.
- famousactress 15y agoThinking != Meeting..
- jrockway 15y agoThe problem with the whiteboard design is that you have to defer, "oh, let's see if that works" indefinitely. While you spend 90% of your time thinking and 10% typing, you don't spend 9 hours thinking and then 1 hour typing. You spend 5 seconds typing, then 30 seconds thinking, then a minute or so typing, and so on. Getting feedback from the computer is important for anything that's complicated enough to require a design. Seeing what the code looks like that your design enables is as important as a conceptually-sound design. The main problem is that 99% of programmers don't know how to prototype. They assume that whatever they commit is what goes into production. No. Try an idea quickly and throw it away if it's bad. That's why we have languages like Perl, Python, and Ruby. While it's 50/50 on using them for production, they are absolutely the right tool for testing your ideas quickly. And if you can test ideas quickly, you don't need meetings. Spend an hour coding what you would have talked about in the meeting. Share with coworkers. Get feedback. Tweak the prototype. Then write the "ready for production" version. I've been to a lot of meetings but I've never seen any piece of code look anything like what was described in the meetings. As soon as you hit that one point where the computer's view of things and your meeting's view of things diverges, everything else you discussed in the meeting is invalidated. The computer is always right. (Actually, one of the answers I got to an interview question at Google was so cool that I had to code it. And the code looked exactly like the design I sketched on the whiteboard. And it ran really fast on a large dataset. So maybe meetings are useful; but only for algorithm design, not for "real-world" stuff like "how should we refactor this thing".)
- palmerabollo 15y agoWhat do you think about some authors (i.e. The Clean Coder) that claims that you should try to avoid entering "The Zone"?
- whalesalad 15y agoJust a heads up we do async chat all the time here at my office, but we use Skype instead of Campfire. I don't want anyone to feel like they need to pay a monthly fee to get that service. Skype does persistent chat, you can add people to rooms and they remain persistent as well. You can 'favorite' rooms to keep them sort of pinned in one spot in your list of active convos. It's handy. http://cl.ly/2d3d1M072M1H1h3P1A0i http://cl.ly/2d3d1M072M1H1h3P1A0i
- famousactress 15y agoWe use Skype too.. and it's fine. By fine I mean, it sucks.. but it's a chatroom so we have very few needs. Wanted to correct something. Skype's chat is NOT persistent (if I'm wrong, lemme know.. I'd love to find out there's a feature I'm missing). That is to say, the chat persists.. but only on the distributed hosts that participate in it. So if I sign off at 10pm, and wake up before any of my team members are signed on at 7am.. I won't see anything that happened in between.. until one of them signs on. This feature alone is probably worth the price of admission to Campfire, IMHO...
- skeletonjelly 15y agoYeah that's seems correct. You won't receive a message until you're both online. We use it here at work for interstate chat and it works well as we have our work machines on 24/7. So logging in from a laptop off site will sync the messages. Note that the read status doesn't get synced.
- mtogo 15y agoSkype is really terrible imho. If you're looking to move away from skype because it sucks, you can try an XMPP server + Candy, or an IRC server plus CGI:IRC or qwebirc. Both solutions take about 15-20 minutes to set up and cost nothing, provided you have a VPS to host the server on.
- chexton 15y agoI'm tempted to move to IRC...does it persist messages? I assume so, based on the discussion above. I'm quite sure that when I've used IRC in the past I haven't been able to see what has occured after I've left a channel but I imagine if I run my own server there is a simple solution to this problem. Anyone care to share (though I'm Googling as we speak)?
- mattparcher 15y ago> I tend to loathe meetings even more than 37signals. Zach, can you go into more detail? From the few things I’ve seen, you seem to admire them more than despise them. Is there a particular reason for your displeasure?
- jeff18 15y agoIt should read as > I tend to loathe meetings even more than 37signals loathes meetings. (assuming you are not being facetious)
- mattparcher 15y agoDoh. I honestly misread that line. Thank you.
- donaq 15y agoThis appeals to me immensely because I absorb information way faster by reading than when someone talks at me. I wonder what percentage of the population is like me as opposed to those who absorb better by listening?
- markrandrus 15y agoI agree that most things called meetings today are toxic and unproductive, but gatherings in the work place that occur organically and ones that resemble group work sessions are healthy. For anyone who wants more detail on what Zach mentions regarding "the zone", breaking flow and job autonomy lookup the book Drive by Dan H. Pink. Great Post thanks!
- xbryanx 15y agoI'm tired of the "meetings are toxic" claim. If you're going to use such bombastic and broad language you need to back it up with a broad set of examples. Sure, business culture has gone overboard with the meetings, but let's not throw the baby out with the bathwater. Meetings I love: - an expert pulls me and some others into a room to update us on some secrets where we can ask questions - lunch - a very busy production lead needs to "use" (not waste) everyone's time so that she can efficiently figure out where a team is at Yes, all of this can be abused, but lots of well run meetings leave me with a sense of purpose and camaraderie. Rah rah.
- rokhayakebe 15y ago- an expert pulls me and some others into a room to update us on some secrets where we can ask questions Sounds like gossip. - lunch Nice. Nothing like food time to discuss business. - a very busy production lead needs to "use" (not waste) everyone's time so that she can efficiently figure out where a team is at Email or a status board are much better for this.
- jdkoeck 15y agoWhen your project is innovative and solves a problem in a difficult domain that you, hacker, are not familiar with (say, healthcare), meeting with domain experts is invaluable because it enables a bidirectional exchange of ideas. Without these meetings, you find yourself so lost you can't even start prototyping. Good luck with that. This kind of project would be classified as Inventions as opposed to Implementations in Zed Shaw's C2I2 Hypothesis, which says that you need Collaborators for Inventions, and Clients for Implementations, see here : http://zedshaw.com/essays/c2i2_hypothesis.html http://zedshaw.com/essays/c2i2_hypothesis.html). I think the only reason GitHub does not need such meetings is that they are developers building solutions for developers. So think again before you start "despising" meetings.
- foobarbazoo 15y ago"Meetings are toxic." One of the strangest things about working at Apple is they have meeting ALL THE FUCKING TIME. You spend more time in meetings than doing anything else. And now they're the highest valued company in the world, and 37signals is ahem not.
- mise 15y agoWith a private repo in GitHub, after adding a second user, can that second user just start using "Pull Requests", even if they just cloned the repo initially at the command line?
- masto 15y agoI don't like sitting in meetings either, but it seems to be that they're necessary when your company is building anything even moderately complicated. I honestly want to understand this no-meetings culture, especially if it can help cut down on the number of meetings I have to go to. How do you even know what you're supposed to code if you don't go to meetings? Sure, GitHub is a very simple system that could be built by a couple of smart guys over a few weekends, but even granting that, what about something like the decision to build GitHub Firewall Install? Did you really never sit down in a room to figure out what the product should actually do? Or, if you have Product Managers who do that job, did they never call a meeting with the engineers to explain their idea, solicit feedback, determine whether it's feasible, how long it will take, and what other projects might be affected? I'm a fairly typical programming geek, I got my start on a C64 in my bedroom, and have spent many years of my life writing code entirely on my own, so I know the joy of not having to answer to anyone. On the other hand, having worked in the "real world" for companies that are trying to solve a market need, I find that we can't get away from having some meeting overhead, even if we make a concerted effort to minimize it. No meetings at all leads to developers complaining that they don't have an adequate understanding of what they're trying to build. Institute a few more meetings to get everyone up to speed, and they complain that they're being taken away from valuable coding time. I would love to find the magic bullet solution to this, but I don't see how an IRC chat room is in any way a _realistic_ substitute.
- samgro 15y ago"I tend to loathe meetings even more than 37signals." Not trying to be the grammar police, but after reading this sentence, I chuckled because I thought the author was expressing his hatred for 37signals :)