Milestone: Process - SSW-345-Team-5/Discord-Bot GitHub Wiki

Notes and Documentation

Practices

The team made use of GitHub's issue reporting and milestone system to effectively divide the technical development of this project into four distinct milestones. These milestones helped to create an itemized work breakdown structure and aided in project scheduling and estimation. These milestones were comprised entirely of issues located on the project's kanban board, meaning that they were linked to real time status updates in development via pull requests and other closures.

Consistency

The team followed a work breakdown structure that maximized the contributions of each member based on their prior experience and interests. Liam had the most prior experience with Discord and implemented the majority of the bot's infrastructure and backed in that regard (such as the creation of the bot's command handler). Rob has worked extensively with Google Cloud databases in the past, and therefore took the lead on most portfolio work. Allen holds a personal interest in the stock market, and therefore implemented the majority of the stock commands. Due to the nature of a local host development environment, the team made exclusive use of pair programming throughout this project with the host machine being Liam's. To accomplish this they made use of Visual Studio Code LiveShare and Git Mob extensions. Therefore, they appear under the contribution history as co-authors on most commits which is not reflected in the contributor section. However, it is important to note that all team members participated equally in this project. For an adequate indicator of this contribution, please view the commits section and observe for co-authored commits.

Reflection

The team thoroughly enjoyed this stage of the project and learned a lot in both technical and management skills. Regarding technical skills, the team gained a lot of experience with Node.js. Several commands required precise scheduling, such as awaiting a successful API call before graph generation, so asynchronous and synchronous programming skills were definitely brushed up on. Additionally, the team created an effective interface system for linking Python and JavaScript scripts, granting access to several powerful Python libraries such as Pandas and Docx Templater.

In terms of project management experience, the team learned how to use GitHub properly. While the team had prior experience with the tool, it for the most part never amounted to more than using it as a code storage location. This project allowed the team to gain experience with the more management-oriented tools the site has to offer, such as the kanban boards, issues, re-basing and wikis. After having using these features and gaining an understanding of them, the team can definitely appreciate their importance and the effect that they have on successful project planning and implementation, and will be sure to make use of them in the future.

Issues

The team was primarily restrained by the limitations imposed on it by the free API. These limits consisted of a maximum of five API queries per minute and five hundred per day. Not only did this remove the practicality of some commands (such as preport, which currently only works if the portfolio consists of a single stock), it practically prohibits deployment and distribution to other servers. The team is currently investigating the feasibility of upgrading their API account. If this is not optimal, then a different API may replace the current one.

TODO

One milestone remains to be implemented, which deals primarily with refactoring and enforcing standards (both technical and visual). Once this has been completed, the bot will be migrated to a dedicated AWS host for consistent up-time and availability.

As previously mentioned, the team thoroughly enjoyed this project and plans to continue development on it beyond this class. There are a few planned implementations for this, such as connection to an actual trading platform such as Robinhood or Coinbase to the inclusion of proprietary analysis and trading algorithms.