Saturday, December 25, 2010

Design for Developers

Design for Developers: "


Just because you didn’t get to go to that awesome conference doesn’t mean that you can’t still watch the lectures! Each weekend, we’ll feature a recommended web development lecture on Nettuts+.



During the recent DjangoCon, Idan Gazit gave an excellent presentation that details the fundamentals of design…for developers! Over the course of the talk, he discusses everything from white space, to line-heights, to the importance of contrast. If you’re a visually challenged developer, this one should help!





"

Tuesday, December 21, 2010

Designing User Interfaces For Business Web Applications

Designing User Interfaces For Business Web Applications: "
Smashing-magazine-advertisement in Designing User Interfaces For Business Web Applications
 in Designing User Interfaces For Business Web Applications  in Designing User Interfaces For Business Web Applications  in Designing User Interfaces For Business Web Applications

Business Web application design is too often neglected. I see a lot of applications that don’t meet the needs of either businesses or users and thus contribute to a loss of profit and poor user experience. It even happens that designers are not involved in the process of creating applications at all, putting all of the responsibility on the shoulders of developers.

This is a tough task for developers, who may have plenty of back-end and front-end development experience but limited knowledge of design. This results in unsatisfied customers, frustrated users and failed projects.

So, we will cover the basics of user interface design for business Web applications. While one could apply many approaches, techniques and principles to UI design in general, our focus here will be on business Web applications.

[Offtopic: by the way, did you know that Smashing Magazine has one of the most influential and popular Twitter accounts? Join our discussions and get updates about useful tools and resources — follow us on Twitter!]

Websites vs. Web Applications

Confusing Web applications and websites is easy, as is confusing user interface design and website design. But they are different both in essence and in so many other ways, which we’ll explore in this article.

A website is a collection of pages consisting mostly of static content, images and video, with limited interactive functionality (i.e. except for the contact form and search functionality). The primary role of a website is to inform. Some websites use content management systems to render dynamic content, but their nature is still informational.

Website-webapp in Designing User Interfaces For Business Web Applications
CampaignMonitor is powerful email marketing software, while Jeff Sarimento’s website is intended to inform readers about his life and work.

Web applications, on the other hand, are dynamic, interactive systems that help businesses perform business critical tasks and that increase and measure their productivity. Thus, the primary role of a Web application is to perform a function that serves the user’s tasks and according to defined business rules.

Web applications require a higher level of involvement and knowledge of the system on the part of the user. They don’t just stumble upon the application, do their work and bounce off. They use it as a tool to perform critical business tasks in their daily work. In the end, they cannot easily discontinue using the application and switch to another if they don’t like how it’s working, as is the case with websites.

Different Types of Web Applications

Business applications range in type from invoicing for freelancers to content management systems to document management systems to banking and financial systems.

We can distinguish between open and closed applications. Open systems are online applications that are easily accessible to anyone who opens an account. Users can access such applications via the Web and can open an account for free or by paying a fee. Closed systems (or line-of-business applications) are usually not accessible outside the company that uses it, and they can be considered “offline” applications (though many systems expose their functionality to business partners via either services or specialized interfaces). Such systems usually run on the company’s local network and are available only to employees.

I don’t know who coined it, but one term I like especially is weblication, which describes what a Web application is in general. This doesn’t mean, though that a Web application is a half-website half-application hybrid. It is far more complex that that.

First, Know Your Users

You’ve probably heard this a thousand times, and for good reason. A successful user interface focuses on users and their tasks. This is key, and too many developers have failed to create a good user experience. As Steve Krug said, “Developers like complexity; they enjoy discovering how something works.”

Users1 in Designing User Interfaces For Business Web Applications

When identifying your users, keep in mind that clients are not users, and you are not a user. Although a client’s management team will usually be interested in the project and try to influence decisions, remember that they won’t be sitting in front of the computer several hours a day (unless the application is specifically for them).

How to Identify Users?

Identifying users can be done using several techniques, such as user interviews, business stakeholder interviews and and the “shadowing” method of observation. Interviews can give you answers to questions about the users’ knowledge of the system and computers in general, while shadowing can yield more detailed information about how users perform tasks and what errors they make. The method is called shadowing because the observer is like a shadow, watching and noting the steps a user takes.

If you don’t have access to real users—either because you don’t have permission or are designing for open application—you can use personas, a tool to help identify users. Personas are a representation of real users, including their habits, goals and motivation. Because certain information about users is often identified through business analysis, you can make use of it to create personas. If you are not familiar with the tool, a comic by Brad Colbow will help.

Personas in Designing User Interfaces For Business Web Applications

Task analysis helps identify what tasks users perform in their jobs, how they do them, how long they take and what errors they make. Sometimes clients will be using an old version of the application that you are designing to replace. Make use of that old system and watch how users use it. Understanding their tasks and challenges will be easier that way.

Regardless of who your users are, one thing is certain: in most cases, you will have to consider both novices and experts. Novice users should be enabled to learn as fast as possible, while expert users should be enabled to perform their tasks extremely efficiently. This may mean creating separate interfaces. But in many cases you will be able to accommodate both types of users in the same interface through various techniques, such as progressive disclosure.

Such research is usually done by business analysts. But if no one else is responsible for it, you should do it. Once you have the necessary information, you can begin with design.

Design Process

You can follow one of any number of processes in designing the user interface. You might already have one. However, I would suggest that you consider the Agile approach. Why, you ask? Well, because for users (and clients), the user interface is the product. The bottom line is that they don’t care about your sketches or about fantastic back ends or powerful servers. All they want to see is the user interface.

So, how does Agile help? It helps through its key principle: the iterative approach. Each iteration consists of all of the phases defined by your process. This means that at the end of the first iteration, you will have a product that can be tested, a prototype.

Process in Designing User Interfaces For Business Web Applications

Sketching

Sketching is a powerful way to explore ideas. The goal is to arrive at the solution by sketching out different concepts. Most sketches will be thrown out, but that is okay. As Bill Buxton says in his “Sketching User Experience” book, sketches are fast to create and easy to dispose of, which is why they are so powerful.

Are sketches the same as wireframes? Well, the differences can be blurry, but I would say no. Wireframes don’t capture rough ideas but rather develop them. Read a fantastic discussion on IxDA: Sketching Before the Wireframes.

Once you get the “right” sketches, or at least the ones that you think are right, you can create more detailed wireframes or go straight to creating interactive prototypes.

Sketch in Designing User Interfaces For Business Web Applications
Sketch by Jason Robb.

Interesting reading on sketching and wireframing:

Prototyping

The next step in the process is to create prototypes that will simulate the real application. A prototype can contain one or more features (or all of them), but it actually does nothing. It merely simulates the behavior of a real application, and users will feel that they are actually doing something. Prototypes may contain some functionality if needed (such as complex calculations).

Because the nature of a prototype done in HTML is temporary—its purpose, after all, is to test ideas—don’t bother with the code; just make it work with minimal bugs. You will throw it away anyway. You can also use specialized prototyping software such as Axure. Some people even prototype in PowerPoint.

Prototype in Designing User Interfaces For Business Web Applications
An Axure interactive prototype for an e-commerce website, by e-maujean.

Further reading and tools for prototyping:

Testing

Prototypes are useless unless you test them. This is not rocket science. People like Jakob Nielsen and Steve Krug support so-called “discount usability testing,” which is cheap and fast and yields valuable insight into your design decisions. You will use this information as the basis of another iteration of sketching, prototyping and testing. Do this at least until major issues have been fixed. We all know that software projects are tight on time and budget, so to be more efficient, test early and test often.

One of the best resources for discount usability testing is a new book by Steve Krug, “Rocket Surgery Made Easy.” Pick up a copy and read it.

Usability Test in Designing User Interfaces For Business Web Applications
Snapshot of usability testing for Delicious, by (nz)dave.

Further reading:

Design Principles

There are many design principles, but there doesn’t seem to be a general consensus on definitive ones. So, we’ll go through design principles more informally, leaving out strict definitions.

No One Likes Surprises

Probably the key factors in a good UI are consistency and familiarity. A user interface should be consistent across all parts of the application, from navigation to color to terminology. This is known as internal consistency. But a user interface should also be consistent within its context, such as the operating system or other applications in its group or family. A typical example is the applications in the Microsoft Office family. This is called external consistency.

A good approach to consistency is to define user interface guidelines for each project or for a group of projects. These should guide the decisions you make for all of the details. This will not only maintain consistency but also serve as documentation to help team members better understand your decisions.

Sprinkle Penny in Designing User Interfaces For Business Web Applications
Although a simple example, SprinklePenny achieves consistency and familiarity across the application.

Consistent user interfaces have a shorter learning curve, because users will recognize parts of the system and be able to fall back on prior experience. But familiarity is sometimes confused with consistency. Familiar user interfaces draw on concepts from the users’ previous experiences and use appropriate metaphors. Folders, for example, are a well-known metaphor for file organization, and they have replaced “directories,” which were used previously in command-line operating systems. In short, speak the language of your users.

A common belief among business owners is that a great user interface should look like a Microsoft Office product, especially Outlook. I won’t go into explaining how pointless this is. Rather, I will offer alternative advice: defend the user-centric approach, and explain why creating an application for employees, clients and partners (i.e. their users) is so important.

All the same, most businesses are unique, as are their work processes. For example, two businesses from the same branch could have significantly different processes, forcing you to go beyond what is familiar and start to innovate. This part of the design process can be very interesting, although you have to be careful in how far you go with innovation.

Further reading:

Users Should Be Able to Be Efficient

Without a doubt, users should be able to be efficient when using business applications. This is what they are paid for, and this is what managers expects from the application. User interfaces should allow users to be efficient and should focus them on completing tasks in the easiest and fastest way. But this is not always the case. There is an opinion, or at least practice, among developers that says the user interface should be as complex as the back end system. No matter how ridiculous this sounds, the problem is real and might give you a headache. This is one reason why good communication and collaboration between developers is a must.

Users are efficient when they focus on a particular task. As mentioned, task analysis can help you identify tasks and determine how users perform them. If tasks are long, accelerate them by breaking them up into smaller units. You can also increase efficiency by providing keyboard support and shortcuts. Think how inefficient it is for a user to have to switch back and forth between mouse and keyboard. In some cases, you will be designing for users who are accustomed to working on command-line operating systems and the applications made for them. They will be keen to have keyboard support. One suggestion: when defining keyboard shortcuts, keep them consistent with those of common applications. For example, Ctrl + S should always be save, and so on.

Google Docs in Designing User Interfaces For Business Web Applications
Google Docs Spreadsheet enables users to be efficient by providing keyboard shortcuts and context menus, as well as by taking advantage of users’ familiarity with common desktop applications.

Efficiency can also be enhanced through personalization. Users who can personalize an environment will learn it faster and, more importantly, will be more confident using it. Personalization can be done in many ways: choosing widgets for the dashboard; defining shortcut options and favorites; changing the order of elements; etc.

Pay attention to accessibility. Although many assume that accessibility doesn’t matter in Web applications, it certainly does. Treat the application as if it were a public website.

A Web application also has to be efficient in the speed with which it processes information. So, consider heavy interactions that result from partial renderings and AJAX requests.

Help!

An interface should provide meaningful feedback that describes the state of the system to users. If an error occurs, users should be notified and informed of ways to recover. If an operation is in progress, users should be notified about the progress.

We can go even further and declare that user interfaces should prevent users from making errors. This principle, called forgiveness, can be followed with confirmation dialogs, undo options, forgiving formats and more. Forgiveness makes it safe to explore the interface, decreases the learning curve and increases overall satisfaction.

Because of the complexity of business Web applications, you would also need to provide a comprehensive help system. This can be done with inline help, a support database, a knowledge base and guided tours (which mix video, images and text).

Further reading:

Can’t Get No Satisfaction

Satisfaction is a subjective term that refers to how pleasant an interface is to use. Every design principle we have described here affects  satisfaction. And a few more principles are worth mentioning here.

Simplicity is a basic principle of UI design. The simpler a user interface, the easier it is to use. But keeping user interfaces for business applications simple is a challenge because the apps often have a lot of functionality. The key is to balance functionality and simplicity. Restraint is one of the most efficient ways to achieve this balance: i.e. finding the simplest way to solve a problem.

Buildwithme in Designing User Interfaces For Business Web Applications
BuildWith.me has a simple and effective user interface, without sacrificing aesthetics.

Aesthetics, though subjective and somewhat arbitrary, play an important role in overall satisfaction. Users respond positively to pleasing user interfaces, sometimes even overlooking missing functionality. But you’re not creating a work of art. One of the best articles that explains aesthetics is In Defense of Eye Candy.

In the end, users will be spending a lot of time in front of a business application, and no matter how usable, consistent or forgiving the interface is, satisfaction will be critical in determining how good the user interface is.

Further reading:

Other resources related to UI design:

Essential Components Of Web Applications

Every Web application is unique, but many of them contain common features. Although the implementation of any one of these features will vary, let’s look at the basic concept of the three most common ones.

Web Forms

Forms in general are important to Web applications. But as Luke Wroblewski says in his Web Form Design book, “No one likes filing in forms.” That includes sign-up forms, including business applications with dozens of fields.

Minimize the frustration of filling in forms. Provide inline validation and good feedback. Use defaults when possible. Don’t forget about novice users. Use wizards to help them complete tasks faster, or use progressive disclosure to hide advanced (or infrequently used) features.

Master-Detail Views

This is the technique of showing data in two separate but related views. One view shows a list of items, while the other shows details of the selected item. Master-detail views can be implemented across multiple pages or on individual ones.

Dashboards

Many Web applications have dashboards. A dashboard is a view of the most important information needed to take action and make decisions. It is confined to a single page and is usually the starting point of an application. Dashboards are important because they enable users to access information and take action without having to dig through the application.

Xero in Designing User Interfaces For Business Web Applications
Xero shows a user’s most important financial information (e.g. bank accounts and credit cards) in its dashboard, making it easy for users to quickly see the status of their financial data.

Heavy Use of Tables

Because Web applications typically deal with large quantities of data that are easily accessible and sortable, tables are unavoidable. But this is not a bad thing. In fact, tables were made for this purpose. Don’t confuse this with table-less layouts. Effective tables are easily readable. So, in most cases you will need a meaningful header, an optimal number of columns, pagination, alternating row colors, proper column alignment, sorting and filtering capabilities and much more.

Tables can also be interactive, meaning they can generate additional info and even modify the data they contain.

Pulseapp1 in Designing User Interfaces For Business Web Applications
PulseApp is a good example of how tables can be used to efficiently present and manipulate complex data.

Reports

Most businesses work with some kind of reports. Printed reports are usually required, so pay attention to the design of reports. Printed (or exported) reports are usually simplified versions of online reports, optimized for monochrome printers.

Fresh Books in Designing User Interfaces For Business Web Applications
FreshBooks has printing, PDF exporting and “Send to email” features. It also shows a print preview.

Don’t Forget UI Design Patterns

We’re so used to hearing and talking about UI design patterns that we sometimes forget about them! UI design patterns are helpful for designing user interfaces. The important thing is to consider them early on in the design process, ideally at the sketching stage. Because patterns often solve common problems, the right pattern can facilitate the user’s familiarity with an interface and increase the speed at which they learn it.

Standard Screen Patterns in Designing User Interfaces For Business Web Applications
This screenshot is from the article 12 Standard Screen Patterns, which goes over the most common screen patterns.

Further reading:

Case Study: Online Banking Application

To take an example from the real world, I will briefly explain the process of designing the user interface for one small bank’s online banking system. The team I worked with was hired to improve the system. The main reason for the redesign was that, according to management, “users complained and many stopped using it.”

After only a couple of hours spent with actual users, the main problems were uncovered. Information about accounts and credit cards was buried in poor navigation. Understanding how much money users were spending and the state of their accounts and credit cards was also hard. The application, however, was obvious to bank employees; they were familiar with the terminology and could interpreted the numbers in the application perfectly well.

Give the tight deadlines, we followed the process I have described, and we partially succeeded. Despite the short time, the major problems were so obvious that we clearly understood our main task and how to go about it. We created a dashboard that provided clear information on the state of all accounts and credit cards. With this new navigation, finding information became easier. Reports were easier to understand, and several new features were implemented.

Although we made only a few changes, the changes affected critical user tasks and resulted in significant improvements to the overall experience.

Final Thoughts

Designing user interfaces for business Web applications is a challenging job that is full of compromises. You have to make compromises between client and user needs; business requirements and users; novice and expert users; functionality and simplicity. It requires a solid understanding of users and their tasks, as well as of UI design principles and patterns. Despite the difficulties, the job is interesting, and you learn many new things on each project that influence the way you design websites.

While this article reflects some well-known concepts and things I have learned from designing business applications over the years, I look forward to hearing your experiences and stories.

(al)


© Janko Jovanovic for Smashing Magazine, 2010. | Permalink | 94 comments | Add to del.icio.us | Digg this | Stumble on StumbleUpon! | Tweet it! | Submit to Reddit | Forum Smashing Magazine
Post tags:

"

Tuesday, December 14, 2010

5 New Online Services Perfect for Small Businesses

5 New Online Services Perfect for Small Businesses: "

This post originally appeared on the American Express OPEN Forum, where Mashable regularly contributes articles about leveraging social media and technology in small business.When you think of online destinations for professional purposes, social networking sites tailored toward business users -- like LinkedIn -- probably come to mind.Savvy small business professionals will find, however, that a crop of new startups offer them access to fresh technologies that help with professional networking, research, influence and community building.While you've likely never heard of the startups listed below, each is gaining traction from early adopter audiences and is building consumer-facing products easily applied to common small business tasks. Some, especially Stipple and Marginize, could even help improve traffic to your site and engage visitors longer with more compelling reasons to stay put.

1. Hashable


If you're looking for a new way to stay networked in today's digital world, check out Hashable. The private beta startup offers a unique and potentially time-saving approach to professional networking, allowing users to document and track their real-world connections on site, through e-mail or via Twitter with hashtags.Say you had a coffee meeting with a new business connection -- you could tell Hashable to track the relationship with a simple tweet such as: '#justmet @jbruin and look forward to her response cc @hashable.' The same logic applies for introductions, so if you want to formally introduce people on Twitter, your tweet would read something like: '#intro @friend1 meet @friend2. you guys should connect to discuss biz opps cc @hashable.'You can use Hashable to document any and all types of real-world exchanges with hashtags such as #meeting, #breakfast, #lunch, #dinner, #drinks, #coffee, #golf, #tennis, #brunch and #thanks.The startup is currently in invitation-only mode. Should you follow Hashable on Twitter, the team will likely give you immediate access.

2. Stipple


You can use Stipple to add people, place or product tags to the photos you publish on your site. The idea is to give site owners the tools to add relevant and contextual information and ultimately create an interactive layer on top of photos.Small businesses can install a WordPress plugin or add a bit of code to their websites to begin tagging photos. Merchants should be especially keen on the tool as it presents a way for them to use their blog to highlight merchandise, stores or employees on photo mouse-over.At the very least, Stipple offers you a way to engage website visitors and customers with fun and interesting photo information.

3. Qwiki


Qwiki transforms static information from multiple data sources into a cohesive, interactive video narrative. The startup aims to reinvent the way people experience information, and the product makes an excellent alternative online research tool for professionals.Qwiki is also working on additions for social media users and small businesses. Soon you'll be able to create your own video Qwikis for two distinct purposes: a personal Qwiki that merges your social media data into an embeddable video profile or a merchant Qwiki that aggregates reviews on your business from third-party sites like Yelp.The startup is coming out of private alpha in mid-December. If you're not a member already, you'll definitely want to take a look at Qwiki once the startup opens it doors to the public.

4. Storify


New private beta startup Storify allows users to pull together content from Facebook, Twitter, YouTube, Flickr and other social networks to build an interactive story. The idea is to give users the tools to create and curate cohesive narratives from the social web.For the small business professional, Storify represents a quick and easy way to piece together social content to tell the story of your business or event. For example, Klout, the site that measures Twitter and Facebook user influence, uses Storify to highlight results from Klout's Twitter contests or recap event happenings in story form.Storify could also help you enhance your own brand and influencer status. The curation aspect makes it a convenient tool for adding social commentary to important news stories or compiling status updates from fellow professionals in your field.This is one of those startups with endless applications only limited by your imagination. To request an invite, send an e-mail to info@storify.com.

5. Marginize


Marginize builds tools to let users check in to websites to view existing social content and add comments that can also be shared with social networks. Marginize's site checkins are very much like the checkin features of location-based mobile applications -- users are even awarded badges for their behaviors -- but applied to websites instead of venues.Anyone can download Marginize's browser extension, login via Facebook, Twitter or Google Buzz and check in to any website or add social commentary to the mix. The appeal for small business professionals, however, is that the startup offers a publisher tool for website owners to make Marginize features native on their site -- the Marginize tab will appear to all users whether they've installed the browser plugin or not. Publishers can also incentivize checkins with rewards.The parallels between location checkins and site checkins are obvious. Marginize, and competitors like Badgeville, could facilitate a new social frontier for small businesses, helping them drive traffic and better engage the users that stop by their sites. Small businesses should certainly explore site checkins -- this is a growing trend that's bound to pick up even more steam in the coming months.

More Business Resources from Mashable:


- HOW TO: Define a Social Media Strategy for Enterprise - Social Media Success: 5 Lessons From In-House Corporate Teams - HOW TO: Get the Most Out of a Coworking Space - How the Fortune 500 Use Social Media to Grow Sales and Revenue - Beyond Viral: How Successful Marketers Are Embracing the Social Web
Image courtesy of iStockphoto, nico_blue
Reviews: Facebook, Flickr, Google Buzz, LinkedIn, Twitter, WordPress, Yelp, YouTube, iStockphoto

For more Business coverage:



"

[programming] 5 of the Best Free and Open Source Data Mining Software

[programming] 5 of the Best Free and Open Source Data Mining Software: "The process of extracting patterns from data is called data mining. It is recognized as an essential tool by modern business since it is able to convert data into business intelligence thus giving an informational edge. At present, it is widely used in profiling practices, like surveillance, marketing, scientific discovery, and fraud detection.

There are four kinds of tasks that are normally involve in Data mining:

* Classification - the task of generalizing familiar structure to employ to new data
* Clustering - the task of finding groups and structures in the data that are in some way or another the same, without using noted structures in the data.
* Association rule learning - Looks for relationships between variables.
* Regression - Aims to find a function that models the data with the slightest error.

For those of you who are looking for some data mining tools, here are five of the best open-source data mining software that you could get for free:


Orange
Orange is a component-based data mining and machine learning software suite that features friendly yet powerful, fast and versatile visual programming front-end for explorative data analysis and visualization, and Python bindings and libraries for scripting. It contains complete set of components for data preprocessing, feature scoring and filtering, modeling, model evaluation, and exploration techniques. It is written in C++ and Python, and its graphical user interface is based on cross-platform Qt framework.


RapidMiner
RapidMiner, formerly called YALE (Yet Another Learning Environment), is an environment for machine learning and data mining experiments that is utilized for both research and real-world data mining tasks. It enables experiments to be made up of a huge number of arbitrarily nestable operators, which are detailed in XML files and are made with the graphical user interface of RapidMiner. RapidMiner provides more than 500 operators for all main machine learning procedures, and it also combines learning schemes and attribute evaluators of the Weka learning environment. It is available as a stand-alone tool for data analysis and as a data-mining engine that can be integrated into your own products.


Weka
Written in Java, Weka (Waikato Environment for Knowledge Analysis) is a well-known suite of machine learning software that supports several typical data mining tasks, particularly data preprocessing, clustering, classification, regression, visualization, and feature selection. Its techniques are based on the hypothesis that the data is available as a single flat file or relation, where each data point is labeled by a fixed number of attributes. Weka provides access to SQL databases utilizing Java Database Connectivity and can process the result returned by a database query. Its main user interface is the Explorer, but the same functionality can be accessed from the command line or through the component-based Knowledge Flow interface.


JHepWork
Designed for scientists, engineers and students, jHepWork is a free and open-source data-analysis framework that is created as an attempt to make a data-analysis environment using open-source packages with a comprehensible user interface and to create a tool competitive to commercial programs. It is specially made for interactive scientific plots in 2D and 3D and contains numerical scientific libraries implemented in Java for mathematical functions, random numbers, and other data mining algorithms. jHepWork is based on a high-level programming language Jython, but Java coding can also be used to call jHepWork numerical and graphical libraries.


KNIME
KNIME (Konstanz Information Miner) is a user friendly, intelligible, and comprehensive open-source data integration, processing, analysis, and exploration platform. It gives users the ability to visually create data flows or pipelines, selectively execute some or all analysis steps, and later study the results, models, and interactive views. KNIME is written in Java, and it is based on Eclipse and makes use of its extension method to support plugins thus providing additional functionality. Through plugins, users can add modules for text, image, and time series processing and the integration of various other open source projects, such as R programming language, Weka, the Chemistry Development Kit, and LibSVM.


If you know of other free and open-source data mining software, please share them with us via comment.

"

Monday, December 13, 2010

Slash your ASP.NET compile/load time without any hard work

Slash your ASP.NET compile/load time without any hard work: "Tips & tricks to make your ASP.NET development more enjoyable (cut down compilation time / first load time).


kick it on DotNetKicks.com



"

Entity Framework Tutorials for ASP.NET Developers

Entity Framework Tutorials for ASP.NET Developers: "Want to know more about how to use Entity Framework in your ASP.NET applications? Tom Dykstra just announced a whole series of Entity Framework Tutorials for ASP.NET Developers."

Managing Small Projects

Managing Small Projects: "
As both an active project manager and project management trainer, I often get asked whether the project management best practices that are applicable for large projects can be applied on smaller projects. This is a really important question and one which all project managers must face up to when managing small projects.

Focusing on project delivery
One of the arguments against using project management methodologies is that they are very process-centric resulting in vast quantities of project documentation which are simply not practical or desirable on small projects. This is a powerful argument and any method which focuses on producing documentation at the expense of delivering the real business benefits of the project will be a hindrance rather than a benefit. After all, the name of the game in project management is delivering business objectives, not producing reams of documents.

There is an ongoing and active discussion within the software development community about the best way to produce software on projects. More recently, some software professionals have argued for more agile methods of producing software rather than the more traditional heavyweight methods which focused on producing vast quantities of documentation.

Agile methods focus on delivery of software rather than documentation. With this in mind, I think project managers everywhere can learn something from the agile methods employed in software development. In short, this leads us to focus on project delivery rather than project documentation, although the critical choice project managers everywhere need to make is how much documentation is really necessary?

Apply the best practices
I am a firm believer in only producing as much as is required by the project. Nothing more and nothing less. A simple rule of thumb is: if it's useful in helping us to deliver the business objectives of the project then produce it, if it isn't useful in helping us to deliver the business objectives of the project then don't waste time to produce it. With this in mind, I believe that in all projects, at a minimum it is best to apply project management best practices.

Let's consider the best practices in turn and see whether or not the overhead lost in applying best practices is worth the benefits which can be gained.

Defining objectives and scope
Even on the smallest project there will be objectives which must be achieved. As a project manager, it is in your interest to define what these objectives are since you are likely to be assessed on whether the project meets those objectives. It is your responsibility to ensure the project meets those objectives and you are accountable for this. In short, the book stops with you.

Now suppose you don't define and write down what the objectives are, you are always going to be at the mercy of any boss who decides he's got it in for you. The defined and documented set of objectives is your insurance policy against your manager later coming along and saying you didn't meet the objectives.

However, there is another reason why you still need to define and document the objectives even on a small project. You want to satisfy the needs of the stakeholders since that is what you are paid to do as a project manager. If the objectives aren't defined, then you won't be able to meet those needs through your project.
Similarly with defining the scope. The scope forms the boundary of your project. If you don't define what it is, the likelihood is that it will grow and grow as the project progresses and although you might have started managing a very small project, before long your project could become very much bigger than when you set out.

You still need to document who are the stakeholders on a small project as well. By defining who these are, you can ensure that you cover all of their needs when you define the objectives and deliverables.

Defining deliverables
Somebody is going to have to carry out the actual work to produce whatever is delivered from your project. Even if the deliverables might be small and don't take much time to produce, they should still be written down. By documenting these things and then having them reviewed by others allows errors to be found. Your aim should be to document a detailed enough set of descriptions of the products to be delivered.

These descriptions will then be used by the people who will produce the deliverables. Even if these descriptions take no more than a page of text, it is important to write them in a clear and unambiguous way. If you don't write down a description, it means that the person making the deliverable can interpret what is required in unexpected ways which will only result in work being done later to correct the mistakes. So, always define and document the deliverables.

Project planning
If you were to walk up Mount Everest, you would never do it without a considerable amount of planning. Even if you walk up the hill at the back of your house, there is probably some planning involved - what time do you go? What should you take with you? It is the same on even the smallest project where you will still need to work out which activities are required to produce a deliverable, estimate how long the activities will take, work out how many staff and resources are required and assign activities and responsibilities to staff.
All of these things need to be written down and communicated effectively to the project team members. I've seen lots of people become unstuck because they think they need to use some kind of project management planning software such as Microsoft Project. This is an unnecessary overhead. I've noticed that people tend to waste too much time making their Microsoft Project Gantt charts look pretty, so that they lose sight of the reason why they are using the tool.

Instead, for small projects I find that creating a bar chart in Microsoft Excel is the best. It is simple and more than adequate for small projects. Just make each column a sequential date, write your tasks in the first column, and fill in the cells to represent the time the activity takes.

In addition to the bar chart, you will need to document the milestones on the project. Milestones are the dates by which you need to deliver certain things, or may be the date on which a major activity ends. The responsibilities of each project member must also be documented in the project plan.

Communication
Even in the smallest project team comprised of just a project manager and one other person, the project manager will still need to assign tasks and responsibilities to the other person. It can't be assumed that they will know what they should do without it being effectively communicated from the project manager. If the project manager doesn't assign them specific activities, then the chances are they will go ahead and work on things which are not needed by the project. So, either the project will end up delivering the wrong things, or the project will get delayed since time will need to be spent later on doing the activities which should have been done earlier.

You can communicate the plans via email, or give a print out of the plan to your project team member(s), or better still, call a meeting and run through the plan with the project team members. Remember, if the plan changes, you will also need to communicate the changes to your team as well.

Tracking and reporting progress
If we still consider our two person project team - the project manager and one other person - the project manager will need to know the progress of the activities which the other person is working on. This can be done in a variety of ways: a short daily email detailing the work completed, the work still left to do, and a list of any issues/problems. In most cases this will be sufficient.

Alternatively a short 15 minute face to face catch up can accomplish the same thing. Or a combination of the two things might be best. In any event, the project manager still needs to be fully aware of the progress that is being made so that progress can be tracked effectively.

Change management
Even on our two person project, changes are likely to occur. Requests for change usually come from stakeholders and it is your responsibility as project manager to assess the impact of accepting these into the project. To do this, you need a good estimate of the impact the change will have in terms of the extra effort and cost involved. This will often impact the schedule as well, so by having a clear understanding of how the schedule and budget will be affected you can make the decision as to whether or not you will accept the change into your project.

On a small project there shouldn't be any need for any fancy change control board to decide if the change is accepted. A quick discussion with the key stakeholder(s) should be sufficient for you to come to a decision providing you have worked out the impact on cost and schedule.

One thing you should never do is simply accept the change. Even if you think the change is small, you should never accept any change(s) without fully understanding what its impact will be on cost and schedule. That is a recipe for what we call 'scope creep' where the project grows bigger and bigger as more and more changes are added into the project. Before you know it, your small project has become a much larger one and you will inevitably fail to deliver your project to your original budget and schedule.

Risk management
There will be risks even on a small project. Make sure you have thought through all the potential risks at the beginning of the project, monitor the top ten risks each week (or top five if the number of risks is small) and keep looking out for new risks. Failing to manage risk properly is one the main causes for projects to fail.
The overhead in managing risks is very low. On a recent project, I drew up a list of what I considered to be all the risks on the project. It came to about 10 risks in all. Of these, five were serious risks. I worked out a plan to avoid or minimise each risk. In all, it took me little over a couple of hours to do this. Then, each week on the project, I would spend say half an hour reviewing all the risks and thinking of any new ones. At the end of the project, whilst some risks actually had materialised, because I'd identified a plan at the start of the project to minimise the impact of these risks, the impact of these risks on the project ended up being minimal.
So, with little up front and ongoing effort, you get a big pay back if you manage the risks throughout the project.

Summary
So, in summary, applying the best practices to even a small project can be done without creating too much paperwork or overhead. The best practices are the things which countless project managers have done on thousands of projects and are deemed to be the 'best practice' because they tend to help you to achieve the best results.

Don't think that because you're managing a small project that you can ditch these best practices because if you do, you will regret it later when your project gets in a mess.
"

Friday, December 10, 2010

Displaying Twitter (tweets) in ASP.NET

Displaying Twitter (tweets) in ASP.NET: "How to display Twitter user's timeline without APIs or third party libraries"

Great Reading in Computer Science

Great Reading in Computer Science: "






Dr. Gabriel Robins

Professor of Computer Science

Department of Computer
Science


School of Engineering and
Applied Science


University of Virginia

151 Engineer's Way, P.O. Box 400740

Charlottesville, VA
22904-4740, USA


robins@cs.virginia.edu

www.cs.virginia.edu/robins


Phone: (434) 982-2207, Fax: (434) 982-2214


Office: 210 Olsson Hall

Gabe's vitae / resume
(NIH Biosketch)





Great supplemental reading in Computer Science



The following is a list of great readings in computer science, with a
focus on algorithms and theory topics:








Return to Gabriel
Robins' home page


EMail to EMail
to robins@cs.virginia.edu




Comments"