One particular project that allowed me to apply and develop my skills as a computer scientist as well as my teamwork and communicative abilities was the creation of a chatbot. As a team, we were assigned the task of conceiving an artificial conversational entity that would perform the function of interacting with a user. The method through which we were required to create the chatbot was by writing programming code that once implemented into a suitable program would successfully be able to hold a conversation. The program that we chose to base the code around was Python3 since we were all most comfortable with developing code in this programming language.
After first assigning a project leader, our next call of action was to brainstorm an idea for the chatbot. The idea that I proposed was to create a chatbot that allows a user to book a seat at a cinema - I believed that basing our chatbot around this task would allow the use of range of both simple and complicated techniques in Python3, including features such as APIs that would fetch information about current movies and lists that would update once seats have booked. This session really highlighted to me the importance of ensuring that everyone has to chance to contribute in the discussion and is free to share any ideas without judgement. After having considered several proposals, the final two ideas that we agreed were feasible yet relatively complex were the booking of seat at a cinema, and a customer placing an order at a bakery. However whilst three of my group (including myself) held a preference for the cinema chatbot, the other half that included the project leader favoured the bakery chatbot. I suggested that we take a diplomatic approach and discuss the advantages and disadvantages of the two chatbots in order to communicate to our team members the features that could potentially be utilised. The general consensus was for each half of the team to work on their chosen chatbots, the purpose of which would be to compare the individual chatbots in their raw stages down the line and choose the one which had the most potential. I then proposed that now as a mini-group, we should assign a sub-team leader that would oversee the development of the chatbot. Although at that point I was relatively new to coding, I put myself forward for the position since I was eager to demonstrate and improve my leadership abilities in a project I was enthusiastic about. I split the project into several mini-tasks for which at least one team member would be responsible. Learning about the strengths and weaknesses of each team member was crucial in delegating tasks that catered to each person’s area of expertise and made sure that everyone felt comfortable with what they had been assigned. After two weeks of working on our individual chatbots, we held a session that we would use to compare our progress on the two projects. We each tested out the other’s chatbot to assess their relative complexity and user-friendliness and also considered the potential of implementing as many relevant programming techniques as possible. Upon comparison, we discovered that our cinema chatbot was not a lengthy piece of code but used an array of complex techniques that we had learnt over the past few weeks. As a result, this would allow us to showcase a wider range of programming skills in the chatbot. On the other hand, the bakery chatbot that the other half of the team developed seemed to consist of a relatively large amount of code and contained many features that were not too complicated. I discussed at length the potential of our cinema chatbot, making sure to communicate my point efficiently and in a straightforward manner. I also made sure to listen attentively to the other half of the team’s argument, recognising where they had done well but also offering fair criticism about what could have been improved. Having considered everyone’s points, I still favoured the cinema chatbot that my half of the group had developed but the team leader still preferred the bakery chatbot that his half was responsible for. Ultimately, the final decision fell to the team leader so it was decided that the bakery chatbot would be our focus from then on. Although I was still passionate about the cinema chatbot, I believe that the discussion had been fair and everyone’s opinions had been into consideration, therefore I was willing to get on board with the decision to give it my maximum attention and conduct myself in a professional manner so as not to cause any disruptions. At this point, I realised that the majority of the code for bakery chatbot had already been completed so I recommended that the three of us try to think of any extra features that could be added on to widen the range of techniques used in the chatbot. We were mostly successful in improving the chatbot to a standard that would highlight all the different aspects we had learnt about coding, although there was an issue that I encountered when trying to implement an API in the code. My intention was to use an API that would import prices from a popular supermarket, however I was not able to receive a subscription key in time before the deadline.
In retrospect, I feel that whilst we did work relatively well as a team, there were some issues that arose that were detrimental to the final chatbot prototype. For example, I believe that the decision for the team to work on two chatbots simultaneously at the start had a real negative effect on time management and resulted in unequal contributions between team members. If the decision had been to focus our efforts solely on one chatbot, I believe that I would have received a subscription key for the API in time for it to be implemented into the final product. This aspect of the project really taught me the importance of establishing the goal at the very start of the task so as to make sure that everyone is on the same page and has a clear idea about what the final product will be about. Furthermore, we discovered when we decided to go forward with the bakery chatbot that there was not a lot left for the remaining team members who had worked on the cinema chatbot to do. In my opinion, one way these issues could have been avoided would have been carefully plan out the expected level of progress for each chatbot after every week to gauge how much time we would have and whether or not everyone’s contributions would be equal. If from doing this we forecast any problems that could arise in the future, we would have highlighted these to the project leader and encouraged him to make a decision on which chatbot to use at the very start. I respect that the project leader has certain unique responsibilities, however I believe that the rest of the team is still very much instrumental in the decision-making process. A realisation of this could have helped in making our final product the best it can be. Aside from this however, there were several aspects of this project that I believe went well. For instance, I feel that our ability to communicate ideas to other team members was excellent – a safe and non-judgemental environment was established to make sure everyone had a chance to express their opinions. We made sure to include in every discussion individuals that at first seemed reluctant to verbally participate – this in turn led to them opening up more down the line and gradually developing the confidence to become a vital contributor at each session. In doing this project, I also learnt a great deal about efficiently working as a team to contribute to one single document. Getting to grips with GitHub was a key aspect of this as it provided tools that allowed each collaborator to work on the same piece of code without any confusion. Furthermore, I learnt just how significant it is to identify the team’s strengths and weaknesses; it not only helps to delegate skill-specific tasks but also allows the team members the luxury of knowing who in the team would be best to seek assistance from for a particular problem.
In conclusion, there were many things that I learnt from doing this project including how to collaboratively produce a piece of code and the value of setting out a plan of action. It also provided many opportunities to allow me to exhibit many skills such as communication, teamwork and leadership in an environment not too dissimilar from my hopeful future career path. Overall, working alongside a team to create a chatbot proved to be a challenging yet fulfilling and insightful experience that will no doubt be invaluable in future projects.