December 28, 2005
Weak Willed and Sleepy
If you can’t get yourself out of bed when your alarm goes off, this is likely due to a lack of self-discipline. If you have enough self-discipline, you’ll get out of bed no matter what. Motivation can also help, but motivation is short lived and may only last a few days. Discipline is like a muscle. The more you build it, the more you can rely on it. Everyone has some discipline (can you hold your breath?), but not everyone develops it. There are a lot of ways to build discipline… But basically it comes down to taking on little challenges, conquering them, and gradually progressing to bigger ones. It’s like progressive weight training. As your self-discipline gets stronger, a challenge like getting out of bed at a certain time will eventually become trivially easy. But if your self-discipline has atrophied, it can seem an almost insurmountable hurdle.
December 14, 2005
KDE: Unit Test Tools
I have previously discussed KDExecutor a automated unit test tool for scripted GUI application testing. Well, it seems that here is another tool that exists to do automated platform testing. Squish is a tool created by FrogLogic that supports all Qt platforms out-of-the-box. Squish seems to use Python scripts and costs betwen $150 and $800.
December 11, 2005
Reducing Faults in Code
Just bookmarking an article that I intend to check out. It is suppost to cover codeing guidlines and how they can be used to reduce code faults.
December 7, 2005
KDE: Desktop Search Technology
Couple links to Desktop Search Tools:
December 6, 2005
How to use OpenOffice’s database tool is a useful tutorial on setting up, using, and developing with Open Office 2.0 Access replacement.
December 5, 2005
I thought this article by Google’s Eric Schmidt and Hal Varian was really solid so I am linking to it and posting some of the more important parts of the article. Here is Google: Ten Golden Rules
By Eric Schmidt and Hal Varian
Updated: 11:33 a.m. ET Dec. 2, 2005
Issues 2006 – At google, we think business guru Peter Drucker well understood how to manage the new breed of “knowledge workers.” After all, Drucker invented the term in 1959. He says knowledge workers believe they are paid to be effective, not to work 9 to 5, and that smart businesses will “strip away everything that gets in their knowledge workers’ way.” Those that succeed will attract the best performers, securing “the single biggest factor for competitive advantage in the next 25 years.”
At Google, we seek that advantage. The ongoing debate about whether big corporations are mismanaging knowledge workers is one we take very seriously, because those who don’t get it right will be gone. We’ve drawn on good ideas we’ve seen elsewhere and come up with a few of our own. What follows are seven key principles we use to make knowledge workers most effective. As in most technology companies, many of our employees are engineers, so we will focus on that particular group, but many of the policies apply to all sorts of knowledge workers.
* Hire by committee. Virtually every person who interviews at Google talks to at least half-a-dozen interviewers, drawn from both management and potential colleagues. Everyone’s opinion counts, making the hiring process more fair and pushing standards higher. Yes, it takes longer, but we think it’s worth it. If you hire great people and involve them intensively in the hiring process, you’ll get more great people. We started building this positive feedback loop when the company was founded, and it has had a huge payoff.
* Cater to their every need. As Drucker says, the goal is to “strip away everything that gets in their way.” We provide a standard package of fringe benefits, but on top of that are first-class dining facilities, gyms, laundry rooms, massage rooms, haircuts, carwashes, dry cleaning, commuting buses—just about anything a hardworking engineer might want. Let’s face it: programmers want to program, they don’t want to do their laundry. So we make it easy for them to do both.
* Pack them in. Almost every project at Google is a team project, and teams have to communicate. The best way to make communication easy is to put team members within a few feet of each other. The result is that virtually everyone at Google shares an office. This way, when a programmer needs to confer with a colleague, there is immediate access: no telephone tag, no e-mail delay, no waiting for a reply. Of course, there are many conference rooms that people can use for detailed discussion so that they don’t disturb their office mates. Even the CEO shared an office at Google for several months after he arrived. Sitting next to a knowledgeable employee was an incredibly effective educational experience.
* Make coordination easy. Because all members of a team are within a few feet of one another, it is relatively easy to coordinate projects. In addition to physical proximity, each Googler e-mails a snippet once a week to his work group describing what he has done in the last week. This gives everyone an easy way to track what everyone else is up to, making it much easier to monitor progress and synchronize work flow.
* Eat your own dog food. Google workers use the company’s tools intensively. The most obvious tool is the Web, with an internal Web page for virtually every project and every task. They are all indexed and available to project participants on an as-needed basis. We also make extensive use of other information-management tools, some of which are eventually rolled out as products. For example, one of the reasons for Gmail’s success is that it was beta tested within the company for many months. The use of e-mail is critical within the organization, so Gmail had to be tuned to satisfy the needs of some of our most demanding customers—our knowledge workers.
* Encourage creativity. Google engineers can spend up to 20 percent of their time on a project of their choice. There is, of course, an approval process and some oversight, but basically we want to allow creative people to be creative. One of our not-so-secret weapons is our ideas mailing list: a companywide suggestion box where people can post ideas ranging from parking procedures to the next killer app. The software allows for everyone to comment on and rate ideas, permitting the best ideas to percolate to the top.
* Strive to reach consensus. Modern corporate mythology has the unique decision maker as hero. We adhere to the view that the “many are smarter than the few,” and solicit a broad base of views before reaching any decision. At Google, the role of the manager is that of an aggregator of viewpoints, not the dictator of decisions. Building a consensus sometimes takes longer, but always produces a more committed team and better decisions
* Don’t be evil. Much has been written about Google’s slogan, but we really try to live by it, particularly in the ranks of management. As in every organization, people are passionate about their views. But nobody throws chairs at Google, unlike management practices used at some other well-known technology companies. We foster to create an atmosphere of tolerance and respect, not a company full of yes men.
* Data drive decisions. At Google, almost every decision is based on quantitative analysis. We’ve built systems to manage information, not only on the Internet at large, but also internally. We have dozens of analysts who plow through the data, analyze performance metrics and plot trends to keep us as up to date as possible. We have a raft of online “dashboards” for every business we work in that provide up-to-the-minute snapshots of where we are.
* Communicate effectively. Every Friday we have an all-hands assembly with announcements, introductions and questions and answers. (Oh, yes, and some food and drink.) This allows management to stay in touch with what our knowledge workers are thinking and vice versa. Google has remarkably broad dissemination of information within the organization and remarkably few serious leaks. Contrary to what some might think, we believe it is the first fact that causes the second: a trusted work force is a loyal work force.
Of course, we’re not the only company that follows these practices. Many of them are common around Silicon Valley. And we recognize that our management techniques have to evolve as the company grows. There are several problems that we (and other companies like us) face.
One is “techno arrogance.” Engineers are competitive by nature and they have low tolerance for those who aren’t as driven or as knowledgeable as they are. But almost all engineering projects are team projects; having a smart but inflexible person on a team can be deadly. If we see a recommendation that says “smartest person I’ve ever known” combined with “I wouldn’t ever want to work with them again,” we decline to make them an offer. One reason for extensive peer interviews is to make sure that teams are enthused about the new team member. Many of our best people are terrific role models in terms of team building, and we want to keep it that way.
A related problem is the not-invented-here syndrome. A good engineer is always convinced that he can build a better system than the existing ones, leading to the refrain “Don’t buy it, build it.” Well, they may be right, but we have to focus on those projects with the biggest payoff. Sometimes this means going outside the company for products and services.
Another issue that we will face in the coming years is the maturation of the company, the industry and our work force. We, along with other firms in this industry, are in a rapid growth stage now, but that won’t go on forever. Some of our new workers are fresh out of college; others have families and extensive job experience. Their interests and needs are different. We need to provide benefits and a work environment that will be attractive to all ages.
A final issue is making sure that as Google grows, communication procedures keep pace with our increasing scale. The Friday meetings are great for the Mountain View team, but Google is now a global organization.
We have focused on managing creativity and innovation, but that’s not the only thing that matters at Google. We also have to manage day-to-day operations, and it’s not an easy task. We are building technology infrastructure that is dramatically larger, more complex and more demanding than anything that has been built in history. Those who plan, implement and maintain these systems, which are growing to meet a constantly rising set of demands, have to have strong incentives, too. At Google, operations are not just an afterthought: they are critical to the company’s success, and we want to have just as much effort and creativity in this domain as in new product development.
Schmidt is CEO of Google. Varian is a Berkeley professor and consultant with Google.
December 4, 2005
KDE: Shared vs Open
Shared specifications and shared standards are an admirable goal as long as the “standards” are not acting as limitations to the advancement of a given technology. This was the problem that KDE ran into with the use of Corba. It was a open and shared standard used by KDE (and Gnome) in its early development. But we quickly discovered that it became a nightmare to manage/extend to the more advanced uses that we wanted to see KDE move towards. The decision was made (and lots of “shared standard” developers SCREAMED about the change) to switch to a custom KDE specification now known as KParts. History has shown that decision to use KParts was the correct one, as KDE would NOT have progressed to the level it has using Corba.
As long as the standard is good for KDE development and advances our ability to provide application solutions to users (and developers) then I am all for shared standards. But the moment those standards hold back KDE development in the interest of some “perceived” value from shared specifications. We can all agree on standards up until those standards have the net result of holding-back all of our development efforts equally.
Think of specifications as food for software. Good standards will help you (or your software project) grow strong and healthy. Bad standards will make your application bloated, lethargic, and will eventually be the cause of most of your application “sickness.” Standards are NOT more important than the applications (arguably they are part of the application, but a part is seldom more important than the whole.) Because they are NOT more important than the applications themselves, comments like this verge on being insulting.
The fact that KDE gets appreciated this much and that KDE is the market leader in UNIX and Linux desktops today is negligible compared to the extremely important effort to create a single specification of the free desktop environment.
Also, I think too many people get shared specifications confused with open specifications. KDE (and Gnome for that matter) will ALWAYS have open specifications because of the very nature of F/OSS. Open standards are very very important, shared standards are less important. One could argue that Microsoft DOC format is a shared standard because just about every office package in existence tries to write and save to it. That doesn’t make it an open standard.
December 2, 2005
Quick Link Ubuntu
All about Linux: 10 Things that make Ubuntu a Neophyte’s Distribution is a quick article about some of the things that make Ubuntu easy to use. Most of these things are already available on KDE centric distrobutions but the list is useful from a reference standpoint.