Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

Development of Flashcard Learning Software

Faculty
“ of Industrial Engineering
Master of Engineering and Management”

Software Engineering Course Project

Prepared By: Krushna Balasaheb Munde


Role: Project Manager
Submitted to: Jürgen Bock
Introduction:
This report outlines the project management approach and experiences in developing a browser-based
flashcard learning software as part of the Software Engineering course project. As the Project
Manager, my role was to oversee the project's execution, implement effective management
methodologies, and ensure team coordination throughout the development process. My recent
internship experience as a Project Management Analyst provided valuable insights and skills that I
applied to this role, enhancing my ability to manage the project effectively.

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.

Team Structure and Methodology:

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.

The team roles were initially distributed as follows:

• Project Manager (myself)


• Software Architect
• Two Testers
• CI/CD Specialist

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.

Project Management Approach:


The success of our flashcard learning software project heavily relied on implementing an effective
project management strategy. We chose to adopt the Agile Scrum methodology, which proved
instrumental in navigating the complexities of software development while maintaining flexibility and
promoting team collaboration.

Agile Scrum Implementation:

Our Scrum implementation involved the following key elements:

• 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.

JIRA Setup and Usage:

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.

Figure 1: JIRA Sprint Board

Sprint Planning and Execution:

Our sprint planning process involved:

1. Reviewing and refining the product backlog


2. Estimating the effort required for each user story using story points
3. Selecting stories for the upcoming sprint based on team capacity
4. Breaking down stories into specific tasks

During sprint execution, we focused on:


• Continuous integration practices to ensure code quality
• Regular communication to address any blockers or dependencies
• Adapting to changes when necessary, while maintaining sprint goals Documentation and

Requirements Management:

To ensure clear communication of project requirements, I created detailed documentation in


Confluence. This step was crucial in translating the client's high-level requirements into actionable
items for our team.

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 2: Confluence Requirements Page


This structured yet flexible approach allowed us to maintain steady progress throughout the project,
even when faced with unexpected challenges. By leveraging tools like JIRA and Confluence, we were
able to keep our project organized, our team aligned, and our goals clear. In the next section, I will
discuss how this project management framework supported our team management and
communication strategies.
Team Management and Communication:
Effective team management and communication were essential components in the successful
execution of our flashcard learning software project. As Project Manager, I implemented several
strategies to ensure efficient collaboration and clear understanding among team members.

Initial Team Formation and Role Assignment:

At the project's commencement, I initiated preparatory measures to establish a structured team


environment. This involved the creation of comprehensive Confluence pages detailing project
requirements and role descriptions, which served as foundational documents for our project. To
facilitate the commencement of our collaboration, I convened an initial team meeting to elucidate the
project scope and team roles.

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.

Communication and Collaboration Strategies:

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.

Leveraging AI Tools in Development:

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:

1. Rapidly prototyping initial code frameworks


2. Clarifying intricate programming patterns
3. Troubleshooting and debugging code segments

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.

Team Collaboration and Work Distribution:

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.

Fostering a Positive Team Environment:

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.

You might also like