I learned many cool things from my software engineering course this semester. I got to learn a web-development technology stack starting with basic HTML exercises and progressing to a full-blown web application final project (read more on that here).
I particularly enjoyed the project-based learning aspect of this class because I got to learn by doing. I feel that it is a more effective learning strategy to make a website than to watch a YouTube video or hear a lecture about how someone else made a website. A project-based approach allows (forces?) students to do the dirty work and learn from trial and error. It also helps students build confidence by making them prove to themselves that they know how to do X thing or use Y tool. I felt that my ICS 314 course did an exceptional job at this, and I retained a lot of information as a result.
Through my experiences from this class, I learned many different skills, technologies, and frameworks. These will all be extremely useful for any web development projects I take on moving forward, but there are also some skills that I can employ in other projects beyond the realm of web development.
A large emphasis of this course (especially for the final project) is project management. One strategy I learned is Issue Driven Project Management (IDMP). This approach is great for allowing teams to work together and break larger issues up into smaller tasks. Each task is documented on a GitHub project board and assigned to a single developer. All work for that task is then done in a single branch, published for review, and eventually merged into the main branch afterwards.
I found this strategy to be particularly useful for my final project because there were many individual tasks that needed to be done by multiple different people. Organizing them into one central place was great for our productivity and team coordination. Because of this, I can see myself using it in many different contexts.
Another aspect of this course that was heavily emphasized is UI frameworks. In particular, we learned how to use Bootstrap with HTML and React. I especially enjoyed these units, because it was one of the first times I saw a project from my computer science classes “come to life.” Instead of a command-line “app,” I got to develop an app with a functional user interface, and quickly too. Bootstrap is extremely useful for making mockups, rapid prototyping, and designing simple static web pages. As someone who first started practicing web development with just HTML and CSS, this was like going from a bike to a Tesla.
This summer, I will be mentoring students at my former high school robotics club. I will be teaching them some of the concepts I learned this class, and one of them is agile project management. Project management is particularly useful in a robotics context because there are many different tasks that a programming team must develop. Teams can easily go off track or become disorganized without a good strategy in place, so I plan to introduce my team to this idea to help them out with their projects moving forward.