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."
You're paid to do it on company time, though. If you want to own it, do it on your own time and pick something else for company time.
"It felt almost as good as stealing cars from grandma." -- Margaret Thatcher, probably.
It's not just getting paid to do it - having access to Google's codebase and infrastructure would allow you to do "pet projects" that simply wouldn't be possible on your own.
Get ready, this may come as a shock, but some people actually do contribute to their employer's welfare, because they realize what's good for their employer is good for them. I can see where people who feel unfriendly to an employer would develop their own special projects at home, especially if morale has sunk pretty low at the workplace or the company doesn't seem to be fairing well and the employee only has a job to lose, rather than an idea which would be sold off in a portfolio of patents/copyrights.
As many people at Google have shares in the company and stand to gain much more, I can see where they may kick in some good ideas, especially if they wouldn't have much of an opportunity of developing them further wihtout quitting and raising some venture capital and hiring a bunch of employees (who may wish to withhold their own best efforts) into a startup.
A feeling of having made the same mistake before: Deja Foobar
Exactly! So when I needed to add some database capability to a program at work, the first thing I did was to design and implement an ACID compliant database with replication support!
Smart people find wheels that haven't been invented.
Don't think of it as a flame---it's more like an argument that does 3d6 fire damage
Google probably doesn't care about how a young programmer could make a name for himself. They just want to create the most productive environment possible, not one in which code has to be rewritten dozens or hundreds of times. As for a smart programmer having a better way to do something, if this is so, she's likely to go ahead and change something in the universal code base, since everything is apparently transparent.
Sometimes you've gotta roll the hard six.
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.
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.
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 think the idea is to get people to play with code on their own ideas, without corporate overhead.
T Money
World Domination with a plastic spoon since 1984
A couple grand bonus is nothing to scoff at if your idea wouldn't have made it to daylight without any google code, or the time your were paid for, or the other people to help you, or Google's name attached.
Think about it, some guy programs a Dock like program.
That's nothing new, and certainly no one really cares.
Untill google's name is attached to it. Then it's front page slashdot and linked to all over the web.
Never underestimate the power a brand name can give to your pet project.
T Money
World Domination with a plastic spoon since 1984
It's a personal project in the sense that it's self-directed. It's not some PHB saying "code this", but you doing *whatever the hell you want.* It's not personal in the sense that you own it.
Computers are useless. They can only give you answers.
-- Pablo Picasso
But the thing is... you're getting paid, to do something that you want. If there's nothing that you want to do that you aren't willing to relinquish copyright on, then do something that you're not interested in. At the very worst, it's no worse than working at your average business, where you work 100% of the time on some specific corporate project; at best, it's a lot better, since you have a degree of freedom.
I have trouble comprehending how people here feel that it's a bad thing to give people a choice on what project they're going to work on but not have ownership over, as opposed to having no choice as to what project they're going to work on and not have ownership over.
"It felt almost as good as stealing cars from grandma." -- Margaret Thatcher, probably.
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.
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/