SkillCollector - 2023

Key Takeaways

  • Importance of planning and documentation in software development
  • Docker and its benefits
  • CI/CD pipeline
  • Using Git in a team
  • Cloud services and networking
  • Automated testing

This software was developed in Future Factory course during my studies in a six-member team using agile development methodologies (more like waterfall with sprints and daily standups). The objective of the project was to create a solution for the university that could be used to systematically gather opinions from the companies about the skills and technologies they think are the most important and valuable in ICT sector today and in the future. This software aimed to improve the university's ability to react to the changes in the industry and indentify important technologies sooner so that even better education could be offered to the students.

The project started with a planning phase, which included a lot of project familiarization, extensive team meetings, engaging with stakeholders and the product owner. Objectives during this phase was to get to know the problem thoroughly, establish roles within the team, and start writing documentation such as the project plan and requirement specification.

Next phase was dedicated to design, which included crafting the detailed requirement specification and a product plan with essential MockUps and deployment diagrams. The aim of this phase was to define a concrete concept of the final product and its architecture.

Next was the development phase where the we started developing the application. This was the longest phase and the goal was to finalize the application and get it ready for the release. Testing happened in parallel with the coding so that found bugs could be worked out immediately. Feedback was also gathered from end-users and other students so that bad design choices could be identified and fixed early on. Both manual and automated testing procedures were used to ensure that the application's quality met the required standards.

In the final phase, end report was written and demo days where held, where the final application was presented to the end-users.

During the project, tasks like writing documentation, handling daily standup meetings, planning of sprints and milestones, updating the team's websites and so on, were distributed pretty evenly among the entire team. During implementation phase, each member was assigned the tasks that best corresponded to their skills.

I was responsible for the developing the backend for the SkillCollector utilizing Node.js with Express web framework. Additionally, I programmed the functionality for the frontend using JavaScript, integrated the Doorbell.io's feedback system into the application, and set up the PostgreSQL database model. The official SFIA skills were imported to the database from XLSX file using a Python script, which I created.

Besides programming, I also handled setting up the testing and production environments in the CSC cloud instances. I configured the network settings and put the software running inside three Docker containers - frontend, backend, and PostgreSQL database. I used Docker Compose for the containerization and Gitlab's CI/CD pipelines for automating the deployment processes to the cloud.

Other team members were responsible for creating and implementing the user interface's design with HTML and CSS, testing the application, and handling cyber security matters.

I also helped our team manager with project management tasks when she was not available, such as presenting our progress to the product manager and delegating work for other team members.