Reflection: Allen Best - SSW-345-Team-5/Discord-Bot GitHub Wiki

Design

What was most helpful about thinking about design methods of your project?

The most helpful about thinking about design methods was having the idea thought out well enough to get started. We were able to use the lecture slides and past experiences to lay out what we wanted the bot to have and make changes along the way.

What was most difficult? What would you do differently?

The most difficult part was thinking all the way in advance to find out what we felt all the pieces together would like. Without knowing the knowledge of how all the individual technologies would work together, it was hard to put together a good design for how we wanted to construct it exactly. What I would do differently is think of the big idea and what are the bigger languages and software that would work nice for each step and looking into if those technologies work well together.

What design methods might you want to try again in the future on another project?

I believe more of an object oriented design would work well for another project. By doing this, it would increase the reusability of certain code for the bot and also help if looking to create more bots. It would also help with the scalability of the code for the bot, each component would already have a base. With the object oriented design it would overall help with the reading and maintainability of code while also giving a strong base for scalability and reusability.

Implementation

What was most helpful about implementing, testing, and integration in your bot project?

The most helpful about implementation, testing and integration was the strong communication of the team. We organized on GitHub, used the Live share feature on VS Code, and contacted each other using text messages, Microsoft Teams and Zoom. Through our strong communication it was easy to be on the same page and see the outlook for where the project needed to go through each step. For each upgrade since we all knew what was happening it was easier for another team member to see an error in testing or to finish a step towards integration.

What was most difficult? What would you do differently?

The most difficult part was constructing the overarching infrastructure of the code. Personally, I didn't have a lot of experience working with the Node.JS asynchronous calls. It was a bit of a learning curve but it was definitely a great skill to learn and because of that allowed for the timing we needed in our project. With this, I don't believe I would do anything differently because although it took some time to catch up, I gained a valuable skill I can now use in the future.

What implementation, testing, and integration methods might you want to try again in the future on another project?

I would use the same schema that we used to store and serve the bot in the future on another project. I believe that it is not only nice to use for bots but for other applications such as websites and having things served on the cloud allows for me to do some powerful projects without having any direct access to a real professional equipment or having to maintain it physically.

Process

What was most helpful about implementing kanban and code review in your project?

Implementing kanban was helpful because it helped us split up exactly what we each needed to do. It allowed us to spread out everything into tasks and assign the work to each person so that we are all getting a fair amount of work and know what to do. The code reviews allowed for us to see the code that the other teammates implemented if the others where not there to see exactly what was going on and helped especially when needing to work off of someone else's code.

What was most difficult? What would you do differently?

The most difficult part was when if there were tickets on the kanban board that were too split up. Sometimes it became overwhelming to keep going in and updating a lot of tickets. In the future I would try to find a balence where there is enough needed to do within a ticket but also still split up so that there aren't tickets that take up way too much information.

What software processes or practices might you want to try again in the future on another project?

I will definitely want to continue agile processes in the future when working on a team. It allowing for constant implementation and also gave the flexibility to make a lot of changes along the way. Having taken full advantage of agile and all that it offers I believe that it really helps in terms of seeing where exactly where you are and where you are compared of the rest of the team so that everyone knows what's going on and can really contribute what's given to them in an effective and efficient way.

Overall

Considering all the design methods, implementation practices, and software processes you've encountered---compare and contrast how the benefits of the different practices and how they might be useful together.

A lot of the different design methods, implementation practices and software processes that we've encountered were beneficial in the efforts of completing the project. Having a balance between the three, I believe is the best way to attack a project. With design methods it allows for the creation of new ideas even if they aren't all the way thought out. With implementation practices it allows for the team to really figure out what the best way for the team to take the idea and make it a reality. With the software processes, this is where you can find exactly hwo the team will put it together as a cohesive unit. In order to create the besg project, you cant focus too much on either of the three. With constant integration everything is changing and the team should be ready to revisit each step if needed and be able to keep making changes because although a bot may be a quick project where we know the requirements because we were the ones to make the proposal, in a work setting this isn't always true and a lot of times the customer does not know exactly what they want.