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.
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.."
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
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.
"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.
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.
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.
...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
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.
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.
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?"
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/
The internet.
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.
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?
Heh, just took a look at it. Whoever is writing the site just sounds jealous to me. The background should probably be green and not red ;).
If that's the worst they can come up about Google then Google is not doing too badly.
Just compare it with the plentiful crappy companies for instance. Or even just an average company.
For laughs, compare it with HP in the days of Ms Fiorina...