In an excellent article on why software developers need to educated more broadly in the humanities and social sciences, software engineer Tracy Chou provides an insightful description of the inherently social nature of technical activities:
I was no longer operating in a world circumscribed by lesson plans, problem sets and programming assignments, and intended course outcomes. I also wasn’t coding to specs, because there were no specs. As my teammates and I were building the product, we were also simultaneously defining what it should be, whom it would serve, what behaviors we wanted to incentivize amongst our users, what kind of community it would become, and what kind of value we hoped to create in the world.
A more succinct explanation of why software is hard —and therefore why the informatics approach to software development is so essential — would be difficult to come by.