Still using IE6? Update to the latest version of IE or Firefox to get the most out of this site!



Requirement Analysis: Asking the Right Questions

requirements

Many times when you’re eliciting requirements, you may be asked the question:

“We need to add a textbox on this page. How long will it take?”

That’s when your brain starts firing off neurons and begins synthesizing questions so you’ll be able to best meet the demands of the task. To aid your requirements analysis journey, here’s a checklist that may help you predict the effort involved.

To start off, let’s take a simple task, such as “add a textbox on this page” and see what it could potentionally involve. These requirements may apply to other web components of a web page.

Usability Requirements

  • Should the TextBox have a label? Above it? To the left of it?
  • Is it a required field?
  • Should it be pre-populated?
  • Does it require AJAX functionality? Autocomplete? Retrieved from a defined set of data?
  • Is the TextBox already conveyed somewhere else in the form? (I’ve had times where the stakeholder didn’t know that the field was already in there. )
  • Where on the form should it be? (This is particularly important if you’re dealing with a form wizard. )
  • Should the data be tracked via some analytics tool?
  • How many characters are allowed?
  • Inline validation or validation after form submission? Error message at the top of the form?
  • JavaScript validation or server-side validation? Both?
  • Should the TextBox have inline help?
  • How prominent should it be? Above the fold?

Business Requirements

  • Does this TextBox show up to all users or just Administrators? (Depending if there’s a user privilege hierarchy in a CMS. ) What user roles are allowed to see this?
  • Does the data gathered in this TextBox go against the business rules of another product in the company? (For example, the TextBox could be prompting for your social security number, while Finance’s policy strictly forbids it. The stakeholder you may be dealing with may not know this.)
  • Does this have to be conveyed through reporting?

Content Requirements

  • What should the microcopy be for the label, for the error message, or text in the TextBox if it’s prepopulated?
  • What’s the translation in another language? (Ideally, find a native speaker; Google Translator may not be sufficient. )

Engineering Requirements

  • Do you need to modify application code to fit this TextBox in? Which class/file? New method? New property?
  • Do you need to add a new database column for this TextBox? Is there a column that you can reuse? Which table should you put it in?
  • Does this database column need an index? A new table? Referential integrity?
  • What data type is it? Varchar? NVarchar? Text?
  • Does it need to be indexed via a Full-Text Search Engine?
  • Does the data from the TextBox need to be in the user’s session?
  • Will you need to create new language tokens in your resource file to add the copy for the TextBox and label? Can you repurpose (or should you) existing ones?
  • Do you need to use JavaScript framework to validate it? Use an existing JavaScript validation function or roll your own?
  • Use CSS3 for styling? HTML5?
  • Should any API’s/Web Services be updated because of this?
  • Because this is a new field that was not introduced at the birth of the system, what should existing records that now have this new field, be set by default? Null? Empty string? Default text value? ID?
  • Does it impact any unit tests? Create new ones?

Testing Requirements

  • Are the Usability, Content, and Business requirements (shown above) met?
  • How does it display in various web browsers?
  • How well does it do in usability testing?

Deployment Requirements

  • Are the changes for this TextBox small enough so that it can be rolled out with the normal scheduled builds?
  • If not, when can it be deployed?
  • Does the build script or process need to be modified to roll out these changes?

Project Resource Requirements

  • Do you have the human resources (developer, designer, usability tester, etc.) to work on this?
  • Do you have to update documents (requirements document, project plan, etc.)?
  • What is the priority and risk for this project?
  • How much will it cost?

That’s just a high-level summary. I didn’t even mention SEM/SEO, branding or design requirements (if applicable). I’m sure you can go to a QA engineer, a content strategist, a designer, or a DBA, and get a breakdown of even more details. No doubt that you can dig deeper, but this should put you on the right track.

Posted in Technology that works | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Comments closed

“Don’t be scared.”

Millennium Communications helps a nervous businessman overcome his fears.

Posted in Creative that works | Tagged , , , , , , , , , , , | Leave a comment

Happy Hanukkah from our conference room

Posted in Creative that works | Tagged , , , | Leave a comment

Stop following me

The FTC is calling for the development of a “do not track” feature in web browsers.  With it, consumers will be able to browse websites without giving their data to companies.

Giving consumers this choice is a good thing.   Of course, consumers who choose this path will forfeit tailored, specific, helpful content. A “do not track” consumer who purchases a flight to Hawaii will not immediately see an ad for hotels in Hawaii.  For some, the right to privacy trumps the ease of technology and it should be respected.  I can refuse to use an EZ-Pass to pay tolls and add 20 minutes to my daily commute.  I can refuse an ATM card and wait for the bank to open, and then wait in line to withdraw my cash.   Convenience or privacy.  It’s a choice.

Posted in Technology that works | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment

Why should you Stop. Think. Connect?

A National Cyber Security Awareness Campaign

Security Officers are increasingly aware that prevention against cyber security goes way beyond keeping your anti-virus and malware software updated. In particular, organizations and individuals are facing attacks engineered through:

  • Phone calls
  • XSS web link redirection
  • Email phishing
  • SQL injection
  • Various other social engineering or fraud-architected scams

All of these methods are intended to obtain personal information such as passwords, SSN, bank accounts, birth-dates, etc. Such attacks are the main cause of identify theft, credit card theft, cyber-bullying, power-grid attacks and financial/medical data information leakage.

Because these concerns have become commonplace on the Web and Smart-Phone technologies, there is a national public awareness campaign  - organized by the National Cyber Security Alliance, the Anti-Phishing Working Group (APWG), key industry leaders, government agencies and various other nonprofits -  to educate and persuade Americans to see internet safety as an integral part of our home, community and work environments.

It’s the first public service message of its kind in the U.S. and its simple: Stop. Think. Connect. “Stop. Think. Connect.” is a simple, actionable marketing message for online safety and it applies to everyone.  The campaign is trying to reinforce the notion that secure online practices are a matter of public safety and national security, which we all have responsibility to protect.

The Campaign’s main objective is to establish security awareness as an automatic habit; like looking both ways before crossing a street, covering your mouth when coughing, and washing hands after going to the bathroom.

To learn more and how you can be involved, please visit http://stopthinkconnect.org/involved.html

Posted in Technology that works | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment

Pay-per-view has come a long way

Television meets the Internet with a joint product venture between Google and Sony. Sony’s new Internet TV, powered by Google TV, merges the best features of digital cable with new developments in Internet television and VOIP* technology.

Integrating our favorite social networks, search engines and other share points; Google TV and Sony have rolled out a fantastic new product that takes aim at the personal computer model and injects the Internet into our living rooms at a remote’s beck and call.

Do you think Google analytics will measure average couch sit click through rates in the near future?

Take a look at the product here:

http://discover.sonystyle.com/internettv/#/home

Read about Google TV here:

http://www.google.com/tv/

Nerd Alert:

* VOIP: transmission technologies for delivery of voice communications and multimedia sessions over Internet Protocol (IP) networks.

Posted in Technology that works | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment

This week in the trades

Do you read the trades? You know those jam-packed issues of How, Commarts, and AdWeek? Well, I read the trades and I’m overwhelmed with inspiration after just wrapping up my tour of the latest Communication Arts (advertising annual 51).

Number 51 showcases pinnacle creative, especially in the integrated campaigns section. It’s ultimately inspiring and thoroughly refreshing to see all of this great work.

One of the best campaigns in my opinion is the “Give it a Ponder” campaign launched by Y&R New York, and LG. This campaign takes aim at cyber-bullying and inappropriate texting, especially with mobile devices. The series comes to life with the help of James Lipton and his iconic beard. Prefacing each situation with an awkward and inappropriate texting scenario, the creative team at Y&R devises a “beard stroking” moment of contemplation.

In comes Lipton, who removes a gag beard and places it on the children in these various inappropriate situations. They stroke their beards and find resolution.

It’s funny, it’s quick, and it’s relevant to current events. As cyber-bullying and inappropriate texting grow ever prevalent, this campaign brings home a clear and easy to process message. It’s clever and silly, but not too silly.

With the help of a 360 campaign rooted within Facebook, YouTube and Twitter; “Give it a Ponder” meets my marks for “Creative that Works”.

Give it a Ponder:
http://www.giveitaponder.com/

Posted in Creative that works | Tagged , , , , , , , , , , | Leave a comment

Recursion vs For-Loop

So I’m currently in process of reading the infamous “Code Complete” by Steve McConnell. So far it’s been an amazing book and I definitely guarantee it to any programmer out there. I’ve just read the section on recursion and it mentioned how doing recursion for a factorial (or Fibonacci) function is not as efficient as a for-loop iteration. I guess I never thought about it, since in computer science I was always shoved recursion down my throat when doing factorials. I agree with him that computer science professors are eager to apply the idea of recursion on factorials, but I’ve never remembered a professor mention that it’s not the most efficient way. McConnell states in the book that doing recursion in factorials:

1. Is not as fast as a for-loop.
2. Not as clear to read as a for-loop.
3. Use of run-time memory is unpredictable.

Just for fun, I wanted to test his point on speed. This is a Python script that tests the average speed of a factorial using a for-loop or recursion. I noticed that for numbers less than 3000! the time it took for both functions were exactly the same. It was only when I bumped it up to 5000!, which is a huge number (16,327 digits). Luckily Python lets you work with very large numbers easily. Just had to increase the number of recursion calls in Python from the default 1000.

import win32api
import sys

sys.setrecursionlimit(10000)

def factorial_forloop( n ):
count = 1
for i in range( n, 0, -1 ):
count = count * i
return count

def factorial_recursion(n):
if n == 0:
return 1
else:
return n * factorial_recursion(n-1)

total_time_recursion = 0
total_time_forloop = 0
number_of_tries = 500

for i in range( 1, number_of_tries ):

start = win32api.GetTickCount()
factorial_recursion( 5000 )
end = win32api.GetTickCount()
total = end – start
total_time_recursion += total

start = win32api.GetTickCount()
factorial_forloop( 5000 )
end = win32api.GetTickCount()
total = end – start
total_time_forloop += total

print “\n”
print “Average time for recursion: “, ( total_time_recursion / 10 ) * .001
print “Average time for for-loop: “, ( total_time_forloop / 10 ) * .001

So in 500 tries, the results were as follows:
Average time for recursion: 1.284 seconds
Average time for for-loop: 1.083 seconds

It doesn’t seem by much but the results are interesting. But then again, a factorial is a very simple algorithm. In future posts I’ll try to test more complicated algorithms and see how they battle out. Also, this is Python. The results for C, C++, or Java may differ.

Posted in Technology that works | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment

Podcasts for the Web Developer and Designer

There are several ways to stay up-to-date with tech related news. Whether it’s via RSS feeds, newsletters, forums, user-groups—you name it—tons! What do all these have in common? You have to use your eyes and can’t consume them while driving! So, if you want a more passive way to stay in touch with what’s going on in the interwebs, and you’re a web designer or developer, here’s a few of them I recommend.

Web Development

Targeted at the web developer. Some of them cover specific languages, but they also cover various language-agnostic principles—programming methodologies, techniques, algorithms and tools. Additional areas include project management, business analysis, and testing.

HanselminutesFocuses on various software development techniques and best practices. Technologies center around Microsoft. The Dev Show Rounds up the latest technology news and stories in the world of software development.
jQuery PodcastThe official jQuery podcast. JavaScript and jQuery techniques, plugins, news, etc. Hosts interview many key people in the jQuery community. ColdFusion BrewColdFusion methodologies and best practices. Not updated often, but very informative. Great emphasis on the software development cycle.
CFHourColdFusion news, techniques, and interviews with key people in the CF community. Coding QA PodcastStay up to date with latest testing methodologies, news, and utilities. Recommended for QA analysts and developers.
jQuery for DesignersLearn to use jQuery in your projects. Tutorials and topics targeted at web designers, but I highly recommend them to web developers. This Week in ColdFusionColdFusion methodologies and best practices. Not updated often, but very informative.
Voice of the DBAWatch quick tips (videos run less than 10 minutes) on how to manage your DB and working as a DBA. yayQueryCovers the best topics in jQuery and development: plugins, code organization, patterns and antipatterns. Great hosts with a sense of humor.

Web Design

Targeted at web designers. Topics include: usability, information architecture, online marketing, web design patterns, social psychology, tools, HTML/CSS/JavaScript, and news.

The Big Web ShowCovers the many fields of UI: client-side technologies, usability, marketing, etc. Great interviews with various web veterans. Boagworld Web DesignDiscontinued podcast, but its history covers a wealth of information: usability, marketing, IA, client-side technologies, etc. Very similar to The Big Web Show.
UIE Brain SparksProbably the number one show I recommend for usability, information architecture, and UI design patterns. DOCTYPEWatch great video how-to’s for your client and server side projects. Perspectives from a web designer and developer.
Sitepoint PodcastThe Sitepoint Podcast – rounds up the latest technology news and stories in the world of web design and development. The UIE Book ClubNew podcast from the creators of the UIE Brain Sparks. Jared spool selects a usability-related book he’s read and tries to have a dialogue with the author.

General Technology

In addition to staying in touch with web design and development news, I highly recommend you choose one of these technology podcasts. Some of them are area-specific, like Security Now (which covers security) or Windows Weekly (which covers Windows/Microsoft news), but I highly recommend you take a look at each, since technology is always affecting our daily lives and our careers.

Tech News Today This Week in Tech Security Now This Week in Google
Net@Night Windows Weekly Buzz Out Loud Tekzilla
The Changelog RunAs Radio

Lastly, I have two other favorites that are worth checking out. These are two sources for audio/video podcasts for news and conferences that take place in the world of web design and development.

5By5—A few of the podcasts I recommend are from this podcast network. I find most of these are geared toward web designers. I suggest you check out their podcasts.

YUI Theater—Great videos by many pioneers in the client-side development genre. Contains a wealth of JavaScript videos from speakers such as: John Resig, Douglas Crockford, and Brendan Eich.

Posted in Technology that works | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment

Buckle up! WebP, WebM and SPDY have entered “The Browser Race”

WebP is pronounced “weppy” and it’s Google’s new WebP graphics format which has the potential to reduce image file sizes by approximately 40 percent when compared to the industry standard JPEG file formats. If you’re a skeptic like me, you can use Google’s webconv converter tool described here, to measure the results for yourself.

Okay… so once you are convinced that it works, and that this “lossy” image format produces decent quality images that can compete with JPEG formats, how is Google going to convince everyone to start using it? Why would anyone use WebP when the most dominant web browsers, digital cameras, software programs, photo kiosks, and operating systems do not currently support this new format? Well… to get everyone started… Google’s Chrome Browser will add WebP support in the next few releases.

Google hopes to convince a few other browser developers that performance should be paramount consideration in the browser wars. This is one of the main reasons that JavaScript performance and HTTP alternative protocols like SPDY (pronounced SPeedy) are all part of Google’s overall plans. Google’s focus on faster user experiences and lower bandwidth costs are definitely raising the bar for browser technology and the “default browser” war.

Additionally, since Google is offering all these technologies as part of their WebM open source initiative, it’s free to participate! Consequently, Mozilla, Opera, Adobe, Google and more than forty other publishers have already signed on!

Another compelling future vision is that hardware acceleration may eventually be built-in to mobile phones, desktops, and other solutions to support Google’s new WebM VP8 video encoder and decoder format; VP8 is a high quality, royalty free, open source codec deployed on millions of computers and devices worldwide; therefore, it’s quite possible that more solutions like mobile phones could eventually have built-in hardware support for the VP8 decoders. And, since WebP pictures are just VP8 video key frames wrapped within a RIFF message container, this new picture format may also benefit from hardware acceleration. See WebM Project for more details on this open source video specification and its relationship to WebP.

One thing is for sure, Google’s own web properties combined with Google’s fast-performing Chrome browser will continue to challenge and pressure other browser developers to either innovate or come along for the ride.  Either way, the ride promises to be fast, quick, and low-cost.  I know… I know… that doesn’t seem possible and your momma taught you so! WebP may not be adopted overnight but I wouldn’t bet against it too soon either.  Buckle up! The “need for speed” race is just beginning… and, Web Developer Companies are all coming along for the ride.

Posted in Technology that works | Tagged , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , | Leave a comment