I was recently asked by one of our new clients about what are the 10 things you should know before starting a project? This made me to think really hard even if i am in this field for around 10 years now. While working on this list, i realised that it would be good to have this as a checklist for us for any new projects we start. Ever since we introduced this checklist, we hardly miss asking anything from client whether it is a small project or a large one.
Well, we are all human beings so mistakes are prone to happen. In Software development industry, it is very difficult to stay away from these. What if you are very excited about starting a new Software Development Project and missed a few things you should have taken care of earlier? This can result in a crisis at later stages of software development. Avoiding this would be difficult during later stages. How about making sure you have everything before even starting a new project? This does not get rid of any risks that may come into picture but it can certainly reduce the probability of that happening. Here are 10 things that i think are absolutely necessary for you to know before even starting a project.
1. Business Goal
What is the business goal of the application (How revenue will be generated via this system)? This may or may not be important depending on the type of the application. However, it is good to know the long term goal when you are engaged in a project. You may also want to know about the name of the Application, if already decided. This step includes identification of the audience of the application you are going to build too.
2. Application Existence
Whether it’s a new application that needs to be built from scratch or existing application? Any legacy application exists for the same? It is very important for you to know if the application you are going to build is to be built from scratch or there is already an application which you are going to enhance, or maybe re-develop. Legacy Applications are very difficult to deal with since these may have been built with old or out dated prcoess, tools and technologies.
Any reference application that the cliet wants us to look at? Or any competitor applications that we can look into for reference? This is very important because in todays world there is strong competition in every domain. Since you are building an application now, you need to look at your competitors and want to do better.
How requirements will be sent to you and in what format? This involves clear identification of development, designing (UX), QA and management tasks required for delivery of the application. Identification of things like language support, device support etc is also very important. This involves clearly identifying the long term plan of the application so that current functionalities will be built keeping that in mind. Prioritizing each task if possible in case of a small set of tasks for a project.
5. Tools & Technologies
It is always goof to know your client’s preference for technology used to build the Application. This could be open source, commercial etc. This also involves in identification of other tools required like Project Management Tool, Source code versioning system etc. It would be an added advantage to know preference of any specific Standards to be followed for designing and development.
Very important to know if there is any deadline for delivery of the Application. Before even proceding to analyze requirements, it is important to know the expectation in terms of delivery dates/time. You dont want to spend a lot of time analyzing something and then realizing that the client wants this delivered in a time frame that may not be feasible.
7. Application Assets
You should have access to all assets required to build the application which includes all COMPS, Specs, and any other documentation for the application. Additional details, if applicable should also be required including current system URLs if any, credentials, FTP details for development server, Database access etc.
List of stakeholders from Client’s end who will be involved, with their contact details and their role. It is very important to know the person from client’s end who has the complete control of the Project. Meaning, Identifying the stakeholder who is having power to take all the decisions. Defining a process on how the reports for progress of work is to be communicated. Knowing who will be responsible for approving work from client’s end? Also knowing about the freqency of the project status meetings required by the client is important.
9. Development & Delivery Process
Clear process to be defined. For instance defining a day for sprint delivery like every Thursday, or Friday etc. Defining a QA process up front together with things like which browsers and which OS the application should support? Defining Staging environment process, proof reading process etc.
10. Deployment Strategy
Deployment strategy to be defined up front like when changes to be made to go live after the QA done from your end and client’s team.
The above list is based on my experience working on different projects, with a lot of clients from different countries. This list, by any means is not a standard list that is a must for every project. However, covering most of the items from above list reduces the risk of missing something and in turn unhappy client.