Author Archives: Elio Ngjelo

Introductory Blog CS-443

Hello and welcome to my blog!

My name is Elio Ngjelo and I am taking Software Quality Assur & Test, CS-443. This is where I will be posting blogs on the different topics I will be learning throughout the semester.

Thank you for reading!

From the blog CS@Worcester – Elio's Blog by Elio Ngjelo and used with permission of the author. All other rights reserved by the author.

Software Licenses

Hello everyone

For my last blog for the semester, the topic would be about Software Licenses and their importance in the computer science field. This was one of the most underrated things I learnt during the semester, so that’s why I wanna talk about it. Even though now it seems obvious, it never crossed my mind that I should always put a license on my project. This blog makes an amazing explanation on why you should always put a license on your work and also which one to choose from.

The blog begins by explaining the different types of software licenses, starting with:        Permissive Licenses – which impose minimal restrictions on what you can do like modification and distribution of it. Some of the most popular permissive licenses are the MIT and the Apache license. They are highly popular because they typically only require attribution, which is that you have to give credit to the original author.                                            Then the blog talks about:                                                                           Copyleft Licenses – anyone could modify and distribute the code, but they had to share their changes with the community under the same license. Some of the most popular Copyleft Licenses are the GNU Lesser General Public License (LGPL), which allow linking to open-source libraries with limited obligations but impose stricter requirements if the library is modified. There is also the GNU General Public License (GPL). They are a bit more restrictive, requiring that any derivative works be distributed under the same license and with access to the source code.                                                               

At the end of the blog, it addresses unlicensed code. Emphasizing that code without a clear license is not automatically free to use and may lead to copyright infringement. If the code does not have a license then it is considered to be under the default  copyright laws. This means that only the original author has the right to use, distribute or modify it. If someone was to happen to use it even if it is publicly available, it raises legal issues.          This blog to me was incredibly helpful and useful as it not only explained the various types of software licenses but also gave examples of them. It showed and highlighted the types of works and where would you wanna use these licenses and what works the best for you. One thing that I learnt while reading this blog was understanding what is an SBOM which stands for Software Bill of Materials. It is a detailed list of all the components in the code and their respective licenses. It is important to understand what licenses works the best for you so you can get the most out of it. The computer science field is an amazing work space that everyone can work together to build each other up and licenses help us do just that!

https://www.blackduck.com/blog/5-types-of-software-licenses-you-need-to-understand.html

From the blog CS@Worcester – Elio's Blog by Elio Ngjelo and used with permission of the author. All other rights reserved by the author.

Importance of Git

Hello everyone

For this week’s blog topic, I will talk about the Importance of Git. I think this is one of the most valuable skills to learn and master in the computer science field as it is used everywhere. If it’s either working on a project for a class or at work, utilizing git would help your teamwork greatly.
The blog that I chose did a great job of explaining Git, even to a person who has never heard of it before. It starts by explaining its purpose which is: tracking changes, improving collaboration, managing project versions and even storing them. The highlight of git is how it empowers teamwork, and each developer can work on a shared project code together. Having the ability to streamline a team’s workflow through branching, merging, and pull requests. These features are what allows users to work independently on different tasks for the project. Someone could make a copy of the project and work on fixing a bug, another team member could make his own copy and then add a new feature to the project. Then these changes are seamlessly integrated back to the original project without any problem. Another amazing feature that Git offers is the ability of keeping track of version history that your project has gone through. You are able to trace through changes, even seeing who made them. Commenting on your own commits makes fixing bugs so much easier and accelerators the process. Another reason why this feature is amazing is that sometimes you add something new, or by fixing something you have accidentally broken the code. I know that has happened to me a lot before, and when I didn’t know what Git was at the time I had to manually save all my files, duplicating them so I could have that version of it saved just in case I made a bug and I wasn’t able to fix it. With Git you don’t have to worry about that, as it does that already for you. So if you wanna go to a previous version of your code you can always do that. Later on, the author of the blog talks about how Git positively impacts the quality of your code with all of its features. Git also encourages peer reviews, and by having automated testing, it ensures that only the thoroughly tested and clean code enters the main branch. With all of its cool features that it has, Git helps developers with their creativity. Allowing them to experiment with the code independently without disrupting the main code is amazing. This allows coders to play around with the code adding new features or ideas without worrying about crashing the project. What I liked about this blog was how it was written. The structure and the approach was easy to follow and read. It allowed even learners to understand all of Git’s features and its benefits. It took complex and hard topics and by showing examples it made it easy to understand for everyone.

Jain, Srashti. “The Importance of Git: Essential Version Control for Developers.” Medium, TechVraksh, 13 June 2024, medium.com/techvraksh/the-importance-of-git-essential-version-control-for-developers-dc5ca5600bda. Accessed 15 Dec. 2024.

From the blog Elio's Blog by Elio Ngjelo and used with permission of the author. All other rights reserved by the author.

Agile Methodology

Hello everyone

For this week’s blog topic, I will talk about Agile Methodology. This was one of the earliest topics we went over in this class but to me it was one of the most important one to understand and to remember. This blog explained and went over the main concept of it, going over in detail its values and principles, benefits, the implementation process and why it still remains as the favorite choice across the computer science field. Its main focus is on keeping things simple, adapting as the situation changes. Its foundation is highlighted in 4 key values:

  1. Individuals and interactions over processes and tools.
  2. Working software over comprehensive documentation.
  3. Customer collaboration over contract negotiation.
  4. Responding to change over following a plan.

These important values are supported by 12 core principle, where they emphasize the importance of adaptability, welcoming change and also increasing the communication between the programming team and the business partners which they are working with. This allows them to give a final product which meets every expectation of the customer, even when they decided to change or tweak some things in the middle of the process. This methodology encourages improvement, teamwork, communication while prioritizing efficiency and delivering a high-quality project/product. The workflow off Agile is pretty simple and it is easily explained through its six lifecycle stages: Concept, Inception, Iteration, Testing, Production and Review. Usually, teams complete their work in sprints. Each sprint most of the time lasts about two weeks. There are multiple checkpoints throughout this time, allowing the team to change direction if needed. This is extremely important as sometimes the customer changes its idea on how they want their product to work or to look so having these checkpoints, makes these changes possible. By continuously checking up with the requests of the customer and showing drafts and previews of how the product will look, this allows them to deliver a better final product. The reason why I chose to do this week’s blog in Agile Methodology is because it has become the gold standard in project management and software development, so it was important for me to learn it well as soon enough I will be working with it after I graduate.

To summarize everything, Agile is more than just a methodology; it’s a mindset that encourages teams to adapt, not be afraid of new changes or request and to deliver the best possible final version of the product, meeting each request given by the customer. By valuing collaboration, flexibility, and efficiency, Agile Methodology creates a strong team environment, where each person on the team feels like they are contributing something essential to the project. Just reading about it, it motived me to uses its key values and principles on my life, making my productivity even better as that is something I struggle at times.

Lucid Content Team. “Agile Methodology and How You’re Already Using It.” Www.lucidchart.com, 13 Sept. 2017, http://www.lucidchart.com/blog/what-is-agile-methodology.

From the blog Elio's Blog by Elio Ngjelo and used with permission of the author. All other rights reserved by the author.

Clean Code

Hello everyone

For this week’s blog topic, I will talk about clean code. This was one of my favorite topics that we have discussed in class so far.  Even before, I knew that writing good code is important, but I was unsure on how clean code was written. So far I had an idea, from doing exercises, solving problems and writing my own projects either for school or for fun. I thought my code was good enough that it would pass Uncle Bob’s test of clean code, but after reviewing again through his perspective it definitely does not pass as it needs a lot of improvement. Clean code is extremely significant as also stated by the author of the blog, writing code may take up 10% of a programmer’s time while reading and understanding code occupies the remaining 90%. In the blog, the author mentioned how this is even more accurate as in an open-source project like his, where external contributions can be done. The code needs to be clean enough, so the contributors can easily understand and spent most of their time writing code to add to the project. If the code was written poorly, it would make the experience of the contributor a nightmare as he would spend double of his time just reading and understanding, which would leave barely any time to add any new features. If the project goes to be used by multiple users, bugs would eventually pop up and fixing them in a timely manner when the code is a mess it would be very annoying. Even adding new features, it would be extremely time-consuming as you have to do twice the work if the code was written good. This is one of the reasons why I chose this blog from the rest.  The author emphasizes the real problems that come with writing bad code and how much it will cost you time wise to maintain your project up and running. 

Later on the blog, the author points out the importance of functions and formatting. These are two simple things that anyone can learn and apply it to any of their work. 

Some key points that I wrote down for myself were that functions should be kept small and compact. The principle states that small functions increases clarity and reduces clutter. It makes it easy on the eye as it scrolls through the code, knowing what the function does and where it is used in an instance. The second point he mentioned was both vertical and horizontal formatting. He compared it to the Newspaper Metaphor, which it suggested that code should present key information at the top. It is also important to create vertical spaces between different functions which allows separations, and creating a format which is followed throughout the rest of the project. 

Horizontal formatting focuses more on maintaining manageable line lengths. We don’t want the lines of code to be too long, and they should be viewing compatible for every screen size. It is not recommended and always avoided scrolling horizontally in your code as it can become annoying over time and time-consuming. This code in a way was a reflection of my journey towards Clean Code. I had similar mistakes that I did in that past not knowing how to write clean code, but after reading more about it now I am capable of writing clean code. This is a valuable skill that my future self will thank me for mastering!

https://medium.com/codex/reading-clean-code-week-2-643641e4dc28

From the blog CS@Worcester – Site Title by Elio Ngjelo and used with permission of the author. All other rights reserved by the author.

Introduction Blog CS-348

Hello and welcome to my blog!

My name is Elio Ngjelo and I am taking Software Process Management, CS-348. This is where I will be posting blogs on the different things I will be learning throughout the semester. Thank you for reading!

From the blog Elio's Blog by Elio Ngjelo and used with permission of the author. All other rights reserved by the author.

Elio's Blog 2024-09-07 13:56:35

From the blog Elio's Blog by Elio Ngjelo and used with permission of the author. All other rights reserved by the author.

Introduction Blog CS-348

Hello and welcome to my blog!

My name is Elio Ngjelo and I am taking Software Process Management, CS-348. This is where I will be posting blogs on the different things I will be learning throughout the semester.

Thank you for reading!

CS-343CS@Worcester

From the blog CS@Worcester – Site Title by Elio Ngjelo and used with permission of the author. All other rights reserved by the author.