According to the statistics, more than 3 billion people are using social media frequently today. How many times a day do you go through Instagram, Facebook, Twitter to learn the worldwide news? How many times a day do you use Google to search for information? Or how many times do you sign up to some web applications to shop online? Long before popular websites and applications that we all know and use today, software engineering was not yet developed systematically, programmers built applications from starch. A massive amount of people use these popular apps everyday, but behind the applications themselves, what makes the applications so functional and efficient is the advancements in software engineering. Through this semester’s learning, I was introduced to a lot of concepts like open-source Software Development, UI frameworks, Functional Programming, design patterns, and so forth. These things work interdependently to serve as a structure today for programmers to develop applications efficiently. The ideas and concepts I’ve gained from this course allow me to understand the establishment of an application little by little, and I realize that a well-developed application requires the more complicated integration of fundamental software engineering concepts than I’ve ever expected it does.
Functional Programming is one of the most powerful concepts in software engineering. The first time I tried to implement an underscore function in my code, I loved it. Not only does functional programming enable the shorter, more self-descriptive, and more durable codes but also provides an easy way for me to modify the database when I haven’t known too many useful, designed methods for accessing the database. Just like solving math and physics problems, plugging values in a written function saves students from calculating from several small scripts. It is also interesting to find out what functions can be used together to get a list of data with specification returned , just like solving logical puzzles.
Agile Project Management generally separates the task into small pieces and makes it simpler to complete the issues with the schedule. It is good for arranging and controlling undertakings progress. The Agile Project Management I learn from this class is known as Issue Driven Project Management (IDPM), which I have performed in organizing my final project. We implemented the use of Github Milestones and set each of the three Milestones a due day. This helped to control and maintain the process, allowing us to move forward step by step instead of writing code all at once. Another advantage we took from IDPM is to properly appoint issues to each member to ensure individual work to be completed in one’s free time. It is always inefficient to let one person wait for another one to finish his task. Through IDPM, most tasks could be put in process simultaneously, and everyone’s effort is greatly respected by each of us giving each issue a new branch. We partitioned the task into achievements after everything is done. This was my new experience with group projects, and this made me realize how significant the organization is when working on a collaborative project.
Overall, this class was more than just learning how to code in JavaScript, HTML and developing web applications. In some ways it opened my eyes to the software engineering field as well as developing my skills of working as a contributive team member. Through this journey, I have got to know some fundamental software engineering concepts but not in depth, but this definitely motivated me to move on. Learning is continuing.