16 Mar 2017 by mallyanitin
“Architect must code. Manager must code. Scrum Master must code. Tester must code. Product owner must code. Developer can become architecture owner. Developer should become tester. Developer must understand customer challenges”
The way the debate goes, it almost seems like everyone is trying to do someone else’s job. And, this behavior gets justified as self-organizing teams.
In a real world, people have mustered skills and aspire to learn new skills. This is true for an architect as well. It’s very rare, that we are able to assemble the perfect team. Mature @ t=0.
It’s important to pull your weight as part of any effort/job. If coding is your strength, do it. If customer engagement is your strength, do it. If inspiring people is your strength, do it. If making choices (trade-offs) is your strength, do it. If you have multiple skills & you are ambidextrous, do it (lucky!). Just don’t burn yourself out, doing it all.
If the challenges for the team are not architectural (i.e. most architectural choices are made and time tested, or, team is mature and governance is not required), then the architect needs to pull his/her weight to address the challenges. This may mean coding, testing, and/or selling. If this type of work is not interesting (or boring or offending), it’s time to change than be a burden.
If the challenges for the team are realizing the architecture, and they look up to the architect for help, the architect MUST code to show how to get things done. It’s OK to ask for HELP, if you believe the architecture is right, but you don’t have the coding skills to get it done. It’s part of learning journey.
Winning is important. Need to give yourself permission to do the right thing. Sometimes, the right thing is to go up the Ivory Tower and preach. Sometimes, the right thing to do is go down the trenches and teach.
It’s a trade-off.