The Entanglement of Concerns between People and Software Development

Rate this content
Bookmark

Recently I was asked: “but Rita, aren’t you a Software Developer? Isn’t you job to write code? Why do you keep pondering about people?” My answer was simple - “because it is not up to a person to build quality software. It takes a village”. 

Software Development and People can not be seen as two separate concerns by companies. There is a natural entanglement between the two of them that I would like to explore a bit in this session.

This talk has been presented at C3 Dev Festival 2024, check out the latest edition of this Tech Conference.

FAQ

The principle of separation of concerns in software engineering involves designing code modules so that each module addresses a specific concern or functionality. This minimizes dependencies between modules, making the system more manageable and maintainable.

There is an entanglement of concerns in software development because the people who build, use, and maintain software, as well as those who pay for it, are interconnected. Their concerns and requirements are often intertwined, making it difficult to separate them completely.

The university professor refused to update the Fortran code because it had been extensively tested and proven reliable over time. He believed that there was no time to rewrite and modernize it, even though it was difficult to understand and follow.

Old software systems in industries like finance, telecom, and health often run on outdated technologies such as COBOL and old databases. These systems are not optimal and pose challenges because the original developers may no longer be available, leading to potential knowledge loss and difficulties in maintenance and modernization.

Management teams often resist modernizing working software systems because they see no immediate benefit in investing time and money to replace something that is still functioning. They prioritize short-term operational stability over long-term improvements and innovation.

The continuous evolution of Microsoft Windows demonstrates that even when a product is working, it is important to keep updating and innovating. Listening to users and pushing for change and innovation can lead to long-term success and relevance in the market.

The main message conveyed by the speaker is the importance of considering the interconnectedness of people, teams, and software in development. The speaker advocates for building user-friendly, adaptable software systems while keeping in mind the needs of those who will maintain and use them.

The speaker's experience at Volkswagen Digital Solutions highlighted the need for software modernization by revealing that some software running in factories was outdated and written in COBOL. This situation underscored the challenges of maintaining old systems and the importance of updating them for better efficiency and adaptability.

The quote from Ferdinand Porsche mentioned is, "I could not find the car of my dreams, so I built it." In the context of software development, this signifies the importance of following one's vision and dreams to create innovative and user-friendly software solutions that meet specific needs.

The 'entanglement of concerns' signifies that the various stakeholders in software development—developers, users, maintainers, and financiers—are deeply interconnected. Recognizing this entanglement is crucial for creating software that is not only functional but also adaptable and user-friendly over time.

Rita Castro
Rita Castro
8 min
15 Jun, 2024

Comments

Sign in or register to post your comment.
Video Summary and Transcription
As a software developer, the entanglement between people and the software they develop is important. Legacy software poses challenges due to lack of time, understandability, and optimization. Legacy systems in health care face similar challenges. Microsoft's evolution and innovation highlight the value of change. Developing adaptable and user-friendly software requires considering the interconnectedness of all actors.

1. Introduction to People and Software Development

Short description:

A friend asked me why, as a software developer, I often talk about people and teams instead of just coding. This got me thinking about the entanglement between people and the software they develop. In one of my research projects, I encountered a Fortran program that was difficult to understand. This sparked a conversation with my professor about rewriting it in a more modern language.

A while ago, not that long ago, but some time ago, I was chatting with a friend of mine and she asked, Rita, you're a software developer, but in our conversations you often talk about people, teams, how they connect, what's wrong, aren't you supposed to build code? And that kind of stuck with me and it led me into a bit of a thinking state and that's where all of this came from.

So as software engineers, we are taught about the principle of separation of concerns and we do it very well in our code. We code, we design our code with the principle that this module does this, that module does that, almost no connection between them and we're good, we're fine. However, things are a bit not facing one another and I actually think that for this case and for software development, there is actually an entanglement of concerns between people and the software that they develop.

I studied at university physics, so not a computer science engineering degree and I did astrophysics and early on in one of my research projects, I was given a task to process some data and along with that task came a computer program that was in Fortran and it was really, really hard to understand and to follow and the language, the data itself, so it was weird and it sparked the conversation between me and my professor and it was interesting because he was very fond, he was very happy. It implements stuff from the paper, it's very trivial. It's not very trivial, but I have an idea, why don't we take the code, we have the paper, we have the data, let's benchmark this, let's write it again in a new, more modern language that new people can understand and follow through.

2. Challenges with Legacy Software

Short description:

There is no time to revamp the code. The optimized code may not be easily understandable. In my job at a tech company, we had to readjust and react to change during the satellite launch. The software in factories is old and not optimal.

No, no, no, no, no, we're not going to do that. There is no time. This has been battle tested and battle proved by many, many students before you and many, many students after you. But listen, we have the code, we have the tests, we have things that we can revamp and get it new, get it rebranded. No, we don't have the time. Okay, when will we have the time? You know, soon? And guess what, folks? Soon never came. And when I told this story to a couple of friends of mine from different departments at university, they said the same thing about theirs. Yeah, yeah, yeah, it's the same for us at math, it's the same for us at physics, whatever.

And the code that we usually see, it is really, really optimized. At the time, it had to be because of constraints in computers, constraints in memory, et cetera. So if you look at this, yeah, function F, it does a random thing, then you call the main function, you call the number. But with a very simple refactor, if I change it to calculate factorial, now you know out of the blue, it computes the factorial for a number, and you look it up later, what does it do? Fair enough.

Onwards. I started working at a tech company. It was for aerospace engineering. And my first job was to build not the satellite, thank God, but build the software that would process the data that the satellite collected. The team was amazing. And as you can imagine, building a satellite means that you have a lot of phases that you have to go through. So naturally, the project followed the waterfall ways, and each step had to be done after the other. One of the most important steps in the launch, in the project was the launch. So when the satellite was launched, early on we realized that there was something that wasn't working in one of the receivers, and we had to readjust, readapt, react to change, make new algorithms, implement them, validate them, and get them up and running again. And it worked. And it worked because of these amazing people that worked together, connected, building and running the product that we were taking care of.

Just a couple of years ago, I joined Volkswagen Digital Solutions in Portugal, and to my surprise, I discovered that some of the software that runs in the factories, it's also a little bit old. A tad, let's say. But it is mostly software that runs on-prem, that is written in COBOL, that the databases are really, really old. And it's a little bit not optimal. Let's put it this way. And again, when talking to my friends, they say, yeah, but it's the same thing with us in finance. It's the same thing with us in telecom.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

A Framework for Managing Technical Debt
TechLead Conference 2023TechLead Conference 2023
35 min
A Framework for Managing Technical Debt
Top Content
Today's Talk discusses the importance of managing technical debt through refactoring practices, prioritization, and planning. Successful refactoring requires establishing guidelines, maintaining an inventory, and implementing a process. Celebrating success and ensuring resilience are key to building a strong refactoring culture. Visibility, support, and transparent communication are crucial for addressing technical debt effectively. The team's responsibilities, operating style, and availability should be transparent to product managers.
Remix Flat Routes – An Evolution in Routing
Remix Conf Europe 2022Remix Conf Europe 2022
16 min
Remix Flat Routes – An Evolution in Routing
Top Content
Remix Flat Routes is a new convention that aims to make it easier to see and organize the routes in your app. It allows for the co-location of support files with routes, decreases refactor and redesign friction, and helps apps migrate to Remix. Flat Folders convention supports co-location and allows importing assets as relative imports. To migrate existing apps to Flat Routes, use the Remix Flat Routes package's migration tool.
Principles for Scaling Frontend Application Development
React Summit 2023React Summit 2023
26 min
Principles for Scaling Frontend Application Development
Top Content
Watch video: Principles for Scaling Frontend Application Development
This Talk discusses scaling front-end applications through principles such as tearing down barriers, sharing code in a monorepo, and making it easy to delete code. It also emphasizes incremental migration, embracing lack of knowledge, and eliminating systematic complexity. The Talk highlights the use of automation in code migration and the importance of removing barriers to enable smoother code migration.
Fighting Technical Debt With Continuous Refactoring
React Day Berlin 2022React Day Berlin 2022
29 min
Fighting Technical Debt With Continuous Refactoring
Top Content
Watch video: Fighting Technical Debt With Continuous Refactoring
This Talk discusses the importance of refactoring in software development and engineering. It introduces a framework called the three pillars of refactoring: practices, inventory, and process. The Talk emphasizes the need for clear practices, understanding of technical debt, and a well-defined process for successful refactoring. It also highlights the importance of visibility, reward, and resilience in the refactoring process. The Talk concludes by discussing the role of ownership, management, and prioritization in managing technical debt and refactoring efforts.
Building High-Performing Cross-Cultural Teams
React Day Berlin 2022React Day Berlin 2022
25 min
Building High-Performing Cross-Cultural Teams
The Talk discusses the importance of effective communication and collaboration in cross-cultural teams. It emphasizes the impact of culture on communication and performance evaluation. The speaker highlights the differences between low-context and high-context communication styles and the need to understand cultural nuances. It also explores the challenges of giving feedback in multicultural teams and suggests ways to improve communication and create a feedback culture. The influence of language on communication and the importance of transparency and honesty in feedback are also discussed.
How to Make a Web Game All by Yourself
JS GameDev Summit 2023JS GameDev Summit 2023
27 min
How to Make a Web Game All by Yourself
This talk guides you on how to make a web game by yourself, emphasizing the importance of focusing on tasks that interest you and outsourcing the rest. It suggests choosing a game engine that allows distribution on the web and aligns with your understanding and enjoyment. The talk also highlights the significance of finding fun in the creative process, managing scope, cutting features that don't align with the game's direction, and iterating to the finish line. It concludes by discussing the options for publishing the game on the web and leveraging unique web features.

Workshops on related topic

Integrating LangChain with JavaScript for Web Developers
React Summit 2024React Summit 2024
92 min
Integrating LangChain with JavaScript for Web Developers
Featured Workshop
Vivek Nayyar
Vivek Nayyar
Dive into the world of AI with our interactive workshop designed specifically for web developers. "Hands-On AI: Integrating LangChain with JavaScript for Web Developers" offers a unique opportunity to bridge the gap between AI and web development. Despite the prominence of Python in AI development, the vast potential of JavaScript remains largely untapped. This workshop aims to change that.Throughout this hands-on session, participants will learn how to leverage LangChain—a tool designed to make large language models more accessible and useful—to build dynamic AI agents directly within JavaScript environments. This approach opens up new possibilities for enhancing web applications with intelligent features, from automated customer support to content generation and beyond.We'll start with the basics of LangChain and AI models, ensuring a solid foundation even for those new to AI. From there, we'll dive into practical exercises that demonstrate how to integrate these technologies into real-world JavaScript projects. Participants will work through examples, facing and overcoming the challenges of making AI work seamlessly on the web.This workshop is more than just a learning experience; it's a chance to be at the forefront of an emerging field. By the end, attendees will not only have gained valuable skills but also created AI-enhanced features they can take back to their projects or workplaces.Whether you're a seasoned web developer curious about AI or looking to expand your skillset into new and exciting areas, "Hands-On AI: Integrating LangChain with JavaScript for Web Developers" is your gateway to the future of web development. Join us to unlock the potential of AI in your web projects, making them smarter, more interactive, and more engaging for users.
From Engineer to Leader: A Workshop for First-Time Tech Leaders
TechLead Conference 2024TechLead Conference 2024
144 min
From Engineer to Leader: A Workshop for First-Time Tech Leaders
Workshop
Andrew Murphy
Andrew Murphy
Transitioning from an individual contributor role to a leadership position, especially in the fast-paced tech industry, is hugely challenging. Most new leaders don't receive any training at all in the first 10 years of their new responsibilities.Our comprehensive workshop is designed to assist new and emerging tech leaders in understanding their new roles and gaining the skills to make them confident, happy and effective leaders.
Managers Are From Mars, Devs Are From Venus
TechLead Conference 2024TechLead Conference 2024
111 min
Managers Are From Mars, Devs Are From Venus
Workshop
Mo Khazali
Mo Khazali
A Developer’s Guide to Communicating, Convincing, and Collaborating Effectively With Stakeholders
It’s a tale as old as time - collaboration between developers and business stakeholders has long been a challenge, with a lack of clear communication often leaving both sides frustrated. The best developers can deeply understand their business counterparts’ needs, effectively communicate technical strategy without losing the non-technical crowd, and convince the business to make the right decisions. Working at a consultancy, I’ve both failed and succeeded in architecting and “selling” technical visions, learning many lessons along the way.Whether you work at a product company, are a consultant/freelancer, or want to venture beyond just being a developer, the ability to convince and clearly communicate with stakeholders can set you apart in the tech industry. This becomes even more important with the rise of GenAI and the increasingly competitive developer market, as problem-solving and effective communication are key to positioning yourself.In this workshop, I’ll share real-world examples, both good and bad, and guide you through putting the theory into practice through dojos.
Out of the Frying Pan, Into the Fire: A Manager's Guide to Helping New Developers Thrive
TechLead Conference 2024TechLead Conference 2024
35 min
Out of the Frying Pan, Into the Fire: A Manager's Guide to Helping New Developers Thrive
Workshop
Andrew Coleburn
Andrew Coleburn
Onboarding to a new project can be difficult, no matter your background and experience. But it can be especially challenging for new developers straight out of school or a coding bootcamp. Drawing on personal experience as a bootcamp grad and JavaScript consultant, this talk will discuss tips and strategies for managers to help the new developers on their teams get their bearings in an unfamiliar codebase, so they can make more of an impact, faster!
How to create editor experiences your team will love
React Advanced 2021React Advanced 2021
168 min
How to create editor experiences your team will love
Workshop
Lauren Etheridge
Knut Melvær
2 authors
Content is a crucial part of what you build on the web. Modern web technologies brings a lot to the developer experience in terms of building content-driven sites, but how can we improve things for editors and content creators? In this workshop you’ll learn how use Sanity.io to approach structured content modeling, and how to build, iterate, and configure your own CMS to unify data models with efficient and delightful editor experiences. It’s intended for web developers who want to deliver better content experiences for their content teams and clients.