Professional Documents
Culture Documents
Development of Flashcard Learning Software PDF
Development of Flashcard Learning Software PDF
Faculty
“ of Industrial Engineering
Master of Engineering and Management”
Project Overview:
Our team was tasked with creating a web-based flashcard application designed to facilitate effective
learning. This project aimed to apply software engineering principles practically while developing a
useful tool for students. The software's key features include:
• Creation and management of card decks
• Flashcard creation with front (question) and back (answer) sides, plus optional hints
• A learning mode for card queries
• Maintenance of a learning history
• An intelligent algorithm for card presentation frequency
The application is designed to be user-friendly, responsive, and adaptable to various learning styles.
Our goal was to create a tool that meets the course requirements and provides real value to potential
users.
Our initial team consisted of five members, each assigned specific roles to ensure comprehensive
coverage of all project aspects. We adopted the Agile Scrum methodology to manage our project
effectively, allowing for flexibility and rapid adaptation to changes.
However, due to unforeseen circumstances, we had to adapt our team structure mid-project, which
will be discussed in more detail later in this report.
In the following sections, I will elaborate on our project management approach, including our use of
tools like JIRA and Confluence for project tracking and documentation. I will also discuss our team
management strategies, the challenges we faced and how we addressed them, and the key lessons
learned throughout this development journey.
• Sprint Planning: We organized our work into one to two-week sprints, each beginning with a
planning session where we defined sprint goals and selected user stories from our product
backlog.
• Weekly Stand-ups: Brief 60-minute meetings were held each Sunday to discuss progress,
plans, and any obstacles team members were facing.
To facilitate our Agile approach, we utilized JIRA as our primary project management tool. Our JIRA
setup included:
• Product Backlog: A prioritized list of all features and requirements for our application.
• Sprint Boards: Visual representations of our current sprint work, divided into 'To Do', 'In
Progress', and 'Done' columns.
• User Stories: Detailed descriptions of features from the user's perspective, including
acceptance criteria.
• Figure 1 shows a screenshot of one of our sprint boards in JIRA, demonstrating how we
organized and tracked our tasks throughout the project.
Requirements Management:
Figure 2 shows how we broke down the client's requirements into more detailed, actionable items for
the team. This documentation served as a central reference point throughout the project, ensuring all
team members had a clear understanding of our objectives and specifications .
Figure 3 illustrates the Confluence page created to delineate roles and responsibilities
Figure 3: Roles and responsibilities Confluence Page
The initial meeting encompassed a thorough analysis of project requirements, utilizing the prepared
Confluence documentation. Each role's responsibilities and their significance to the project were
articulated, ensuring a comprehensive understanding of individual contributions within the project
framework. Recognizing the varying levels of familiarity with our chosen tools among team members,
I provided an introduction to JIRA and the Agile Scrum methodology, emphasizing their efficacy in
project management.
This methodical approach resulted in the team's mutual decision to appoint me as Project Manager,
establishing a robust foundation for our project with clear expectations and a shared understanding of
our objectives and processes.
Given the team's geographical proximity, we implemented a hybrid communication model. In-person
communication was prioritized for critical discussions and collaborative work, proving instrumental in
fostering team cohesion and addressing complex issues efficiently.
To complement face-to-face interactions, we utilized digital tools strategically. JIRA functioned as our
primary system for managing tasks, while Confluence served as our centralized knowledge repository.
This approach ensured accessibility and consistency of project-related information across the team.
To mitigate potential internet connectivity issues, we established a protocol wherein team members
would conduct development tasks independently, with scheduled in-person check-ins. This flexible
arrangement facilitated continuous productivity while adapting to potential technical constraints.
In our pursuit of efficient development practices, we judiciously incorporated AI tools into our
workflow. Specifically, we utilized ChatGPT and Blackbox AI to assist with generating basic code
structures and to enhance our understanding of complex coding concepts. These tools were
particularly valuable in:
It is important to note that while these AI tools significantly augmented our development process, all
generated code was thoroughly reviewed, tested, and customized to meet our specific project
requirements. This approach allowed us to leverage cutting-edge technology while maintaining the
integrity and originality of our work.
Our collaboration and work distribution methodology focused on optimizing individual strengths
while maintaining equitable workloads. Regular team meetings (Sprint Planning, Weekly Stand-Ups,
Sprint Review) were conducted to assess progress, address challenges, and delineate subsequent steps.
These meetings were crucial in maintaining project alignment and promptly addressing any emergent
issues.
Task allocation was based on a careful assessment of individual competencies and project
requirements. For complex features, pair programming, AI assistance was implemented, enhancing
code quality and facilitating knowledge transfer among team members.
To accommodate diverse work schedules, we implemented a flexible deadline system. This approach
allowed for effective time management by individual team members while ensuring adherence to
overarching project milestones.
Adapting to Changes:
The team's adaptability was tested when the Software Architect departed due to personal
circumstances. In response, an emergency team meeting was convened to reassess team capabilities
and project requirements. The subsequent redistribution of responsibilities, including the reassignment
of one of our testers to the Architect role, demonstrated the team's flexibility and willingness to adapt
to new challenges.
This experience underscored the importance of agility in project management. The project scope was
accordingly adjusted to ensure the delivery of a high-quality product despite the alteration in team
composition.
Throughout the project lifecycle, efforts were made to cultivate a supportive and productive team
environment. This involved the recognition of individual contributions to enhance morale and
motivation. Open communication and constructive feedback were encouraged, fostering an
atmosphere conducive to the free exchange of ideas and concerns.
Conflicts and misunderstandings were addressed promptly and impartially, maintaining a positive
team dynamic. Additionally, team-building activities like One-word games, Two Truths, and a lie were
periodically organized to strengthen interpersonal relationships beyond work-related interactions.
The prioritization of clear communication, adaptive strategies, and a positive team culture enabled the
team to overcome challenges and maintain consistent progress toward project objectives. This
experience reinforced the critical nature of effective leadership and communication in successful
project management.