Category Archives: CS-348

A Successful Scrum Team

Overview

Previously stated in class, the three roles of a scrum team are: the development team, the product owner, and the scrum master, with each role being just as important as the other. Starting with the development team, the developers are the ones responsible for working on the product. They are the ones bringing the blueprints and requirements, brought from the product owner, to fruition, essentially doing the dirty work of the team. The product owners show them what needs to be done and the deadline by which it needs to be done, and the developers take it from there. They self-organize and make their own decisions on how to complete the task. The development team could be of any occupation from writing, designing, programming, etc. The prime responsibility of a product owner is understanding business requirements and customer feedback. Based on those two things, the product owner is able to set the focus of the team based on meeting deadlines and release dates. It can sometimes be stressful and overwhelming for developers and product owners having to avoid falling behind. This is where scrum masters come in. The scrum master is the overseer, the piece holding everything together. The scrum master must have knowledge in development and product ownership. The development team and the product owner must be able to count on the scrum master for help and support. The scrum master is responsible for the scrum working as one and keeping the values strong in the team, sort of like a coach. The scrum master is usually the most active member of the scrum team.

Conclusion

As previously stated, I think for scrum to work, all members should be on the right pace. The minute that one role falls behind is the minute the framework fails. With much communication, and all members collectively on the right track, scrum is a very strong framework.

Article I Used

https://www.atlassian.com/agile/scrum/roles

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

What Daily Scrum Meetings SHOULD be Like

article link at the end

Overview

This week we began learning about different types of software methodologies, mainly focusing on SCRUM. Scrum, being one of the most popular software development organizational processes, has many factors to consider and to improve on. One of these pieces is the Scrum Meeting, a 15 minute or so meeting with your co-workers and “boss(es)” discussing the day’s work. However, such meetings can easily devolve or change into different forms; certain groups function differently. For example, one team of developers may find it beneficial to have shorter 5-10 minute meetings where there is less communication from each member. Another team may prefer longer meetings with each developer participating in a detailed discussion. But what should it really be about? How should people really be involved? This is where Mike Cohn’s article Daily Scrums: Synchronization Meetings, Not Status Meetings comes in.

What Not To Do

Cohn, a specialist in agile processes and helping companies utilize teams effectively, believes that many companies do Scrum meetings incorrectly. Most current scrum meetings involve each developer giving a report to their scrum master, whilst the other developers sit and wait their turn. Instead, he states that “the daily scrum meeting is designed for team members to synchronize their effort” (Cohn). This opposes the idea of such meetings being used to simply share what one is working on, and move on for the day.

Cohn’s Beliefs

Cohn believes that daily scrum meetings should have members enthusiastic about the project they’re working on with their team along with the progress being made. Such developers should also be sharing their progress and thoughts not only with the scrum master, but with the rest of the team as well. This encourages a broader discussion with more voices and teamwork involved. 

Cohn encourages Scrum Masters to participate in daily meetings, as they can then hear about impediments while also showing support for their team. Lastly, Scrum meetings should have brief updates that focus on what has been accomplished rather than what one spent time on.

Thoughts

I chose this article because it gives a truer, more refined approach to Scrum compared to the ones mentioned. Since I am a beginner to the idea and process of Scrum, I did not know of some of the problems with current iterations of daily scrum meetings. 

This article has been very helpful to me as it introduces what daily scrum meetings should be like. In the past, I had a misunderstanding about how Scrum meetings went; which lined up with what Cohn advised not to do. Although I have not had any real-life experience with Scrum meetings, I feel better prepared as for what to expect in future jobs. I will most likely be using this newfound knowledge in future projects, whether internship or job, big or small. I understand now that it’s best to look forward to scrum meetings as a time to come together and share, and to leave with excitement about progress.

Article: Daily Scrums: Synchronization Meetings, Not Status Meetings

From the blog CS@Worcester – Josh's Coding Journey by joshuafife and used with permission of the author. All other rights reserved by the author.

SUCCEEDING WITH AGILE

A little journey on the others blogs to learn more about Agile methodology

The Evolution of Agile Practices

Is Agile Going Mainstream?
Agile methodologies have been a driving force in the world of project management and software development for years. They have reshaped the way teams approach projects, placing a premium on adaptability, collaboration, and flexibility over traditional, rigid methods. However, recent trends and discussions in the Agile community have sparked curiosity about the future of the Agile movement. Is it transitioning, shrinking, or possibly assimilating into conventional project management practices? This blog post delves into these intriguing discussions.

The Impact of Remote Work

One reasonable explanation for the drop in in-person conference attendance is the surge in remote work. The COVID-19 pandemic illustrated that remote collaboration is not only feasible but also effective. The convenience of virtual events may play a significant role in the decreased interest in physical conferences. As individuals discover that they can access valuable insights and networking opportunities from the comfort of their homes or offices, the shift away from in-person events becomes more comprehensible.

The Necessity of Agile Evolution

In a recent article, Stefan Wolpers explored whether Scrum, one of the most widely used Agile frameworks, needs to evolve. He discussed potential interfaces and changes that could enhance Scrum’s adoption and boost business agility. These conversations emphasize the ongoing need for Agile to adapt and evolve in response to the evolving demands of the business world.

Conclusion

Agile has undeniably left an indelible mark on project management and software development. Its emphasis on adaptability, collaboration, and flexibility has transformed the way teams approach projects. While conference attendance may be dwindling, the demand for Agile skills and practices is on the ascent, indicating that Agile is becoming absorbed into mainstream project management.

However, the evolution of Agile is far from over. Discussions about adapting Scrum and the need for hybrid approaches indicate that the Agile movement is still actively evolving to meet the demands of a changing business landscape. As we move forward, the key is to strike a balance between traditional project management and Agile practices to ensure successful project outcomes. Agile has not disappeared; it’s simply maturing and growing in influence.

This blog post delves into the evolving landscape of Agile methodologies in project management and software development. It examines the decline in conference attendance, which could signify the integration of Agile practices into everyday work. The post also highlights the impact of remote work on in-person events, the growing fusion of Agile into traditional project management, and the imperative for Agile to adapt to changing business needs.
Here is the link of the blog that I read https://www.leadinganswers.com/

From the blog CS@Worcester – Coding by asejdi and used with permission of the author. All other rights reserved by the author.

The StackOverflow Problem

The world of Computer Programming is one that is comprised of people from every corner of the globe, from countless different social and economic backgrounds, which has led to one of the most diverse fields of study in the world. Some come from well-established foundations; utilizing the resources at their disposal to create new and innovative products. Many more come from more humble beginnings, forging their own path and transforming the world around them. Yet, across this wide spectrum of developers, researchers, and teachers, they all share one thing in common:

At some point in time, at the beginning of their studies, they had relatively no idea what they were doing.

Sure, this sounds harsh. But it’s true for quite literally every field of study imaginable. No one is born with the ability to write machine learning algorithms, develop web applications, or any other kind of work in the field. At one point or another, this knowledge was learned, practiced, and perfected.

In the world of computer programming, the amount of seemingly trivial yet incredibly difficult problems one may encounter can be quite high. They can often be hyper-specific issues where directly posing the question at hand to your peers may be the most effective way of coming to a solution. And in the modern age of the internet, an incredible medium of getting answers proves time-and-time again to be a rock-solid support for developers: StackOverflow.

Munroe, R. (2023) XKCD. http://www.xkcd.com/979

StackOverflow is a forum made for programmers to post issues and questions related to their work, and to receive answers from other programmers on how to resolve these issues. It can be astonishing how regardless of how niche or specific you think your issue may be, there’s an extremely good chance that someone else had the same problem, posted it, and received multiple different solutions. StackOverflow has the benefit of being powered by the vast workforce of the internet, where millions of people can chime in and offer their assistance. However, therein lies the problem:

The internet can be full of jerks.

Of course, I don’t mean to discredit the vast majority of users who are often incredibly helpful and welcoming to newcomers. The usefulness of StackOverflow and similar sites cannot be overstated. The core issue, in my opinion, is the vocal minority who either through arrogance or simply a lack of tact, can scare away those new to the programming field with a sarcastic attitude and an aura of superiority.

This isn’t just anecdotal either. Nate Swanner from Dice.com writes about how in 2019, after StackOverflow made efforts to convince users to “be nice” to each other, the annual developer survey reported that 73 percent of users saw no change in how welcoming the site was to new users. He acknowledges that while the vast majority of users are able to find answers to their questions, there exists a problem in how the forum treats its fellow developers.

“When you’ve got to wade through a river of ego and spite before being told to ‘Google it,we start to wonder how long people will tolerate a Stack Overflow where a “cultural shift” hasn’t yet taken hold.

While one of my least-favorite things to do is to harp on a problem without offering any kind of solution, I really don’t believe there is one singular fix to this kind of issue. After all, this isn’t a phenomenon exclusive to StackOverflow, or even the Computer Science field for that matter. Sometimes, when we hear a question from someone that to us sounds trivial, our knee-jerk reaction is to think “Dude, really? THAT’S your issue?”

This is the mentality that I believe should be addressed and challenged more often in order to create a more welcoming community. The field of computer programming is growing fast. And there are definitely indications that we’re moving in the right direction. That same developer survey found that users on StackOverflow who were people of color felt more welcome than in previous years, which is a great step forward. However, fields of study are driven by the people who study them. And the more welcoming and supportive these groups are, the more a field will grow.

A quick side note: I hope this post didn’t end up being too philosophical; I had originally planned to write about a completely different topic, however after hearing about some experiences from a friend of mine who has just started his freshman year in a CS program, I felt that this was a topic worth discussing.

Citations:

Nate Swanner. “It’s Not Just You: Stack Overflow Is Still Full of Jerks.” Dice Insights, Dice, 18 Apr. 2019, http://www.dice.com/career-advice/stack-overflow-many-jerks.

From the blog Butler Software Construction, Design, and Architecture by Griffin Butler and used with permission of the author. All other rights reserved by the author.

Working Locally And Upstream.

As a student of Computer Science and currently taking a class of Software Process Management, my journey through this course specifically involves a lot of learning, experimenting, and finding better ways to upgrade as a student in this field. In this blog post, I shall share some of the things I have learnt and we’ll delve into the concept of working locally and upstream, highlighting its significance and the benefits it gives in contributing to open-source projects.

What Is “Working Locally and Upstream”?

Before I go into the why and how, let’s clarify what working “locally” and “upstream” means in the context of open source:

  1. Working Locally: When you work locally, you are making changes and improvements to open-source software on your personal development environment. You might be fixing bugs, adding features, or simply experimenting with the code. This is your playground to test, experiment, and learn.
  2. Working Upstream: Once you’ve made changes locally and are confident in your code, the next step is to contribute your changes to the official or “upstream” repository. Upstream is where the original project is maintained, and your contributions become part of the official codebase.

Why Would one Work Locally?

  1. Learning and Experimentation: Working locally allows you to experiment freely. You can try out new ideas, make mistakes, and learn from them without the pressure of affecting the main project.
  2. Skill Development: This is a perfect opportunity to hone your coding, debugging, and collaboration skills. You’ll gain valuable experience that can be applied in your coursework and future career.
  3. Portfolio Building: Every contribution you make locally is a valuable addition to your portfolio. It showcases your practical experience and commitment to open source.

Why Should you Consider Contributing to the Upstream?

  1. Community Engagement: Contributing upstream allows you to be part of a wider community. Your code becomes part of a larger ecosystem, and you collaborate with experienced developers from all over the world.
  2. Impact: Your contributions have a real impact. The changes you make can benefit not only the project but also countless other users and developers who rely on it.
  3. Networking: Working upstream introduces you to industry professionals and like-minded individuals. This networking can be a stepping stone to internships, job opportunities, and mentorship.

How to Get Started Working locally and upstream.

  1. Choose a Project: Find an open-source project that aligns with your interests or field of study. Popular platforms like GitHub offer a wide selection.
  2. Fork the Repository: Forking creates a copy of the project in your GitHub account, which you can work on without affecting the original code.
  3. Make Local Changes: Clone your forked repository to your local machine. Make the desired changes, test them thoroughly, and commit your work.
  4. Make a Pull Request: Once you’re satisfied with your changes, submit a pull request to the original repository. This is your way of proposing your contributions to the upstream maintainers.

In conclusion, Working locally and upstream in open source is a valuable experience for a lot of software developers. It not only helps you grow as a developer but also connects you with a global community of like-minded individuals. So, dive in, fork your first repository, and explore.

Here is where you can find some open source projects to work with:

https://github.com/

https://gitlab.com/

From the blog CS@Worcester – MY_BLOG_ by Serah Matovu and used with permission of the author. All other rights reserved by the author.

More About Using And Mastering Git.

In software, we often hear the phrase git and caught up wondering what it is about. Here is a light description of what git is. Git is a distributed version control system (DVCS) that allows you to track changes in your codebase, collaborate with others, and maintain a complete history of your project. Developed by Linus Torvalds in 2005, Git has since gained widespread adoption due to its speed, flexibility, and robust branching and merging capabilities.

Before we dive into Git commands, it’s crucial to set up Git on your machine: That involves installation and configuration. This is where you Download and install Git from https://git-scm.com. Follow the installation instructions for your operating system and configure it using your name and email address using the following commands, git config –global user.name “Your Name” and git config –global user.email “your@email.com”.

When you move deeper into git commands, this is where it gets interesting playing around with these commands and getting to see what they can do. Some of the git commands include;

  1. git init: Initialize a new Git repository in your project directory. This command sets up the necessary Git files and folders.
  2. git clone: Copy an existing Git repository from a remote server to your local machine. For example, to clone a repository from GitHub.
  3. git add: Stage changes for commit. You can specify individual files or use . to stage all changes in the current directory.
  4. git commit: Create a new commit with the staged changes, providing a commit message to describe the changes made.
  5. git status: Check the status of your working directory. This command shows untracked files, modified files, and files staged for commit.
  6. git pull: Fetch and merge changes from a remote repository into your local branch.
  7. git push: Push your local changes to a remote repository. This is essential for collaborating with others.
  8. git branch: List all branches in your repository, and see which branch you’re currently on.
  9. git checkout: Switch between branches or commits. To create a new branch and switch to it, use: git checkout -b new-branch
  10. git merge: Merge changes from one branch into another. For example, to merge the changes from feature-branch into main: git checkout main and then git merge feature-branch
  11. git log: View a log of all commits in the repository, including commit messages, authors, and timestamps.

As you go even deeper, you discover more advanced git commands such as ;

  1. git stash: Temporarily save changes that are not ready for a commit. You can later apply these changes or clear the stash.
  2. git rebase: Combine commits from one branch onto another, resulting in a cleaner commit history.
  3. git reset: Unstage changes, move the HEAD to a different commit, or even remove commits from the branch entirely.
  4. git cherry-pick: Select specific commits from one branch and apply them to another.

All these commands can also be found in a git installed terminal by typing git help in that event that you don’t have time to look for them on the Internet. In conclusion, Mastering Git and its essential commands is a critical skill for developers. Git enables efficient version control, collaboration, and project management. By understanding these core commands, you’ll be better equipped to navigate your software development projects, whether working solo or as part of a team. So, start using Git in your development workflow, and you’ll find that it’s an invaluable tool that streamlines your work and keeps your codebase organized.

From the blog CS@Worcester – MY_BLOG_ by Serah Matovu and used with permission of the author. All other rights reserved by the author.

The Power of Community and Collaboration in Software Process Management.

In the world of software development, there is an old saying “two heads are better than one” that has taken on a whole new meaning. Modern software development is often a complex interplay of various skills and perspectives, and it is through a community and in collaboration that the collective genius of a team truly shines. By working together, developers can leverage their unique strengths to produce code that is both efficient and elegant.

Collaboration within a community means the free exchange of knowledge. Developers can share their insights, tips, and tricks, leading to a collective increase in skills. This not only benefits the individual but also enhances the overall quality of the software produced.

Community involvement often means peer review becomes a standard practice. Code reviews by fellow developers help identify and rectify issues before they become critical, ensuring a higher standard of code quality.

A strong community fosters diverse expertise. When developers with varied backgrounds and skillsets come together, they bring fresh ideas and problem-solving techniques to the table. This diversity can be a catalyst for innovation, leading to the creation of more robust software solutions.

Efficiency and productivity are crucial in software development, where tight deadlines and shifting project requirements are the norm. Community and collaboration bring a host of benefits in these areas. This usually entails task allocation, shared responsibility and furthermore some feedback given. This ensures full effective productivity in a team.

As we look to the future, the role of community and collaboration in software process management is likely to expand. With the advent of remote work and online collaboration tools, developers from different continents can seamlessly work together.

GitHub, the largest platform for hosting and collaborating on code, has seen exponential growth, with millions of developers contributing to projects daily. Platforms like GitLab and Bitbucket also play crucial roles in promoting community-driven software development.

Furthermore, open-source projects continue to thrive. The Linux Foundation, in its annual report, highlighted a growing number of open-source projects, reflecting the sustained interest in community-driven development.

In conclusion, the power of community and collaboration in software process management cannot be understated. By coming together, sharing knowledge, and working towards a common goal, developers can drive innovation, enhance efficiency, and foster a strong sense of togetherness in the ever-evolving world of software development. The success of the entire industry is built upon these foundations of unity and shared expertise, and it continues to thrive thanks to the collaborative efforts of developers around the globe.

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

Week 5

In week 5, we talked about the steps involved in the developing software. We mainly looked at 6 steps and when listed in order they are Requirements analysis, design, implementation, verification, deployment and maintenance. By definition, Requirements analysis in developing software could be determining languages a project is developed in, any hardware requirements needed, and what the project will be doing. Design includes the planning of how features are going to be created, implementation is the creation of the project, verification is the process of making sure the project is working as intended as well as making sure it’s what the customer wants, deployment is releasing the completed project to the consumer or the user, and finally maintenance could involve working on bug fixes and regularly updating the software as needed. For the blog post, it goes deeper into explaining the different steps involved in software developing. As a result of following these steps, your team is able to share a common goal, targets are set and tracked by the developers and everyone is able to cooperate effectively.

The blog includes a process called SLDC(Software Development Life Cycle). SLDC is a structured process used for designing, developing, testing and maintaining software. SDLC provides an organized methodology for the software development process, and supports the development team in identifying risks, establishing quality standards and monitoring performance. Knowing the requirements for the software development process is important for the developers because it makes them better understand the user and hence provide the best quality software for them. Some questions to ask the client before the launch of any new project are who are you? What software do you want? What is this software for? What is your budget? and more. I chose this particular resource because it talks about the same steps we discussed during class but goes more into depth. I think knowing the steps involved in developing software is important because as a future software developer, it is good to have an idea of what the work life as a developer is. I want to be a developer after graduation and Week 5’s topic gave me a little insight of what developers do and the cycle’s in which they work in.

Reference.

https://www.keypup.io/blog/software-development-process-an-easy-breakdown-keypup#:~:text=The%20seven%20phases%20include%3A%20requirements,development%20process%20are%20often%20skipped.

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

Agile Development

As I am in my 4th year in the Computer Science program at Worcester State University, I am trying to find topics that resonate with not only what we learn in class but with practical application as well. I came across a post discussing “Agile Software Development,” A methodology I’ve only ever heard of in class last week and figured it would be a smart Idea to further investigate this method given how popular it is in the Software industry.

While everyone is moving towards a more collaborative and adaptive approach for software development, understanding agile is essential. I selected this post because it provided a comprehensive overview of Agile, and compared it with other methods such as Scrum, Kanban, and XP.

The post began with an overview of the complex nature of software and the necessity of structured project management frameworks. In this post Agile was the solution, Agile was defined as a methodology that prioritizes individuals and interactions over processes, it is a set of values. They then went to explain how the process is split up into 3 stages. Preparation, sprint planning, and the Sprint. Preparation is when the product owner creates a backlog, and the development team estimates the length of time each feature will require. Sprint planning is where the team decides which features are going to be worked on. And Finally the sprint is where the team actually builds it. They followed with the advantages and disadvantages of Agile. Such as Flexibility, Communication, risk reduction etc for Advantages, and Limited control, and the challenges of having a remote team collaborating. What was really helpful was the Comparison of Agile to other methodologies and providing insights to their strength and weaknesses.

Reading through this article I was shocked by how flexible Agile truly is. It allows for changes to be made seamlessly, which is a great solution for the unpredictability of working on real world projects. If followed correctly I can see this methodology being very successful for other careers as well since Agile is a set of values if companies have strong values and shares and teaches them to their employees everyone can make decisions and work on their own seamlessly.

However, as previously mentioned a weakness in the Agile method is its limited control reduced documentation it is important to find the correct balance. So in projects, especially those with tight deadlines combining different methodologies might be the best choice.

If you would like to read the full article on Agile Development click down below
https://www.microfocus.com/en-us/what-is/agile-development

From the blog CS@Worcester – Josies Notes by josielrivas and used with permission of the author. All other rights reserved by the author.

Week 5 – A bit late but we’re getting there…

So it’s been a hot second since I set this blog up, and I apologize for the silence. Been busy focusing on homework and figuring out my work situation.

But with that aside, I just wanna talk about my past with GitHub and repositories before this class. I’ve actually used GitHub many times before, because I collaborate with a modding community. We focus on modding a video game known as Luxor, a classic PC game from the 2000s that I’ll share gameplay of below.

As for what a mod of this game entails, here’s an example of one of my favorites from recent, Hollow, made by my friend Dommo:

A lot of effort has been put into these mods, and I’ve contributed to a lot of them, and even made my own. I have no recordings of it, unfortunately, but I swear it exists, haha.

Though as of recent, we’ve been discussing how to properly archive mods. For the longest time, we’ve been using our Discord server for modding to store them, but that poses an issue: Many people might not have access to Discord due to their countries, operating systems, or various other reasons.

This led to some people moving over to GitHub, which was one of my first times learning how it actually properly worked. Before this, I simply downloaded stuff from it, but I learned the basics of how to push and pull repositories and have a local clone to work on and collaborate with multiple people.

Currently one of the biggest projects being developed using GitHub is OpenSMCE (https://github.com/jakubg1/OpenSMCE) which is a game engine being built off of the Love2D engine to allow us to have an opensource engine to work off of for our mods, as opposed to the limited and clunky engine we use currently with the original game.

The reason I discuss this is actually because the new information I’m learning in these classes is inspiring me to help work on and learn the process of being in a team working on a software/engine development with Jakub, the developer of OpenSMCE. This has been an application I’ve been very excited to see have a full release, and being able to say I contributed to it and helped it reach that state would be amazing.

Hopefully as the semester goes on, with the lessons I’m learning about how to create an application as well as work in a collaborative environment, I’ll end up contributing to this project, and maybe I can even use this blog as a way to discuss the ongoing developments and issues we’ve been facing with the development of OpenSMCE. It would be interesting, and I will probably reach out to Jakub within the next week about it.

Anyways, that’s all I have for this week, until next time!

-Tempura

From the blog CS@Worcester – You're Telling Me A Shrimp Wrote This Code?! by tempurashrimple and used with permission of the author. All other rights reserved by the author.