During this sprint, our team focused on dependency management for a NodeJS backend system within the LibreFoodPantry project. My primary responsibility involved updating dependencies, fixing compatibility issues, and ensuring that the backend remained stable after changes. This sprint required both technical work and strong collaboration with teammates.
Evidence of Activity
- GitLab Merge Request (Frontend Dependency Updates):
https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/guestinfosystem/guestinfofrontend/-/merge_requests/62/diffs?commit_id=7484ad3ec8f67cd6907ccd7393a210beab0890c4
→ Updated multiple frontend dependencies, container images, and testing framework as part of a major refactor. - GitLab Branch Commits (Reporting Backend Testing):
https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/reportingsystem/reportingbackend/-/commits/reporting_test_backend?ref_type=heads
→ Fixed dependency issues related to express-openapi-validator and improved backend testing setup. - Commit (Switch Yarn to NPM):
https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/reportingsystem/reportingbackend/-/commit/2c0ee2b8aa4a7d525f2947edf166f8bbd1c67dc2
→ Replaced yarn install with npm install to standardize dependency management. - Commit (@types Updates):
https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/reportingsystem/reportingbackend/-/commit/78348dd3eb597ca322d602ec00d0d62531d530a8
→ Updated all TypeScript type definitions to latest versions. - Commit (cors and mocha Updates):
https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/reportingsystem/reportingbackend/-/commit/b7d927881d9f0984b75457089f575e1ce66c69ee
→ Upgraded middleware and testing libraries. - Commit (mongodb and nodemon Updates):
https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/reportingsystem/reportingbackend/-/commit/cfd642bbea9adee22e07abd40b3c258b2e8d2716
→ Updated database and development tools. - Commit (express and express-openapi-validator Updates):
https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/reportingsystem/reportingbackend/-/commit/4d4c595fe65c4d60d267a3ca209abc790eb2b983
→ Upgraded core backend framework and validation library. - Commit (Message Broker Fix):
https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/reportingsystem/reportingbackend/-/commit/e7dc035713334ed77e2965e893b460d50b9f9acb
→ Fixed script by adding missing return statements. - Commit (Response Status Fix):
https://gitlab.com/LibreFoodPantry/client-solutions/theas-pantry/reportingsystem/reportingbackend/-/commit/6b7d69c5fd8b73982b2589a736c869955cfe7c71
→ Corrected semantic error in response status comparison.
What Worked Well
One thing that worked well during this sprint was team collaboration. I received a lot of helpful feedback from my teammates, especially during merge request reviews. This helped me improve my code quality and understand best practices for dependency updates. Another positive aspect was breaking down dependency updates into smaller commits, which made debugging and tracking changes easier.
What Didn’t Work Well
Updating dependencies turned out to be more complex than expected. Some updates caused compatibility issues, especially with libraries like express-openapi-validator. Also, switching from Yarn to NPM required careful adjustments, and initially, it introduced some confusion in the build process. These issues slowed down progress.
Improvements as a Team
As a team, we could improve by planning dependency updates more strategically. Instead of updating everything at once, we should group updates and test incrementally. Better documentation of decisions (like switching package managers) would also help everyone stay aligned.
Improvements as an Individual
Individually, I could improve by researching dependencies more before upgrading them. Understanding breaking changes ahead of time would reduce trial-and-error debugging. I also want to get better at reading official documentation and changelogs more efficiently.
Apprenticeship Pattern: “Use the Source”
Summary:
The “Use the Source” pattern encourages developers to rely on original documentation, source code, and primary references instead of guessing or relying only on others.
Why I Selected This Pattern:
I selected this pattern because dependency management heavily depends on understanding library behavior. During this sprint, I often relied on teammates for guidance instead of directly exploring documentation or source code.
Relevance to My Experience:
When updating packages like Express or MongoDB, I encountered issues that could have been solved faster by checking official docs or GitHub repositories. This pattern directly relates to those situations.
How It Would Have Changed My Behavior:
If I had applied this pattern more actively, I would have spent more time reading documentation before making changes. This would have reduced errors and made me more independent. It would also have helped me understand why certain fixes worked instead of just applying them.
Conclusion
Overall, this sprint was a valuable learning experience in dependency management and teamwork. While there were challenges, especially with compatibility issues, I gained practical experience in maintaining a NodeJS backend. Moving forward, I plan to improve both my technical skills and my ability to work more independently while still collaborating effectively with my team.
Leave a comment