IS480 Team wiki: 2012T1 Evynty Project Progress
|Home||Team||Project Overview||Project Management||Usability Studies||Documentation||Resource & References|
Final Presentation Slides
Please download our Final Presentation Slides here
Project Progress Summary
Since our Mid Term Presentation, Evynty has embarked 3 Sprints of Development. Sprint 3 took place from '8 October 2012 to 28 October 2012' and Sprint 4 took place from '5 November 2012 to 18 November 2012'. The gap between Sprint 3 and 4 was dedicated to making changes from the User Testing Evynty conducted with Venue owners from 22-24 October 2012. Sprint 5 took place from '19 November to 28 November 2012'. With the completion of these three sprints and their respective User Testings, functions on Evynty are:
The project ran went through several ups and downs during its duration. Obstacles were faced and overcame, highlights were experienced and shared. Click here to view all the highlights the team went through.
Two major challenges was encountered during the duration of Evynty IS480 project.
1. During the process of acquiring venues into the Evynty system amidst development
The game plan acquiring venue owners in the system changed from producing a perfect product for the market, to creating a Minimum Viable Product (MVP) in order to gain the interests of venue owners. When approaching venue owners, they were introduced to Evynty and the opportunity to become our beta partner, where they will be enjoying certain perks for a duration of 1 year. As venues to be listed in Evynty had to be unique, the quality of interaction and filtering of venues had to be of top quality, especially in the early stages of Evynty as it sets the stage for future potential and direction.
The team faced multiple rejections, and these rejections did not come easy. Not only did we had to manage the process during school, our efforts were not met with welcoming arms, which creates certain doubts in the project.
Through persistent and learning from experience, the team nailed the first beta partner who were willing to be a long term business partner in early October. This success gave confidence into the team and subsequently a few other venues agreed to be our beta partners. Since then, constant communication and testing are conducted with our beta partners to improve the usability and business impact of Evynty.
2. During acceptance, where we were rejected after our acceptance presentation
It was a smooth sailing journey all the way to our acceptance. The team did a mock presentation to our supervisor 1 week before our presentation, and got the green light that it was ready for our idea to be accepted as a FYP project. Though we did not get accepted after our acceptance presentation, the team was determined to make it work as we know that we had the capabilities to. Thus we identified what went wrong and what was missing from our project and started work on it immediately. The team stayed together for three days straight to work on Evynty, delivering functions such as homepage, login, register, dashboard management, search results and sample venue profile. An acceptance appeal was held to our supervisor afterwards, and our project was then accepted.
The team learnt a valuable lesson from this experience. That we should never assume that things will go our way, and we should always be prepared for the worst scenario, anticipate it and make sure mitigation plans are in place to make it work.
Supported by IIE:
Addressing a pain faced by many when organizing an event, or planning a special day with their special people, Evynty is supported by SMU IIE. The space that Evynty is tackling, online event management, is something that is missing in today's world as celebration becomes more of a social norm. Evynty is proud to be supported by IIE, and we would soon be applying for a grant fro Spring Singapore through IIE, and be incubated.
Creating a Web App that is actually used by real users and solves a pain:
Real life and actual venues are present in Evynty, where real people (venue seekers) can now search, compare and book venues and packages for their special occasions. Not only are we doing a project under IS480, by being able to acquire real users (venue owners) into the system to list and manage their business through Evynty, is a great achievement for the whole team.
Believing in our project, the team was able to secure several beta partners who are venue owners, who will be with us throughout our journey; idea sharing -> development -> launch. These venue owners will witness the progress of our product and service since the beginning, and providing us valuable feedback to make Evynty better.
Methods and processes:
Bi-weekly updates: The team found that the bi-weekly updates of current status and progress of individuals and the team as a whole allows them to understand the current situation better. As the SCRUM framework is adopted, the team only meet on a need basis. Thus by having the bi-weekly updates, it allows everyone to be be aware of critical activities.
Team Bonding: The team meets for badminton every Wednesday of the week, and this allowed everyone to take time off school and work on the project to relax our brains and body. After the session every week, the team feel much refreshed to continue work again.
This section describes briefly some of the project management aspects of Evynty. For full description of Evynty's Project Management, tools and progress, click here.
Project Schedule (Plan Vs Actual):
Since our mid term presentation, 3 Sprints were completed. Except for Sprint 3 which lasted for 3 weeks, Sprint 4 and 5 were of 2 weeks long. Initially, Sprint 4 was planned to be 3 weeks. However, after holding User Testing with our venue owners, there were quite a few changes that needed to be made thus we dedicated 1 week after Sprint 3 to do up the changes. Sprint 5's duration was also shortened after the release of information to freeze this wiki by 28th November 2012. User Testing dates and improvement operations was shifted earlier to complete by that date in order to complete the wiki.
Throughout the last 3 Sprints, the interaction the team had with our venue owners (beta partners), allowed us to design a system that is liked by our venue owners.
Click here to see what features were planned for each Sprint, and what were completed. View also the planned and actual project schedule through gantt charts of Evynty below:
|Sprint||Planned Schedule||Actual Schedule||Comments|
You can also follow our progress bi-weekly by downloading our bi-weekly progress updates here.
For a full view of the set of Project Management Tools of now Evynty Tracks its performance and progress, click here.
Below is a list of public metrics that Evynty uses you can follow:
|Metric||Sprint 1||Sprint 2||Sprint 3||Sprint 4||Sprint 5|
Customizing Django's core apps to meet Evynty's needs Django's core apps come with a lot of useful functionality. They are also a dependency for several 3rd party apps. Thus, it makes sense to use them. An example of a core app would be auth.user that implements the SessionMiddleware. However, implementing it as it comes is not sufficient for our needs and we have to make customizations such as using emails instead of usernames, ensuring emails are unique and verified and extending the length of the certain fields. Yes, all this sounds extremely simple to change. However, the challenge is in doing all of this without touching the source code of django's apps! It is not recommended to touch django's source code for the obvious reason that a lot of things in django might break if you unknowingly start to customize it for your own needs.
So, we had to use a signals system to implement these changes. By adding a signals layer, we essentially have a middleware that listens to signals which tell us when a particular type of object is saved or retrieved. We then modify the data in order to trick django into thinking it is getting what the core app wants but we are actually customizing the data for our needs. This was a challenge.
Mimicking a Google Calendar-like functionality for venue schedules For the venues to mark their schedules as available or not, we had to mimic the functionality that one sees in google calendar. We used a highly optimal database structure to store availability events that could be recurring. We then had to use complex processing to get, edit or split these events. A lot of cases had to be considered and carefully thought out before they could be functional.
Building an app on Django and deploying it on a Unix environment This is rather less complex but learning a huge framework like Django was a challenge for all of us. Also, learning how to deploy an app on Nginx and Apache required reading alot of documentation and a lot of trial and error. This was a big complexity that we faced during the early days of our project as none of us had used a framework/moved a language other than java before.
Quality of product
Provide more details about the quality of your work. For example, you designed a flexible configurable system using XML.config files, uses Strategy Design Pattern to allow plugging in different strategy, implement a regular expression parser to map a flexible formula editor, etc.
|Project Management||Minutes||Refer to Minutes Table here|
|Metrics||Refer to the list of metrics above|
|Requirements||Storyboarding||Refer to Feature Requirements here|
|Analysis||Use case||Refer to the list of use cases here|
|Business Process Diagram||Refer to our Business Process Flow here|
|UI Evolution||Follow our Design Evolution here|
|Design||ER Diagram||Refer to our ER Diagram here|
|System Diagram||Refer to our System Diagram here here|
|Testing||Test plan||Download the Test cases we perform internally|
Scalability - Scaling can be easily done by the webhosting service that we use. This is abstracted away from our responsibilities. We are using a well renowned hosting service called Webfaction that can scale our apps to our needs.
Performance - The use of the django framework and its best practices ensures a reasonable level of performance on the website. Besides that, much thought is given to the number of database calls made and all possible attempts are made to minimize the calls. Also, django has a built in cache setup that is used to improve performance. Once again, from the user experience point of view, browsing the website should be speedy and smooth. If a need arises and if this get feedback at UATs saying that the website is slow, attempts will be made to improve performance.
Reliability, Availability, Fault Tolerance - This is handled by our web hosting client Webfaction. Webfaction is well known and reliable. It has a good reputation in the industry. All responsibility for these requirements is abstracted away from us and towards their managed hosting service.
Usability - Usability is one of our top priorities and we try to ensure a high level of usability on our website via user-testing and feedback from our beta customers.
Maintainability - The code is being written in a clean manner strictly adhering to pep8 standards of coding in python. Also django best practices are being followed. Great effort is put into the avoidance of editing code in core or 3rd party apps. Workarounds are used in user apps so that there are no unexpected breaks in the code when additional 3rd party apps are added in the future or if a django version is upgraded.
The website is deployed at http://www.evynty.com via FTP before the end of every sprint. There is always a user with the username/email: firstname.lastname@example.org that has superuser access to the website under a secure password that will not be revealed on this wiki. If a supervisor needs this password please contact any member of our group.
In testing our system, we have created a checklist format Test Case document for internal testing. Tests need to return positive before User Testing is conducted. In addition, to achieve a bug free environment, we make use of a bug metric to determine keep track and monitor the health of our system. Refer to our metrics in the Project Management section above.
Four User Testing will be conducted:
- In Sprint 2
- In Sprint 3
- In Sprint 4
- In Sprint 5
Two specific groups will be targeted for Eynty's User Testing. And in each testing, we will aim to have a combined total of 50 participants from the two groups to test our system.
- Venue Seekers: This group can be anyone who needs a venue or package for an event. They will be using the system to find a venue of their choice, thus they need to enjoy the experience with us in order for them to return to Evynty for their next event.
- Venue Owners: As the name suggest, people who owns venue would be asked to perform testing to gather feedback from their perspective. As they will be providing the venues and packages, they need to enjoy interacting with the system to encourage them to provide as much information as possible.
Results from the User Testing will be logged and findings will be analyzed and changes will be made. To find out details as to how we do our User Testing and findings, refer to our Usability Study section.
Looking back, the team started out this project with technologies we were new to. However, knowing its benefits, our perseverance paid off as the development team were able to climb the ropes and be competent in each of their areas. Throughout the whole project, team dynamics and structure has been changing constantly in order to achieve greater productivity. One of the major changes that allowed higher productivity was the identification of individual strengths and weaknesses, and switching Brendon's role from implementation of features to pure Design Development.
The team has came a long way together. We started our as friends, and now we have grown into a team. Learning objectives that we set out to accomplish are all accomplished, marking a good chapter Evynty in the IS480, FYP project.
- To pick up new computing language (Python) that can build on our programming knowledge
- To learn to incorporate a new framework (Django) into this project
- To fully utilize open source softwares in pursuit of project completion
- To be more competent in applying knowledge previously learnt to solve real business problems
- Use a realistic approach to schedule planning by carefully estimating the efforts and resources required to fulfill the project scope
- To improve more on project management skills with this large scale project
- To ensure all group mates are on the same page by constantly updating progress of project through whatsapp group, emails and in meetings
- To come up with all potential risks for the projects and mitigation steps to improve risk management skills
Below are individual reflections by each member of Evynty at the stage of Mid Term.
After our mid term presentation, things started to pick up really quickly as work load from other modules increases, causing team members to divert more attention away from the project. As a result, I had to learn take their time table and work load from other modules into consideration of the number of work that should be realistic done from sprint 3-5. I have also learnt to plan things much more pessimistically as it would not only show a bad progress, but also decrease the team's morale when results reveal themselves at the end of each sprint.
Throughout the duration of the project, I have also learnt to switch roles between being a leader and manager of the FYP project, as well as to drive the direction, and sales and marketing efforts to get venues into the system through acquiring beta partners into Evynty. Being able to set up meetings with IIE together with the IS480 community, and eventually got the support of IIE was really great for the team. Our morale and confidence was boosted by the acceptance from IIE and the readiness to apply for the ACE grant. However, at the same time, I had to stay alert to make sure that things are being completed and done for the FYP project.
Overall, it has been a really great experience. I have learnt from my peers of how to become a better project manager, get to know each of them more and now we can work much more efficiently together compared to our mid point, after gaining much experience throughout our journey on the project together.
I have taken on the role of a project manager for the team and since then it has been a very exciting journey. I needed to learn how to handle each member individually and collectively in order to ensure proper communication in the team. When problems arise or there is work needed to be done, I need to learn to filter them and see what are the ones with high priority, and shield/postpone the rest till a suitable time. I have definitely learnt how to manage the schedule of the project, and how to use different appropriate tools to monitor and assess the progress of the team. This is one area that I need to constantly improve as well, as there is always a better and more efficient way of managing the projects. As time goes by, I would also want to learn more front end development and help out in more development as it is one of the critical factors of success of Evynty.
This FYP has been a great journey. I have faced several challenges in the implementation of Evynty. When I first had the idea, I really expected it to be much simpler task. However, complications that have arisen in terms of resources and changes in the scope of what Evynty is supposed to do after rounds of market research have made this a truly challenging project. That being said, despite remodeling and writing the same features over and over, I believe that we have finally manages to push Evynty into the right direction and white-space in the market.
Personally, I have learnt tremendous lessons both from the point of view of a developer and an entrepreneur. I am now fluent in writing code in python. Before this project, I only knew bits and pieces of it. I am also proud to say that I have a deep understanding of the Django framework. After spending hours refactoring code to make it more sensible and organized I have truly taken strides in writing usable django apps. From the point of view of an entrepreneur, I have met up with people who would love to use Evynty, and with investors who think this is an idea with great potential. It has been a challenge to change things in order to meet the needs of different stakeholders but it has been useful in teaching me invaluable lessons in dealing with stakeholders.
This FYP has been a great journey and has been a good start for Evynty. There is true potential in this idea and I am excited to take this further with the help of IIE and ACE.
Over the past 10 weeks I learnt a lot of technical stuff. Figured out how to do many cool things in django and python and learnt how to do useful things like setting up a git repository on a remote server. I improved my skills in dealing with linux systems. Other than the technical aspects, I learnt a lot about starting tech companies. I learnt from approaching customers are finding out about the features that they would like to see in the website. I also learnt about how one should validate the idea and source for beta customers.
Over the rest of the sem, I want to be able to continue doing what I have been doing. I also want to learn more about the front-end development that I have not touched at all.
Personally embarking on an IS480 project has been a great learning experience for me, especially after watching seniors' presentations for the past two years. I learnt that team communication and project management are two major aspects which determines the success of an IT project. Having involved in various roles throughout the project cycle, I gained insights to the overall project management and development as well as the importance of supporting team members positively. By ensuring proper and consistent communication, team dynamics can be transformed into an advantageous attribute instead of hindering project progress.
In terms of system development, code quality proved to be of utmost important as robust codes ease code management and allow changes to be made seamlessly without system interruptions. I would have never realised how crucial communication plays a part in ensuring common understanding between all stakeholders of the IT system as well as how business requirements can influence system complexity if not for this project. All in all, I have achieved my goals set out in undertaking IS480 to learn and benefit from the hands on experience to develop a complete, quality IT system.
As of midterm, I have learnt that being the intermediary between the front end and back end is not an easy task as experienced from creation of API to enable a restful website. Also, thorough testing is time-consuming but critical portion in ensuring quality in the system being built. Potential key areas for growth and improvement would be to facilitate more consistent communication between both front end and back end in order to have a clearer overall picture and requirements in order to prevent duplication of tasks and redundancy. As a backend developer and tester, I would say this has been a very exciting role as it is challenging especially when having to work as a middleman with conflicting requirements from both sides of the system as well as meticulous effort required to test the system in order to deliver a quality product.
I learnt quite a lot the last few weeks of FYP because we had to constantly update our codes to reflect what our consumers want. Although at times it is quite depressing to keep changing, as though it is never ending, when it is finally done up to what the client wants, it brings up a sense of enjoyment. As mentioned before, because the FYP is one that is self-proposed, we have to be dependent on ourselves to push ourselves to not go the easy way and to do things that are best for any given situation. May it be the solution is very difficult to implement or time consuming to implement, when it has to be done, it has to be done.
Moving along the tight schedule, there is more in depth sense of commanderie. More so with part of the team that have to work closely together to make things happen. I’ve also learnt a lot more in terms of communication where at first I could not get my thoughts through to the others, and now I’m more able to do so. I’ve also more experienced in time management. Although the amount of modules did not increase, the amount of work due towards the end of semester always increases. In addition to the changing of requirements for the FYP, it is essential that time is not wasted to ensure that most can be done with the little time that we have.
However one thing I would like is to have better plan each step of the FYP. It always seem that everybody understands what was discussed during the planning meeting, however when it comes to actually doing, we almost always realized that we have missed out some things during the planning. Overall, I think the FYP has given me a lot of experience in terms of working in a team and in a project that is self-proposed. It really makes me constantly think of ways to improve the system because there is no one (client) to guide us and our grades are very well dependent on ourselves.
Communication is very important to prevent conflicts and for better facilitation of the project. Time management is also very important and through scrum, I find it very useful as it ensures that the team follows the proposed schedule and meet the milestones in each short sprint. I have also learnt that discussions should always be keep open so as to allow constructive feedback to each other.
I've picked up photoshop designing skill. I feel that I've to work more on my time management and produce work meeting deadlines. I realized that communication between the front end coders and me is very crucial as theres no point designing something that cant be implemented. I'm in charge of designing the website and as of now, the website ui is not quite there yet but hopefully after midterm, with better time management and communication with the team, the designs will get better.