- 浏览: 849157 次
- 性别:
- 来自: lanzhou
文章分类
最新评论
-
liu346435400:
楼主讲了实话啊,中国程序员的现状,也是只见中国程序员拼死拼活的 ...
中国的程序员为什么这么辛苦 -
qw8226718:
国内ASP.NET下功能比较完善,优化比较好的Spacebui ...
国内外开源sns源码大全 -
dotjar:
敢问兰州的大哥,Prism 现在在12.04LTS上可用么?我 ...
最佳 Ubuntu 下 WebQQ 聊天体验 -
coralsea:
兄弟,卫星通信不是这么简单的,单向接收卫星广播信号不需要太大的 ...
Google 上网 -
txin0814:
我成功安装chrome frame后 在IE地址栏前加上cf: ...
IE中使用Google Chrome Frame运行HTML 5
Ryan wrote a really great comment over at rc3.org in response to an interview Scott did talking about how we work over at GitHub. Since I can’t seem to link to the comment directly, I’m reproducing it here:
Having worked in this environment for a little while, I’m not sure I agree that these are really prerequisites, but I’ll try to comment on each:
Your developers must be users of the product.
This is probably the key to everything. Seriously. Take everything below with a grain of salt.
Your developers must be able to iterate without relying too much on other members of the team.
We rely on each other quite a lot, actually. When somebody starts pasting screen caps of some concept into the campfire and they’re really good, people want to jump in and be a part of it. Sometimes you’re working on something and are totally content and loving it but you see that somebody else is really close and they could use a hand and so you make a decision to drop what you’re doing and switch over to that because, hey, let’s just ship that real quick because it’s close and it’s amazing and it’s not like the thing you’re working on has a deadline.
There’s a tremendous amount of freedom and flexibility. More times than not, that results in people using that flexibility to work together in ways that may not have been foreseen or planned.
There’s also times when people don’t jump in on a new concept. Those things may move more slowly. Maybe they should move more slowly. There’s times when something is worked on for a couple of days and then people lose interest for whatever reason. Maybe it’s not interesting.
I think this is part of what Scott was referring to when he said, “open source software style of business”. In an open source project, it’s hard for bad ideas to gain a lot of support. The maintainer doesn’t really get to tell other contributors what to work on. They can set a vision and tone, but an idea sinks or swims largely on its own merits and whether the people contributing feel it’s worthwhile as a collective.
I guess conventional wisdom is that team planning meetings (in whatever methodology you subscribe to) can be used to get the same results in a more orderly fashion. You get everyone in a room and you ask them, “do you think this is interesting? Should we prioritize X over Y?” And everyone says, “Hmmmm. Yes, let’s do Y first and then X but definitely not B,” and there’s debate and eventually everyone comes to an agreement and starts working on whatever was decided. There’s a lot of thinking and talking and committing involved.
The problem with the planning approach in my experience is this: what people think/say they want to do and what they really want to do (or what they’re capable of doing) are often wildly different things. It’s kind of like: “put your money where your mouth is.” Say you show me some thing and ask me whether I think it’s cool or valuable and I say, “yeah, it’s great and I’d totally buy it, yeah.” And then you say, “give me $100 and you can have this thing,” and now I’m not so sure. The act of actually having to take money out of my pocket and trade it for this thing is a powerful device. All the bullshit is distilled down to a very simple binary event: I pay or I go do something else. There’s no hypotheticals at that point.
I think time is kind of like that. It’s hard to tell how it’s best spent until a real person is faced with a decision to actually spend it or not spend it. At GitHub, we have a very simple voting/prioritization system: whatever people decide to work on is a priority, by definition. If something is interesting, more people end up working on it. This doesn’t mean there’s no priorities. It just means we find out about them instead of deciding on them.
And I want to stress that there’s more than just this selfish I’m-intellectually-curious-about-X-and-so-X-is-all-I’m-going-to-work-on thing going on here. You want to ship. You want to make money. You want people to love the shit you put out. You want to kick ass. You want your coworkers to kick ass. You want the site to be stable and fast and reliable. All of those things are at work all the time and they play into what you decide to work on at every moment.
The business must not have customers who are promised certain features by a certain date. Customers of every software company I’ve ever worked for have requested features that no developer wants to work on, but they pay the bills, so we worked on them anyway.
I’ll agree that dates are hard with this kind of setup, but dates are always hard. We’re just honest about it. I’d say the only difference between GitHub and most other places I’ve worked at in practice is that I apologize for being late a lot less. The same work gets done in the same amount of time, there’s just fewer estimation errors because there’s less estimating. Actually, I feel like I get more done “on time” because I have more freedom to take things that really aren’t time critical and shift them around because I wasn’t forced to put an artificial deadline on them in the first place.
As for working on stuff that’s tedious or maybe not immediately gratifying, that happens all the time. Again, the goal isn’t always to just work on what’s intellectually interesting. Things can be interesting for all kinds of reasons. Money is certainly interesting. Helping somebody out in a jam on a support request is interesting, even though the work might not be all that fun. Plugging a security vulnerability 20 minutes after it was reported is interesting. Fixing a bug that’s flooding your exception notification system is interesting.
I want GitHub’s availability and reliability to be unmatched. The steps required to get there aren’t all intellectually stimulating. Some of the stuff is a real chore. But I want to get there dammit. Getting there is interesting.
Also, most things are interesting to someone. There’s a few areas right now that no one has a particularly strong interest in. When things become neglected, they’re very quickly obvious. They don’t have a chance to fester. They just pop and are ugly and everybody has to look at it all the time and it’s annoying. At GitHub, those things are taken as a sign that we should consider hiring somebody who is interested in that thing. The more everyone is forced to take time away from what they would rather be doing to deal with the thing, the more pressure is created to find the person that’s going to love that thing and fix it for good.
I didn’t realize I had so much to say about this. I guess I feel like I’ve already learned a ton from these guys and am anxious to share. I’m still trying to figure out how it works so damn well myself. I doubt anyone really understands the thing. We’re all pretty good at rolling with it.
Ryan’s right that we’ve never really sat down to discuss how our process works, short of us all agreeing that we like it. I’m curious to see in the upcoming years as we continue to hire additional people how our setup evolves.
Hiring talented developers like Scott, Ryan, and Kyle lead me to believe that as long as we’re hesitant and selective about who works for us, there’s no reason we can’t carry on this way without implementing bizarre solutions to problems that shouldn’t exist in the first place.
I jotted down some notes on hiring people a while ago, perhaps it’s time to actually write the post.
发表评论
-
十八个绝招把你从压力中营救出来
2010-03-08 10:34 989面对目前的工作与生活,你是否感觉到快要被逼疯了,来自工作的,家 ... -
Chrome扩展页面无法访问的解决办法
2010-03-03 09:04 1303Google推出Chrome扩展页面后有些中国的网友可能访 ... -
程序员礼仪小知识
2010-02-28 18:37 931常用应酬语: ... -
XXXX对80后的30个忠告
2010-02-09 11:10 7771、一个年轻人,如果 ... -
汇总Windows7系统常见5个问题和解决方法
2010-01-27 10:08 9611、DVD音频问题 微软改进了Windows7的硬件 ... -
MHDD找不到硬盘的解决方案
2010-01-27 09:48 4547硬盘要接在SATA0和SATA1上, 只认两个通道. 并且 ... -
NetBeans中文乱码解决办法
2010-01-15 07:56 2221在Windows 和Linux(Fedora/Ubuntu/ ... -
时间管理的6条黄金法则
2009-11-22 06:52 1124“时间就是金钱,效 ... -
从15个小动作猜准上司心思
2009-11-22 06:44 966察言观色是一切人情往 ... -
Fixing Poor MySQL Default Configuration Values
2009-11-15 13:24 946I've recently been accumulating ... -
100 Terrific Tips & Tools for Blogging Librarians
2009-11-14 09:43 2223As you prepare for a career as ... -
基本交际用语
2009-11-10 13:04 774日常生活中少不了要面对各种各样的场景和形 ... -
送你一副巧嘴——实用交际用语
2009-11-10 13:02 1649送你一副巧嘴 现代中 ... -
职场红人必读超级商务英语句子
2009-11-09 23:29 8571 I've come to make sure tha ... -
7 Things To Do After Installing Windows 7
2009-11-09 08:38 8381. Reinstall 7 if you purchased ... -
做个给WIN7减肥的批处理的想法,方便去实施
2009-11-08 09:34 2418首先 开启 Administrator 用户 删除其他用户!这 ... -
Windows 7超级实用的快速操作技巧
2009-11-08 07:35 983如果你已经升级到 Window ... -
使windows7更好用,10个很有用的Win7技巧
2009-11-08 07:29 1214没错,这些都是Windows 7带给我们的新东西,而且你很有必 ... -
电脑利用firefox模拟访问WAP版网站
2009-11-05 11:27 4693最近由于一些项目的原因,需要使用手机访问一些wap网站,从而参 ... -
秒杀秘籍大曝光 教你以超低价买到正品货
2009-11-05 08:02 1206“秒杀”火爆网络,由此衍生出新职业--“网络杀手”,其工作是帮 ...
相关推荐
GitHub是一个基于Git的代码托管平台,它允许开发者们存储、管理并协作编码项目,无论这些项目是开源的还是私有的。GitHub的故事始于四个创始人在各种非传统场所的会面,比如咖啡馆、酒吧、餐馆、飞机上,甚至是监狱...
People code now, ask how it works when they make mistakes, then say the documentation is bad when they can't fix it in 10 minutes. Libraries required (no gradle provided): me.grantland.wi
How it works? There is a http server running in a background service, start a activity, on a request is accepted. ABOUT ME: Github | twitter | 微博 About the demo Run the demo. Then send the url ...
Even if this works fine with API.13 or less, we support only for API.14 or more. Screenshots Watch YouTube video here. Requirements Target Sdk Version : 21 Min Sdk Version : 14 How to use Add ...
how tomcat works source code to read and study ,later if you need others resources ,please contact me!
ch06 - How MapReduce Works ch07 - MapReduce Types and Formats ch08 - MapReduce Features ch09 - Setting Up a Hadoop Cluster ch10 - Administering Hadoop ch11 - Pig ch12 - Hive ch13 - HBase ch14 - ...
Learn Android Studio covers Android Studio and its rich tools ecosystem, including Git and Gradle: this book covers how Android Studio works seamlessly with Git, for source control, and Gradle, a ...
HgLauncher is a launcher with a design philosophy of 'if it works, it works.' Consisting of simply a scrolling list of apps, there is very little visual cue to disturb you. If all you want in a ...
Explore the C language to learn how Objective-C works, Learn how instances are created, and why they’re so important, Tour the lifecycle of an Xcode project, from inception to App Store, Discover ...
Explore the C language to learn how Objective-C works Learn how instances are created, and why they’re so important Tour the lifecycle of an Xcode project, from inception to App Store Discover how to...
Add tests to R code to insure it works as intended Build packages automatically with GitHub Use R to talk directly to databases and do complex data management Run R in the Amazon cloud Generate ...
Kubernetes services and how default networking works in Kubernetes. External access to our services is necessary for business needs. Chapter 6, Monitoring and Logging, shows you how to monitor a ...
Kubernetes services and how default networking works in Kubernetes. External access to our services is necessary for business needs. Chapter 6, Monitoring and Logging, shows you how to monitor a ...
convert your android XML layouts into PDF document, works on all versions of Android. Dependencies pdfjet How to use Option 1: Simply fork or download the project, you can also download and create ....
It works in all version of Android and it's very easy to adapt to your project. How to use with Gradle Simply add the repository to your build.gradle file: repositories { jcenter() maven { url '...
Works perfectly when used in a scrolling parent (such as ViewPager). Allows the application to be notified when the displayed Matrix has changed. Useful for when you need to update your UI based on ...