forked from MIT-Emerging-Talent/ET6-practice-code-review
-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into prime_numbers
- Loading branch information
Showing
5 changed files
with
190 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,23 +1,135 @@ | ||
<!-- this template is for inspiration, feel free to change it however you like! --> | ||
# **Retrospective: Celebrating Success and Embracing Growth** | ||
|
||
# Retrospective | ||
## **Purpose** | ||
|
||
## Stop Doing | ||
This retrospective aims to celebrate the achievements of the project while | ||
thoughtfully evaluating its planning, execution, and outcomes. | ||
It highlights areas of success, identifies opportunities for growth, and explores | ||
strategies for continuous improvement. The Kanban board played a pivotal role | ||
in organizing tasks and fostering collaboration. | ||
|
||
## Continue Doing | ||
--- | ||
|
||
## Start Doing | ||
## **Project Goals vs. Actual Outcomes** | ||
|
||
## Lessons Learned | ||
### **Initial Plan** | ||
|
||
______________________________________________________________________ | ||
- **Goals and Aspirations**: | ||
- Successfully complete the project within the defined timeline. | ||
- Foster clarity and alignment of tasks among team members. | ||
- Leverage tools like the Kanban board to optimize workflows and enhance accountability. | ||
|
||
## Strategy vs. Board | ||
- **Structure**: | ||
- Divide the project into clear phases with specific milestones. | ||
- Assign responsibilities that align with individual strengths and expertise. | ||
|
||
### What parts of your plan went as expected? | ||
- **Processes**: | ||
- Hold regular check-ins to track progress and address potential roadblocks. | ||
- Promote consistent communication through shared platforms. | ||
- Utilize the Kanban board as a visual aid to organize tasks effectively. | ||
|
||
### What parts of your plan did not work out? | ||
### **Actual Outcomes** | ||
|
||
### Did you need to add things that weren't in your strategy? | ||
- **Progress**: | ||
- Most milestones were successfully achieved, with minor | ||
delays caused by unexpected challenges. | ||
- The team demonstrated adaptability and resilience, ensuring the | ||
overall success of the project. | ||
|
||
### Or remove extra steps? | ||
- **Adaptations**: | ||
- Timelines were adjusted, and tasks were redistributed to | ||
maintain balance and effectiveness. | ||
- Additional tools, such as Slack, complemented the Kanban board to enhance communication. | ||
|
||
--- | ||
|
||
## **What Worked Well** | ||
|
||
### **Project Management** | ||
|
||
- **Planning**: | ||
- Objectives and deliverables were clearly defined. | ||
- Breaking the project into manageable phases improved focus and streamlined execution. | ||
|
||
- **Execution**: | ||
- Regular updates and check-ins maintained alignment and allowed for early identification | ||
of challenges. | ||
- Flexibility in task assignment helped the team address unexpected hurdles efficiently. | ||
|
||
### **Collaboration** | ||
|
||
- **Communication**: | ||
- Open and transparent communication fostered team cohesion and mutual support. | ||
- Shared tools improved visibility and coordination among team members. | ||
|
||
- **Accountability**: | ||
- Clear roles and responsibilities empowered team members to stay focused and | ||
on track. | ||
|
||
### **Satisfaction** | ||
|
||
- **Feedback**: | ||
- The structured approach and clear goals were highly appreciated by the team. | ||
- Regular updates and a thoughtful combination of tools contributed to a positive | ||
experience for everyone involved. | ||
|
||
--- | ||
|
||
## **Opportunities for Growth** | ||
|
||
### **Challenges** | ||
|
||
- **Planning**: | ||
- Initial timelines underestimated the complexity of certain tasks. | ||
- Some dependencies between tasks could have been planned more thoroughly. | ||
|
||
- **Execution**: | ||
- Peaks in workload occasionally led to delays in updates and task tracking. | ||
- A few team members needed additional support to adopt new tools effectively. | ||
|
||
### **Improvements** | ||
|
||
- **Processes**: | ||
- Create more realistic timelines by incorporating buffer periods for complex tasks. | ||
- Offer enhanced training sessions to improve proficiency with project tools. | ||
|
||
- **Tools**: | ||
- Automate reminders and updates to ensure consistent task tracking. | ||
- Simplify communication channels to minimize redundancy and enhance efficiency. | ||
|
||
--- | ||
|
||
## **Looking Ahead** | ||
|
||
### **Future Plans** | ||
|
||
- **Adjustments**: | ||
- Include detailed risk assessments during project planning to anticipate challenges. | ||
- Leverage insights from past projects to refine resource allocation and timelines. | ||
|
||
- **Enhancements**: | ||
- Explore advanced project management tools to improve tracking and analytics. | ||
- Schedule regular retrospectives to celebrate progress and proactively address | ||
potential issues. | ||
|
||
### **Team Commitment** | ||
|
||
- **Engagement**: | ||
- Continue fostering a culture of accountability, collaboration, and open communication. | ||
- Celebrate team achievements to sustain morale and motivation. | ||
|
||
- **Training**: | ||
- Provide ongoing learning opportunities to sharpen skills and enhance tool adoption. | ||
- Share success stories and best practices to inspire growth and innovation. | ||
|
||
--- | ||
|
||
## **Conclusion** | ||
|
||
This project demonstrated numerous strengths, including thoughtful planning, clear | ||
communication, and adaptability in execution. By building on these successes and | ||
addressing identified opportunities for | ||
improvement, future projects can achieve even greater outcomes. Together, we can | ||
continue fostering a collaborative, supportive, and highly effective team environment. | ||
|
||
--- |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
#!/usr/bin/env python3 | ||
# -*- coding: utf-8 -*- | ||
|
||
"""factorial python module.""" | ||
|
||
|
||
def factorial(n): | ||
""" | ||
Calculate the factorial of a non-negative integer n using recursion. | ||
Args: | ||
n (int): Non-negative integer whose factorial is to be calculated. | ||
Returns: | ||
int: Factorial of the input number n. The return value must be greater than or equal to 1. | ||
Raises: | ||
ValueError: If n is a negative number. | ||
Examples: | ||
>>> factorial(0) # 0! = 1 | ||
1 | ||
>>> factorial(4) # 4! = 24 | ||
24 | ||
>>> factorial(-1) | ||
Traceback (most recent call last): | ||
... | ||
ValueError: Factorial is not defined for negative numbers. | ||
""" | ||
if n < 0: | ||
raise ValueError("Factorial is not defined for negative numbers.") | ||
if n == 0: | ||
return 1 | ||
return n * factorial(n - 1) | ||
|
||
|
||
if __name__ == "__main__": | ||
import doctest | ||
|
||
print("running doctest...") | ||
doctest.testmod(verbose=True) | ||
try: | ||
num = int(input("Enter a non-negative integer: ")) | ||
print(f"Factorial of {num} is {factorial(num)}") | ||
except ValueError as e: | ||
print(f"Error: {e}") |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
"""This unittest tests the python factorial program for positive numbers, negative numbers and zero""" | ||
|
||
import unittest | ||
from solutions.challenge_36.factorial import factorial | ||
|
||
|
||
class TestFactorial(unittest.TestCase): | ||
"""test the program for positive numbers, negative numbers and zero""" | ||
|
||
def test_factorial_with_positive(self): | ||
"""test factorial of 5.""" | ||
self.assertEqual(factorial(5), 120) | ||
|
||
def test_factorial_with_zero(self): | ||
"""test factorial of 0""" | ||
self.assertEqual(factorial(0), 1) | ||
|
||
def test_factorial_with_negative(self): | ||
"""test factorial of -1""" | ||
with self.assertRaises(ValueError): | ||
factorial(-1) |