Fibery is fully remote, which means live ad-hoc communication is no longer an option. It means all communication channels/events should be designed. Now we don't have this design for technical solutions. Some people write docs, some don't. Some initiate discussions, some don't.
There were numerous sub-optimal technical solutions. It causes re-writes, poor velocity and frustration.
No shared context in development team.
We should design a process for technical solutions. In this draft I just state some high level ideas that we will discuss.
Tech. solution in text for every important feature. All features have functional description now. The same should be true for all important features from technical side as well. We can skip tech. doc for trivial features, like "add one more connector or rule". However, any non-trivial feature should have a technical document with approaches. If there is no enough information, do Spike.
Tech. solution in text for every important feature
Who: One of feature developers is responsible for this.
What: one or more solutions propositions with some high-level implementation details. Alternatives must be considered and non-functional requirements as well (complexity, performance, implementation time, supportability).
When: After feature kick-start (can be before if a feature is well documented).
Every non-trivial feature should have a technical kick-start. Technical implementation ideas is as important as functional requirements. So a formal discussion with ideas exchange should take place to reduce bad decisions risk.
Every non-trivial feature should have a technical kick-start
Who: One of feature developers is responsible for this. Relevant developers should be invited as advisors.
What: Sync talk in Zoom. Discuss alternatives, nail new ideas if lucky, choose the approach.
When: It can be a part of usual Kick-Start meeting if tech. doc is ready, but usually it's a separate meeting where FO (Feature Owner) should still present to answer functional questions if any.
Process can look like this:
FO writes feature spec, see Features scope and specification and shares it with the team.
Team comments, FO reacts and correct the spec.
Team has a Kick-Start meeting to discuss requirements, set scope
Developer writes a Tech. Spec. and shares it with the team.
Team comments, Developer reacts and corrects the spec.
Team has a Tech. Kick-Start meeting to discuss various ideas and choose an implementation.
Open questions:
FO makes final decisions about functionality. Who makes final decision about technical solution? Is consensus good enough?
How to make sure that Tech. Spec exists and Tech. Kick-Start initiated? Maybe FO can handle it from process point of view (make sure that there is a responsible dev.)