26 septembre 2009


The 7 Software Development Wastes - Lean series Part 7 - Defects

Introduction

When one looks at all the wastes, defects has to be the most obvious one. The cost and repercussions of finding defects varies depending on where in the cycle they're found. Defects found early on in the development life-cycle are way less costly to resolve than defects found later on in the cycle; the most expensive being when applications are already in-production.

Additionally, depending on when the defects are found, defects can and do trigger other wastes like task switching, relearning etc.

Defects can be very costly for an organization. So the trick with defects is that you need to 1) Prevent them from happening in the first place and 2) Find and fix them as early in the development life-cycle as possible.

So what can you do to prevent them from happening in the first place?

  1. Keep your stories small, and unambiguous.
  2. Ensure that each story has well defined acceptance test criteria (assisted by input from the customer).
  3. Ensure that your code is well tested. Adopting good Test Driven Development habits will pay back in spades.
  4. Pair programming and code reviews are excellent ways in which to prevent bugs from being created in the first place.
  5. The more you automate the better. So automated functional testing is a good way to automate the functional test plan and get results fast and to ensure that new code changes aren't breaking other parts of the code.
  6. Ensure staging environments mimic production as closely as possible.
  7. Make sure that as you find new defects, you add unit tests to your test suite to keep your unit testing current.
  8. Finally, document your code well.

An interesting quote from Mary and Tom Poppendieck's book called Implementing Lean Software Development,

'If software routinely enters final verification with defects, then it is being produced by a defective process'

.... which needs to be fixed. So...

Step 1. Prevent the bugs from happening in the first place by 'mistake proofing' your code

Step 2. Do whatever you can to find the bugs early on in the process while the code is fresh in the developers minds - i.e. ensure you have good functional test plans and test tools.

Step 3. Ensure a proper staging (or test environment) that mimics production environment as closely as possible

Step 4. Get the software into the hands of customers as quickly as possible, so good Agile practices help here.

Step 5. If you find defects, ensure they never happen again by keeping your unit tests current.

Top 10 Ways to Get More From a Cameraphone

The best camera, the saying goes, is the one you have with you. Whether that's an impressive iPhone 3GS or a $20-with-2-year-plan flip model, you can pull off great shots and make life easier with these cameraphone tactics.

10. Get macro-style close-ups

Macro shots aren't just for passionate foodies with tolerant friends. We've shown you how to use an old DVD lens to create a simple, portable cover-up lens to get serious short focus on whatever you're shooting. Lack an old player to tear apart? You can probably find some cheap add-ons for your makeshift macro shots. Either way, you've got a nice little macro package that's cheap enough to bring everywhere and shoot everything, without worrying too much about

9. Capture your car travel

iPhones and other web-capable cellphones can be used as turn-by-turn GPS navigators, so accessory makers have cranked out lots of mounting gadgets for them. That's very convenient, but not half as fun as directing a low-budget thriller about your drive to work. To give your character his mood-setting opening montage, simply drill a hole in the camera spot and find an app that allows for time lapse photography, or a video recording function that doesn't require too much fiddling while driving.

8. Find your car in huge parking lots

Remember where one parked is one of those skills everyone assumes they're great at until put to the test. The Digital Inspiration blog suggest that, among other creative uses of cameraphones, using it to snap a picture of the exit or elevator you're closest to in a ramp, or landmark or other marker in an open lot, might save you a lot of hassle upon returning from an epic shopping trip or sports event. It takes less time than texting yourself the coordinates, and you'll earn instant respect when you're the only one with a bead on where to find the ride at the end of the night. Photo by Luciano Meirelles. (Original post)

7. Document what you packed

A lot of bags are packed in frantic fashion, but take the 15 seconds to snap a shot or two of what you're throwing in the case before you close it. If the airline, hotel, or shuttle service loses or damages your luggage, you'll know exactly what's in your right to claim inside it. If you want to be absolutely sure you didn't pack sunglasses before you run out and buy them, you'll know whether to keep digging. Months or years later, you'll get a laugh out of how much you thought you needed to do nothing on vacation. Photo by Muffet. (Original post)

6. Create PDFs from document pictures

One hour and many arguments later, the whiteboard at work is filled with actually feasible ideas and team commitments. Now, how will you remember it tomorrow morning? Free camera phone conversion service Qipit can, depending on your camphone's quality, accept whiteboard snapshots, printed documents, or handwritten notes with white-ish backgrounds and convert them into plain old PDFs, then email them to your regular address. We just wrote out a potential work-related use for that convenience—let's assume you can think of many, many more interesting uses than that. And if you ever need to actually fax one of these documents, Qipit has you covered.

5. Punch them up on your Desktop

Some cameraphone shots capture perfect moments, but were taken in not-so-perfect conditions. Whether you like doing it yourself or leaving it to some well-considered software, it's fairly easy to drag a decent-looking image out of a rough snap. Windows users should grab the Mobile Photo Enhancer for a quick fix that corrects common problems. Got Photoshop, the GIMP, or another photo editing solution handy? Try Jackson West's tips on punching up a photo in under 60 seconds tested out on a pretty sweet shot of a bulldog taken with the lackluster iPhone (2G) camera. (Original posts: Mobile Photo Enhancer, Punch Up a Photo)

4. Enforce a diet

Back in the day, when the idea of phones with cameras was new to the world (okay, this was only 2005), the MyFoodPhone service offered, for $149/month, then $10/month, to have a dietitian review any photos you send in of your food and ping you back with a quick take or suggestion. As you might imagine, that service doesn't seem to be around anymore—perhaps because, for many people, the act of simply committing what they're eating to a camera, and maybe even making it public, is enough to start dropping pounds. It's akin to the idea of calling a parent every night you hit the town and telling them how much you had to drink or how much you spent—you would, almost certainly, cut back, and you'd also have photo evidence and reinforcement of the times you managed not to kill off that entire Cheesecake Factory plate. Photo by Sebastian Mary.

3. Grab and send photos without fees

Tied to an older phone that won't let you get pictures out without paying exorbitant MMS/email/'upload' fees? Enter BitPim, a free software tool that connects to your phone over Bluetooth and opens it up in a major way, even if your Bluetooth capabilities seem very limited. We walked through backing up and syncing your phone with BitPim, performed on a very limited clamshell model, the cheapest that came with a Verizon contract. Check to see if BitPim supports your phone. If so, feel free to reach into your little bundle of circuits and free the pictures, videos, and tunes that are rightfully yours. Oh, and throw some custom-made ringtones in there, while you're at it.

2. Master the form

Even with the high-end 5-8 megapixel models on the edge of being available, shooting with a cameraphone is not the same as with a standard handheld camera. The sensors, lens curvature, capture abilities—it's all been optimized for a device mostly meant to pass voice and data from twisted antennas. That said, you can learn how to get better shots out of the camera you always have with you, as Gina learned and related:
Plan for shutter delay
Like many consumer digital cameras, there's most likely a delay between the exact moment you press the shutter button and when your cameraphone captures the image. Plan for this: hit that button half a second in advance to get the exact moment you're looking for, and keep the phone steady for a few seconds after it's pressed, too. A little practice will help you perfect this.


1. Make it your second brain

Get a free Flickr account, and add your secret, automatically private, instant-upload email address to your phone's contacts. You've now got a tag-able, high-quality, almost infinite space to stash everything you're likely to forget or need to pool your thoughts on. Wine you want to buy, the perfect gift you stumble across in June, your new gadget's serial number—anything not already in this list, in other words. If you're more likely to actually organize your camera thoughts, Evernote offers a similar free space and private email address, but doesn't allow for tagging by email, making the otherwise brain-expanding service, oddly enough, a bit less useful for this hack you'll find convenient at just the right moments. Photo by solson.

24 septembre 2009


10 Useful Usability Findings and Guidelines

Everyone would agree that usability is an important aspect of Web design. Whether you’re working on a portfolio website, online store or Web app, making your pages easy and enjoyable for your visitors to use is key. Many studies have been done over the years on various aspects of Web and interface design, and the findings are valuable in helping us improve our work. Here are 10 useful usability findings and guidelines that may help you improve the user experience on your websites.

Form Labels Work Best Above The Field


A study by UX Matters found that the ideal position for labels in forms is above the fields. On many forms, labels are put to the left of the fields, creating a two-column layout; while this looks good, it’s not the easiest layout to use. Why is that? Because forms are generally vertically oriented; i.e. users fill the form from top to bottom. Users scan the form downwards as they go along. And following the label to the field below is easier than finding the field to the right of the label.

Tumblr
Tumblr features a simple and elegant sign-up form that adheres to UX Matter’s recommendation.

Positioning labels on the left also poses another problem: do you left-align or right-align the labels? Left-aligning makes the form scannable but disconnects the labels from the fields, making it difficult to see which label applies to which field. Right-aligning does the reverses: it makes for a good-looking but less scannable form. Labels above fields work best in most circumstances. The study also found that labels should not be bold, although this recommendation is not conclusive.

Users Focus On Faces


People instinctively notice other people right away when they come into view. On Web pages, we tend to focus on people’s faces and eyes, which gives marketers a good technique for attracting attention. But our attraction to people’s faces and eyes is only the beginning; it turns out we actually glance in the direction the person in the image is looking in.

eye tracking
Eye-tracking heat map of a baby looking directly at us, from the UsableWorld study.

eye tracking
And now the baby is looking at the content. Notice the increase in people looking at the headline and text.

Here’s an eye-tracking study that demonstrates this. We’re instinctively drawn to faces, but if that face is looking somewhere other than at us, we’ll also look in that direction. Take advantage of this phenomenon by drawing your users’ attention to the most important parts of your page or ad.

Quality Of Design Is An Indicator Of Credibility


Various studies have been conducted to find out just what influences people’s perception of a website’s credibility:


Fever
We don’t know if Fever app is any good, but the sleek user interface and website make a great first impression.

One interesting finding of these studies is that users really do judge a book by its cover… or rather, a website by its design. Elements such as layout, consistency, typography, color and style all affect how users perceive your website and what kind of image you project. Your website should project not only a good image but also the right one for your audience.

Other factors that influence credibility are: the quality of the website’s content, amount of errors, rate of updates, ease of use and trustworthiness of authors.

Most Users Do Not
Scroll


Jakob Nielsen’s study on how much users scroll (in Prioritizing Web Usability) revealed that only 23% of visitors scroll on their first visit to a website. This means that 77% of visitors won’t scroll; they’ll just view the content above the fold (i.e. the area of the page that is visible on the screen without scrolling down). What’s more, the percentage of users who scroll decreases with subsequent visits, with only 16% scrolling on their second visit. This data highlights just how important it is to place your key content on a prominent position, especially on landing pages.

This doesn’t mean you should cram everything in the upper area of the page, just that you should make the best use of that area. Crowding it with content will just make the content inaccessible; when the user sees too much information, they don’t know where to begin looking.

Basecamp
Basecamp makes great use of space. Above the fold (768 pixels high), it shows a large screenshot, tagline, value proposition, call to action, client list, videos and short feature list with images.

This is most important for the home page, where most new visitors will land. So provide the core essentials there:

  1. Name of the website,
  2. Value proposition of the website (i.e. what benefit users will get from using it),
  3. Navigation for the main sections of the website that are relevant to the user.

However, users’ habits have significantly changed since then. Recent studies prove that users are quite comfortable with scrolling and in some situations they are willing to scroll to the bottom of the page. Many users are more comfortable with scrolling than with a pagination, and for many users the most important information of the page isn’t necessarily placed “above the fold” (which is because of the variety of available display resolutions a quite outdated, deprecated term). So it is a good idea to divide your layout into sections for easy scanning, separating them with a lot of white space.

For further information please take a look at the articles Unfolding the fold (Clicktale), Paging VS Scrolling (Wichita University – SURL), Blasting the Myth of the Fold (Boxes and Arrows). (thanks, Fred Leuck).

Blue Is The Best Color For Links


While giving your website a unique design is great, when it comes to usability, doing what everyone else is doing is best. Follow conventions, because when people visit a new website, the first place they look for things are in the places where they found them on most other websites; they tap into their experience to make sense of this new content. This is known as usage patterns. People expect certain things to be the same, such as link colors, the location of the website’s logo, the behavior of tabbed navigation and so on.

Google
Google keeps all links on its websites blue for a reason: the color is familiar to most users, which makes it easy to locate.

What color should your links be? The first consideration is contrast: links have to be dark (or light) enough to contrast with the background color. Secondly, they should stand out from the color of the rest of the text; so, no black links with black text. And finally, research shows (Van Schaik and Ling) that if usability if your priority, sticking to blue for links is best. The browser’s default link color is blue, so people expect it. Choosing a different color is by no means a problem, but it may affect the speed with which users find it.

The Ideal Search Box Is 27-Characters Wide


What’s the ideal width of a search box? Is there such a thing? Jakob Nielsen performed a usability study on the length of search queries in website search boxes (Prioritizing Web Usability). It turns out that most of today’s search boxes are too short. The problem with short boxes is that even though you can type out a long query, only a portion of the text will be visible at a time, making it difficult to review or edit what you’ve typed.

The study found that the average search box is 18-characters wide. The data showed that 27% of queries were too long to fit into it. Extending the box to 27 characters would accommodate 90% of queries. Remember, you can set widths using ems, not just pixels and points. One em is the width and height of one “m” character (using whatever font size a website is set to). So, use this measure to scale the width of the text input field to 27-characters wide.

Google search
Google’s search box is wide enough to accommodate long sentences.

Apple search
Apple’s search box is a little too short, cutting off the query, “Microsoft Office 2008.”

In general, search boxes are better too wide than too short, so that users can quickly review, verify and submit the query. This guideline is very simple but unfortunately too often dismissed or ignored. Some padding in the input field can also improve the design and user experience.

White Space Improves Comprehension


Most designers know the value of white space, which is the empty space between paragraphs, pictures, buttons and other items on the page. White space de-clutters a page by giving items room to breathe. We can also group items together by decreasing the space between them and increasing the space between them and other items on the page. This is important for showing relationships between items (e.g. showing that this button applies to this set of items) and building a hierarchy of elements on the page.

The Netsetter
Notice the big content margin, padding and paragraph spacing on The Netsetter. All that space makes the content easy and comfortable to read.

White space also makes content more readable. A study (Lin, 2004) found that good use of white space between paragraphs and in the left and right margins increases comprehension by almost 20%. Readers find it easier to focus on and process generously spaced content.

In fact, according to Chaperro, Shaikh and Baker, the layout on a Web page (including white space, headers, indentation and figures) may not measurably influence performance but does influence user satisfaction and experience.

Effective User Testing Doesn’t Have To Be Extensive


Jakob Nielsen’s study on the ideal number of test subjects in usability tests found that tests with just five users would reveal about 85% of all problems with your website, whereas 15 users would find pretty much all problems.

User tests
Source: Jakob Nielsen’s AlertBox

The biggest issues are usually discovered by the first one or two users, and the following testers confirm these issues and discover the remaining minor issues. Only two test users would likely find half the problems on your website. This means that testing doesn’t have to be extensive or expensive to yield good results. The biggest gains are achieved when going from 0 test users to 1, so don’t be afraid of doing too little: any testing is better than none.

Informative Product Pages Help You Stand Out


If your website has product pages, people shopping online will definitely look through them. But many product pages lack sufficient information, even for visitors doing a quick scan. This is a serious problem, because product information helps people make purchasing decision. Research shows that poor product information accounts for around 8% of usability problems and even 10% of user failure (i.e. the user gives up and leaves the website) (Prioritizing Web Usability).

iPod marketing page
Apple provides separate “Tech Specs” pages for its products, which keeps complicated details away from the simpler marketing pages, yet provides easy access when they’re needed.

Provide detailed information about your products, but don’t fall into the trap of bombarding users with too much text. Make the information easy to digest. Make the page scannable by breaking up the text into smaller segments and using plenty of sub-headings. Add plenty of images for your products, and use the right language: don’t use jargon that your visitors might not understand.

Most Users Are Blind To Advertising


Jakob Nielsen reports in his AlertBox entry that most users are essentially blind to ad banners. If they’re looking for a snippet of information on a page or are engrossed in content, they won’t be distracted by the ads on the side.

The implication of this is not only that users will avoid ads but that they’ll avoid anything that looks like an ad, even if it’s not an ad. Some heavily styled navigation items may look like banners, so be careful with these elements.

FlashDen
The square banners on the left sidebar of FlashDen are actually not ads: they’re content links. They do look uncomfortably close to ad banners and so may be overlooked by some users.

That said, ads that look like content will get people looking and clicking. This may generate more ad revenue but comes at the cost of your users’ trust, as they click on things they thought were genuine content. Before you go down that path, consider the trade-off: short-term revenue versus long-term trust.

Bonus: Findings From Our Case-Studies


In recent years, Smashing Magazine’s editorial team has conducted a number of case studies in an attempt to identify common design solutions and practices. So far, we have analyzed Web forms, blogs, typography and portfolios; and more case studies will be published next month. We have found some interesting patterns that could serve as guidelines for your next design.

Here, we’ll review some of the practices and design patterns that we discovered in our case studies in this brief, compact overview, for your convenience.

According to our typography study:

  • Line height (in pixels) ÷ body copy font size (in pixels) = 1.48
    1.5 is commonly recommended in classic typographic books, so our study backs up this rule of thumb. Very few websites use anything less than this. And the number of websites that go over 1.48 decreases as you get further from this value.
  • Line length (pixels) ÷ line height (pixels) = 27.8
    The average line length is 538.64 pixels (excluding margins and padding), which is pretty large considering that many websites still have body copy that is 12 to 13 pixels in font size.
  • Space between paragraphs (pixels) ÷ line height (pixels) = 0.754
    It turns out that paragraph spacing (i.e. the space between the last line of one paragraph and the first line of the next) rarely equals the leading (which would be the main characteristic of perfect vertical rhythm). More often, paragraph spacing is just 75% of paragraph leading. The reason may be that leading usually includes the space taken up by descenders; and because most characters do not have descenders, additional white space is created under the line.
  • Optimal number of characters per line is 55 to 75
    According to classic typographic books, the optimal number of characters per line is between 55 and 75, but between 75 and 85 characters per line is more popular in practice.

According to our blog design study:

  • Layouts usually have a fixed width (pixel-based) (92%) and are usually centered (94%). The width of fixed layouts varies between 951 and 1000 pixels (56%).
  • The home page shows excerpts of 10 to 20 posts (62%).
  • 58% of a website’s overall layout is used to display the main content.

According to our Web form design study:

  • The registration link is titled “sign up” (40%) and is placed in the upper-right corner.
  • Sign-up forms have simple layouts, to avoid distracting users (61%).
  • Titles of input fields are bolded (62%), and fields are vertically arranged more than they are horizontally arranged (86%).
  • Designers tend to include few mandatory fields and few optional fields.
  • Email confirmation is not given (82%), but password confirmation is (72%).
  • The “Submit” button is either left-aligned (56%) or centered (26%).

According to our portfolio design study:

  • 89% of layouts are horizontally centered, and most of them have a large horizontal navigation menu.
  • 47.2% of portfolios have a client page, and 67.2% have some form of standalone services page.
  • 63.6% have a detailed page for every project, including case studies, testimonials, slideshows with screenshots, drafts and sketches.
  • Contact pages contain driving directions, phone number, email address, postal address, vCard and online form,

Other Resources



Have any thoughts on what we’ve covered, or know of other useful usability findings? Please leave a comment below.

About the Author


Dmitry Fadeyev is the founder of the Usability Post blog, where you can read his thoughts on good design and usability. Follow Dmitry on Twitter @usabilitypost

Groovy Goodness: Using Regular Expression Pattern Class

http://mrhaki.blogspot.com/2009/09/groovy-goodness-using-regular.html

Test-Driven Development With Refactoring

Success on an Agile project relies heavily on the people in the trenches. Developers, testers, and product managers focused together, can deliver astonishing accomplishments in a short amount of time. Extraordinary results require discipline, motivation and alignment. Test Driven Development (TDD) and Refactoring creates the momentum to help developers organically adapt to an endlessly changing world. In this hands-on tutorial, you will see and try simple TDD and Refactoring exercises. The session is split in two videos.


http://www.testingtv.com/2009/09/24/test-driven-development-with-refactoring/

23 septembre 2009


20 Tutorials on CSS Graph and Charts

20 Tutorials on CSS Graph and Charts

Sample iPhone Apps with JSF

These iphone apps are deployed online so you can test them with your iphone or any other webkit based mobile web browser. Additionally here's a screencast explaining how these apps can be created with a couple of steps. 


From http://www.theserverside.com/news/thread.tss?thread_id=57930

Google Sync: Now with push Gmail support

"Earlier this year, we launched Google Sync which allows you to synchronize your Gmail Contacts and Google Calendar with your iPhone, Windows Mobile, and S60 devices. Today, we're adding Gmail support to Google Sync for iPhone, iPod Touch and Windows Mobile devices.

Using Google Sync, you can now get your Gmail messages pushed directly to your phone. Having an over-the-air, always-on connection means that your inbox is up to date, no matter where you are or what you're doing. Sync works with your phone's native email application so there's no additional software needed. Only interested in syncing your Gmail, but not your Calendar? Google Sync allows you to sync just your Contacts, Calendar, or Gmail, or any combination of the three.


To try Google Sync, visit m.google.com/sync from your computer. If you're already using Google Sync, learn how to enable Gmail sync. Since push Gmail has been a popular request on our Product Ideas page and Help Forum, we look forward to hearing your feedback, so drop us a line and let us know how it's working or what you'd like to see next.

Douglas Gresham, Software Engineer, Google Mobile

Update at 8:20am: We jumped the gun on this post. The new feature should be rolling out in a few minutes.

Push Gmail for iPhone and Windows Mobile

"Two years after Yahoo surprised everyone by launching push Yahoo Mail for iPhone, Google adds push support for Gmail. And it's not limited to iPhone, it also works for Windows Mobile devices.

'Push e-mail is used to describe e-mail systems that provide an 'always-on' capability, in which new e-mail is instantly and actively transferred (pushed) as it arrives by the mail delivery agent (MDA) (commonly called mail server) to the mail user agent (MUA), also called the e-mail client. E-mail clients include smartphones and, less strictly, IMAP personal computer mail applications,' explains Wikipedia.

Instead of periodically fetching new messages, mail clients receive notifications as soon as there's a new message. Applications no longer waste bandwidth and you're able to read a message shortly after it was sent.

'Using Google Sync, you can now get your Gmail messages pushed directly to your phone. Having an over-the-air, always-on connection means that your inbox is up to date, no matter where you are or what you're doing. Sync works with your phone's native email application so there's no additional software needed.'

If you're already using Google Sync to synchronize your calendars and contacts, it's easy to edit the settings and enable it for mail, as well.


Unfortunately, there are some downsides to this feature, so you should only enable push support for Gmail if you really need it. 'Depending on your device, any push connection may use more power than fetching content at intervals. In some cases the difference in power usage may have a noticeable impact on your phone's battery life,' mentions Google.

Google explains the difference between using Google Sync, IMAP and Gmail's web application for mobile phones. 'Google Sync synchronizes Gmail, Google Calendars, and contacts with your mobile phone. You can use the Google services directly in the built-in Mail, Calendar and Contacts application on your phone. Google Sync offers some advantages over using IMAP on your phone. Most importantly, it allows for content to be pushed to your phone within seconds after changes occur on the server. On the other hand, using Gmail Drafts from your phone is not possible via Google Sync. On iPhone and iPod Touch devices, the Gmail web application offers the most comprehensive features and the best experience for most users. But for users who prefer using the native Mail application, Google Sync offers an alternative way to access their Gmail account.'

While Google Sync is also available for Blackberry, Nokia S60 devices and other mobile phones, push Gmail only works for Windows Mobile and iPhone devices that support ActiveSync. At least for now.


The dirty secret of pair programming


Pair programming is one of the more controversial extreme programming practices. Having two people work on the same piece of code at the same time looks very unpractical and inefficient to someone not familiar with this practice. Pair programming proponents like me are usually quick to point out the benefits like improved quality, less rework, better communication and better knowledge sharing within teams but I think the biggest reason pair programming works is usually kept quiet.

People work harder when there is someone looking over their shoulder.
I'm going to be completely honest with you here. When I work alone I spend a considerable amount of time surfing the web, reading email, twittering (you can follow me at @mendelt) getting coffee and talking to coworkers. This means I'm spending less time working but it also means I'm constantly interrupting myself during the time I am doing work making me even less productive.
Now we don't tell our managers this because it wouldn't do anyone much good, the problem is a bit more complex than just people slacking off. What I've observed is most people have a hard time pacing themselves. We do really focused work for five minutes and then take a break. Unfortunately breaks have a habit of taking more time than they should and productivity goes out the window.
To solve this problem we need a way to maintain a sustainable pace. Pair programming is a way to do just this. Forcing yourself to explain what you do to your pair is a great way to maintain a sustainable pace and work a bit harder.

From http://agilesoftwaredevelopment.com/blog/mendelt/dirty-secret-pair-programming

The 7 Software Development Wastes - Lean series Part 6 - Delays

Introduction
Interestingly, this weeks blog covers the 6th waste - Delays - as identified in Lean. How appropriate after the long delay since my last blog post on Task Switching. Herein lies an example of what Delays in software development can cause.  Delays introduce discontinuity and trigger additional wastes already covered like Relearning. It's important in any process, including software, to have continuity. This reduces cycle time and minimizes other wastes like Relearning, Task Switching etc.
The rest of this series can be found here: Part 1Part 2Part 3Part 4Part 5.
Focus on the end-to-end process, not individuals
It's important to identify Delays early on and try to rectify them as soon as possible in order to maximize team productivity. It's interesting... I have been reading many interesting threads on the Agile forums lately about measuring developer productivity, team productivity etc. Managers/executives have us focus our efforts and attention on individuals instead of looking at the end-to-end process to find the real issues that address productivity and enhance team effectiveness.
It's actually unbelievable to me that organizations get trapped like this. Always thinking that Developers are the bottleneck. If we learn from what Lean teaches us, simple value stream mapping can uncover the real gems that can increase productivity.
Reducing delays between sprints
It's important to ensure that the value stream is tuned for maximum efficiency where there are little to no delays at any point in the process. For example, yesterday someone posted a question on one of the forums asking if it's possible to not have delays between sprints. Well of course it is possible but it takes hard work to get this right. You have to ensure that the backlog is properly groomed. So you need an effective PO who understands the market, the client etc. You need well written stories. You need estimates from developers early so the PO can make decisions ahead of the planning meeting. It's all about designing delays out of the system so that there are smooth hand-offs at all the transition points. And it's worth mapping this end-to-end process and identifying delays at each of these points.
Common Delays
So what are some of the more common delays you can look for and what can you do to avoid them?
1. Project approvals - waiting for projects to get approved is the most cardinal of all sins as this usually has handfuls of developers sitting around twiddling their thumbs and is a blatant disrespect for peoples time. Coupled with this is the fact that waiting causes dissatisfied and disgruntled employees and only serves to ruin the culture in an organization
2. Waiting for a proper prioritized list of requirements - so that work can get started.
3. Waiting for resources to become available - generally impacts projects significantly. This one is not necessarily an easy one to solve as there are generally budgetary concerns. But this then begs the question - is the company taking on too much? You can't be successful if you're not focused and properly staffed.
4. Change approval processes - well you don't want to hear my opinion on this. Suffice to say, these processes need to be eliminated entirely. And all Agile processes inherently solve these problems. Shortening Sprints helps big time.
5. Increases in work-in-progress - The more work-in-process, the more developers have to wait before they can deploy their code to production.
6. Delays getting client to sign-off on acceptance tests - We have a services business and we find that this is a huge problem for our organization. Not getting sign-off is just a liability for the company as you're not getting paid until you get sign-off
Take the time to assess where delays are occurring and I can guarantee you that the effort spent doing this is hugely beneficial to your productivity, efficiency and overall bottom line.


From http://blog.agilebuddy.com/2009/09/the-7-software-development-wastes-lean-series-part-6-delays.html

22 septembre 2009


Test Driven Development: Ten Years Later

http://www.infoq.com/presentations/tdd-ten-years-later

21 septembre 2009


Enhancing User Interaction With First Person User Interface

Though many computer applications and operating systems make use of real-world metaphors like the desktop, most software interface design has little to do with how we actually experience the real world. In lots of cases, there are great reasons not to directly mimic reality. Not doing so allows us to create interfaces that enable people to be more productive, communicate in new ways, or manage an increasing amount of information. In other words, to do things we can’t otherwise do in real life.

But sometimes, it makes sense to think of the real world as an interface. To design user interactions that make use of how people actually see the world -to take advantage of first person user interfaces.

First person user interfaces can be a good fit for applications that allow people to navigate the real world, “augment” their immediate surroundings with relevant information, and interact with objects or people directly around them.

Navigating the Real World


The widespread integration of location detection technologies (like GPS and cell tower triangulation) has made mobile applications that know where you are commonplace. Location-aware applications can help you find nearby friends or discover someplace good to eat by pinpointing you on a map.

When coupled with a digital compass (or a similar technology) that can detect your orientation, things get even more interesting. With access to location and orientation, software applications not only know where you are but where you are facing as well.



This may seem like a small detail but it opens up a set of new interface possibilities that are designed from your current perspective. Consider the difference between the two screens from the TomTom navigation system shown below. The screen on the left provides a two-dimensional, overhead view of a driver’s current position and route. The screen on the right provides the same information but from a first person perspective.



This first person user interface mirrors your perspective of the world, which hopefully allows you to more easily follow a route. When people are in motion, first person interfaces can help them orient quickly and stay on track without having to translate two-dimensional information to the real world.



TomTom’s latest software version goes even further toward mirroring our perspective of the world by using colors and graphics that more accurately match real surroundings. But why re-draw the world when you can provide navigation information directly on it?

Nearest Tube is a first person navigation application that tells you where the closet subway station is by displaying navigation markers on the real world as seen through your phone’s camera.


As you can see in the video above, the application places pointers to each subway station in your field of vision so you can quickly determine which direction to go. It’s important to note, however, that the application actually provides different information depending on your orientation.

When you hold the phone flat and look down, a set of arrows directs you to each subway line. Holding the phone in front of you shows the nearest subway stations and how far away they are. Tilting the phone upwards shows stations further away from you.



Making use of the multiple perspectives naturally available to you (looking down, looking ahead, looking up) is an example of how first person interfaces allow us to interact with software in a way that is guessable, physical, and realistic. Another approach (used in Google Street View) is to turn real world elements into interface elements.

Street View enables people to navigate the World using actual photographs of many major towns & cities. Previously, moving through these images was only possible by clicking on forward and back arrows overlaid on top of the photos. Now, (as you can see in the demo video below) Street View allows you to use the real-world images themselves to navigate around. Just place a cursor on the actual building or point on the map that you want to view and double-click.


Augmented Reality


Not only can first person user interfaces help us move through the world, they can also help us understand it. The information that applications like Nearest Tube overlay on the World can be thought of as ÒaugmentingÓ our view of reality. Augmented reality applications are a popular form of first person interfaces that enhance the real world with information not visible to the naked eye. These applications present user interface elements on top of images of the real world using a camera or heads up display.



For example, an application could augment the real world with information such as ratings and reviews or images of food for restaurants in our field of vision. In fact, lots of different kinds of information can be presented from a first person perspective in a way that enhances reality.

IBM’s Seer application provides a way to navigate this year’s Wimbledon tennis tournament more effectively. Not only does the application include navigation tools but it also augments your field of vision with useful information like the waiting times at taxi and concession stands.



Wikitude is an application that displays landmarks, points of interest, and historic information wherever you point your phone’s camera. This not only provides rich context about your surroundings, it also helps you discover new places and history.



These augmented reality applications share a number of design features. Both IBM Seer and Wikitude include a small indicator (in the bottom right corner of the screen) that lets you know what direction you are facing and how many points of interest are located near you. This overview gives you a quick sense of what information is available. Ideally, the data in this overview can be manipulated to zoom further out or closer in, adjust search filters, and even select specific elements.

Wikitude allows you to manage the size of this overview radius through a zoom in/out control on the left side of the screen. This allows you to focus on points of interest near you or look further out. Since it is dealing with a much smaller area (the Wimbledon grounds), IBM Seer doesn’t include (or need) this feature.

In both applications, the primary method for selecting information of interest is by clicking on the icons overlaid on the camera’s view port. In the case of IBM Seer, different icons indicate different kinds of information like concessions or restrooms. In Wikitude, all the icons are the same and indicate information of interest and distance from you. Selecting any of these icons brings up a preview of the information. In most augmented reality applications, a further information window or screen is necessary to access more details than the camera view can display.

When many different types of information can be used to augment reality within a single application, it’s a good idea to allow people to select what kinds of information they want visible. Otherwise, too many information points can quickly overwhelm the interface.

Layar is an augmented reality application that allows you to select what kinds of information should be displayed within your field of vision at any time. The application currently allows you to see houses for sale and rent, local business information, available jobs, ATM locations, health care providers, and more. As the video below highlights, you can switch between layers that display these information points by clicking on the arrows on the right and left sides of the screen.


Layar also provides quick access to search filters that allow you to change the criteria for what shows up on screen. This helps narrow down what is showing up in front of you.

Interacting with Things Near You


First person user interfaces aren’t limited to helping you navigate or better understand the physical space around you -they can also enable you to interact directly with the people and objects residing within that space. In most cases, the prerequisite for these kinds of interactions is identifying what (or who) is near you. As a result, most of the early applications in this category are focused on getting that part of things right first.

One way to identify objects near you is to explicitly provide information about them to an application. An application like SnapTell can identify popular products like DVDs, CDs, video games, and books when you take a picture of the product or its barcode. The application can then return prices, reviews, and more to you.



This approach might eventually also be used to identify people as illustrated in the augmented ID concept application from TAT in the video below. This proposed application uses facial recognition to identify people near you and provides access to digital information about them like their social networking profiles and updates.


While taking pictures of objects or people to get information about them is a more direct interaction with the real world than typing a keyword into a search engine, it only partially takes advantage of first person perspective. Perhaps it’s better to use the objects themselves as the interface.

For example, if any of the objects near you can transmit information using technologies like RFID tags, an application can simply listen to how these objects identify themselves and act accordingly. Compare the process of inputting a barcode or picture of an object to the one illustrated in this video from the Touch research project. Simply move your device near an RFID tagged object and the application can provide the right information or actions for that object to you.


This form of first person interface enables physical and realistic interactions with objects. Taking this idea even further, information can be displayed on the objects themselves instead of on a device. The 6th Sense project from the MIT Media Lab does just that by using a wearable projector to display product information on the actual products you find in a library or store.



Though some of these first person interfaces are forward-looking, most are available now and ready to help people navigate the real world, “augment” their immediate surroundings, and interact with objects or people directly around them. What’s going to come next is likely to be even more exciting.

The next time you are working on a software application, consider if a first person user interface could help provide a more natural experience for your users by bringing the real world and virtual world closer together.

About the Author


LukeW is an internationally recognized Web thought leader who has designed or contributed to software used by more than 600 million people. He is currently Senior Director of Product Ideation & Design at Yahoo! Inc., author of two popular Web design books, and a top-rated speaker at conferences and companies around the world. You can follow Luke on Twitter at lukewdesign or by using RSS.




© Luke Wroblewski for Smashing Magazine, 2009. |

How to Get Started with iPhone Dev

http://www.webdesignerdepot.com/2009/05/how-to-get-started-with-iphone-dev/