Sailing through Software Engineering: A voyage into the SEa

12 Dec 2023

Embarking on this interesting course of software engineering has been both a challenging and enriching experience. As I reflect on my academic venture through this course, I am inspired to share the vast expanse of knowledge and skills that I have learned. This essay is a glimpse into my journey, an exploration of the key concepts, methodologies, and technologies that have shaped my understanding of software engineering. I will be using the closely connected relationship between software engineering and educational technology (as the fusion of these two fields are of high interest to me) to illustrate how these topics go beyond web development.

Open Source Software Development

People Sitting At Desks Looking At Computers
Tijana. (2023, December). Adobe Stock. https://stock.adobe.com/images/serious-business-people-sitting-in-a-row-and-working-on-computers-in-open-plan-office-five-colleagues-typing-business-report-on-a-laptop-computers-while-sitting-at-same-desk-in-a-modern-office/488974717

The first topic is Open Source Software Development. In Open Source Software Development, the source code is shared publicly for anyone to use, modify and share hence anyone can see how it works! There is opportunity and access for anyone to contribute to the code and this approach encourages collaboration, like having one giant open workshop. When you have everyone working on the project, things get done quicker and since there’s more eyes seeing the code, people are able to quickly pick up on errors and bugs in your code. The best part, in my view, is that OSSD is often free to use and modify to everyone.

We practised OSSD in class through our use of Github. Github gave us a central place to host our projects repository and there we stored our code, made changes to it, tracked the changes through commit messages, update the projects on our laptops then test and the cycle goes again. Another advantage of using Github was that when we asked for help on our code, other students could easily hop onto our repo to assist us and this fostered a sense of community in supporting each other. What I also liked about Github is that there were many other valuable learning resources that other users shared on their own repo.

Beyond our web application project we did for this class, the primary benefit of OSSD I saw is its cost-effectiveness. Many schools in Fiji operate with limited budgets and do not have the financial capacity to maintain expensive licences from traditional educational software thus OSSD provides a less expensive opportunity to make learning platforms more accessible to everyone. Besides, the traditional overseas developed educational technology software can have limited customization options whereby OSSD allows local developers to tap in and create and collaborate on software that is adapted to local needs of the education ministry.

Configuration Management

People working on computers
Faddom. (2023, December). IT Configuration Management: Policy, Process, and Planning. https://faddom.com/it-configuration-management-policy-process/

The second topic is Configuration Management. This is about organising and keeping track of all the parts of a software project. CM ensures that all parts are in tune, acting together harmoniously to produce the required functionality it was designed for. It is like having a detailed manual instruction for your code telling you exactly: what parts go where, how those parts are connected, how to coordinate that part in the overall system, and how to update and change things easily. The biggest takeaway is that CM avoids a tangled mess of conflicting versions, broken code, and inconsistent deployments.

Our final project for this Software Engineering course involved lots of parts with different people working on the different parts. CM ensured that everyone is building with the same instructions and compatible components. Going back to our use of Github, the following tools helped us with abiding by CM - version control & tracking, branches, merging and pull requests. With version control and tracking, it was like taking snapshots of your code as it changed thus keeping tabs on its history particularly on who made the change and what was changed. The branch feature allowed us to work on different tasks in parallel and acted as staging areas where we could test the work, then do a pull request. A pull request is like making an application to merge our new changes and have others check on it before it is merged to main.

The principles of Configuration Management translate well in the educational technology field. The curriculum in primary and secondary schools in Fiji varies school by school and on top of that there are different educational content and resources that educators use to teach students. Now imagine curriculum and educational material with built-in version control. Educators can track changes to lesson plans, assignments, and assessments, allowing them to revert to previous versions if needed or compare different approaches. This enables continuous improvement and adaptability based on student feedback and learning outcomes.

User Interface Frameworks

User Interface Frameworks
Sidra. (2023, August 4). Choosing The Right UI Framework For UI Design and Development. Sencha. Retrieved from https://www.sencha.com/blog/choosing-the-right-ui-framework-for-ui-design-and-development/

The last topic is User Interface Frameworks. Instead of building a website from scratch and having to individually code website elements, User Interface Frameworks are like toolkits that have pre-made tools (in this case, the website elements) that allows you to plug and play into your code, making the job easier and faster. For our project, we used React Bootstrap components which was great because it then inherited the predefined styles and functionalities of Bootstrap. Using React, we went beyond using UI components but also its State Management components like useState, Routing and Navigation components like link and route and Form and Input handling components like form and onChange. All offered extended functionality to create a unique web application.

How does this look beyond web application and touch down into the education field? Well, with UI frameworks we learn to develop interactive, engaging and accessible applications. Just as a UI framework aims to make software easy to navigate and use, applying these principles to classrooms can lead to the creation of more intuitive and engaging learning experiences. This could involve designing classroom layouts, educational materials, and teaching methods that are more user-friendly and responsive to the needs of different learners.

Conclusion

To conclude, my journey through software engineering has offered an insightful look at the ways technology can intersect with and enhance other fields, particularly education. Through the lens of Open Source Software Development, Configuration Management, and User Interface Frameworks, I have not only grasped key technical concepts but also envisioned their transformative application in projects situated in educational settings.