Forum OpenACS Q&A: Re: Do we need to follow Rational Unified Process or Any Software Engineering Process while developing ACS Modules

As Andrew pointed out, there are quite a few methodologies out there, none being ‘one-size-fits all.’ So before you start thinking about what methodology to implement, I would suggest you answer a few questions such as:

  • Technical competency of the client’s *IS/ICT* team
  • Resources at client-end for effective project management for them to be able to validate changes, plan and track on deliverables etc.,
  • Capabilities to integrate change into an analysis stage of a project, or say capabilities to analyse a project requirements to begin with
  • Knowledge and expertise in GUI prototyping for their requirments. This includes HCI expertise and Graphic design competencies at some stage as well
  • Agreed-upon communication policies and platform (Forums/Bug-trackers etc.,) between yourself and your client.

There could be more questions for you to answer, but the clearer picture you have, the better situation you are in to advice/consult your client on the best methodology to follow. From my experience till date, having a methodology in place is not just up-to you alone, but depends a lot on the relationship and understanding you have with your client and people (maybe consultants/developers) you work with, as it is also about working-style and personalities. These are the often ignored, softer issues I would say.

In general, you could be dealing with clients with well established IS departments and people on one hand, and the ones without, who usually expect the developer (in this case you, to have all answers to their problems). Some clients have in-house competence on OpenACS to interact with a contractor (for example Greenpeace has in-house competence), while some do not (there could be many examples of this).

There are people who pretty much know what they want, and would have done most of their thinking before reaching out to a contractor (you in this case). Some things you could clarify is if your role is merely that of an hourly worker, or if you are required (usually implicit, but could be an explicit job-role) to consult for your client on matters that relate to process and re-engineering.

‘ E-commerce’ as such is a very dynamic process that needs constant innovation as it works out (unless your client just wants a shopping cart, and that is it). In such cases, a flexibile methodology or process to execute your client’s plans could help. If I were you, I would ask if, as a contractor you are expected to have a more inclusive role, advising the client on things they could do. Your role here, in this case could range from educating your client, leadership to project planning, implementation of tools and techniques that range from working on process mapping to User Interface protyping, and so on.

In my opinion, these are issues that if thought well, could help you find the right methodology to apply on your project. I remember once Lars advising me to read up Joel Spolsky's guide to functional specifications, which he said was good. Maybe you could look at that as well. I would suggest you look up some Agile methods like FDD, ASD and Extreme, they seem pretty funky. Check out http://www.nebulon.com/fdd/ for Feature Driven Methodology and more on Agile Methods like Extreme Programming, Adaptive Software Development and all those jazzy things etc., on http://www.agilealliance.org/home

In the end, assuming that you are working on a small project, all by yourself, and need a lot of flexibility, you need to tailor your approach to your style, your client and map them down together with the people you work with.

Hope this helps…