Thursday, March 26, 2015

College Project to Real Life project

In the world of application development, the only very crucial factor which one should be very concerned of is the development methodologies.
We coders think that just writing up the code and checking whether the required functionality is working means the application is ready to go.

This is absolutely not the scenario when we come out from our college and join a company. There the projects are huge and one of the important thing which I learnt was there can be 'n' number of probability where the same logic and code may fall to satisfy user's requirement. Hence while coding one has to think very rigorously and sketch out the entire project module architecture and code blocks logic to find out the dependencies and how those will be achieved in the system.

I never sat down and gave 30% to 40% of time for designing the whole project architecture, dfd, erd, forms (their fields and validation) and the UI wireframe of each screen. I use to get excited and start to code. As the project scope was not that much big hence the development was done in few weeks with less number of obstacles. Starting in my career, I did the same thing and started working as soon as any project document use to come to me.

Later in the phase, I use to get stuck at some points which required initial brainstorming through the logic designing of the entire project. Due to this I had to change a huge block of codes which added extra overheads to development and I ended up taking more time for development. This same thing happened in the recent project on which I am working and about to complete it by the end of this month i.e. March 2015. It was started in the fourth week of January 2015.

Like the college project we decided that this app will be completed in 1 month or max 1 and half months. But wasn't aware that it can't be done in such a duration of time.

Following stuffs which I realised are:

  • Without listing down all the features in a detailed format one can not estimate what would be the expected time required to complete the project. During development and on completion of each module, client may say that this is the limited functionality which has been developed, he meant more through his two line of sentence which described about that module in the scope. Hence, list down each and every feature and functionality in the project.
  • Design the UI wireframe of each screen: This will help the designer to rapidly design the UI component and the widgets/component present in each screen will eventually describe what each one of them will do, like forms will describe the backend database table's columns, thus giving an overview of db schema. Click Buttons will tell what will be the action event they will do hence, DB class functions can be estimated as per those features covered by these click events.
  • For all the forms, the validation required on each field will be clear from the wireframes.
  • Discussing about all the scenarios, positive cases, negative cases, worst cases. What will be done in each case. This will describe how to design and develop the scenario when things won't happen according to the expected manner. Eg. when a long list of insertion is to be done what if a single record in the middle of the list wasn't successfully inserted, should the process continue or revert back all the transaction (i.e. insertion) [This may come under business discussion what need to be done in such cases, hence prior discussion of all this should be done].
All these lessons I have learn while working on the 2nd project, which was completely built from the scratch. It is going to take 2 and half months to completely develop the whole app covering every possible features which the app can provide to them (i.e customers) it is being built for.

Goals - long term vs short term rewards

 I guess it has started to be clear now that it's the goal which drives a person or else he or she may fall in the grip of the activitie...