Thursday, January 12, 2006

Ajax: A New Approach to Web Applications

If anything about current interaction design can be called “glamorous,” it’s creating Web applications. After all, when was the last time you heard someone rave about the interaction design of a product that wasn’t on the Web? (Okay, besides the iPod.) All the cool, innovative new projects are online.

Despite this, Web interaction designers can’t help but feel a little envious of our colleagues who create desktop software. Desktop applications have a richness and responsiveness that has seemed out of reach on the Web. The same simplicity that enabled the Web’s rapid proliferation also creates a gap between the experiences we can provide and the experiences users can get from a desktop application.

That gap is closing. Take a look at Google Suggest. Watch the way the suggested terms update as you type, almost instantly. Now look at Google Maps. Zoom in. Use your cursor to grab the map and scroll around a bit. Again, everything happens almost instantly, with no waiting for pages to reload.

Google Suggest and Google Maps are two examples of a new approach to web applications that we at Adaptive Path have been calling Ajax. The name is shorthand for Asynchronous JavaScript + XML, and it represents a fundamental shift in what’s possible on the Web.

Defining Ajax

Ajax isn’t a technology. It’s really several technologies, each flourishing in its own right, coming together in powerful new ways. Ajax incorporates:

The classic web application model works like this: Most user actions in the interface trigger an HTTP request back to a web server. The server does some processing — retrieving data, crunching numbers, talking to various legacy systems — and then returns an HTML page to the client. It’s a model adapted from the Web’s original use as a hypertext medium, but as fans of The Elements of User Experience know, what makes the Web good for hypertext doesn’t necessarily make it good for software applications.

Ajax Overview 1

Figure 1: The traditional model for web applications (left) compared to the Ajax model (right).

This approach makes a lot of technical sense, but it doesn’t make for a great user experience. While the server is doing its thing, what’s the user doing? That’s right, waiting. And at every step in a task, the user waits some more.

Obviously, if we were designing the Web from scratch for applications, we wouldn’t make users wait around. Once an interface is loaded, why should the user interaction come to a halt every time the application needs something from the server? In fact, why should the user see the application go to the server at all?

How Ajax is Different

An Ajax application eliminates the start-stop-start-stop nature of interaction on the Web by introducing an intermediary — an Ajax engine — between the user and the server. It seems like adding a layer to the application would make it less responsive, but the opposite is true.

Instead of loading a webpage, at the start of the session, the browser loads an Ajax engine — written in JavaScript and usually tucked away in a hidden frame. This engine is responsible for both rendering the interface the user sees and communicating with the server on the user’s behalf. The Ajax engine allows the user’s interaction with the application to happen asynchronously — independent of communication with the server. So the user is never staring at a blank browser window and an hourglass icon, waiting around for the server to do something.

Ajax Overview 2

Figure 2: The synchronous interaction pattern of a traditional web application (top) compared with the asynchronous pattern of an Ajax application (bottom).

Every user action that normally would generate an HTTP request takes the form of a JavaScript call to the Ajax engine instead. Any response to a user action that doesn’t require a trip back to the server — such as simple data validation, editing data in memory, and even some navigation — the engine handles on its own. If the engine needs something from the server in order to respond — if it’s submitting data for processing, loading additional interface code, or retrieving new data — the engine makes those requests asynchronously, usually using XML, without stalling a user’s interaction with the application.

Who’s Using Ajax

Google is making a huge investment in developing the Ajax approach. All of the major products Google has introduced over the last year — Orkut, Gmail, the latest beta version of Google Groups, Google Suggest, and Google Maps — are Ajax applications. (For more on the technical nuts and bolts of these Ajax implementations, check out these excellent analyses of Gmail, Google Suggest, and Google Maps.) Others are following suit: many of the features that people love in Flickr depend on Ajax, and Amazon’s A9.com search engine applies similar techniques.

These projects demonstrate that Ajax is not only technically sound, but also practical for real-world applications. This isn’t another technology that only works in a laboratory. And Ajax applications can be any size, from the very simple, single-function Google Suggest to the very complex and sophisticated Google Maps.

At Adaptive Path, we’ve been doing our own work with Ajax over the last several months, and we’re realizing we’ve only scratched the surface of the rich interaction and responsiveness that Ajax applications can provide. Ajax is an important development for Web applications, and its importance is only going to grow. And because there are so many developers out there who already know how to use these technologies, we expect to see many more organizations following Google’s lead in reaping the competitive advantage Ajax provides.

Moving Forward

The biggest challenges in creating Ajax applications are not technical. The core Ajax technologies are mature, stable, and well understood. Instead, the challenges are for the designers of these applications: to forget what we think we know about the limitations of the Web, and begin to imagine a wider, richer range of possibilities.

It’s going to be fun.

Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Action based and component based frameworks

Many frameworks offer support for developing web applications. Allmost all of them implement the MVC pattern. They can be divided into two groups: action based and component based frameworks. Struts has been the leading action-based framework for years but is now ‘threatened’ by component-based frameworks like Wicket, Tapestry and the future JEE standard JSF. Although JSF is pushed very hard and backed by most vendors, it seems clear that other frameworks are certainly not dead and probably will thrive as well. This will give us a choice to select the tools that fit our needs best.

....

WebWork

Webwork is an example of an action based web framework. It’s not only comparable with Struts, but it even may be considered the future of Struts. Recently the announcement has been made that Struts and Webwork will merge to form Struts TI.
At the heart of Webworks lies XWork, a Command Pattern framework with support for inversion of controle/dependancy injection,interception,transparent type conversion,validation,expression language etc. Webwork can be considered to be the web front-end extension, but it does not tie you down to one view technology, you can use jsp’s, FreeMarker, JasperReports, AJAX and more.
It was my first experience with WebWork and it was a good one. The presenter really convinced me of the quality and the possibilities of this framework and I am very interested to try it out. I have used Struts a lot and despite its shortcomings it is still a very good framework and I can imagine that together with Webwork it’ll have a bright future.

Struts-Shale

Although it is called the ‘next Struts’, Shale has nothing to do with what the speaker refers to Struts classic. It only bears the name for marketing purposes. Shale is completely new and is based on JSF. Shale ‘extends’ JSF with extra functionalities like Validation, Dialogs, AJAX support, reusable views, Spring integration and a test framework. David Geary is a very gifted and funny speaker and he was constantly switching between his slides and his demo’s. He showed how easily you can incorporate client side and server side validation (or both), how a dialog/webflow is implemented and how you can combine it with AJAX technology. One of the many interesting features is the run-time HTML to JSF conversion possibilities (I suppose using the Clay component). It enables you to separate design from business logic. The page is completely defined in HTML, with the addition of a jsfid attribute for each element. The runtime component for each element is defined in a configurationfile. This implementation comes closest to the jsp promise to separate the graphical department from the java developers (although Tapestry, from what I heard, seems to offer a similar mechanism). Although probably not suitable for all implementations, it is certainly a very interesting concept.
It was a very entertaining session and a good introduction to the great things we can expect from JSF.

Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Open Source Web Frameworks in Java

Struts

The core of the Struts framework is a flexible control layer based on standard technologies like Java Servlets, JavaBeans, ResourceBundles, and XML, as well as various Jakarta Commons packages. Struts encourages application architectures based on the Model 2 approach, a variation of the classic Model-View-Controller (MVC) design paradigm.

Go To Struts

Turbine

Turbine is a servlet based framework that allows experienced Java developers to quickly build secure web applications. Turbine is an excellent choice for developing applications that make use of a services-oriented architecture. Some of the functionality provided with Turbine includes a security management system, a scheduling service, XML-defined form validation server, and an XML-RPC service for web services. It is a simple task to create new services particular to your application.

Go To Turbine

Tapestry

Tapestry is a powerful, open-source, all-Java framework for creating leading edge web applications in Java. Tapestry reconceptualizes web application development in terms of objects, methods and properties instead of URLs and query parameters. Tapestry is an alternative to scripting environments such as JavaServer Pages or Velocity. Tapestry goes far further, providing a complete framework for creating extremely dynamic applications with minimal amounts of coding.

Go To Tapestry

WebWork

WebWork is a web application framework for J2EE. It is based on a concept called "Pull HMVC" (Pull Hierarchical Model View Controller).

Go To WebWork

Cocoon

Apache Cocoon is a web development framework built around the concepts of separation of concerns and component-based web development. Cocoon implements these concepts around the notion of 'component pipelines', each component on the pipeline specializing on a particular operation. This makes it possible to use a Lego(tm)-like approach in building web solutions, hooking together components into pipelines without any required programming.

Go To Cocoon

Spring

Spring is a layered Java/J2EE application framework, based on code published in Expert One-on-One J2EE Design and Development

Go To Spring

Maverick

Maverick is a Model-View-Controller (aka "Model 2") framework for web publishing using Java and J2EE. It is a minimalist framework which focuses solely on MVC logic, allowing you to generate presentation using a variety of templating and transformation technologies.

Go To Maverick

Echo

Echo is a framework for developing object-oriented, event-driven Web applications. Echo removes the developer from having to think in terms of "page-based" applications and enables him/her to develop applications using the conventional object-oriented and event-driven paradigm for user interface development.

Go To Echo

SOFIA

Conceptually, SOFIA is similar to other J2EE MVC open source frameworks, like Apache Struts. But SOFIA sets a new standard for Java development by delivering so much more in a framework matching best-of-breed tools integration with robust JSP class and tag libraries. SOFIA shortens application development time on the strength of its visual development capabilities and pre-built Java components that dramatically simplify coding.

Go To SOFIA

Verge

The Verge Framework is an open source J2EE application framework written entirely in Java using only the standard J2EE APIs. This project aims to develop and promote a highly flexible and extensible framework for building enterprise applications.

Go To Verge

Anvil

Anvil is a Java based server environment and object oriented programming language with templating support, being especially well-suited to for web applications.

Go To Anvil

Jaffa

Jaffa (Java Application Framework For All) is an enterprise-focused Java framework for rapid application development. It provides a complete Java Web application development stack, extending exsiting projects like Tomcat and Struts at the frontend with MVC-based web widgets, all the way through to a high-performance lightweight O/R persistence engine, with plenty of rich features in between including rules engines, declarative application, and data security.

Go To Jaffa

Japple

Japple is a rapid application development environment for building web applications and services. Built on the JavaTM2 Platform and open-standards, Japple allows you to develop and deploy web applications faster, easier and more efficiently than traditional methods.

Go To Japple

JPublish

JPublish is a powerful web publishing system designed to ensure a clean separation of developer roles. JPublish includes support for multiple templating engines, including Jakarta Apache's Velocity, FreeMarker and WebMacro. JPublish supports numerous scripting languages including Python, BeanShell, and JavaScript. JPublish is modular and provides for easy extensibility.

Go To JPublish

Jucas

Jucas is a web-framework which brings together the pull MVC concept with component orientated design GUI programming.

Go To Jucas

MyFaces

MyFaces is an implementation of JavaServer(tm) Faces (JSR 127), a new and upcoming web application framework that accomplishes the MVC paradigm. It is comparable to the well-known Struts Framework but has features and concepts that are beyond those of Struts.

Go To MyFaces

WebOnSwing

WebOnSwing is a revolutionary multiple environment application framework that allows you to create web applications in the same way you develope a desktop one. You dont need to use JSP files, special tags, XML files, requests, posts, etc. Everything is Java and pure HTML files that comes directly from the graphic designer. This framework constructs and handles html pages with Swing components, allowing to use MVC architecture and all the facilities provided by Swing in the web.

Go To WebOnSwing

Chrysalis

Chrysalis is a Java web development framework. It has a different focus from most Model-View-Controller (MVC) web frameworks. Chrysalis controllers resemble normal Java classes with multiple methods. Client request URLs are mapped to each controller method.

Go To Chrysalis

VRaptor

VRaptor is a MVC web framework. It is highly based on the Inversion of Control principles, using constructor injection to decouple your components from your business logic classes.

Go To VRaptor

Swinglets

Program your JPS & Servlets like you program your Swing components. Swinglets is a server side component library that uses an identical design to Swing. Swinglets has look and feels for HTML, Java Script and WML. The Components, Models, Renderers, and LookAndFeels are very similar. It has Swing event handling too. In fact Swinglets actually uses the Swing models (e.g. TableModel). This means you can take your existing models and start working with Servlets straight away. It's just about as close to a standard as you can get without it actually coming from Sun themselves.

Go To Swinglets

Millstone

a nice alternative to struts like framework you do not need to xrite a signle html line

Go To Millstone

Wicket

Wicket is a Java web application framework that takes simplicity, separation of concerns and ease of development to a whole new level. Wicket pages can be mocked up, previewed and later revised using standard WYSIWYG HTML design tools. Dynamic content processing and form handling is all handled in Java code using a Swing-like component model backed by POJO data beans that can easily be persisted with Hibernate.

Go To Wicket

SwingWeb

Swingweb is an implementation of AWT toolkit that enables AWT/Swing application to be operating inside a web container and presented as a web application to the web browser, purely in HTML/CSS/javascript. There's no code conversion required for the swing application to run in the SwingWeb environment. Some of the features of SwingWeb include the following:

* Support web-environment with multiple concurrent application sessions
* Component-oriented architecture that allows developer to enable existing swing component to web environment easily
* Support common AWT/Swing components in java.awt.
* and javax.swing.
*
* Support all component layouts in jdk
* Highly configurable use of jxp template for component presentation

Go To SwingWeb

Barracuda

Barracuda is an Open-Source Presentation Framework (LGPL) designed to make it easier to build web apps by providing a simple yet powerful Server-Side Component Model that makes it easy to manipulate DOM structures using proven MVC patterns like you'd find in Swing. With this newest release, you can now use Jivan in addition to XMLC to load and render your DOM templates.

Go To Barracuda

RIFE

RIFE offers an alternative approach to web application development and design. It builds upon the Java platform, but offers all required tools and APIs to implement and perform all common website related tasks in a fast, intuitive and consistent manner. RIFE has been designed for perfect separation of tasks during a development cycle. Every developer, dba and designer only has to focus on his own tasks. At any moment the work can be effortlessly integrated with the work of the rest of the team. This results in a loosely coupled and very robust system. One can make incremental improvements with little or no risk of unwanted side-effects elsewhere in the system. RIFE is composed out of a large collection of modular parts, which include:

* web application engine,
* integrated web continuations,
* customizable multi-format template engine (html, xml, sql, java, txt, ...)
* support for template content transforming through for example XSLT,
* authentication framework,
* database query builders,
* simple persistance layer,
* fault-tolerant JDBC wrappers and connection pooling,
* web-oriented database utilities,
* central data repository,
* cron-like scheduler,
* configuration framework. The central part is the engine which formalizes all aspects of dynamic web development. It graciously solves all doubt, confusion and maintenance problems of HTTP's statelessness and liberal CGI interface.

Go To RIFE

DWR

DWR is AJAX and XMLHttpRequest made easy. It makes it simple to call Java on the server directly from Javascript in the browser marshalling all the parameters and return values. It gets rid of almost all the boiler plate code between the web browser and your Java code. interaction diagram DWR helps you in producing highly interactive web-sites by providing some Javascript libraries to help with DHTML and by giving you a set of examples to copy from.

Go To DWR

JSPWidget

JSPWidget is a JSP Framework that provides event-driven,view state retained,server-side GUI controls to make JSP development as intuitive as in traditional client forms or in client-based Web applications.

Go To JSPWidget

JOSSO

JOSSO, or Java Open Single Sign-On, is an open source J2EE-based SSO infrastructure aimed to provide a solution for centralized platform neutral user authentication.

Go To JOSSO

JAT

JAT is a flexible Java base-framework which can be easily extended to improve projects start-up time. JAT allows to build Web applications (J2EE) or standalone application (server, batch, etc.). JAT supplies the main basic functionalities of any Java application, such as:

* High Business Object abstraction
* Integration facilities (provided for DBMS, LDAP and open to any software product)
* Authentication and user privileges management
* MVC pattern implementation (with privileges management and page flow control)
* HTML layout structure management (header, footer, menu, etc.)
* HTML dynamic contents and facilities (form, report, paging)
* Logging feautures
* Help on-line utility
* High configuration of all described functionalities
* Administration and configuration GUI

Go To JAT

OpenXava

XML / Java Framework to develop J2EE business applications rapidly and easily. It is based in business components defined with XML. Feature rich and flexible since is used for years to create real business applications.

Go To OpenXava

Stripes

Stripes is a Java web framework that makes web development as easy as it should be. It requires zero external configuration beyond the registration of one servlet and one filter. Stripes includes simple yet powerful solutions to common problems such as indexed properties, multi-event forms, localization and use of domain objects in the web tier. All of this in a compact framework with hardly any dependencies!

Go To Stripes

Click

Click is a J2EE web application framework created for commercial Java developers. Click Highlights

* Very easy to learn
* Component and Page Oriented design
* Event base programming model
* Automatic form validation
* Page templating
* Velocity page rendering
* Superb error reporting
* High performance The design philosophy behind Click is best summarized in the Swedish word lagom which translates to not too little or too much, but optimal.

Go To Click

ZK

ZK is an AJAX-based, event-driven, XUL-compliant, all Java framework for enabling Web applications to have the rich user experiences. With intuitive event-driven model, you represent your application in feature-rich XUL components, and manipulate these components by listening to events triggered by users, as simple as you did for years in desktop applications. No JavaScript. No replication of business logic at the clients. No proprietary components. No compilation. ZK works with existent frameworks and technologies, such as JSF and Portals, so the pace of adapting it is all under your control.

Go To ZK

Caramba

The caramba framework is built from bottom to top with one main goal: creating Responsive, Rich Internet Applications. With the AJAX technology we could already achieve this, but it was hard to debug, error prone and time intensive to make it work. We are sure that simplicity can be achieved by following the event driven architecture: Caramba is 100% event driven, so very, very easy to use. Using Caramba makes it possible to make fancy, responsive web-applications without having to write a single line of JavaScript. You don't need to learn another language. Just the good old java syntax and JSP, that's all you need to know to get started.

Go To Caramba

wingS

wingS is a component based web framework resembling the Java Swing API with its MVC paradigm and event oriented design principles. It utilizes the models, events, and event listeners of Swing and organizes the components as a hierarchy of containers with layout managers. Version 2.0 comes with a completly rewritten rendering subsystem focusing on optimal stylability via CSS and new features like Drag & Drop support, context menus and Server-side code execution (AJAX). Selected features of wingS 2.0 are:

* Comprehensive set of widgets including trees, tables, tabbed panes menus and more.
* Highly flexible dynamic layout managers
* Drag & Drop support
* Component context menus and tooltips
* Handling of browser back navigation
* Improved styleability via CSS The distribution contains an extensive user documentation and various demo applications also available >>online. wingS is released under the LGPL licence. PermaLink

Go To wingS



See also Open Source J2EE Frameworks

Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Tuesday, January 10, 2006

Mastering recursive programming

Recursion is a tool not often used by imperative language developers, because it is thought to be slow and to waste space, but as the author demonstrates, there are several techniques that can be used to minimize or eliminate these problems. He introduces the concept of recursion and tackle recursive programming patterns, examining how they can be used to write provably correct programs. Examples are in Scheme and C.

For new computer science students, the concept of recursive programming is often difficult. Recursive thinking is difficult because it almost seems like circular reasoning. It's also not an intuitive process; when we give instructions to other people, we rarely direct them recursively.

For those of you who are new to computer programming, here's a simple definition of recursion: Recursion occurs when a function calls itself directly or indirectly.

An article on Recursive programming

Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

J3Unit - Unit Testing JavaScript

J3Unit is an object-oriented unit testing framework for JavaScript. J3Unit runs JavaScript tests directly in the web browser and can be automated using JUnit and Jetty. J3Unit builds on previous work by JSUnit and Script.aculo.us to provide a better way to automate JavaScript unit tests. Object-oriented JavaScript unit tests are written using the Script.aculo.us Test.Unit.Runner object, which is in turn built upon the prototype JavaScript library.

J3Unit can be downloaded from sourceforge.net. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

How to add a Google Map to any web page in less than 10 minutes

Most people really like the embedded Google Maps, but don't know how easy it is to add them to any page. I've had a few people ask me how it is done. With a little bit of HTML knowledge, anyone can quickly have a map up and running in just a few minutes.

Here is an example of how you can add a map to any contact us page or blog quickly and easily. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Monday, January 09, 2006

10 Amazing Architecture Wonders of the New China

China's current building boom is doing more than sucking up the world's supply of steel, it's creating a stage for some of today's boldest architecture and engineering. Take a tour of the 10 of the most intriguing examples. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

FREE Typing Test

Another cool site to find what your typing speed is. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Java-based Google logo

This Java-based Google logo interacts with your cursor. Source code included. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

How to use HTML tables properly

You should avoid using tables for layout, but that does not mean you should avoid using tables for their intended purpose. When marking up tabular data in HTML, tables are what should be used. This article explains how to make HTML data tables accessible. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Cool Optical Illusion

Three different optical illusions from one image. Very cool. This should be proof enough, we don't always see what we think we see. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Take control of your body

And learn these 18 tricks which can help you overcome most adverse situations with ease. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Secret RSS Feed for Microsoft Downloads

How to always have the latest information regarding Microsoft’s downloads. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

FINALLY! The coolest mouse...that is actually useful!

Finally, an external cordless mouse for laptops...that fits into your PCMCIA slot for charging...and it is bluetooth! Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

The Problematic Internet Explorer

We've heard it time and time again. But as a visual learner, I found this article and exercise to be an incredible example of the vast differences between Internet Explorer and Firefox. It is plain to see the outcome if you just view the example page in Firefox, then Internet Explorer. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Worth1000.com Picture of the Day

A gallery of some of the most skillfully photoshopped images. Updated daily (obviously). Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Free Medical Books

A variety of full text books available online and sorted by specialty. The unrestricted access to scientific knowledge will have a major impact on medical practice. This site offers free access to medical books over the Internet. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Learning to use Regular Expressions

This tutorial was first published by IBM developerWorks. This version contains a few minor corrections that readers have suggested since the original publication. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Linux Tutorial - Linux Networking

This tutorial covers TCP/IP networking and system configuration basics. Linux can support multiple network devices. The device names are numbered and begin at zero and count upwards. For example, a computer running two ethernet cards will have two devices labeled /dev/eth0 and /dev/eth1. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

The 6 Myths Of Creativity

Creativity.

These days, there's hardly a mission statement that doesn't herald it, or a CEO who doesn't laud it. And yet despite all of the attention that business creativity has won over the past few years, maddeningly little is known about day-to-day innovation in the workplace. Where do breakthrough ideas come from? What kind of work environment allows them to flourish? What can leaders do to sustain the stimulants to creativity -- and break through the barriers?

Teresa Amabile has been grappling with those questions for nearly 30 years. Amabile, who heads the Entrepreneurial Management Unit at Harvard Business School and is the only tenured professor at a top B-school to devote her entire research program to the study of creativity, is one of the country's foremost explorers of business innovation.

Eight years ago, Amabile took her research to a daring new level. Working with a team of PhDs, graduate students, and managers from various companies, she collected nearly 12,000 daily journal entries from 238 people working on creative projects in seven companies in the consumer products, high-tech, and chemical industries. She didn't tell the study participants that she was focusing on creativity. She simply asked them, in a daily email, about their work and their work environment as they experienced it that day. She then coded the emails for creativity by looking for moments when people struggled with a problem or came up with a new idea.

"The diary study was designed to look at creativity in the wild," she says. "We wanted to crawl inside people's heads and understand the features of their work environment as well as the experiences and thought processes that lead to creative breakthroughs."

Amabile and her team are still combing through the results. But this groundbreaking study is already overturning some long-held beliefs about innovation in the workplace. In an interview with Fast Company, she busted six cherished myths about creativity. (If you want to quash creativity in your organization, just continue to embrace them.) Here they are, in her own words.

1. Creativity Comes From Creative Types

When I give talks to managers, I often start by asking, Where in your organization do you most want creativity? Typically, they'll say R&D, marketing, and advertising. When I ask, Where do you not want creativity? someone will inevitably answer, "accounting." That always gets a laugh because of the negative connotations of creative accounting. But there's this common perception among managers that some people are creative, and most aren't. That's just not true. As a leader, you don't want to ghettoize creativity; you want everyone in your organization producing novel and useful ideas, including your financial people. Over the past couple of decades, there have been innovations in financial accounting that are extremely profound and entirely ethical, such as activity-based costing.

The fact is, almost all of the research in this field shows that anyone with normal intelligence is capable of doing some degree of creative work. Creativity depends on a number of things: experience, including knowledge and technical skills; talent; an ability to think in new ways; and the capacity to push through uncreative dry spells. Intrinsic motivation -- people who are turned on by their work often work creatively -- is especially critical. Over the past five years, organizations have paid more attention to creativity and innovation than at any other time in my career. But I believe most people aren't anywhere near to realizing their creative potential, in part because they're laboring in environments that impede intrinsic motivation. The anecdotal evidence suggests many companies still have a long way to go to remove the barriers to creativity.

2. Money Is a Creativity Motivator

The experimental research that has been done on creativity suggests that money isn't everything. In the diary study, we asked people, "To what extent were you motivated by rewards today?" Quite often they'd say that the question isn't relevant -- that they don't think about pay on a day-to-day basis. And the handful of people who were spending a lot of time wondering about their bonuses were doing very little creative thinking.

Bonuses and pay-for-performance plans can even be problematic when people believe that every move they make is going to affect their compensation. In those situations, people tend to get risk averse. Of course, people need to feel that they're being compensated fairly. But our research shows that people put far more value on a work environment where creativity is supported, valued, and recognized. People want the opportunity to deeply engage in their work and make real progress. So it's critical for leaders to match people to projects not only on the basis of their experience but also in terms of where their interests lie. People are most creative when they care about their work and they're stretching their skills. If the challenge is far beyond their skill level, they tend to get frustrated; if it's far below their skill level, they tend to get bored. Leaders need to strike the right balance.

3. Time Pressure Fuels Creativity

In our diary study, people often thought they were most creative when they were working under severe deadline pressure. But the 12,000 aggregate days that we studied showed just the opposite: People were the least creative when they were fighting the clock. In fact, we found a kind of time-pressure hangover -- when people were working under great pressure, their creativity went down not only on that day but the next two days as well. Time pressure stifles creativity because people can't deeply engage with the problem. Creativity requires an incubation period; people need time to soak in a problem and let the ideas bubble up.

In fact, it's not so much the deadline that's the problem; it's the distractions that rob people of the time to make that creative breakthrough. People can certainly be creative when they're under the gun, but only when they're able to focus on the work. They must be protected from distractions, and they must know that the work is important and that everyone is committed to it. In too many organizations, people don't understand the reason for the urgency, other than the fact that somebody somewhere needs it done today.

4. Fear Forces Breakthroughs

There's this widespread notion that fear and sadness somehow spur creativity. There's even some psychological literature suggesting that the incidence of depression is higher in creative writers and artists -- the de-pressed geniuses who are incredibly original in their thinking. But we don't see it in the population that we studied.

We coded all 12,000 journal entries for the degree of fear, anxiety, sadness, anger, joy, and love that people were experiencing on a given day. And we found that creativity is positively associated with joy and love and negatively associated with anger, fear, and anxiety. The entries show that people are happiest when they come up with a creative idea, but they're more likely to have a breakthrough if they were happy the day before. There's a kind of virtuous cycle. When people are excited about their work, there's a better chance that they'll make a cognitive association that incubates overnight and shows up as a creative idea the next day. One day's happiness often predicts the next day's creativity.

5. Competition Beats Collaboration

There's a widespread belief, particularly in the finance and high-tech industries, that internal competition fosters innovation. In our surveys, we found that creativity takes a hit when people in a work group compete instead of collaborate. The most creative teams are those that have the confidence to share and debate ideas. But when people compete for recognition, they stop sharing information. And that's destructive because nobody in an organization has all of the information required to put all the pieces of the puzzle together.

6. A Streamlined Organization Is a Creative Organization

Maybe it's only the public-relations departments that believe downsizing and restructuring actually foster creativity. Unfortunately, I've seen too many examples of this kind of spin. One of my favorites is a 1994 letter to shareholders from a major U.S. software company: "A downsizing such as this one is always difficult for employees, but out of tough times can come strength, creativity, and teamwork."

Of course, the opposite is true: Creativity suffers greatly during a downsizing. But it's even worse than many of us realized. We studied a 6,000-person division in a global electronics company during the entire course of a 25% downsizing, which took an incredibly agonizing 18 months. Every single one of the stimulants to creativity in the work environment went down significantly. Anticipation of the downsizing was even worse than the downsizing itself -- people's fear of the unknown led them to basically disengage from the work. More troubling was the fact that even five months after the downsizing, creativity was still down significantly.

Unfortunately, downsizing will remain a fact of life, which means that leaders need to focus on the things that get hit. Communication and collaboration decline significantly. So too does people's sense of freedom and autonomy. Leaders will have to work hard and fast to stabilize the work environment so ideas can flourish.

Taken together, these operating principles for fostering creativity in the workplace might lead you to think that I'm advocating a soft management style. Not true. I'm pushing for a smart management style. My 30 years of research and these 12,000 journal entries suggest that when people are doing work that they love and they're allowed to deeply engage in it -- and when the work itself is valued and recognized -- then creativity will flourish. Even in tough times.

Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Frequently Asked Questions about Coffee

This FAQ is dedicated to coffee and all that goes with it.

There are several newsgroups in which these topics may be of relevance, including rec.food.drink.coffee, alt.coffee, alt.food.coffee and alt.drugs.caffeine.

I welcome any and all contributions to this FAQ. If you do not agree with the info in here please let me know or write an article for the FAQ. If you feel you can explain something better than I have, by all means rewrite the article and send it in. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com

Google Pack Announced

Google is putting together a bundle of software, including a google-tweaked version of Firefox (gbrowser?), Acrobat Reader, Symantec Antivirus, AdAware, Trillian, Realplayer, and all of those free google programs everyone loves, like Earth, Talk, Desktop and Picasa. Basically, an Internet starter kit for people who don't like MS. Can't find what you're looking for? Try Google Search!
Google
 
Web eshwar123.blogspot.com