For every project which is going to be started there are at least 11 things which you need to do before. Here is my list of things which need to be happen before starting any project. During my work experience I’ve started many projects and I think that these are the most important issues which you need to do before start the project.
- Choosing the Framework – I’ve written few articles about this. There are also quite many articles written in other blogs or sites. I am just scratching the surface in this area, but this is the most important step of the project, because after this you need to stick to the chosen framework’s api. So it’s better to choose something convenient and easy to be used. Of course people which visit my blog at least more than once it will be more than obvious that my choice is CakePHP.
- Planning the Functionalities – in this step should planned be very careful, because this is what the product/application will do. It is connected to the previous and also to the next step, because the functionality need to be implemented with the chosen framework. To understand the functionalities, you or at least person from your team need to spent some time with the end user which should explain what he or she expect when the product is ready. There are many projects which failed, because the communication between developers and end user is not good enough.
- Planning the database – important step of every project, because database holding the application data. The database need to be planned very carefully, to meet functionalities of the application. There are many examples for wrong database design, so instead to make your life difficult, better spend some time to design it properly.
- Creating User Management and Authentication – every serious system need to restrict access to some of it’s features. That’s why Authentication is very important. It’s also important to keep and maintain the user data safe, so no one can steal user’s passwords, or changing their data. The bad example of implementing this step, is TLA website where the passwords are stored in plain text. It’s very good if the chosen framework support such functionality native. Well CakePHP already have Auth Component which successfully can handle this.
- Implementing Authorization – This part is invisible for end user, but it’s critical for every serious application. This component is connected to Authentication component, because after identification /Authentication of each user/ need to be applied correct rights to work with the application. CakePHP also support this functionality through ACL Component which is very convenient.
- Creating common classes and helpers – On this step you need to create and implement common components which will help you with the Application functionalities. Here it’s good if you think how to handle the date/time values, tree structures and lists, some application specific routines which will be used in many places in the application etc. Here I could include also a product basket, or multi product selection like quote/order/invoice interface and so on.
- Creating the layout /design of the application/ – the layout is the design of the application. This step need to be confirmed with the end user and better if you have UI designer in your team. in this step you need to define where will be positioned the common application parts, such as Menu, Main area and additional info boxes. The layout need to be intuitive and nice looking.
- Creating the menu – it’s separate functionality and it’s very important in every project, because this is the main entry point for each part of the application. It’s good if this part could be extendible /i.e. more than one level of the menu/ and also it’s good if you can mark /identify/ some how where is the user /the selected menu/. Indicating where is the user, giving more convenience of the users.
- Forms – Forms is the common and most used interface in every application. With form fields users interact with the application, add or change the data and so on. Having a helper which will create form fields for you will save you and your team a lot of work. This helper need to be used very easy /for creating a field it’s need to call single function almost without any parameters, but it’s also required to be easily extendible. CakePHP also have this functionality.
- Validation method – Every form require some validation /at least to check some required fields not to be blank/, so this class need to be incorporated with the form helper class. Validation need to support at least the basic validation rules, such as not empty field, is e-mail, is number, etc. This class also need to support customization, because there are thousands different requirements for different cases such as field dependencies, localization values and so on.
- List interface – The second common interface after forms are the lists. This class is good to be created with following functionalities included: Paging – showing huge data list is not very convenient, because it will take long time to load all data in one time, especially in web applications. Column sort – sorting the data by different criteria is required very often from the end user. Data filter – after sorting this is the second used functionality of each list – filter the list data by some criteria.
For conclusion I would say that having these classes and functions in your quiver will save you a lot of troubles and will speed up your work. I have most of them included in my favourite framework – CakePHP, these ones which are not included I’ve already created and I am using them in my projects so far.
I would really want to know what are you thinking for this list.