Hi Ville,

First up, you have my sympathy - I know what it's like working with
difficult clients like this! It sounds like you've found yourself in a
situation where the client's lack of technical knowledge means they
undervalue what you have done and are capable of.

Regards the code structure and commenting, as a freelance AS developer, I
reckon I could pick up from where you've left off and develop the project
further using your code as a good base - as you point out, "it's quite
concise, well commented, and well modularized". In my experience of most of
the projects I've had to pick up, it's actually a breath of fresh air! So,
although I think it could be argued that there may be some better ways of
structuring the code, I think the advantages gained would not be enough to
become an argument for failure and negligence on your part. The code
structure is well suited to its purpose.

Regards the code being "too complicated" - I bet they've had a Flasher who
knows little more than how to make a button work look at your code and he
has freaked out! I didn't look at the code line by line to work out what it
was doing but I glanced over all your classes and I was left confident that
I would be able to follow what was happening and extend and modify with few
problems. There appears to be good division of roles (tasks broken up into
neatly contained methods rather than in a couple of overweight methods), I
didn't notice any code duplication and properties and methods seemed to be
clearly and sensibly named. If anyone says this code is "too complicated" my
opinion would be that that's because they don't get OOP and classes and that
they underestimate the complexity of what you're tasked with building.

Regards usability, I think this is a little more difficult to provide useful
comment on. Firstly, following your simple instructions, I was able to use
the system and generate the intended output. So, it works and, assuming this
is how the client briefed the project, it does what they've asked for. What
makes useful comment a little more difficult is that, as a naive user, I
wasn't sure exactly what I was setting out to achieve, what output to expect
back and how to interpret that output. As such, it wasn't obvious to me how
I should go about using the system and I'm not sure what the final output
(the orange highlight on the graph) is telling me. If the application is
intended for a closed group of expert users then this is not so much of an
issue but, if it is intended for the general public, I think the usability
has room for improvement. I certainly don't mean this as any criticism of
what you've done as I understand that this is what was briefed. For that
reason, if the client has an issue with the usability, you should not have
to shoulder the responsibility for this as I understand that you were tasked
with the development, not the interface and usability design. You may be
completely capable of improving the usability, but they should acknowledge
that this is a distinct role that must be briefed and payed for in addition
to development time.

In summary, it is not my view that you should have to shoulder
responsibility and blame for what your client views as a failed project -
you've done what you were briefed and clearly this doesn't match your
client's unrealistic expectation. The client should understand that a
nebulous brief will most likely led to them not getting what they expect.
That said, and to be frank, if you accept a nebulous brief, I believe your
must accept that you are partially culpable - I am the worst culprit and
admire those who can be brutal about refusing bad briefs! The hardest task
now is to try and help the client understand and acknowledge what is
realisitic. If you can do this you may be able to proactively recommend ways
of bringing the project more in line with the client's expectation but I
don't think you should have to cover the cost of doing all the extra work
which may be agreed. You may choose to accept some of the cost as a gesture
of goodwill but this entirely depends on the circumstances and how much you
value the client.

Ville, I hope this helps. I appreciate how stressful these situations can
be. If you want to follow up any of what I've said I'll follow the thread or
feel free to e-mail me offline.

Good luck!
Adrian


On 7/8/06, Ville Walveranta <[EMAIL PROTECTED]> wrote:

Some time ago I took on a project for a client for whom I had previously
executed several projects successfully. The Flash project had been
attempted
by someone else earlier, and abandoned after some 30 lines of actionscript
code - it was essentially an animation, nothing more. Their specifications
were fairly nebulous (I had copy of the earlier attempt which was
basically
a mock-up for what they were looking for, along with some additional
comments they spared). It was instantly obvious that the features they
were
looking for (dynamic data-to-graph translation now, server-based printing
and zooming for data down the line) that it was an actionscript project -
not something to be attempted in the timeline.



I worked on it and squeezed it out narrowly by the deadline they had set.
They were not happy at all. Supposedly the program is "not useable" by
them
(for reasons that haven't been explained to me, even though everything
that
was initially asked was implemented), and supposedly the code is "too
complicated" for another programmer to continue work on it.



For this reason I thought of asking some feedback from the fellow coders
here on the list. If you can spare a few moments, please take a look at
the
FLA and the associated code. I know it's not perfect as far as OO is
considered, but I think it's quite concise, well commented, and well
modularized. The FLA contains only the init code for the objects plus some
global definitions.



Would this be difficult to extend or modify if you inherited it from
someone
else?  Could I have accomplished the same with much less work (the
implementation was chosen not only for the current functionality but for
what I was made understand they would have wanted to add on eventually)?
How
much time do you think you would have quoted a client for this kind of a
project when starting from scratch.



The program is simple to operate: just go to profile page 1 or 2 and add
one
or more profiles (name, age, and at least one "life event" and associated
age - try something that is, say, 10 years or more than person's current
age), then select the profile from the drop-down menu and hit one of the
buttons to draw the graph.



The lay-out (colors, background) were dictated by the customer, and I have
in fact removed the client's name so the interface may look a bit spartan.



The live version:

http://www.astronfortis.com/flashdemo/futurewave.htm



FLA:

http://www.astronfortis.com/flashdemo/FutureWave.fla



Code:

http://www.astronfortis.com/flashdemo/FutureWave.as

http://www.astronfortis.com/flashdemo/EventButton.as

http://www.astronfortis.com/flashdemo/Profile.as

http://www.astronfortis.com/flashdemo/ProfileEditor.as

http://www.astronfortis.com/flashdemo/ProfileSelector.as

http://www.astronfortis.com/flashdemo/Global.as



The code is indented with TABs (TAB length 4 characters).



Thank you very much for any comments, feedback!



Ville



_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to