As we near the conclusion of the semester, it’s time to reflect on how what we learned extends beyond the confines of web development. Throughout ICS 314, we’ve dove into a range of concepts and methodologies, each contributing to our understanding of software engineering. From open-source collaboration to agile project management, we’ve scratched the surface of a landscape full of opportunities for innovation. In this essay, we’ll explore the broader implications of these concepts and how they shape the way we approach software development and other fields beyond the realm of web applications.
Open-source software is an integral part of the software development community. License restrictions can limit what is accessible and sharable to the average software developer. Removing these restrictions opens up the ability to collaborate, leaving source code to be freely modified and distributed by future users. This allows for community-driven software development where innovation and transparency is paradigm.
In ICS 314, we used Git, Bootstrap, Meteor, React, and a variety of other open source libraries and components to build and deploy our own websites for our teams’ final projects. When looking at all the different styles and ideas each team’s website, I could see the levels of creativity and innovation that is possible with just a few open-source resources. And there are plenty of opportunities to build projects when looking beyond web development. florinpop17 has a repository on GitHub full of fun open-source app projects that we can work on to develop our coding skills. I look forward to experimenting with these projects over the summer!
Development environments refer to the setup and tools used by developers to write, test, and debug software. They play a crucial role in the efficiency and effectiveness of the development process, providing a controlled and consistent platform for coding and testing.
For ICS 314, we mainly used local development environments, where code is developed and tested on individual machines using tools like text editors, IDEs (Integrated Development Environments), and local servers. Our IDE of choice was Intellij IDEA by JetBrains, the leading Java development IDE. We also used GitHub, a cloud-based development environment that allowed us to collaboratively code and test from anywhere.
Development environments are essential not only for web development but also for software development in general. They are used in various fields such as mobile app development, game development, and scientific computing. The principle of setting up a development environment is an important skill that we can apply across different types of software projects.
Agile project management is an iterative and flexible approach to software development that emphasizes collaboration, responsiveness, and delivering working software in short cycles known as iterations. It contrasts with traditional waterfall methodologies by prioritizing adaptability and continuous improvement over tight planning and documentation.
The Agile methodology that we practiced during ICS 314 was Issue Driven Project Management (IDPM), which is a variant of Agile Project Management tailored for managing software development projects. IDPM focuses on breaking down project tasks into issues, prioritizing them based on immediate needs.
When working with a team, I learned that leadership and active communication are important aspects of Agile Project Management. When these two elements were absent, the project development became more of a grind than a sprint. Without leadership and communication, issues are assigned on a first come, first served basis, leaving the team members who are more eager to participate to fix most of the issues. Someone with a leadership role, like a project manager, would be able to delegate issues to those who are hesitant to take initiative and pick up new issues. I also learned that when using IDPM as a methodology, it is good practice to frequently push (reasonably) broken code and create a new issue based on that code instead of never pushing your code until it is perfect. In other words, frequent incremental updates are key for IDPM.
Agile Project Management can be applied to all fields where there is a project that needs to be done quickly and efficiently, and that expands far past software development. Athletes, musicians, scientists, business owners, … everybody can use their leadership and communication skills to work with a team and iteratively work their way towards a common goal.
Our exploration of software engineering concepts in ICS 314 has provided us with a solid foundation for understanding the broader implications of these principles. From open-source collaboration to agile project management, we’ve gained valuable insights into the multifaceted nature of software development. As we move forward, equipped with this knowledge and experience, we have the opportunity to apply these concepts not only in web development but also across various fields. By leveraging our understanding of software engineering, we can contribute to the creation of innovative solutions and drive positive change in the ever-evolving landscape of technology.