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