Software Engineering

21 Jan 2021

My journey in learning software development started out pretty rocky. I did not anticipate how much work and time one has to put into making a functional and intuitive application, especially for a rookie like myself. Understanding and hopefully someday, professionally navigating the intricacies of software design won’t be so mentally taxing and labor intensive. Fortunately for myself, I’ve come to be familiar with fundamental software engineering concepts that are invaluable to helping me learn and develop skills in constructing web applications that has long been sitting in my head.

Open Source Software Development

As a student, the abundant resources available online is both a blessing and a privilege. This allows aspiring designers and also professionals to learn from, freely modify or incorporate already made open-source projects into larger projects. This facilitates innovations and promotes a free exchange of ideas within the software designing community. Having learned of this concept, makes it possible for me to learn from other designers and incorporating their ideas to mine. I already have an eye out on a few GitHub projects:

They may be above my current skill sets, but I can already pinpoint some aspects of their code I am somewhat familiar with. It’s always better to start from the bottom and work your way up, hence, the upcoming summer break will consists of me going through open-source projects available in GitHub to modify and incorporate to my many web application ideas.

List of Beginner Friendly Projects

Development Environments

Development environments are software development tools that helps designers with language aware editing, project definition facilities, integrated compilations and debugging. Through my process of learning ICS, I’ve come into contact with a few IDE’s like JGrasp and NetBeans. After being familiarized with IntelliJ IDEA and finding the environment’s similarities with JGrasp and NetBeans, the experience gave me the confidence to comfortably explore other IDE’s. The overall structure and how files and objects are organized within the environment helped me in understanding the software system a lot faster. It has also made it possible for me to get the grasp of some design patterns used in the Bowfolios project. For a methodical person like me, organization is everything, therefore I can’t see myself working on another big project without the use of an IDE.

User Interface Frameworks

Functional design is what I live for, whether it’s an aesthetically comfortable chair or an intuitively designed application. I aspire to someday make an application so intuitive, no one would ever need a tutorial to use it. Which is likely to be impossible, since good websites often provide new users with some tutorial to use the application in the beginning. Basically, I hope to implement psychology and design to create a smooth user experience within my applications. This will be made possible by incorporating a User Interface Framework in my projects, which is a set of CSS classes and functions that simplify the applications layout and theme, providing a consistently aesthetically looking UI components throughout the system. Often, I find that the best part of working on a project is beautifying the application using some UI Framework. I’ve only been introduced to one so far, Semantic UI React, but with the ease of implementing UI components from an easy-to-read library makes me want to see what else is offered elsewhere.

JavaScript UI Frameworks Pending to be Explored:

My road to becoming proficient in the ways of software engineering is still a long one, but it’s comforting to know I have a plethora of resources online to learn from. With my summer break arriving very soon, I will take the opportunity in meandering and exploring these software engineering concepts in my own time.