Software is incredibly open ended. Maybe even more open ended than writing in English because software can be written in several languages or even in brand new ones.
The lack of natural structure in the work means communication and collaboration among the development team(s) is all that more important.