Knowledge-Sharing Architects as an Alternative to Coding Architects
ithare.com
ithare.com
> the architect is the guy that can sketch that reporting engine that will be nurtured and improved by the team,
Yes (in fact, I LOVE this definition ;-)).
> therefore he both codes and shares knowledge.
Not necessarily, and that's the whole point. Initial development (as noted in the article) is one of the exceptions - but "sketching a thing that will be improved" (which I agree with) is VERY different from "working day in and day out on improving it" (which I do NOT like). And this difference is the whole point of the article.
Ubiquitous language depends on agreement between all the major stakeholders -- technology and business alike (That's why it's ubiquitous)
I'd shoot for that, and give DDD a pass. It's difficult, nary impossible, to get even medium-sized groups of people in alignment in regards to language. So do the analysis, keep working on that, and leave the code to the coders. That's a win.
But it ain't architecture. It's analysis.
Sidebar: does anybody do analysis any more? I see either complete neglect of it, it being done as some sort of rote order-taking, or as the full-pass-through OOA/D/P in the GP.
Example of one methodology that uses Z in safety-critical field with low defect results:
http://www.sis.pitt.edu/jjoshi/Devsec/CorrectnessByConstruct...
Yes, there are quite a few such tools which allow laypeople and coders to come to an agreement. My point was about coming to and maintaining that agreement. Not how exactly you would go about doing that.
I could think of about half-a-dozen good ways to formalize a domain. But even if your process is nothing more than "come to this room and let's talk"? It's difficult to get many people with many other duties in such a situation as much as it would be required.
Don't forget -- and I'm sure you haven't -- that it's not just formalizing a language and grammar. It's the fact that these change over time as participants become more absorbed in the domain and see the same concepts from various viewpoints.
https://en.wikipedia.org/wiki/List_of_software_development_p...
Followed by this:
https://en.wikipedia.org/wiki/Domain-driven_design
There was a company that I had bookmarked that did enterprise software by defining ontologies that got converted into code or something. I can't find it but this link seems similar. Stuff does have some use in actual applications.
http://www.mkbergman.com/948/ontology-driven-apps-using-gene...
Interesting point of view, never thought along these lines. On the other hand, thinking a bit about it - I don't feel that this approach requires a super-architect; what it requires is a DECENT architect (which is a prerequisite for any successful project anyway).
In other words - sure, architect should be one of the best coders - but if he isn't, the project is doomed anyway (and having "the best of the bunch" is always possible - by definition).
It's very easy when looking at the solution to a problem to say "I would've thought of that" and maybe you're right. But maybe not.
Having real experience of the consequences of your decisions, keeping skin in the game, is also important. Maybe not for every single decision, but a representative sample.
The problem with it is that there are only 24 hours in a day.
I suspect that part of the answer might lie in recognising that a lot of software projects don't need a particularly scalable development approach.
From what I've seen, those Senior and Really Strong people who prefer to code, do NOT even want to become architects (and to move their career beyond Really Really Really Senior Developer - whatever the name this position carries). But this is a different problem (at least in part related to too much responsibility and "comfort zones"), and I don't know of any solution for it...
I've seen it called "senior developer", although nowadays this is used a bit inflationary.