$ cat posts/does-it-make-sense-to-talk-about-software-architecture.md
Does it make sense to talk about software architecture?
The entry on Software Architecture in the Spanish Wikipedia strikes me as far too pretentious:
In the early days of computing, programming was considered an art and was practiced as such, because of the difficulty it posed for most people, but over time general forms and guidelines have been discovered and developed, on the basis of which problems can be solved. These have been given the name Software Architecture because, like the blueprints of a building or construction, they indicate the structure, functioning and interaction between the parts of the software.
First, I don’t think programming has stopped being an art. What Knuth said still holds:
It seems to me that if the authors I studied were writing today, they would agree with the following characterization: Science is knowledge which we understand so well that we can teach it to a computer; and if we don’t fully understand something, it is an art to deal with it. Since the notion of an algorithm or a computer program provides us with an extremely useful test for the depth of our knowledge about any given subject, the process of going from an art to a science means that we learn how to automate something.
Artificial intelligence has been making significant progress, yet there is a huge gap between what computers can do in the foreseeable future and what ordinary people can do. The mysterious insights that people have when speaking, listening, creating, and even when they are programming, are still beyond the reach of science; nearly everything we do is still an art.
Second, what I don’t like about the notion of software architecture is that it carries the implicit idea that software is built, the same way buildings are built.
My experience tells me that’s not so. I have always thought software is not built that way, and that’s why it is better to say that “we develop software”, because we use the term in the sense of evolving. That is, software is not built; software evolves.
Although we can learn and adapt some practices from architecture to our work, I don’t think it’s right to argue that we should talk about software architecture as an activity that really exists.
Software has a nature different from every other artifact man builds.
If we drop the notion that software is built, we realize that it makes no sense to talk about software architecture (just as it doesn’t make much sense to talk about software engineering).
I don’t know how we can characterize our profession (a major undertaking), but I do think we need to look at it differently. Maybe old Knuth is right, and in the end we are just artists (or craftsmen?).
I’d like to know what you think. Should we stop talking about software architecture? I mean, before the software architects’ guilds show up!
Comments
comments powered by Disqus