Emergent architecture: possible inconsistency in Developer Open questions
I recently did the Developer Open test. There were a couple of questions which seem to establish a contradictory position regarding how architecture develops.
First question: When is a system's architecture decided?
A) In the beginning of the project, during Sprint 0.
B) Throughout the project, as understanding emerges and the Development Team learns more about the project.
C) Whenever the assigned architect can join the Development Team.
D) It is designed along with the vision, before the first Sprint.
The correct answer is listed as B. That's fair enough. An emergent architecture is reasonable proposition in an agile way of working.
Second question: What are two (2) ways a Development Team can ensure a good application architecture?
A) The Development Team plans a Sprint 0 at the beginning of a project with the objective of developing an architecture model used during the following Sprints.
B) A Development Team doesn't need an architecture model in Scrum. The architecture emerges automatically as the Development Team adds functionality.
C) The Development Team should have a set of guiding architecture principles that every Development Team member understands and follows when writing code.
D) The Development Team should assign someone to the role of software architect whose job it is to makes sure a consistent architecture is developed.
E) The Development Team plans some time each Sprint to discuss the architecture needed for the features planned in that Sprint.
The correct answers are listed as C and E. This means that having guiding architectural principles (C) is considered a more appropriate answer than having an emergent architecture (B). The position established therefore seems to be inconsistent with that of the previous question.
"Automatically" may be a crucial factor. The Development Team need to work towards it.
--Bhuvan.
I think Bhuvan hit the nail on the head. That answer implies that good arch happens magically or without forethought, and that is not the case. There is forethought, but we try to avoid "BIG UPFRONT FORETHOUGHT". Instead, we do it incrementally, not "automatically"
Assuming that the first question is clear, I'd like to add to the second question that an emergent architecture still needs guiding principles and agreed guidelines. We'll think about rewording answer B but it does hint at the team not paying specific attention to it, as if it 'automatically' (i.e. magically) comes into place. The first question states that architecture is being decided upon, whereas option B of the second question assumes it does not need a conscious decision.
So, overall an architecture is not designed upfront, as the actual implementation of it emerges, but emergence is better against guidelines and agreed principles.
Hi Gunther
Perhaps:
B) A Development Team doesn't need an architecture model in Scrum. The architecture emerges without fail as the Development Team adds functionality.
I remain slightly uncomfortable with the use of the word "automatically". When I took the test, it left me thinking "OK...so what does scrum.org mean by 'automatically'. Obviously it can't be really automatic, because there's no button to press that would subsequently take care of the architecture. Hmm, perhaps they just mean that architectural emergence happens in a continuum, which it does".
Ian, thank you for the suggestion! Highly appreciated.
I suppose, to be even clearer (and as some correspondents noted), you could change the answer to read:
B) A Development Team doesn't need an architecture model in Scrum. The architecture emerges magically as the Development Team adds functionality.
nb: I realise I'm being pedantic about English language. But with so many non-native English speakers taking the assessments, I think we have a responsibility to be totally clear on questions.
Derek, you are absolutely right. It should be about assessing knowledge on Scrum, not on English. Thank you.
I am struggling with this architecture topic recently and scrum guide does not cover this topic. Please help me with below question. I have already checked the forum for this question and the correct answer is A.
Just want to know why option “C” cannot be the correct answer. I remember in a forum I read we should not isolate architecture and the development team.
1. You are part of a group of 500 developers that is responsible for building a large enterprise product. How should the architecture for the product be defined in order to effectively support this many developers working on the same product at the same time?
a) A team should design and build architectural and platform structures that define how the functionality from each set of Scrum Teams must deliver and work with each other.
b) Perform Subsystem Design. Teams should volunteer to develop specific areas of sub-system responsibility.
c) The architecture will emerge during development through early Product Backlog items
d) An architectural backlog should be created to ensure that architectural concerns are addressed in the product development process.
> I have already checked the forum for this question and the correct answer is A.
Can you clarify where you saw this exactly, and how was the answer "A" evidenced?
https://www.scrum.org/Forums/aft/1340/afpg/2
Also this question comes up in scaled scrum open exam. I got this one wrong.
https://www.scrum.org/Forums/aft/1340/afpg/2
Also this question comes up in scaled scrum open exam. I got this one wrong.
There's nothing in the thread you referred to that validates option A.
I would again question the assertion that A is the right answer:
> a) A team should design and build architectural and platform structures that define how the
> functionality from each set of Scrum Teams must deliver and work with each other.
>
> If you chose option A, when would sprinting begin, and how would value be evidenced to the Product Owner?
Hi Ian,
Thanks for your help.
In the above link you can find
Gabriel Pereira Borges>
"Folks, I just completed an assessment where I scored 100% and this question about how architecture is handled in a large enterprise product was in. The correct answer is:
"A team should design and build architectural and platform structures that define how the functionallity from each set of Scrum Teams must deliver and work with each other."
Also I just took the scaled Scrum assement I came across same question. And the correct answer is
"A team should design and build architectural and platform structures that define how the functionallity from each set of Scrum Teams must deliver and work with each other."
Posted By Soumya Das on 10 Sep 2015 07:43 AM
"A team should design and build architectural and platform structures that define how the functionallity from each set of Scrum Teams must deliver and work with each other."
I go for this answer.
Minimizing dependencies between teams is the most important concern for scaled Scrum team when they are working from the same Product Backlog.
A team should design and build architectural and platform structures to minimize the dependencies between team.
An normal emergent architecture is not sufficient for a Scaled Scrum.
The teams could implement the architectures during the Sprint, but the shared understanding structures that defined how the functionality from each set of Scrum Teams must deliver and work with each other should be designed.
The design work may occur during the Product Backlog Refinement events.
> a) A team should design and build
> architectural and platform structures that
> define how the functionality from each set of
> Scrum Teams must deliver and work with each other.
Just to clarify, the exam does indeed assert that the above answer is correct.
However, I question if this is the best answer, for two main reasons:
1. In Scrum it is up to each Development Team to decide how functionality will be delivered, or indeed if it will be delivered by them at all. No other team can decide this for them, whether in-the-small or at scale. Nor can any one team define how self-organizing teams must work with each other.
2. If another team designs and builds "architectural and platform structures" that define how other teams will then deliver their functionality and work with each other, how will that structure-building team evidence value to the Product Owner? In Scrum (including Scaled Scrum) each team must always deliver useful functionality, no matter how small. Delivery cannot be deferred to other teams.
I will go for option C if they change the word 'Early' with 'Every'
c) The architecture will emerge during development through early Product Backlog items