Archive for April, 2010

A Useful Frame of Reference

April 30th, 2010 No comments

Last week the members of an organization I’m friendly with looked to me to what you might call “spot check” a project proposal that they had received.  It was a sizable project, so there was to look things over to ensure that it, as scoped out, would predictably leave them happy with the result when the work was all done and the fee was all paid.  I looked for answers to the following concerns:

  • Are there any disconnects between the expectations of the organization and the contractor’s understanding of those expectations?
  • Is there anything missing?
  • Is the scope of the project sufficient to complete what the organization wants?
  • Are there any gotchas, or foreseeable add-ons that will be needed later?
  • Is the time line accurate and realistic?
  • Is the price commensurate with the work, and reasonable against industry norms?

Doing this was a great opportunity: I got to exercise one of my more unique abilities to help out some friends, and I got a rare chance to compare how I roll with others in my trade.

What ideas, lessons, or insights did I take away from that comparison?  Plenty, but for now I’m going to focus on the one that strikes me the most:

I’m super inexpensive and work uncommonly fast.

(A corollary to that, I suppose, is that my sales process is rubbish: if I could pitch on a lot more projects a year I could perhaps get away with selling fewer but far less sweet-of-a-deal jobs for my clients.)

After fully grokking the project as laid out and enjoying a follow up conversation with members of the organization, I was clear I would be delighted to do it for literally half the price and could deliver it several weeks sooner, which made me feel pretty darn effective.  My deepest compliment however was what came back to me from the contractor: the presumption that in order to realize such cheap speed I would be using off-shore resources.

Nope, it’s just little ol’ me and my friends at Playground Creative. :)

Categories: Business Tags:

Fixed Price or Bust

April 17th, 2010 2 comments

It’s worth acknowledging that anyone who hires a professional to build a web application (me, for example) is taking a sizable risk: for a sizable amount of time and money, they will get an end product that doesn’t yet exist, the description of which itself is subject to ambiguities, misunderstandings, and mistranslations, and the implementation of which is often fraught with surprises and complications.

To mitigate this risk, a professional can (and in my opinion should) take a risk themselves: to deliver the system as specified for exactly the agreed upon price.

How could that be considered a risk?

Most web applications are inherently complex, and a large portion new applications consist of one or more novel problems to solve.  Both complexity and novel problems contribute to the likelihood of unforeseen gotchas, surprises, and challenges, and guesswork is accordingly injected into estimating the time and money involved.

Therefore when a professional gives a price, it’s an assessment of how much work a project will take that is made without the luxury of hindsight.   Saying something like “you know that thing I said would cost $800?  Yeah, turns out it’s harder than I thought and so it’s going to be $400 more.” to a client is an admission of a failure in making this assessment.

“Fixed Price or Bust” is the model I subscribe to handle this risk: I learn what I need to about the project, estimate the complexity of each segment, assign appropriate prices for each, and then for each segment, one of three outcomes will result:

  1. Nailed it. All went according to plan: I complete the segment within the time that I’d estimated, and all is well.
  2. Stumbled. It was harder than I thought: I got it done and on time, but not without sacrificing extra hours dealing with curve balls I failed to foresee.  I lost some time but gained some learning, and it looks just like the first case to my client.
  3. Bust. It was much harder than I thought: so much so that I need to let my client in on the problem(s) that have arisen and given them options.  This step constitutes reorienting to reality in light of new information and experience, because the estimate in this case has proved be wildly inaccurate/optimistic, and I take as much responsibility as I reasonably can: either we renegotiate the time line and/or cost, revise the approach somehow, or we drop the segment outright and I eat my time already spent.

Bust represents an occasion where a client is saddled with the uncertain complexities of software development, something we web professionals are hired to abstract away as much as possible.  Accordingly it should happen as rarely as possible.  In my 4 years of freelance web development there was only one time that I busted.

Fixed Price or Bust creates a responsibility on the side of the professional that I think goes a long way to support clients and foster trust in the process.  It puts the onus on a professional to accurately assess the complexity of a project.  They have strong incentive to get it right, and a strong disincentive to get it wrong.  If a segment of work turns out to be harder than anticipated, Fixed Price or Bust nearly ensures that the situation remains their problem, and not the problem of the client.  Working faster for a fixed price both increases the profitability of a professional as well as gets a client a completed project sooner.  It’s a great alignment of priorities.

Categories: Essays Tags:

Pretty Software for All

April 9th, 2010 1 comment

If web developers were elected, that’s one of the platforms I would run on.

All other things being equal, we’re all pretty much hard-wired to prefer pretty: the people we’re with, the spaces we live and work in, the scenery around us.

What we have to stare at on our computers is no different.

Making software that is pleasing to look at is a good way to honor your users.  It’s a way of saying “I know know you may be staring at this for a considerable amount of time, so I want you to enjoy it.”  Apple has done this remarkably well: I’ve been a Windows guy since my first computer, but I still have moments of being drawn to my gal’s mac… it’s just so… so shiny and looks so good.

Where Design Gets Neglected

In the realm of companies who need custom software built for strictly internal use, I’ve noticed a certain acceptability of ugly software.  After all, it’s not like the the users of it need to be sold on the design.  Once it’s built, that’s pretty much what they need to use to get their job done.  Adoption is mandatory and there’s only one option.

So the desire or tendency for companies to skimp on design, or for developers to phone it in (favoring instead to focus on making it work), is understandable, if not outright pardonable.

But the web, as a medium for creating applications, changes things a bit.

Design for, say, Windows desktop applications (a longtime dominant platform for corporate custom applications) has been largely tethered to the native look and feel.  When you build something to run on Windows, it’s presumably a path of least resistance.  You know the look:

The web, on the other hand, is aesthetically powered by its delightfully simple and powerful CSS technology.

That’s good news, because if you’re building a project that will run in a web browser and your developer is CSS savvy, the cost of realizing any given look-and-feel throughout the system is drastically reduced.  You can set up a developer with a PSD that reveals the aesthetics of the common widgets to be employed throughout the system (buttons, text inputs, tabbed regions, etc.), and he or she can remix and re-purpose those widgets to build the entire application to match.   If it’s built right, it’s just a matter of swapping out one or more images and/or tweaking one or more CSS rules to achieve system-wide design changes, from minor tweaks to thorough overhauls.

Why This is a Win

It’s true, ugly software that doesn’t need to be peddled to a finicky public won’t suffer from fewer sales, nor will it reveal to a wider audience any embarrassingly bad sense of taste.  The benefits of working daily on software that looks good are less tangible but still probably important: morale and productivity.  “I love what I do” is a good way to cause a highly effective team, just look at Zappos.  If you have a single program that must be worked on an hour or more a day by your team,  better to have that program say “I want your experience to be pleasant” than “this is ugly and we know it and we don’t care.”

The web era makes pretty software design much easier to implement, so with that lessened barrier it’s become an even better investment.  After all, the forces of aesthetic preferences are always at work in the consumer market for software.  The same human element is present for people who must work with corporate software, it’s just that, given the lack of choice, the effect plays out in different ways.

Categories: Essays Tags:

Ten-Email Volley or Five-Minute Phone Call?

April 7th, 2010 No comments

In my experience, some of the formality of programming for hire seems to precipitate an unfortunate reliance on email for communication in lieu of picking up the phone, and this goes both ways: client to programmer, and programmer to client.  There are a number of reasons for this that I can see:

  • The stereotype that programmers are anti-social and/or need to concentrate (a client might think “maybe I shouldn’t call them and interrupt their programming mojo”).
  • The reality that programmers are anti-social and/or need to concentrate (a programmer might think “if I call them we’ll get wrapped up in all kinds of winding dialog about out-of-scope feature requests and what-ifs”).
  • An unclear working arrangement for that kind of time spent (does phoning up the programmer hotline rack up billable hours?).
  • A perceived notion that an email, being less intrusive, is a better way to respect the other party’s time.

These are all valid reasons, but the downside of being stuck with them is the [largely hidden] downside that lurks in relying on email communication for such a thing as software development.

Software development is complex.

It’s not necessarily hard, but it’s complex: there are many small parts that come together to make up the finished product.  The process of creating it is therefore is ripe for ambiguities, misunderstandings, and varied interpretations of the same stated intentions.

The antidote?  Clear and fluid communication.  Communication that does not require formalities like a scheduled meeting with 2 weeks lead time.  My ideal is being able to pick up the phone, get my client up to speed on what’s going on, and answer whatever questions are on the table.  Five minutes is par for the process, and when it really works we end the call feeling like genuine collaborators building something great, clear that our visions are aligned and we’re on track.

By email that kind of satisfaction just isn’t possible.  If I have a question, there’s a decent chance that what I’m asking won’t be fully addressed by the email answer I get back, and an even better chance that I’ll have a follow up question precipitated by that answer.  The minutes both me and the client have spent typing up our correspondence quickly passes the five minute mark, and the back and forth doesn’t do nearly as much to bolster a sense of team, or confidence that all is progressing smoothly.

That’s why I like to encourage that kind of accessibility: I want my clients to call me up when they’ve got something on their mind pertinent to the project, and I request of them license to do the same.  I have yet to have a client abuse the privilege or even come close to doing anything that could be called wasting my time.  When I come across a design decision I hadn’t considered and don’t know enough to pick what will be best for the business, I love calling my client and getting them in on the scenario.  It gets them interested and involved in new opportunities, and lets them be more at the helm of getting exactly the end product they want.

Categories: Communication Tags:

Public Service Announcement: Have a Translator

April 2nd, 2010 1 comment

This pertains to more-or-less corporate development projects, where projects are invariably rooted in a real bottom line intention.

If your developers aren’t hip to the surrounding business lingo, or don’t have time (or inclination) to learn the bigger picture  (like which kind of customers are going to be using it, the anticipated ROI, or what the customer support team really needs, etc.), make sure you’ve got a translator to bridge the gap.

On one side, a good translator will ensure that the business brains devising the project aren’t overlooking some great opportunities that tech could offer to solve the problem, and that they aren’t asking for what turns out to be a technical nightmare for only a minor gain.

On the tech side a translator will make sure the programmers don’t get carried away with the “cool factor” (tech for the sake of tech), and that instead what they’re churning out is a real fit for what’s intended.

The net result on both sides is that a good translator will keep a project on track, true to it’s original need, and ensure that the technology being employed is a good fit for the problem at hand.

Categories: Communication Tags: