Author Archives: Joy Kimani

Ethics in Software Development

I read XAM’s blog post “The Ethics of Software Development: Balancing Business and Social Responsibility” this week. It discusses moral dilemmas that software developers face, as well as the importance of balancing social responsibility with corporate objectives.

Ethics is an important but sometimes overlooked aspect of software development, which is why I chose this website. Although CS-348 focuses heavily on software design and development techniques, the topics discussed do not necessarily address the moral implications of our decisions. I assumed that studying more about this subject would help me understand what this means in my profession as a software developer.

The blog post shows how designing software frequently requires challenging decisions when social or ethical considerations conflict with business goals. Engineers, for example, may face pressure to cut costs or launch software faster, putting inclusivity, user privacy, and quality at risk. The article emphasizes developers’ responsibility to promote moral behavior, even if it is not the simplest or most profitable alternative.

I was particularly interested in the post’s discussion of “building trust” and how making moral decisions is critical to earning the respect of end users and society as a whole. I could relate to the example of appropriately managing user data. In an age when data privacy is frequently violated, software developers must take proactive steps to protect sensitive data and maintain user rights.

After reading this blog post, I had to reflect on my own responsibility as a prospective software developer. I understand that every decision I make has an impact on other people’s lives, even if it is tempting to focus solely on meeting deadlines or fixing technical challenges. For example, I might be assigned to create a feature that collects user data. I must ask myself: Is this information required? What will they do with it? Have we ensured the user is informed? These studies must become a critical part of my personal development.

I also realized that ethical software development requires effective communication with all parties involved, including employers, coworkers, and users. Even if it means going against established or short-term economic goals, developers must be willing to promote morally just solutions. As the post makes clear ethical behavior is critical for long-term success and trust.

I will take the time to explore the ethical implications of my work, whether I am working on a class project or in a professional setting. To ensure that I make wise and responsible decisions, I plan to further my education on topics such as data privacy, accessibility, and security.

Moving forward, I plan to incorporate this ethical attitude into my own development process. To summarize, this resource provided me with valuable insights on how software development balances social responsibility and profitability. It noted the idea that developers have an important role in creating technology that improves society while adhering to moral ideals, as well as fixing problems. I believe that taking this stance will help me become a more caring and accountable software engineer !!

From the blog CS@Worcester – Just A Girl in STEM by Joy Kimani and used with permission of the author. All other rights reserved by the author.

Understanding Code Linting Techniques and Tools

Code linting, which provides automated tests to ensure that code complies with established standards and best practices, is an essential step in modern software development. Linting has a significant impact on the entire development process by improving maintainability, reducing errors, and increasing code quality. The TechTarget publication “Understanding code linting techniques and tools” presents a comprehensive introduction to code linting. It describes linting, discusses several linting approaches, and provides examples of typical linting tools. The essay underlines how linting can provide uniform coding standards across teams and discover errors early in the development process. It also emphasizes the importance of incorporating linting into pipelines for continuous integration and delivery, or CI/CD. Linting is an important part of ensuring high-quality software development, which is why I selected this resource. It is also directly related to the subjects covered in CS-348. The importance of clean, maintainable code and automated methods for software quality assurance is highlighted throughout the course. Furthermore, understanding linting is critical to my professional development as a software engineer, particularly as I try to improve my teamwork and coding practices. The article taught me more about linting, particularly how it helps to maintain consistency across a codebase and spot errors early on. Linting, I discovered, does more than merely check syntax; it also enforces code standards and detects potential problems at runtime. Tools like Pylint for Python and ESLint for JavaScript, for example, can detect obsolete functions, unused variables, and other minor issues that might otherwise go undetected. One of the most important lessons learnt was how to include linting tools into CI/CD processes. This integration significantly reduces the risk of production defects by ensuring that code is automatically examined for flaws before being merged into the main branch. Furthermore, the site introduced me to a variety of well-known linting tools, each tailored to a specific language and use case, such as ESLint, Stylelint, and SonarLint. The research emphasized the need of following coding conventions, particularly when working on collective projects. In my experience, inconsistencies in coding styles have hindered progress and caused confusion. A linting tool may have alleviated these issues by requiring consistency throughout the team. Going forward, I aim to incorporate linting into my development process. I’ll start my personal efforts by looking into language-specific tools like Pylint for Python and ESLint for JavaScript. I will encourage the usage of linting tools in team settings to improve code quality and speed up the review process. To ensure that the tools match the team’s needs, I want to explore creating linters to adhere to project-specific standards. Another key priority is to incorporate linting into CI/CD pipelines. By doing so, I can reduce the chance of problems in production circumstances by ensuring that the code meets quality criteria before deployment. In addition to enhancing my output, these strategies will provide me with the necessary abilities to succeed in professional software development settings.

Works Cited:
TechTarget. (n.d.). Understanding code linting techniques and tools. Retrieved from https://www.techtarget.com/searchsoftwarequality/tip/Understanding-code-linting-techniques-and-tools

From the blog CS@Worcester – Just A Girl in STEM by Joy Kimani and used with permission of the author. All other rights reserved by the author.

Writing clean code

This week, I read the informative post “How to Write Clean Code” from the freeCodeCamp blog. A thorough review of best practices for creating clear, manageable, and effective code was provided in the article. As I work to improve my software development abilities, this website has been really helpful in helping me better grasp clean code concepts. I selected this article because it immediately aligns with the course objectives, which prioritize process-oriented thinking and strong programming methods. Professional software development requires clean code, and becoming proficient in it supports the larger goal of becoming a skilled developer who can contribute successfully to group projects !! The article introduces the concept of clean code, which is described as code that is simple, transparent, and free of excessive detail. It covers specific activities, such as assigning descriptive and informative names to variables, functions, and classes. Creating functions that serve a specific, distinct purpose. Combining repeated logic for easy maintenance. Writing self-explanatory code and reserving comments for complex logic or critical context will help you avoid using unneeded ones. Use rigorous unit tests to ensure that the code works as intended. As a brief aside, the author emphasizes the need of developing these techniques into routines and incorporating them into daily coding operations. I realized after reading this post how frequently I ignore little but important details of code quality. For example, I have been guilty of using vague variable names like temp or data when my code would be easier to comprehend with more descriptive names. I found that developing large, multi-task functions makes debugging a headache, thus the remark about writing tiny, single-purpose functions caught my attention. I was able to relate clean code techniques to more general course ideas thanks to this resource. The concept of removing duplication, for instance, is closely related to software design concepts like DRY (Don’t Repeat Yourself), which we have covered in class. Similar to this, the emphasis on meaningful names is in line with our goal of communicating clearly, both when writing code and when recording procedures. In the future, I plan to apply what I’ve learned by revising my code to ensure that functions are clear and effective. Using descriptive terminology to improve text readability. Unit testing should be prioritized in order to identify and resolve issues early in the development cycle. These changes should make it easier for me to stick to my own responsibilities and contribute more consistently to group projects. My experience with clean coding will also be useful in real-world scenarios where teamwork requires efficiency and clarity. This article served as a helpful reminder of how crucial clean coding techniques are to meeting industry standards for software development. As I progress through this course, I’ll make an effort to incorporate these ideas into my workflow so that the code I write is not just useful but also readable and manageable.

Cocca, G. (2024, September 11). How to write Clean Code – Tips and Best Practices (Full Handbook). freeCodeCamp.org. https://www.freecodecamp.org/news/how-to-write-clean-code/

From the blog CS@Worcester – Just A Girl in STEM by Joy Kimani and used with permission of the author. All other rights reserved by the author.

WEEK 1 | Employing Agile Methodology In Scrum Master Role.

Article URL: https://clickup.com/blog/scrum-master/

The article chosen, written by the PMO Team, group responsible for moving the needle across various projects at ClickUp, discusses the vital job of a Scrum Master lies in promoting teamwork, eliminating roadblocks, and making sure execution of Agile principles to achieve successful project management !! The article is called “How to Become a Scrum Master: Skills, Tools, and Tips”; in essence, examines the duties and significance of a Scrum Master. The Scrum Master promotes dialogue among stakeholders, the product owner, and the development team while emphasizing the aim of constant enhancement. I personally was interested in this article as it applies to the agile methodology. Agile has been a topic of discussion in our lectures in the past couple of weeks and has been greatly employed in our POGIL activities. To add on to the Scrum Master lesson we had this past week, it was pivotal to come to an understanding of how all this applies together.

I chose this resource because it offers a thorough and understandable summary of the Scrum Master’s responsibilities, which is in line with my studies on Agile techniques and project management in CS-348. I found the article to be very helpful in helping me better grasp Scrum and other Agile methods because it breaks out details of the role in a straightforward way. 

I could relate to the blog post’s topic on a number of levels. I had some misconceptions regarding the function of the Scrum Master, which it cleared up first. I had kind of thought of the Scrum Master as the team’s “administrative” position before reading this. But the article made clear how much more dynamic this position is, needing the person to be a servant + leader who continually strikes a balance between the team’s requirements and productivity while preserving Agile principles. The focus on the Scrum Master as a facilitator rather than ‘traditional’ manager was what really caught my attention. The differentiation matters because it shows how the Scrum Master, instead of assigning tasks, enables the team to self-organize. With this discovery, my perspective on leadership in Agile settings has completely changed. I now see that good leadership is about empowering people to perform at their highest level, not about having control over them.

This resource has taught me that becoming a Scrum Master is more than just knowing the fundamentals of Scrum. It also involves combining soft skills like empathy and communication. This understanding will change the way I handle Agile project management from now on. For example, I now see how crucial it is to maintain a collaborative atmosphere where team members feel motivated and ready to take responsibility for their work. In order to create a positive team environment, I will continue to work on cultivating my assistance techniques and look for roadblocks that might prevent development.

From the blog CS@Worcester – Just A Girl in STEM by Joy Kimani and used with permission of the author. All other rights reserved by the author.

WELCOME

Welcome to my blog !! My name is Joy Kimani and I’m a senior in college majoring in computer science.

Leave a comment


From the blog CS@Worcester – Just A Girl in STEM by Joy Kimani and used with permission of the author. All other rights reserved by the author.