Software Development Practices At Google
prostoalex writes "It's widely known that Google allows its engineers to spend 20% of paid work time on personal projects (that are nevertheless considered property of the company). But how does the practice actually work? Joe Beda provides a helpful insight in his blog, pointing out other interesting software development practices at Google. The code database is open for everyone, the snippets and pieces are documented and one is encouraged to re-use existing code. The intranet is transparent to the max and the company accepts the fact that there's more than way to accomplish something, so a better method is always welcomed. Interesting to note that just like Hawaiian shirt days in Office Space, the 20% per projects are "actively encouraged" - Joe suspects his review ratings might slip if he doesn't have one soon."
Here
"I'd rather be a lightning rod than a seismometer." -Ken Kesey
So you work on your personal project then google owns it? It seems like it would be more worthwhile to do them on your own time then.
...till he gets dooced? I give it 48 hours ;o)
I am NaN
Hang on... we all know majority spend 20% of their time on porn, but labelling it "personal projects".... yeah, could work as an excuse for filling in the efficiency void :)
Three rings for the Elven-kings in the sky
Gnarly dude!
;)
What is this... a 1980s BMX article?
DBA? Software Engineer? My company is hiring! Click
The flip side to their encouragement of extensive code-sharing is, how does a young programmer make a name for himself at Google? In my opinion, a system that merely strings prefab parts together is not nearly the accomplishment that a from-scratch system is. If everything you are assigned to do is already written, then what have YOU done, other than figure out other peoples' APIs?
Not that that can't be challenging, but IMO smart people do things their own way, not someone else's, because their way is better.
And here comes the cavalcade of leeches spouting "smart people don't reinvent the wheel.."
We need a new google section...there has been way to much google information flying around lately.
:-)
Main
Apache
Apple
GoogleDot
AskSlashdot
I have this really funny quote that I like to put here. Unfortunately, there's this really annoying thing called a char
"that there's more than one way to accomplish"
What if you only did 19%?
Or 18%? 17%? Where do they start saying..
"hey...you need to work less on what you are supposed to and more on your side project."
If I was at google I would spend my time working on
1. Voice to search features
2. Image searching features for iPaqs and the like to take images and search google.
3. A better AI for being able to understand end user questions.
My father in law is a farmer and lost most of his crop last year because the local university took 6 weeks to get back with him and tell him what was eating his crops. If instead he has a iPaq hooked up to google with a camra and speach search software he could have said "Hey google what the hell is this yellow stuff in the picture eating my plants"
Why clone Unix when I can clone Windows instead. http://www.reactos.org
That assumes that you want to own it. Think open source type stuff. Even if you wanted to 'own' something like that, you can't, due to GPL.
I like to write games in my free time, but most are just sort of practice platforms to try differing things out, not to market. If I could do something like that, I'd do it in a heartbeat. I write stuff for my own personal useage, so if Google wanted to 'own' the code, I would care less.
HA! I just wasted some of your bandwidth with a frivolous sig!
I personally think that it should be encouraged to continue to break the monotony of repetitive processes, and continue the learning/experimentation process, in between projects, if at all possible.
The development process can never be fully mastered, as it continuosly changes with technology, time, as well as creativity.
To hinder the development process to 'work with what we have now, and ignore what else is available', is obviously limiting to the potential growth of the company.
the only permanence in existence, is the impermanence of existence.
How many pieces of flair do they have to wear?
CC Licensed Serialized Story and Podcast: Ingenioustries
Google owns your "20% Project"? "Jump To Conclusions" would be owned by Google? Hmmm... "I mean, Lumbergh Googled her..."
Face it, do something enough times, and it can cause problems.
Heck, I don't have a good 20% project yet and I need one. If I don't come up with something I'm sure it could negatively impact my review.
Maybe he should move his blog over to twentypercent.net...
But one does have to remember one thing: It's not easy to make a company succeed in this fashion. Sometimes, as a manager, one wants to give one's employees everything, but one simply can't because of lack of resources. At Google, that isn't quite as large a problem, and they have the ability to perform some very long-range thinking and innovation, because their commercial success is giving them the freedom to do so. Their annual revenue is in the billions.
I would say that Apple is also quite innovative in quite the same respect, though that will be highly debated, as is Wolfram Research, which will probably not be debated very much.
Business that treat their employees like crap will ultimately lose. Businesses that are innovative in every respect, including business practice itself, don't have guaranteed success, but those that do succeed will do so in large quantities and the people who work there will have great fun in the process.
lame, you must have just learned about slashdot too, go figure.
"You're fired for blogging!"
Shit, let me work on whatever part of out product I want for 20% of my time, and I could add some nice improvements. As it stands, the energy burnt off trying to get directors, product managers, etc to approve anything makes it too difficult...
Your hybrid is not saving the environment. Its purpose is to make you feel good about buying something.
In fact, EVERY Place I have worked my 25 year professional career (3 companies) had this same policy. One place the number was 10%, the other two, including HP, it was 20%.
Nothing to see here. Move along. Google is not innovating in this case.
All the daily news about Google that they'd rather you didn't read about.
At GDC 2003 or 2004 (can't quite recall) Fred Brooks (author of The Mythical Man Month, in case you're here by mistake) gave the programming keynote, and one of his suggestions was exactly this: to give your employees 20% of their time to work on whatever they want. He mentioned the benefits to morale, retention, etc., but he said the main benefit was the freedom to find new methods and new technologies. Pounding away on the day-to-day coding will only give you incremental benefits, but these 20% projects could provide the germ for an entire new product or business model. It's basically making everyone part of the R&D department.
Also, if you have the chance, I highly recommend seeing him speak. In addition to being obviously brilliant, he's also a very entertaining and amusing speaker.
I really like the concept of 20% for projects like this. Some other companies like 3M have tried it and benefitted tremendously both in terms of employee engagement and in innovative products.
I was a web developer back in the early days when our company was trying to figure out the whole "Intranet" thing. I was lucky enough to have the time to crank out what I thought might be some useful general tools such as a survey builder and form builder.
To this day, those basic tools have become central to our business and saved huge sums of money. Shucks, the paper costs associated with printing, distributing, and analyzing surveys were tens of thousands of dollars each year.
In general, I think that giving bright developers some time to themselves is a good way to foster creativity and minimize project burn-out.
The 20% projects work well in my experience. Sometimes you have to take the initiative to make sure you take that time, but you usually end up doing fun, search-y type stuff. And you end up meeting other people from different parts of Google, and getting familiar with new/different bits of the Google code base. It's also a good way to break out of a rut and make sure that you think about "bigger picture" issues. If you end up crunching on an important project, you can also bank that 20% time and use it up later.
A manager's first job is to shield her workers from buffoonery, not perpetuate it.
"I worked hard for it. I deserve it. And I have it," Campbell said. "It's all mine."
...on this.
It's already paid off - I've gotten some good input from outside folks, and our company can use it however because it's under a BSD license. Everybody wins!
The Army reading list
If slashdot were owned by a Google employee then that would explain why 20% of the stories that run on /. are about Google.
/bye karma
My personal experience with this: when I was working for a big multinational corporation a few years ago, the VP of my group declared that we would henceforth be reusing software components. A place was designated for placing the reusable pieces that would be reused in the future.
Needless to say, the "reuse repository" sat their empty, until it was finally forgotten and presumably disposed of.
I worked on a number of projects there, and I tended to copy useful bits from one to the other. I think I probably reused more software than the whole rest of the organization put together.
My conclusion from this: reuse is really hard to implement, unless you trust the source of the code you're reusing.
I suspect that Google can get it to work, mostly, because they get the cream of the crop programmers, so the stuff they have to share is really, really good. I kind of wish I could work somewhere like that...sigh...
Have you read my blog lately?
Let's consider this...
Yeah, I can see how working for such a place could suck...A feeling of having made the same mistake before: Deja Foobar
Hey, this Joe Beda sure worked on a lot of products:
Google Groups Beda
Image Search Beda
Google Local Beda
Google News Beda
Google Catalogs Beda
etc...
Maybe they should fucking hire a guy named "Released".
(Beda, Beta; you say tomato, I saw tomato)
Searching by image is exactly the killer app that would cement google as the industry leader. However, given their current neglect of even the basic image search, I doubt it'll happen. Even just being able to search for similar images would be dreamy.
The assembly line was created, thanks to Henry Ford. During that time, machines assisted less qualified humans to complete complex tasks. Nolonger will a master shoe maker be needed, an idiot can inspect components down an assembly line.
During this time, a person who could screw ten screws into a peace of metal within a particular time frame could directly be translated to production and in turn relate to prospective profits. (Time cards were probably born.)
During the dawn of industrialism, economists and businessmen developed optimal management techniques in accordance to this model of production. It is a fixed model, you peace thirty components together in a day, that's thirty peaces of merchandise out the door; management is now tasked with optimizing output from workers.
Today, a lot of work is more what I call, artistic. A software developer or engineer has to create an idea and apply it. This is a far cry from simply grabbing a screw and twisting it into a peace of metal; there is much more involved and worse there is no reasonable time frame or consistancy in production.
The management techniques, economists, the business classes in schools and universities have not evolved from an assembly line managment goals to techniques to accomodate artistic development.
IBM tried many years ago. They tried to pay a developer by how many lines of code were written, we all know this leads to utter failure in quality design and robustness.
My point is, most companies are NOT going to adopt this model of management. They do not make sense of permitting a worker to spend 20% of his time on a personal project, becuase to them, that's 20% of the time away from production of their interests. The math hasn't been developed, and frankly, everything todays managers and businessmen were taught in school about management and business is completely wrong in regards to dynamic production.
For once, I'd like to work for a company (perhaps running my own is the right answer) that allows me to give 100%.... to breach the rubicon... to fly to Australia[1]... to do it right.... and not to feel like a schmuck ... due to humiliations at the hands of office politics.
...
Frequently, one of two things happens in my experience in companies... well, one of three.
A: No room to do _anything_ innovative.
B: Do something innovative... be the pariah, that everybody hates.
C: Try to do something innovative, but, those "above" and to the side of you, are too busy, keeping their toys in their prams.
I think the only real answer, to *own* my joy (my coding if you will) is to stop trying to have people pay me for it... because it's twisted then...
I do it for joy... *companies* just suck... when you get right down to it.
I'm not trying to bleat... but, the most frequent obstacle, I've seen to getting things done.. and done well, is McPolitics... and serial responsibility dodging.
Second to that is a restrictive environment, which kills the joy for development... is in it's methods..... but
But, those jobs are almost always simple.
The only answer is to be a PHD... and never *work* again... just get fat at Bell Labs... *University* and have a nice life !
[1] Douglas Coupland reference, a 46 hour coding spree.
Google goes along the 'new economy' lines of thinking. If they make money as a company, everyone benefits, and since everyone benefits everyone stays and works together to benefit more. Think about working in a big corporation where it was a huge team, and everyone loved working there.
Done dreaming? Well, that's what GOOG wants to sell themselves as. If there were a company which had no politics, no minor empires, little ambition but to do a good job, and everyone was going to have enough for sure, that would be ideal. Collaboration is in the corporation's interest, and the interest of all the individuals involved because they all gain and feel their contributions are recognized and rewarded.
This is why people want a job at Google, not because they get time to develop what they want, but because the corporate culture is more open. As I develop Access VBScript to interact with FoxPro databases and wait for some moron to install Business Objects and give me enough access to the data mart to do the worthless Monthly Record Review reports noone looks at except to gauge their bonuses, (I am in QA) I think more and more that I want a job where I've got that kind of freedom, that kind of collaboration, that kind of workplace.
It's like being in the 90's all over again, only this time they're able to put the bar that much higher, and I wish I made the cut.
My little site.
What if your 20% is a videogame, IRC client, MUD, or new GUI/Window system?
Gleaning the Code!
Ugh. I'm going to slam my head in a car door now. Rad.
Does anyone know if the same is true in Texas?
The Internet is full. Go Away!!!
duh.
DNF is a 20% project
How long before he is fired from google? Like this other guy Mark Jen.
Prepare for the inevitable pink slip, bub.
Anyone know what vesion control or configuration management software they're using? It has to be something pretty powerful to handle a single repository of the size of Google's.
Murphy's law - "Anything that can go wrong, will." (Actually, this is Finagle's law, which in itself shows that Finagle
Google is well known for their Ph.D. hiring fetish; generally, people with Ph.D's have experience with doing directed research and projects. Would a company staffed with average programmers get the same benefit from having them "play?"
ANOTHER Google story? Seriously, guys, I can't remember the last time I checked Slashdot and there wasn't a Google story. Could you please be less of an advert/rumourmonger for Google and more.. well, more anything else? thanks.
Every fucking programmer in the universe is "encouraged" to do that. It's *always* part of the run-of-the-mill "software development policies" document of e-v-e-r-y single software companie in the universe and beyond.
It's really just too bad that Joe Programmer doesn't have a fucking clue what "re-use existing code" means...
(For me, software engineering is a career, not a job. So sue me.)
So does Google fire employees if they don't tow the party line? Apparently saying "no" in a forceful manner (no, hell no) can get you fired or at least a chit-chat with HR.
Seems "teamwork" around here actually means "don't rock the boat and don't challenge your coworkers or drill a vendor."
This topic somewhat reminds me of this:
http://www.infobear.com/howswdie.shtml
Windows Made Me This Way
How Software Companies Die
Windows Sources, March 1995, p. 208
By: Orson Scott Card
You can domesticate programmers the way beekeepers tame bees.
The environment that nutures creative programmers kills management and marketing types - and vice versa. Programming is the Great Game. It consumes you, body and soul. When you're caught up in it, nothing else matters. When you emerge into daylight, you might well discover that you're a hundred pounds overweight, your underwear is older than the average first grader, and judging from the number of pizza boxes lying around, it must be spring already. But you don't care, because your program runs, and the code is fast and clever and tight. You won. You're aware that some people think you're a nerd. So what? They're not players. They've never jousted with Windows or gone hand to hand with DOS. To them C++ is a decent grade, almost a B - not a language. They barely exist. Like soldiers or artists, you don't care about the opinions of civilians. You're building something intricate and fine. They'll never understand it.
Beekeeping
Here's the secret that every successful software company is based on: You can domesticate programmers the way beekeepers tame bees. You can't exactly communicate with them, but you can get them to swarm in one place and when they're not looking, you can carry off the honey. You keep these bees from stinging by paying them money. More money than they know what to do with. But that's less than you might think. You see, all these programmers keep hearing their fathers' voices in their heads saying "When are you going to join the real world?" All you have to pay them is enough money that they can answer (also in their heads) "Geez, Dad, I'm making more than you." On average, this is cheap. And you get them to stay in the hive by giving them other coders to swarm with. The only person whose praise matters is another programmer. Less-talented programmers will idolize them; evenly matched ones will challenge and goad one another; and if you want to get a good swarm, you make sure that you have at least one certified genius coder that they can all look up to, even if he glances at other people's code only long enough to sneer at it. He's a Player, thinks the junior programmer. He looked at my code. That is enough. If a software company provides such a hive, the coders will give up sleep, love, health, and clean laundry, while the company keeps the bulk of the money.
Out Of Control
Here's the problem that ends up killing company after company. All successful software companies had, as their dominant personality, a leader who nurtured programmers. But no company can keep such a leader forever. Either he cashes out, or he brings in management types who end up driving him out, or he changes and becomes a management type himself. One way or another, marketers get control. But...control of what? Instead of finding assembly lines of productive workers, they quickly discover that their product is produced by utterly unpredictable, uncooperative, disobedient, and worst of all, unattractive people who resist all attempts at management. Put them on a time clock, dress them in suits, and they become sullen and start sabotaging the product. Worst of all, you can sense that they are making fun of you with every word they say.
Smoked Out
The shock is greater for the coder, though. He suddenly finds that alien creatures control his life. Meetings, Schedules, Reports. And now someone demands that he PLAN all his programming and then stick to the plan, never improving, never tweaking, and never, never touching some other team's code. The lousy young programmer who once worshiped him is now his tyrannical boss, a position he got because he played golf with some sphincter i
Education is the silver bullet.
I worked in a place that allowed me to work on whatever I wanted (as long as it was related to what the company did). I could get whatever I needed like set top boxes, ipaqs, dvd players. What I developed, they were marketted.
First thing I did was port Mozilla to Nano-X, then get it running on an iPAQ. It was fun. The company however closed the Australian office (R&D) and I had to work elsewhere.
it is only after a long journey that you know the strength of the horse.
Lets not forget that Google is a complete anomaly, they were in the right place, at the right time, with the right algorithm. Since then, they have had no real competitive pressure, and they make plenty of money on that first idea to fund anything they want. They could easily all sit and work on their own projects 100% of the time, and Google would still be profitable.
Google is not the real world, is nothing like a normal company any way and so should not be compared to other companies in any way.
The day Google faces real competition in the search realm, expect them to become a normal company in every way in a real big hurry.
- Adam L. Beberg - The Cosm Project - http://www.mithral.com/
Rad.
From TFA
The intranet in Google is super transparent. Teams are actively encouraged to share the most intimate details of their projects with the rest of the company. This happens through tech talks, design docs, lunch table conversations, etc.
That is the advantage of being an ISV. In companies where you work under non-disclosure agreements with some other software provider, liberties are limited. (I know, that would not be the case if everyone in the world uses open-source, but that is not the case, yet). Yes, there will still be opportunities to share good ideas in the form of utilities and stuff, but there certainly are limits to what you can share with other teams without infringing on NDA.
Hell, a few companies I know (in particular software contract-companies), have different access cards for different groups - preventing physical access. Sometimes it is imposed by client. But many times it's just the wisdom(!) of the PHBs who impose policies like, everything will be shared on a "need-to-know" basis!
I'm much more funny, interesting and insightful than the moderators think
I'm not even going to go into the 20% thing, because that has been done to death. Except that is to make one observation - the 20% works at Google because the people they hire are good fits for the plan. There are a lot of people at other companies that might not know what to do with a self-directed 20% plan...
But there are a lot of other great ideas there as well. Everyone using the same codebase? Thank god you can finally look at any company code you want! Workers have to actually buy in to business plans instead of having to implement every crazy idea that comes down the pike? There's a breeze of fresh air a lot of companies could use.
But what ties all of these great ideas together is the greatest idea of all - all of them rely on the fundamental assumption that Google trusts its workers. When you work with people you trust and they in turn trust you, many great things can be done - as Google has shown.
Companies should ask at every step of the game if things they are doing show more, or less, trust in employees. Especially important to remember in the days of Sarbanes-Oxley when companies would cut of their own noses just to keep the auditors happy - even when they would have been happy without the drastic cosmetic alterations.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
This is costing somebody a funny point, but as somebody who did read the NKS book from cover to cover, including the copious notes, I can't let this popular but blatantly false rumour be repeated again unchallenged.
If Wolfram did anything that might be questionable it was largely cutting himself off from others who were working in the same areas for the decade he was predominantly focused on the research that went into the book. Yet it's obvious he wasn't expecting it to take more than ten years when he started and it obviously got to a point where getting it finished and out there became his dominant motivation.
Sure, he doesn't get everything right, and he makes some leaps that aren't all that convincing, but those faults are only a tiny fraction of the totality.
To me one of the most impressive things was the way he presented the background stories to all the key topics. Those I know a bit about were accurate enough that I can only presume the others were to.
The book is the way it is largely because he convinced himself that he was onto something significant that others had missed. However that something was certainly not, as neophites seem to assume, the general field of cellular automata, but rather his "Principle of Computational Equivalence"--an ambitious claim which he felt could only be presented in the context of substantial research.
-- Our systemic servants do not good masters make.
What good sources do you have for the adoption of a 40 hour work week as a quality control measure?
I had always imagined 40 hours to be the somewhat arbitrary point at which management, labour, and legislative negotiations arrived based on some other arbitrary calculations such as: dividing a 24 hour day in thirds, and dropping a day from a previous 6 day work schedule. I would be interested in knowing about any findings that 40 hours in a work week was a more optimal quality control point than 35 or 45 hours.
Hmmm... For a second there I thought we were talking about a typical university!
Hmmm... Universities don't make money (i.e. the margins are low). Hopefully this is not the fate of google.
So the latest crop of CS graduates is now worshipping Google, Apple, and Pixar the same way the previous group worshipped VA Research, Redhat, and Cobalt.
Given all the things these current hot companies do right and the previous hot companies did right, is anything about the current batch of hot companies a net improvement over the previous batch of hot companies or is this a different patch of the same ground being retreadded?
Salaries are a fraction of what they were in 2000 but maybe software development processes have improved. Pensions and health benefits are gone but now the company intranet is transparent. Dot com parties are gone but there's 20% time for personal projects. Is this round of companies really better than the last iteration?
Well, if you look at them and the upstream from those projects up to the company with regards to the education of those whom work there:
Gmail: Forever in beta, forever mired by that "50 perpetual invites" syndrome. Applies their search technology to your email.
Orkut: Why Stanford culture is better as a test case to study social interaction [gone wrong] versus their development of something to facilitate it. Little relation from what's seen except concepts to build up Orkut, mostly to defend it against the majority.
Google: Upstream of both projects, the search technology powers Gmail if not both.
Well, if you look at it - they only contain parts that are search related. The rest is signature work by Stanford, MIT, et al - innovation by absolute exclusion. Never mind the highly competent minds that come from the landlocked states and/or those not of the Ivory Tower philosophy. If these kind projects came from a search company with a Berkeley or Midwestern mindset, they'd not have as many of the ones with FOAF as a requirement to use given anything but the thumbs down.
"Forget the engineers." -Carly Fiorina, briber of MIT Technology Review.
This merely perpetuates the geek-boy fantasy that software development is the most important single thing to a company. No wonder they get mad at Microsoft--it's the most obvious of numerous counter-examples.
Sorry geeks, you're not as important as you think you are. And despite Mr. Card's rantings, companies neither live nor die by their software development alone.
Abe: I'll be deep in the cold cold ground before I recognize Missouri
That sounds a little ominous.
I'm curious here: Wouldn't there would be many instances where two employees complete for similar-themed side-projects? Or may be one employee plagiarising someone else's brilliant idea and implement it first (it would be fruitful for the company in the end -- but probably not for the employee with the original idea)?
How do companies like Google deal with above scenarios?
... 20% of our time in process?
I'd imagine they'd collaborate on the project together, combining the best of both person's ideas.
Fetch Text URL - Firefox Extension
they expect people to move to UTAH, use their empty offices, be provided with administrative and support services - and then share in the profit of their OS project with NOVL. They question is, what profit?
See link. http://biz.yahoo.com/prnews/050322/sftu077_3.html
Getting old fast, Shit!
heh, reminds me of a dilbert comic, where the PHB was said to motivate employees be rewardnig them by getting rid of something bad in thier corporate culture. The phb said alice didnthave to go to the team meeting this week. Just made me laugh. haha.
oh noes! my pr0ns
I'm just waiting for a Google employee to get fired for having a personal project that consists of scouring the 'net to download as much pr0n as possible for the programmer.
Manager: "Jones, what have you been working on?"
Jones: "A data collection project. Basically a stripped down thingy. It's a very stimulating project...."
Apple took ownership of some code developed by one of their engineers in his spare time. I think he had his own side business. The odd thing here is that Steve Jobs paid Andy Hertzfield a lot of money for some code he wrote in his spare time but their attitude towards this has apparently changed.
Given all this, I imagine that they still attract a lot of top notch talent.
"sweet dreams are made of this..."
ANKOS is in my reading queue but I have not quite gotten to it yet.
"sweet dreams are made of this..."