Tuesday, August 23, 2011

Distinguishing between work and risks can be difficult

Risk is a context in which we all live.  It is a reality.  Things we don’t want to have happen could happen, and sometimes do.  We have to plan around these things and work to avoid them.  Much of project work and management is to avoid risks from occurring in fact.

Escalating risks to management is frequently required.  The managers need to be prepared for the things that could possibly occur (the impacts).  People don’t like surprises and by sharing what could happen if risks do happen, you are doing well to cover your butt and prepare people.  (I told you so!!)

As the PM, you need to guide change and make things happen.  You are working your butt off to make the good stuff happen and prevent the bad stuff.  But some risks may be occur and by engaging a steering committee to help you avoid risks or prepare for them if they do occur, you’re doing well. 

It’s impossible to do everything as the PM and by including others—and not necessarily asking for help—but telling them that help *could* be needed, you’re doing the best you can.  At least they were informed and prepared for possible realities.  I told you so!!!

Wednesday, August 17, 2011

Linking to TFS 2010 queries through http://

Sometimes you’ll want to point to a collection of TFS items in the browser.  Here’s how:

  1. Locate the query, right click on it and Send to Outlook:

uozsljeg

2.  Copy the link in Outlook and party on!

tbhlxemf

Linking to the ‘new’ form for Work Items in TFS 2010

A customer asked me to create a link from his web site to allow users to create new TFS work items.  Here’s how:

  1. Find your TFS web client.
  2. Create a new item.

gmoxez1i

3.  Fill out the form as you’d like it.

image

4.  Click the ‘Copy Template URL’ button.

image

5.  Have fun!

Friday, August 12, 2011

The business architect role

Being a CEO is the same as being a business architect in my opinion.  I had coffee with a guy yesterday and he and I were talking about the role of architect in a consulting engagement.  I realized that the consultant architect really isn't the business architect.  What are the roles and responsibilities of the business architect?  The Business architect is responsible for the:

Contracts and legal engagement.  The business architect must care about the contracts and legal agreements.  He must be sure that he's partnering with and delivering the right things to the customer without painting himself into too much of corner with the nature of the contract.  This includes the retention of intellectual property gained and an ability to re-use concepts or the actual product being delivered.

Cash-flow.  Cash is king and the CEO has to be all about it.  Don't bother doing things for free; you're better than that.  Figure out how to finance the operation and who will get paid, when.

Product.  The product itself is where the IT/enterprise architect comes in to help define the right thing/solution for the customer(s).  This is a very critical role and the CEO should be keen on the product's success rather than just that of the project/delivery/cash flow.  If the CEO focuses on long-term value of the product and continuously improves that which is delivered (while getting paid), he will be in a good position.

Partners/Suppliers.  The people with whom the CEO needs to engage in order to be successful are many: advisors, engineers, workers, etc.  It's not easy to own and operate a business...you're eyes have to be on many things and the people with whom you're working are the key and core asset!

Opportunity cost.  To do the project or take the risk/opportunity is the primary goal.  You don't want the risk to be an 'all-in' proposition where you are 100% invested in the thing...but that may be the case.  If it is, make sure you balance your work and life and do things fun.  Don't have a heart attack, for God's sake.

I hope this list gives you a good idea of what's required to run a solutions/software business.  A lot!!

Enterprise workflows and custom applications help us tackle the world's toughest challenges

EfficiTrends has two parts: enterprise workflows and custom apps.  The reason we separate these two things is severalfold: solutions for enterprises have their own specific challenges and require a specific skill-set.  Likewise, creating consumer-ready solution also take a separate skill-set and in particular requires more marketing folks and fewer "business analysts".

We have over 15 years of experience creating custom solutions for enterprises.  Yesterday, the platform of choice for the enterprise was the web; and it still is, but that's changing.  Let me explain.

The disruption of the mobile internet is huge.  SmartPhones literally change everything.  People now expect to get robust services--whatever they may be--on their mobile devices.  Many companies are creating strategies and have offerings to expose corporate data on the phone.  Extended Results (www.extendedresults.com) is an example.

The major difference between the web of yesterday and the mobile web of today is where the users are.  Users used to be--and still are--in browers, but there are new devices now, as we all know; primarily iPhone and Android devices...phones and tablets.  These new devices really do cause a great disruption in the solutions development ecosystem.

In order to combat these bifurcations between enterprise/consumer, phone/tablet, and browser/native, EfficiTrends offers to main services to customers of all sizes: enterprise solutions and consumer solutions.

EfficiTrends Enterprise Workflows use our business analysts, architects, technical project managers, and developers to define and create new solutions within enterprises.  The enterprise has its own challenges and is mainly centered around creating reasonable and useful workflows that allow information to flow from source to source with high data quality and final approval.  These solutions may connect to mobile devices but could also be kept inside the firewall or delivered through the browser.  Examples include ERP implementations, CRM implementations, and custom SharePoint apps to gather data.

EfficiTrends Custom Applications are designed with end users in mind.  These could be SmartPhone apps or browser apps and can also be delivered within the firewall or to employees.  These types of appealing user-interface projects typically require different skillsets: designers and marketing professionals, namely.  The enterprise workflows really are a subset of custom applications.

So there you have it.  In order to combat the complex world of technology and organizational change, EfficiTrends employs two main methods to accomplish the goals of making happy customers: enterprise workflows and custom applications.  Contact us today to learn more!

Monday, August 08, 2011

My GTD/Remember the Milk Lists

A friend asked me what mine are today.  They are:
  • Inbox - Comes out of the box, used for active and important things.
  • All Tasks - out of the box...rarely use
  • Anytime / comms - Emails for phone calls I can make "whenever"
  • At home - Things to do while at home
  • At the office - Things to do at the office
  • Blog Post Ideas - List of blog posts I could write/ideas
  • Computer - Tasks requiring a "real" (non SmartPhone computer)
  • Costco - Things to buy at Costco
  • Drink Ideas - Cocktails
  • Email comms - Emails I have to send
  • Errands - Errands I have to run
  • For Home - Items for the house
  • For Trip - Items for an upcoming trip
  • For Work - Items needing to bring to / for work
  • Fun ideas - Ideas for fun things/events
  • Gift ideas - self-explanatory
  • Groceries
  • Meals - Meal ideas
  • Movies - My movie queue that I haven't yet entered into Netflix or Movies app
  • Music - Music/bands I want to study/listen to more
  • Ongoing projects - Big projects that I keep working on as a reminder
  • Places to Visit - We use this as a restaurants list that we want to go to
  • Seattle - Things in Seattle
  • Shopping - I'm not a shopper, so gift cards I have and larger purchases I need
  • Video Games - Video games I'd like to play
  • Waiting for - Things that people owe me.  A real favorite!
  • Weekday errands - Things that I have to do during the week since the places are closed on the weekend.
  • Weekday phone calls - Phone calls I have to make during business hours
  • ...Other random and specific project folders
  • Sent - A default folder
I hope you can learn from how I use this tool...

Tuesday, July 26, 2011

Kick Major Booty: The 10 commandments of being a technology and business change agent/leader

Below is my Top 10 List of rules I've learned over the 15 years building, selling, and implementing web apps.  I hope you enjoy them and learn from the many mistakes and experiences I've been lucky to have!

  1. Be different.  Build the thing that's missing; that they don't have.  Don't bore people with products that are way to similar/the same as what's already out there.  Don't be boring, dare to be different!
  2. Be business-minded and results-oriented.  Make sure that the thing you build connects very directly to the business context and drivers.  Be serious about business and results.  Only work on the things that pay you and for which the business will get paid incrementally.  Know value.
  3. Seek to know the customer's experience.  Clearly understand the numbers and drivers behind the way that all users of the system think and make decisions.  Think about the system from their perspective.  Understand what they need and how they think. Get in their heads.  Watch them.  Interview them.  What makes things easy and exciting for them/better?  What makes them tick?  What would excite/wow them?
  4. Test all assumptions ASAP.  Never assume anything but because you will have to, always build toward the things that will rapidly test your assumptions.
  5. Never work for free; find a customer 'cause you're good enough.  Make sure that you get paid for what you do; don't spend too much time toiling on free projects or for a customer target who is not very well defined; find a customer and charge them for what you do.  Let them be your "seed" funding.
  6. Be a data and process geek.  Map the flow and understand the business and business processes from end-to-end, in gory detail.  Know the edges and the context.  Intimately know the steps, functions, and limitations/constraints/realities.  
  7. Lead it like you stole it.  Be a technology/process/business change agent by being that person who can get the right things done rapidly.  Don't feel like you have to do it all *by* yourself but do take ownership and feel like if you're not with me you're against me and I'm going to make this *f'ing* thing happen!  Delegate.
  8. Baby steps.  Stay agile and be flexible in changing what you're building if you learn something new.  Don't throw your hands up or get too distracted with shiny objects.  Finish what you're currently working on so it's SOLID, and then move onto the next thing and make sure it somehow connects.  Build bridges.
  9. Build strategically.  Make sure you build the feature or product that will get them excited and keep them engaged (have a sales/marketing/process/adoption angle in everything you build).  Have balls.  Don't be a wuss!  Be different!  Consult with the Kano Model to balance what you build and make sure that it's not ONLY bells and whistles!
  10. Worship the customer.  Allow yourself to take direction from and fear the customer.  They're always right.  They may not always KNOW, but they're definitely always right.  It's irrefutable.  Above all else, allow yourself to be directed *by* them.  Build for them.  Worship them.  Understand the path you need to put yourself on so that you're laying that path for them so they can walk.  

Sunday, July 24, 2011

Clearly Separate the Selling and Delivering Functions

Part of being in the professional services field is selling.  Selling is huge/big/everything.  If it weren't for selling and business development there would be *nothing*.  Okay, maybe that's a bit harsh / too strong.  What I should really be saying it that product and service QUALITY are the number on things that matter.  But when there's trust involved and "strategic partnerships" involved, quality *can* play second fiddle to the relationship.  In fact it should be your preference to have these relationships *so that* quality isn't the only thing.

Contracting is a difficult business.  Contracts will get created and the more clear they are the better the chances are of delivering the right product.  I'm not making an argument here for no documentation, quite the contrary.  What I am trying to do is parse the distinction between two things: SELLING, and DELIVERY QUALITY.

By separating these two things in business we can create great solutions.  By having a sales and selling/relationships context, we can be all about the PEOPLE and RELATIONSHIPS and by having a delivery/quality context we can care all about the PRODUCT and CUSTOMER SATISFACTION.

The responsibilities of the Selling/External Relationships function:

  • Meet new people
  • Qualify people as good-fit customers
  • Maintain relationships and remain "friends" even when things are wacky (but try to be on the side of the delivery organization...this can be a very hard balance)
  • Sell new solutions and understand what's being delivered
  • Understand "drivers" in the client-organization business
  • Lead and manage
The responsibilities of the Delivery/Product organization:
  • Exhibit engineering excellent
  • Make quality/cutting edge products
  • Build for the future
  • Be great with your estimates
  • Communicate well
  • Deliver, deliver, deliver (demo, chunk, and milestone)
In your organizations make sure that you clearly separate and spell these two functions out!

Use companies as incubation hosts - deliver software through professional services projects

There are a million GREAT software ideas.  There are also millions of companies out there who could *greatly* benefit by applying these software applications to their businesses/operations.  But how do these ideas get built/realized and how to companies adopt them?  Professional services organizations like those I want to create.  In this article I'll talk about how things go from "great idea" to "applied prototype" to "service business".  I'll discuss each of these phases and then recommend things you can do to create and sell these types of businesses/organizations.

Great Idea.  In the beginning there's a good idea.  Let's say that our good idea is to provide a restaurant's customers with a "mobile app they can use to order, replacing the wait-person".  The restaurant patrons use their SmartPhones or Tablets to order from the restaurant menu while there.  The patrons launch the restaurant app, pick their location, identify their table, and then start requesting services from the kitchen.  The app would talk to a service that the wait-persons/kitchen staff use to fulfill orders and requests.  They, too, COULD have a mobile app that allows them to see the requests and mark them complete.

Applied Prototype.  The applied prototype phase is when this technology actually works for *a location*.  The basic service has been proved and the value of such a service has been documented as a case study.  For example, the benefits/drivers for this applied service are: order-taking time reduced, improved customer satisfaction with restaurant, and service flexibility.  The case study would measure and promote these items for example:

  • 50% reduction in order-taking time (via observation/data study)
  • 50% increase in customer satisfaction (via customer survey)
  • 50% increase in ease of organizational change (via management survey)

Service Business.  Now that the service exists once and there is a customer who will speak out for its value (and there's a software architecture to support expansion) this can be turned into a business product that is sold repeatedly.  The idea of it can be sold and it can also be marketed through sales channels and propoganda describing the service, it's value and customers.  During this phase, new customers can choose to get the service themselves and the service provider business can offer pricing to integrate and measure the system for that new business.  If they do it well, they will continue to improve the business and value driver effectiveness for the cost.  They will make money.

So...what does all this mean?  How do you go through these cycles?  Some recommendations:

  1. Have good ideas and be creative.  Think of things differently and as mobile, connected software services.  Talk to your friends, network, brainstorm.
  2. Understand the relationship of the new service to the existing business.
  3. Find early-stage businesses who are willing to share in the risk of developing and applying innovative service solutions and helping prove the value of these types of businesses.  (Sell!)
  4. Use these organizations to (co-?)finance your operations.  
  5. Deliver.
  6. Consider sharing in *some* of the future profits with the financier.
  7. Gain more customers and traction.
  8. Be the entrepreneur, driver, and owner.  Make it happen!

Friday, July 22, 2011

Sell two things: CRM and (Mobile) Apps

I was talking to a friend today about how the main business drivers for people are reducing delivery risk (through project management) and reducing cost, through better efficiency and project management.  I disagreed with him that these were *the* things that mattered to managers.  I posited to him that the following two things matter to people in today's market and economy: CRM systems (sell more, more efficiently) and (Mobile) application development.  I'll discuss these two things in details and then summarize.

CRM systems are very critical to businesses for the following reasons 1) things get messed up when your sales/selling process is messed up 2) if you can clean up your sales/selling process then you are headed in the right direction 3) there are some good systems and processes out there that can help people clean up things.  There are big ROI opportunities here.

(Mobile) App development is huge.  This is a *major* market disruptor right now and will be a major disruptor for business processes in years to come.  People with their smart phones are powerful. They can do a lot.  Building services and apps for these phones is very big business.  Companies want to capture these opportunities and they need help in doing so, thinking about it.  People with experience selling web-based solutions will have a leg up in selling mobile solutions...this is the new wave.

Using either of these two "sales tools" will help organizations have the right conversations with companies about things that matter.  Yes, Sam, we can help companies cut costs and manage their existing operations better, but so what?  Won't it be too late by the time we know?

Thursday, July 21, 2011

3 Elements of Delivery

Three
Delivering solutions is complicated because there are three elements that have to work together and these elements can be seen from two perspectives, so really, there are about six things going on in describing this.  But I'll keep it simple.  The major *technology* parts of delivery are:

  1. The content management system.
  2. The API
  3. The App
The two perspectives from which they can be seen are:
  1. The user as the company's customers
  2. The user as the company's employees
Depending on how we look at the parts, we get different results.  But in general, these are how the parts work and work together. 

The content management system is the part of the solution that the customer interacts with to control the content. This may be company employees and this can be end users (in other words, in one context, this could act as the app itself).  What's happening here is that INPUT is being received and stored in the database for presentation in the app, be that a business intelligence dashboard, or in a customer-facing app for the people (intranet, mobile, intranet, extranet, whatever).

The API is the thing that connects to the database/data store and "gives" the data to the app.  The API also "takes" information from the app and can persist that data as necessary in the data store.  The API's job is to provide a SERVICE that the app can use to get and put information.  The APIs job is to obfuscate the complexity of the database and business rules from the user/developer and give a simple way to interact with business objects / data.

The app is the thing that is awesome and pretty.  It is the main UI/UX that the user interacts with.  It is THE THING.  It is THE BIG THING.  It is the thing that people want to buy, use, and sell.  It is the sexy object of interaction, etc.  Somehow we want this.

My company offers APPS (and these other supporting elements of delivery) on mobile and any other relevant platform: PC, console, intranet, extranet, whatever you want.

Tuesday, July 19, 2011

Analyst analyzes, doesn't judge

As a developer doing analysis, you have to remember that the goal is to write down what the customer wants.  You are NOT to judge or think about what they're requesting from the frame of mind of the developer.  If they ask for something that you don't know how to do, looks complicated, and that kind of thing, simply write it down and go talk to your team about it and get back to them with an estimate later.  This data-collection phase of "what's requested" should NEVER be a discussion of what's possible/easy/pragmatic.  Separate yourself in this role as the data collector rather than the implementer/judger/decider.  Be a better sales person and never tell them no, or "that's too hard".

Monday, July 18, 2011

Target your job search with multiple versions of your resume

Getting a job in technology isn't easy.  In my opinion this is caused by the complicated and dynamic nature of the industry: very few people know which way's up and how to find the right candidates.  But there's many jobs out there, so how do you get one?  If you ask me, the secret's in creating several targeted versions of your resume; one for each major facet of technology:
  • Technical/developer resume.  This resume highlights all of the technical stuff you have done, all of the technologies you have used, and all of the results you've gotten from creating custom solutions for people. Make sure you call out all the technical details and make yourself really sound like a developer.  Speak to your skills from database to middle-tier to front-end and talk about your experiences on teams, developing and being creative.
  • Manager resume.  This resume should talk about all of the "business" and management / leadership roles you have done.  Tailor it to only refer to positions where you were a manager.  Remove titles that looked like developer titles.
  • Consultant resume.  This is your "all up" resume that points you as a leader and Jack of All Trades.  Tell people how you can work with customers, sell and implement solutions.
Be specific and choose the right resume to tailor when applying for the job.  Your overall positioning will help you feel grounded in what you do best: sell!

Sunday, July 10, 2011

Unified Delivery System

Unified delivery approach
Systems suck today at supporting the process of delivering professional services.  I define professional services as services provided to organizations for contract.  This typically includes:

  1. Legal contracts
  2. Payment
  3. The delivered work
In order to create this simple type of transaction, several systems are required to support the process (but I can't find one system that does it all for some reason):
  1. Track leads, accounts and opportunities - CRM (SalesForce, Sugar CRM, Sales Force)
  2. Estimate and track work - Project Management (MS Project)
  3. Invoice and track accounts receivable - Accounting (QuickBooks)
It shouldn't sound to this point that professional services delivery is complicated but for some reason it is.  I have not yet found an integrated system that supports the basic functions highlighted above.  This means that  managers are left to procure many of these systems individually and then *somehow* integrate them.  

It's the integration part that's the hard part, I think.  There's some interesting thinking out there like in Master Data Management (MDM) and the like for doing this in an automated way...but this might be the bleeding/cutting edge.

I'm going to start putting together the pieces -- for myself, my companies, and for resale--the systems required to support and automate the process of delivering professional services.  

Please let me know if you know of good-working, all up system integration.  

Saturday, July 09, 2011

The Genius Session

A genius session is a meeting between a customer and the "geniuses" from a consulting company.  In mobile application development, typical types of geniuses are: designers, Android developers, iOS developers, database types, and project/program/product managers.  In general, the sky is the limit in thinking of relevant experts you would want to bring to the table to think out your product or service.

AppsJack offers low cost and high value genius sessions to people looking to get a mobile app or improve the one they have.

Contact AppsJack today to explain your situation and help us think of relevant geniuses for you!

Custom, Generated, Configured

In the mobile application development space there are three main ways to build apps: custom, generated, and configured.  In this post I'll describe each and then discuss their relative merits and pitfalls.

Custom application development is when an app is built for the specific customer needs and the engineering shop makes the app basically "by hand".  They may re-use some components, but in general they are building the thing from scratch.

Generated apps are those built from frameworks like Sencha, Phone Gap, and Canappi.  At AppsJack we like Canappi for its ease of use and comprehensive treatment of functionality from the database to middle tier to front end, be it iOS, Android, or HTML/CSS.

Configured apps are a category of apps like those from Mobile Roadie that are configured.  They basically offer a template that you can use and plug things into.

For customers who are not very price conscious and want the best possible solution, they're going to want to choose a custom application and probably have it generated from a library like Canappi where possible.  For customers who are price conscious and want to plug into a basic app to get in the game, they may think of configured apps like Mobile Roadie.

Whichever type of customer you are, consider using AppsJack to get you the app you want.  We'll work with you to understand your needs and give you the best bang for the buck.

Sunday, June 26, 2011

A call for the Pre-Market

In Agile development, if the customer has sufficient funding, creating the product should be very rapid.  When the customer is not ready for the product, necessarily, there has to be a lot of hand-holding to prepare them for the change and to train them and their customers on the innovation that is being produced.

Much time is spent talking about agile development and how important it is.  Arguments are made for light documentation but I've found that this really isn't all of the story.

Test-driven development is critical.  But what about test-driven marketing?  Shouldn't most projects be for marketing/sales purposes anyways?  Why would we authorize our software developers to be the ones that approve whether or not the software is complete?

This is my argument for what I call the "pre-market" as in the market before the App Store, the Android Market, the production release, etc.

Agile supports this idea by distinguishing between iterations and releases.  We need to make many iterations on our software before we are prepared to release it.  But what is the framework into which the iterations are released/delivered and what are the tools that we have available to provide feedback on the iterations?  I would suggest that these tools are currently quite limited and I will argue that that the pre-market concept is a next "major wave".

Let me suggest a few features of the pre-market to help us get our heads around it:
  • Secure Portal The prototype is shared with the customer(s) in a portal
  • In-App Feedback The prototype is instrumented so that feedback can be easily given
  • Meta Data Centric The features and screens of the prototype become things on which feedback can hang, so the feedback can roll up
  • Central Database All feedback goes to the same central database
  • Invitation-Based The users of the portal can (optionally) invite other people to use / view the prototype
  • Filtering of Feedback  Product manager can flag what's important for next iteration(s)
  • Serves as Backlog The feedback can be filtered and aggregated into future iterations
  • Connected Many other features like sourcing of cash and resources could be added to this system
I'm passionate about this type of system and would love to see it come about.  Let's do it!

Wednesday, June 22, 2011

The value of mobile

The phone: it's in your pocket.  The web, it's in the phone.  
People ask why mobile is different than the web in general and I have several answers to that:

  • The web is cold and impersonal.  Although there are portals and accounts and you can log on and such, it's generally "detached" from you.
  • The phone is "in your pocket".  It is yours.  You possess it.  The phone is indistinguishable from the software it runs. 
  • The phone adds new data dimensions such as notifications, calling, and GPS.  It is attached to the user and ABOUT the user.
People looking to understand their customers need look no further than the phone or mobile device.

Thursday, June 02, 2011

3 Ways to Sell Technology

There are three main ways that I can think of to sell technology: 1) via your business analyst / sales team 2) via your designer team and 3) through your developer team.

In trying to attract customers and show them what you can do or start the wheels in motion on the relationship between you two, any of these ways is an option. I'll describe all three and then comment at the end about my opinion.

The first way is to have your sales / business development people do this. These people will not produce working code, prototypes, or designs. They *may* create wireframes to help solidify the design but only that. They will definitely have to record the user needs and objectives. They will have to serve as the product manager and make sure they understand what will fly for the product being produced.

The second way is to have your UI/UX people make some sample screens. They probably should do this from the wireframes produced, but you could have them go work directly with the customer and have them produce from a UI/UX experience. I'll argue that this is not the best way to lead.

The third way you could sell IT work is by having your developer team create working (prototype) software to show the customer what is possible and or some options. I think this makes some sense so that they can better visualize and understand things beyond just wireframes. A step in this direction but not the whole way would be to demonstrate *transitions and flow* between wireframes.

Overall, any of these methods is possible, but I would say that there MUST be a good business analyst / product manager in the beginning to work with the customer on what he/she specifically needs. Once the product concept is clear and understood, then the UI/UX person can come in and make the mockups really good. (You should charge for this). And once the wireframes and product are solid and perhaps the UI/UX person has had a chance to start, then the developer can start producing production code.

There's no one *right* way to do this but there are definitely wrong and wasteful ways. What are your opinions?

Wednesday, May 25, 2011

Using design-first to build the backlog


It is great (necessary is a better word) in application development projects--especially when the customer is concerned about the app looking good--to have a graphic artist / designer involved.

Right now, we're working on a project for state lotteries and we need a prototype. There's no customer but we want it to look good (have some sizzle) so it can sell.

To make it look good, we had a designer mock up some screens and UI/UX stuff for us. The mockups look great!!! ...BUT... (And I this is a very big BUT)...the designs have proven very hard to IMPLEMENT...so we've had to punt and backlog some...and I'm okay with this.

For me, in software, the goal is a functional prototype. An idealized prototype or mockups is not functional. Being too wrapped up in what the software should/could be is great but it's definitely not the goal for the project. For the project, what the product *can* be is the goal.

I think there's a balance between ideal and practical and here's my current thinking on it: if the customer is asking for a good-looking design, then get a designer to mock stuff up. Have a BA/PM-type-of-person parse out the observable behaviors in the screens and share those two things (mocks and use case descriptions) with the developer. Have the developer dive in. Most likely, there will be things that the developer thinks are too hard or are impossible to implement; the project manager will likely agree they are too hard. Proceed! Backlog the items that are hard/impossible and as fast as possible, get to the minimum thing that the developers can produce that most nearly complies with the screens and spirit of the designs and use cases / user needs. (imperfection is tolerated and encouraged...the speed to completion and "done" is the goal)

In my opinion software development is a process and can't all be done/solved in a single iteration. Get to "done" as fast as possible and let the developer decide what done is (he's the furthest down the chain and has the hardest/most stressful job in my opinion). Over time, as a team, the software can more closely comply with the ideals of the designers and users...over time...and it will never be done...never...