Why is programming so difficult?
Many times, we need to work with others to write programs, which also brings challenges.
All team members must perform their duties. In order not to interfere with each other's work, you must divide the work. In order to establish a reasonable division of labor, first you need to understand the structure of the program (see Conway's law).
If you have multiple teams, the situation will be more complicated. Each team has different goals, so you have to weigh all aspects. Sometimes, a decision is very beneficial to other teams, but it will hinder your work. Putting yourself in the shoes of others and finding a reasonable compromise is a very difficult task, but it must be completed.
In large projects, no team can understand the whole system, let alone one person. However, you still need to figure out how the various parts of the system are designed and organized together. It's harder than taking on the whole design yourself.
Although dealing with people is not really writing code, it is also a very important part of developing software.