Category Archives: cs-wsu

Week 6: Things Senior Developers Never Do

Every senior, experienced developer once started their career as a junior developer with basic coding skills and foundational knowledge of computer science. Junior developers gradually learn real-world design patterns, architectural decisions, advanced programming concepts, and domain knowledge to transition into senior developers—those who understand the big picture of the software products they develop.

Being a senior developer is not a permanent badge based on your past experience—your “seniority” depends on how you work and the decisions you make to ensure the success of a software project. A poor decision or a deliberate wrong action can damage your reputation, so senior developers must always be mindful of their coding activities and their consequences.

In this article, we will explore things that senior developers never do to maintain their reputation within a software development team. Avoid these habits and actions to become a skilled senior developer and advance your career!

Overcomplicating Project Architecture

An artist showcases their skill and experience through paintings. Similarly, a project’s source code becomes the playground for developers to demonstrate their expertise. Using an optimized infrastructure and dependencies focused on architectural simplicity is a great way to prove your experience.

However, adding advanced architectural components beyond what a project actually needs—just to show off expertise or make the project look “high-end”—results in overengineering. An overengineered project introduces unnecessary complexity to the entire team, even when the project itself only requires a simple solution.

A common example is startups implementing hundreds of microservices when a simple monolithic REST API would suffice.

A great case study is Stack Overflow, which serves millions of developers without needing hundreds of microservices.

Senior developers never overcomplicate project architecture to showcase their skills or make a project appear sophisticated—they focus on simplifying the architecture to use resources efficiently and impress through minimalism.

Writing Overly Complex Code & Chasing “Perfect” Code

Using appropriate design patterns in source code enhances maintainability. Additionally, experienced developers leverage language features, design patterns, and efficient data structures to improve software performance and maintainability.

However, perfect code does not exist—developers can always refine their code using design patterns and language features, believing they are achieving perfection. But what happens when a developer over-improves their code beyond the “good enough” threshold?

Striving for perfection often leads to overengineering the code.

For example, imagine implementing a Fahrenheit-to-Celsius converter in Python as part of a simple weather app. A senior developer anticipates future maintenance needs but never adds unnecessary complexity in pursuit of “perfect” code—they write simple, sufficient, and maintainable code.

They improve code only when necessary for maintainability but never write unnecessarily complex code based on speculative future requirements.

Ignoring Increasing Technical Debt

Technical debt arises when developers choose short-term, easy solutions without considering long-term consequences, especially regarding maintainability. While technical debt is unavoidable in the competitive software industry with tight budgets, it can be managed through continuous code improvements and well-organized code review sessions. Technical debt can also accumulate in project architecture components.

Here are common situations that lead to technical debt:

  • Writing code solely to ship features and fix bugs without prioritizing maintainability.
  • Extending features on a weak code foundation by adding duplicate code and quick fixes—for example, working on a plugin without stabilizing the core plugin runtime APIs.
  • Choosing infrastructure and runtime services that are difficult to scale for a high-user product.
  • Ignoring outdated, unsupported, or deprecated code and libraries.
  • Integrating incompatible libraries or sticking with suboptimal architectural decisions.

Technical debt may seem harmless at first, but if it accumulates too much, it can shorten the lifespan of your product.

From the blog CS@Worcester – Nguyen Technique by Nguyen Vuong and used with permission of the author. All other rights reserved by the author.

Week 5: 4 THINGS YOU SHOULD KNOW ABOUT GIT AND GITHUB

Are you one of those people who occasionally find using GitHub a bit of a headache?

I get it. At first glance, GitHub can seem intimidating—so many branches, pull requests, merges, conflicts… it’s easy to feel lost.

I’ve been there too. I often wondered whether I was following best practices or just making things messier for the team with every commit I pushed.

The good news is, it doesn’t have to be that way. With the right approach and a few key tips, GitHub can seamlessly integrate into your development workflow.

Whether you’re a complete beginner or someone overwhelmed by its countless features, GitHub is here for you.

WHY SHOULD YOU CARE ABOUT GITHUB?

GitHub is more than just a fancy cloud storage for code—it’s where the magic of collaboration happens.

It allows you to implement version control in the most efficient way possible, something every developer needs when working with a team to avoid stepping on each other’s toes. Mastering GitHub will make your life easier, whether you work solo or in a group.

BASIC WORKFLOW

Let’s go through a simple GitHub workflow. This assumes you have a basic understanding of Git, so we’ll focus on GitHub as a collaboration hub.

CREATING A NEW REPOSITORY

Go to your GitHub dashboard and click the “New Repository” button. Give it a cool name—maybe “super-cool-project” or something more professional if you’re working in a team.

CLONING TO YOUR LOCAL MACHINE

Now, clone this new repository to your local computer.

(Illustration: “GitHub Repo Clone”)

BRANCHING OUT

This is where many beginners struggle: branching. If you’re developing a new feature, always create a new branch from main (or master, depending on your default setup).

(Illustration: “Branching Out”)

MAKING CHANGES

Go ahead and do what you need—write great code, add some files, maybe fix a few bugs along the way.

COMMITTING AND PUSHING

Once you’re happy with the changes, stage them and commit. Remember the golden rule: write meaningful commit messages. Avoid vague messages like “fix stuff” or “final version control.”

(Illustration: “Commit and Push”)

CREATING A PULL REQUEST (PR)

After pushing your branch, it’s time to create a pull request on GitHub. This is a crucial step. PRs allow others to review your code, provide feedback, and discuss potential changes.

Go to your repository on GitHub, and you’ll see a big button that says something like “Compare & Pull Request.”

Click it, add a meaningful title, and write a clear description. Be specific—let your teammates know what you changed and why.

MERGING THE PULL REQUEST

Once your team has reviewed your code and you’ve addressed their feedback, merge the PR into the main branch. Voilà!

You’ve just successfully collaborated like a pro.

HANDLING MERGE CONFLICTS LIKE A “BOSS”

Merge conflicts are inevitable, but don’t let them stress you out. If two people edit the same part of a file, Git won’t know which version to keep. That’s where you come in.

When Git notifies you of a conflict, it will mark the conflicting parts in the file. You’ll see something like this:

(Illustration: “Handling Merge Conflicts”)

Simply decide which code to keep, or merge both in a logical way, save the file, and commit again. That’s it!

GITHUB ACTIONS: AUTOMATE YOUR WORKFLOW

Another game-changing feature on GitHub is GitHub Actions. Why waste time manually running tests, building code, or deploying updates when GitHub can do it for you?

Actions allow you to automate almost anything in your workflow.

For example, you can set up GitHub Actions to automatically run tests every time a pull request is created, ensuring no buggy code gets merged. You can even set up continuous deployment to push changes to production once they pass all tests.

Here’s a basic setup for an action that runs tests on your code:

(Illustration: “GitHub Actions”)

This means that every time you push to main, GitHub will run tests for you—like a little assistant reminding you, “Hey, let me check if everything’s still good to go.”

FINAL THOUGHTS

GitHub is your best friend in the world of version control and collaboration. With features like branching, pull requests, and GitHub Actions, it provides everything you need to work effectively with others—or even just by yourself.

It’s not as scary as it seems. Stick to good practices, keep things organized, and soon, you’ll be committing, merging, and collaborating like a seasoned developer.

Key takeaways:

✔ Use meaningful branch names and commit messages.
✔ Don’t fear pull requests—they’re your safety net.
✔ Handle merge conflicts with confidence, not panic.
✔ Automate testing with GitHub Actions to save time.

And remember: no matter how great GitHub is, it’s the people using it that create the real magic.

Have a good day!

From the blog CS@Worcester – Nguyen Technique by Nguyen Vuong and used with permission of the author. All other rights reserved by the author.

Apprenticeship Patterns Chapter 1 and Chapter 2-6 Introductions

“Apprenticeship Patterns Guidance for the Aspiring Software Craftsman” by Dave Hooper and Adewale Oshineye was interesting. This reading allowed me to reconnect my work to the text. The simple route would be to create a technical guideline but instead, this book goes into greater depth that mentality is the key. The mental fortitude to be humble and to always be open to learning new things from anyone to master your craft.

All the chapters hold great importance to me, I found chapters 3 and 5 to be the standouts. Two key things that stood out to me mainly were developing a long-lasting career and being adaptable in any situation. I am just beginning my career and one goal that I have to achieve before the rest is starting to create a long path to success. Not everything is going to happen in a day but taking it one day at a time and not focusing on the short term can come a long way. Slowly progressing and making small strides is the way to go. Adaptability is self-explanatory but with technology always changing and advancing, you must always be ready for the change. If you don’t adapt to it, technology will leave you behind. Some people may not like change but it’s great to always learn new things and change the way you used to do something for something better. An open mind is better than a closed one.

After reading this I have come to a new understanding of my career. It has taught me to have more purpose when I learn even the smallest things because to fully master something you must understand the big concepts and the small ones. When Learning you should focus on being competent on something instead of just acquiring it and moving on. Also, this is a long-term goal so don’t focus on the short term but look at it from a broader point of view where small increments can lead to bigger strides in the end. The main key to becoming a software craftsman is mentality because technical skills can only get you so far when you always must be moving forward and being able to adapt on short notice.

From the blog cs-wsu – DCO by dcastillo360 and used with permission of the author. All other rights reserved by the author.

Task 5

I found the website of Libre Food Pantry to be interesting I like the setup of the site and like the aesthetic. It looks very professional and the colors coordinate with the webpage. The section about GitLab stood out to me. It is great to be open to the public where we work on our project. It gives anyone easy access to our work without being able to edit it but look at it and give us feedback. I chose to write about this because sometimes it is hard to find the source of people’s projects but it being easy to see is very useful. In Thea’s food pantry, I found the community section the most important. This should be the first thing that should be clear to anyone working on this project. It tackles a lot of problems that may be up to interpretation but gives clear answers so nobody is confused. For me, the one that stood out the most was the definition of done. To certain people, this may be simple but in reality, it is much more complicated than it is. To be done with code can be a multi-step process. This gives importance to the expectation that everyone must reach when working on this project.

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

Working as a Front end developer

Now that I have heard about people’s experiences working on the back end, I was curious about people’s experiences working on the front end. Reading personal experiences taught me a lot about working on the back end. You can learn a lot and avoid mistakes by seeing others take similar paths. Also, it can prepare you for problems that you may face in the future. Mistakes are inevitable but being able to adapt or being able to recognize it and fix it goes a long way. Working on projects especially those that have to do with coding errors is always a step away. You can try to get a step ahead on these problems by seeing other people work and implementing it on your stuff. That is why I found an article about working as a front-end developer. These articles are very engaging and always give me a new perspective.

This article is written by Selim Enes who has done freelance work in the past but is currently working as a developer. When he first started he was working on small things like CSS edits until he proved himself. One of his major projects was a blog project where he had to create the display of the UI. He was involved in all operations after 2 months. When he proved to the team that his code wouldn’t crash the project he gained access to the company’s main project. The company’s main project entailed a webinar application that used technologies like WebSocket. One thing that made him know he was going in the right direction was being able to develop features like push-to-talk by himself. There are some negatives to his work with his boss being very hasty on projects. He believes all tasks are urgent and make some work very stressful. Plus with the recent economic regression, he doesn’t believe he will be able to get a raise anytime soon. He has learned to have a full-stack blog project for himself and has an e-commerce project his about to start working on. He is working while also building his portfolio outside of work.

Reading this article was very insightful. It made sense that when you first start working for a company they won’t give you the keys to everything just yet. They ease you up into it until you have gained their trust. Working on his portfolio outside of work motivated me to do the same too. You can sometimes become complacent at your job because you have a living but you shouldn’t. You should always try to improve and hope to find better opportunities elsewhere

https://medium.com/@sellimenes/1-year-experience-as-a-junior-front-end-developer-39766fad5c34

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

Week 15

Working inside the backend made me curious about people’s real-life experiences working in their company’s backend. I found articles about the backend but have yet to gain experience working inside it. It would be helpful to get insight into someone’s real-life experiences. By seeing others’ experiences you can learn from them and avoid any mistakes they made starting. Many beginner mistakes are big headaches when they happen, but if someone else can stop you from making them, it will be a huge lifesaver. We learn sometimes the hard way but the biggest help to prevent this is to learn from other paths. Some may think it better to go in blind I think differently. Being prepared for me is always the better option

Blessings James starts the article by advising readers that starting it may be difficult but to trust the process because the feeling after you accomplish your task is another feeling entirely. Her favorite project was working on a to-do list application with a backend using Python. It was difficult for her to work while also being data efficient. By doing research she was able to find a scalable model that worked. She also discovered some libraries including Flask-login that would do a lot of the heavy lifting. This was key for security which is often overlooked. Debugging is always a problem that comes up but she was able to gracefully fix them. API design was also a key feature wired on but swagger made it a lot easier. 

Reading this article gave me a lot of insight into someone working in the backend for a real company. There were some similarities to what were doing now including swagger. Swagger seems like the for the API design. We haven’t used all the features of Swagger but using Swagger Preview did help when doing assignments and homework. Our code was automatically able to be seen updated. One thing that interested me was Flask-login. I didn’t know you could use outside libraries but it makes sense if it is open to the public anyone can use it. It can save time by being able to use different libraries and cut your workload by half. Reading that article there was a big emphasis on security and I feel at times is overlooked. You have seen with a lot of companies when it is overlooked the outcomes are drastic. It becoming a bigger issue every day and security should be the first task on everyone’s list.

article
https://medium.com/@blessingjames1047/an-article-on-backend-ff90312c05b2

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

AI Revolutions in Large-Scale Application Development

The advent of Artificial Intelligence (AI) is changing the software development landscape, making the creation of big project and their related application code faster, smarter, and more efficient. From automating repetitive tasks to optimizing code and enabling predictive analysis, AI empowers developers to achieve more with less effort. This blog explores how AI actual facilitated in normal coder and tester related workers and their tangible benefits give more reliable outcomes without any more works.

               AI acts as a force multiplier in software development, streamlining workflows, reducing errors, and enhancing productivity. Before AI the possibilities of traditional works are very lengthy and so much effort of manual strategy, particular for large projects. By using machine learning, natural language processing, and advanced algorithms, AI tools and platforms help developers at every stage of the application lifecycle, thus easing those challenges.

Key Areas where AI Growing:

Code Generation: In GitHub Copilot AI tools helps developers by generating raw codes, suggesting snippets, and writing full code according to their descriptions.

Bug Detection and Fixing: AI tools like Deep Code analyses coders code and give accurate and deeper result so it gives actionable recommendations in real bugs and fixes their uses in just one click.

Automated Testing: Machine learning algorithms can generate large scale test on minimum time so it actual carry the whole process testing in their application so workers can get time and effortless comprehensive testing.

Real-World Examples of AI in Action

  1. GitHub Copilot: This AI coding assistant generates suggestions in real time, helping developers write efficient and accurate code faster. It makes big projects easier to handle by lowering the amount of manual labor required for repetitive coding chores.
  2. Chatbots for DevOps: AI-powered chatbots doing multiple things automatically like server deployment, monitor application health, and resolve issue in one time so human interventions growth reduced.

Challenges and Limitations is also part of this AI skills. AI-generated code may require careful validation so might be Accuracy Dependence is requirement in project-specific parts. It may be necessary to make an initial training expenditure in order for developers to comprehend how to use AI tools efficiently. Using AI in proprietary projects brings up issues related to biassed algorithms and intellectual property so ethical issue is also fixed it our terms and modifications.

               As AI continues to evolve, its role in software development will expand further. Innovations such as generative AI for full-stack applications, intelligent debugging systems, and adaptive learning platforms will redefine what’s possible in large-scale application development. In conclusion, AI is not just a tool for coders; it is one robot which give accurate result without any further large skills task. Diverse controlling in AI based application is sometime give innovation and creativity and every computer fields.

Citations:

  1. GitHub Copilot Documentation. (n.d.). https://github.com/features/copilot
  2. Amodei, D., Olah, C., et al. (2016). Deep Learning in AI Systems. OpenAI Research Papers.
  3. Applitools AI Testing Tools. (n.d.). https://applitools.com
  4. How AI is Revolutionizing Software Development [YouTube Video]. (2023). Available at: https://www.youtube.com/watch?v=IGQChbLYFqY

From the blog CS@Worcester – Pre-Learner —> A Blog Introduction by Aksh Patel and used with permission of the author. All other rights reserved by the author.

Week 14

We have collaborated on the backend for the last few weeks. It is the central workload of our work, so I wanted to find an article about it. It very much intertwined with what were doing in class and outside of class with the homework. It is a great opportunity to see other people’s experiences working in the back end and real-life experiences. You can understand more things that we didn’t dive into the class by doing research and expanding our knowledge. That is why this week I found an article that specifically goes into detail about backend development.

The article starts by mentioning the importance of the backend and how it’s often overlooked because most of the spotlight is on the front end. The back end is like what is under the hood of a car you are happy when it works without having to open the hood. That being said the front end and back end work in tandem it’s not always necessary but for this scenario yes. The front is more the user-facing elements of a website. Like the text that is being displayed, graphics, buttons, and or anything the user interacts with.While the backend focuses on the behind-the-scenes work to make the website function. Outside of a car is the front end and its engine and other components are the back end. The backend is important to complete any user request by being safe and efficient. Security and efficiency are key processes of the backend for the user experience. This is why both backend and frontend developers must work in unison to create successful applications. The main importance backend developers should go for is innovation. Technology is always evolving and people must adapt to it becoming stagnant won’t be successful in this field.

Reading this article made me understand more about backend development. Backend development has so much more to it with data and security. It makes sense because security is often overlooked at times. The more information is stored online the more we have to make the effort to secure people’s data. Nobody will want to use your application if there is a breach of security. My main takeaway was their statement about innovation. Their final message to the reader was a hopeful one stating that a developer must change with the times because they are in the epicenter of it. Technology goes far out including healthcare solutions that might not be important to some but are highly integral to a lot of people.  

https://www.ciat.edu/blog/understanding-backend-development/

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

GitHub and Docker: Streamlining Database Management for Modern Development

In AI based fast growing world of software development, very deep knowledge database management plays a pivotal role in ensuring application performance and scalability. GitHub and Docker have become indispensable tools for developers, providing streamlined workflows and efficient environments for database development, testing, and deployment. This blog explores how GitHub and Docker work together to simplify database management in today’s world.

GitHub, a leading platform for version control and collaboration, is key part is managing database code, schemas, and migration. For hosting configuration files, and database-related repositories, GitHub using one source to get maximum database workflows. GitHub also fulfill the software tester and developer related tools to easy to convert code and data process without any lengthy process. Giving branching, pull request, and code reviews facilities actually make GitHub performances very advanced in machine learning world. Version control with actual data track with their schemas, collaboration with multiple contributors and Integration with CI/CD Pipelines provides key benefits of GitHub database. Where Docker, the development and testing of databases is being transformed by a packaging platform. Docker enables developers to reproduce production-like environments on local computers by enclosing databases within containers, guaranteeing stability across the stages of development, testing, and deployment. Environment Consistency, Isolated containers and scalability provide key features of docker which give real support in testing team so we can easily grow with our GitHub system.

When combined, GitHub and Docker provide a robust solution for managing database workflows.

  1. Versioning and Collaboration with Docker Files:

Docker files and Compose files, essentials for databases, are stored in GitHub repositories. Developers can version-control these files, and automate container builds via GitHub Actions.

2. Automated Testing:

Developers can easily supply files with version control and creating pipelines so spin up actual data for their multiple automated testing.

3. Database Migrations as Code:

Teams store migration scripts in GitHub, while Docker containers provide isolated environments to test these scripts. Reliable schema modifications in staging and production settings are guaranteed by this method.

Advantages of Using GitHub and Docker for Databases:

Reduced Onboarding Time: Learners can start working with prebuilt Docker containers without any work delays.

Improved Testing: Automated tests run against containerized databases, ensuring thorough validation of database changes.

Enhanced Collaboration: Efficient team workflow, while Docker guarantees consistency of the surroundings.

In conclusion, GitHub and Docker together form a powerful duo for modern database management, addressing challenges like environment consistency, version control, and collaboration. For small project to build large applications these two combos give detailly work and improving features in all workers. GitHub and Docker will continue to redefine how databases are managed in the software development lifecycle.

Citations:

  1. GitHub Actions Documentation. (n.d.). https://docs.github.com/en/actions

2. Docker Documentation. (n.d.). https://docs.docker.com

From the blog CS@Worcester – Pre-Learner —> A Blog Introduction by Aksh Patel and used with permission of the author. All other rights reserved by the author.

Week 13

We started to work in the front end I became more curious about front-end developers. They are often the key if someone will even use a website to begin with. You can have a fully functional site but if it isn’t engaging it can lose people. In the past, this wasn’t something you had to deal with but there are so many things taking people’s attention that just doing the bare minimum isn’t enough. There are things that we don’t even think about that are key to a successful website. A main common feature now is dark mode if a website doesn’t come with this theme it can scare away users. Even simple things like where the search bar is placed are key for the navigation through the site. This week I decided to find information about front-end developers and how they achieve success.

The article starts by explaining what a front-end developer does. They create the graphical layout of a website or application. Front-end workers are usually hired by someone looking to build a website. They can create a site layout to give the buyer an idea of what their website could look like. It can save people a lot of money and hassle if their vision can reasonably be imagined by a front-end developer. A front-end developer’s main focus should be to place everything to benefit the user it should be simple and intuitive for the user. There are several job opportunities in this field from working in industry or having the freedom to be a freelancer. This is a job that offers a lot of challenges but with critical thinking, a solution can always be found. Many big companies hire this position including Microsoft and Meta are always looking for new front-end developers.

Reading this article showed me a new field in this space. There are many fields in Coding there are so many I find a new one every year. This field uses different coding languages including HTML, CSS, and javascript to name a few. I liked how this was a problem-solving job that there has to be actual decision-making need to be successful. This is a job that is engaging while trying to engage others to use your product. The key for a great front-end developer would probably have to be to not forget about the little things. This article reassures that keeping a user-friendly UI is the key to having a successful website.

https://www.coursera.org/articles/front-end-developer

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