Software Skills for Success

03 May 2023

During the Spring 2023 semester, I took my first software engineering course. Through this course, I was able to learn a variety of software engineering skills, however, it was not easy. After numerous hours of practicing using in-class practice WODs, Ana’s WODs, and the homework experiences, I was able to develop my skills to the point where I felt more confident in applying them to a team project. There were a few skills that I felt were important to software engineering in general that I could apply to other courses and projects in the future, which were Development Environments, Coding Standards, and Agile Project Management.

Development Environments

Prior to this course, I had experience using development environments such as Arduino IDE, Visual Studio Code, CLion, and Vim. In previous courses, I had used Integrated Development Environments (IDEs), but not to the extent that we used IDEs in this course. During the middle of the semester, we transitioned from a browser compiler, JSFiddle, to an IDE, IntelliJ. This allowed us to start developing web applications using HTML, CSS, Bootstrap, React, and Meteor. At first, I had a little bit of difficulty navigating through all of the different features, such as using the terminal to actually run the application and utilizing different folders and files to stay organized. As the semester continued, I really enjoyed learning all of the commands that helped make my code writing more efficient. For example, I loved using the duplicate function, the surround with tag function, and the search files for a specific declaration or word function. Overall, I believe that knowing how to use at least one IDE is a great skill to have and I will continue to use them in the future. I hope to learn more about other IDEs to figure out which one I enjoy using the most for future courses and projects.

Coding Standards

Before this course, I believed I was good at following coding standards, but I was sadly mistaken after being introduced to ESLint. This was my first experience ever checking my code against an already implemented coding standard in an IDE. After practicing writing code with ESLint and adjusting any discrepancies to receive a green check mark, writing code “correctly” became a habit. In my previous essay addressing coding standards, I thought it was a tedious process, however, I believe it has helped my code be more consistent and readable over time. This skill particularly came in handy when working on a team project because no matter what, everyone’s code was written using the same conventions. Due to ESLint, the team’s code was easy to understand and follow by the end of the project. Overall, I believe that this skill is important to develop because it will benefit a software engineer in the professional workspace, which often consists of more complex code and larger teams. In the future, I will continue to implement coding standards to create cleanly written code even if I am not explicitly waiting for a green check mark in the top right corner of my screen anymore.

Agile Project Management

During this course, we gained experience in a type of Agile Project Management called Issue Driven Project Management. Specifically, my group worked on a final project called jamb-UH-ree that allowed UH musicians to connect with one another through different student-led jam sessions. Through this final project, we utilized GitHub’s project management features to organize the development of the codebase. Prior to each milestone check-in, the team would sit down and create issues that needed to be tackled and closed before moving on to the next phase of the project. Each issue could be assigned to a project, a team member to complete, and a status column. This method of project management allowed many people to work on the project at the same time without breaking the codebase. When working on team projects, the GitHub and project organization can feel messy so having a consistent guideline to follow allowed everyone to be on the same page. This is one of the few projects I have worked on where everyone knew what to do and completed their tasks in a timely manner. Overall, I’m glad that I learned how to use these project management tools effectively because I will definitely implement them for any coding project I may encounter in the future.

Conclusion

Overall, I really enjoyed ICS 314. It is important to note that these are just a few of the many skills I was able to learn and develop over the course of this semester. I will hopefully continue to implement these skills in my future courses, projects, and career as a more well-rounded software engineer.