Finding adventure in software engineering

15 Dec 2023

Introduction

My initial idea of software engineering was abstract and not well-informed. I knew what software was and what engineering was, and from my prior experiences in engineering classes, I figured a class on software engineering would teach me the process of ideation and execution in development, and introduce me to tools and techniques that would help me bring my ideas to life. Over this past semester, I feel that I have gained several major skills that I hope to carry with me through personal projects and my future career as a software developer.

Strategies for effective group work

Over the three years that I have been in college, I have come to value projects and project-based classes greatly. I feel that I learn the most when I am driven to not only apply our classroom learnings, but to go beyond the scope of the class to execute my visions. In addition to building technical skills, projects also build communication, teamwork, and interpersonal skills, which are absolutely essential for a real job.

One aspect that was new to me was our project organization. We used issue-driven project management (IPDM), in which project goals and features are divided into specific tasks that each group member handles independently. The benefits of this structure include clear organization in terms of what each update to the code adds to the overall functionality of the project, and clear distribution of the work. Because the nature of our group work was largely independent and asynchronous (with the exception of team meetings), IPDM was very helpful in making sure our goals for each milestone were concise and executable, and in making sure we were all contributing in an efficient manner without any work overlap. I would like to use IPDM in future projects going forward.

Another aspect of our project work that I found especially valuable was our effort to adhere to coding standards and naming conventions. When working with others’ code, they may use formatting and language conventions that are different from our own, which increases the time and effort it takes to understand. Through software engineering we learned firsthand the importance of maintaining proper formatting and style structure throughout our code. We experienced a few instances in which variables were named in ways that did not follow convention (ex. a plural name for a singular object) or in which our collections had repeated information (multiple instances of the same field). Though it took some time and effort to rename and refactor everything that needed to be changed, looking back, we saved ourselves from having to reread and re-understand by adhering to patterns in our code style and design structures.

Key takeaways for UI design

A crucial part of software engineering is user interface (UI) design, referring to the visualization and interaction strategies implemented to give the user a smooth and easy experience. I am especially interested in this field for a long-term career. Many people have shared unfortunate UI experiences with me that negatively affected their impression of the tool, service, or business, even if the functionality was useful to them. I would like to create user interfaces that are customer-centric and easy to understand. Software engineering exposed me to many useful tools and strategies that contribute to this goal.

We practiced using several forms of UI design, including raw HTML/CSS, Bootstrap, and React. I found these tools extremely valuable because of their versatility and ease of application. The Bootstrap and React libraries are extensive, and I found a lot of fun exploring and experimenting with the different components included in each. As we worked on our final project, I found myself looking through the library features and visualizing ways in which I might be able to use each component for my personal projects. We also employed Meteor, a multi-platform design framework. I enjoyed its compatibility with different packages and plugins, as well as the use of MongoDB for database management. I have already used these tools for other projects, and I hope to continue to explore and develop my skills.

Software engineering has been an extremely educational and fun experience. I feel confident that these skills are relevant to my career goals and confident in my ability to employ what we have learned.