4 ms·
Agree, but I would go further. The term "software architecture" is one I actively disdain. Architects build buildings. If there's anything we learned from compa
by nickbauman 12y ago
Agree, but I would go further. The term "software architecture" is one I actively disdain. Architects build buildings. If there's anything we learned from comparing civil engineering to software development it is that they it is harmful to draw parallels. So while using architectural metaphors is sometimes ok, this term is not.
Software design, on the other hand, is something everyone who writes software is involved with. It is not an act reserved to few and disseminated to the "great unwashed coders" like they are some kind of construction crew who just read blueprints while typing the source (another crappy parallel drawn from the same place as the term 'software architecture')
- bottled_poe 12y agoI disagree, but I also agree. I believe software can be planned to near-perfection by one or more architects. If you establish a design, the implementation can be verified, at least to the level of detail defined in the plans. In my experience, the problem is that I find coding to be a bit tedious. Problem-solving is the interesting aspect of software development, and when that gets taken away my productivity drops. I'm sure not all developers feel the same. A great engineer knows their colleagues well enough to delegate effectively.
- kragen 12y agoIf you first design your software to near-perfection and then find coding it to be tedious because no problems remain to be solved, I recommend that you obtain a thing called a “compiler” to do the coding part for you. You see, a “compiler” takes a formal specification of your design as input, and automatically produces a program as output! I know this sounds like science fiction, but we’ve been using these things for a while now, even though they took a while to get accepted. Alternatively, if you’re already using a compiler, have you considered that maybe you’re doing some things by hand that the compiler could do for you? Modern “high-level languages” (as the design notations compilers accept as input are known) are astonishingly capable of eliminating repetition in the “source code” through the use of “abstractions” and “embedded domain-specific languages”. Of course, there’s always the risk of making your system so abstract that you can’t figure out how to debug it! So you probably don’t want to remove all repetitiveness.
- calibraxis 12y agoCompilers aren't that good. We're still in the dark ages. Your snark should be turned inward.
- kragen 12y agoI don’t know where you thought it was turned.
- crdoconnor 12y ago>I believe software can be planned to near-perfection by one or more architects. If you establish a design, the implementation can be verified, at least to the level of detail defined in the plans. ^^^ I'm sorry to say that this presumption right here is responsible for an awful lot of the terrible code I've seen. Doing architecture isn't like solving an equation. Architectural decisions are nearly always trade offs and the worst trade offs are made by people who believe that there is a Perfect Answer to problems that have no one one right answer. They have a tendency to get religious about approaches, technologies, languages, etc. (sometimes even text editors and where to put the braces).
- nahname 12y agoSeen every architect do this time and time again.
- bottled_poe 12y agoPerhaps near-perfection was a poor choice of language. My point was that a software architect could design a complete solution without writing any code, and be very confident that it will work as required when implemented. In many organisations waterfall is too expensive/slow, and often an early iteration is more important than a robust implementation. But the waterfall methodology is still the only option for mission-critical applications. And these systems are best designed by experienced software architects before any code gets written. I'm not saying that the architect's involvement should end after design. They are critical to communicating the design to anyone involved with the implementation phase.
- nickbauman 12y agoBlueprints can be analyzed to verify the design correctness from an engineering perspective. That a bridge depicted will hold so much weight, for example. UML has no such utility. This is another bad parallel being made between civil engineering and software. Give it up.
- jabits 12y ago> Architects build buildings And ships, etc. Architect is much broader than making buildings. It is about building a system.
- andor 12y agoNo, that's an engineer. "An architect is a person who plans, designs, and oversees the construction of buildings."
- kyllo 12y agoI agree and I also wouldn't call most of what software developers do "engineering" either. There are so many people with "engineer" in their titles who really just develop applications and websites. What ever happened to "Software Developer" or "Programmer" as titles? They are much more appropriate, but I guess they don't sound high-falutin' enough.
- deleted 12y ago[deleted]
- JustSomeNobody 12y agoThis this this.