Develop an action plan for how to execute a system. Help developers understand the code that needs to be written and how it needs to work.
Develop a vision for how a system could be. Helps developers understand the qualities it needs to have and the principles behind its design.
Help the dev. team understand what work is coming.
Help the dev. team understand what the client’s trying to achieve, what’s important to them and why.
Offer practices and techniques the team could use to improve its performance in the quality of work built, expectations management, efficiency of practice, etc.
Coach team members gaining their buy-in to adopt better practices. Help them understand why the new practice is needed, what’s in it for them and what performing the new practice looks like. Make time to give them feedback reinforcing the moments when they positively exhibit new practices and informing them of the moments when they negatively exhibit the new practice.
Help the team develop a version-control and branching/integration strategy that enables the team to work on multiple features at once without conflicting with each other.
Help the team develop a version-control and branching/integration strategy that not only minimizes conflicts but also provides a great deal of flexibility allowing the team to integrate features independently without coupling the integration of several features together.
Don't let the way something works remain a mystery. When no one on the team knows or has been successful in finding out you take time to learn the background you need to help the team understand.
Regularly study the fields, concepts, techniques, practices and technologies that make up computer science, software engineering and emerging technology. Not just new ideas, but also the historical to fully understand what’s available, what works, what’s been tried before and the wisdom our discipline has learned over time.
Help team members remove blockers by developing direct solutions to the problem.
Help team members remove blockers by reframing the problem or offering critical questions for them to investigate. Help them see the source of the problem and some lines of inquiry that moves them forward in developing their own solution to the problem.
Know the team’s velocity and guide the team to limit their commitments to within that velocity.
Hold the team accountable to their commitments. Help the team recognize when they overcommitted, identify what factors prevented them from meeting their commitments and coach the team into incorporating that knowledge when setting their next batch of commitments. Coach the team away from a repeating pattern of missing commitments.
Call the team’s attention to sustainability problems. Work with the design and dev. teams to find alternative solutions. Stop sustainability problems from making it into the finished product.
Forecast for the team moments that might impact the sustainability of the system. Help developers see implementation paths that lead to flexible, decoupled, modifiable code. Help designers see arrangements that won't break down as the contents of the system scale. Steer the team away from non-sustainable choices in the UX and code design phases.
Help team members understand the vision for the system and its evolution.
Take time to give team members feedback helping them see how and when their work connects to and affects the vision.
Choose an architecture for the system. Help the team understand it.
Identifies design principles and qualities the system must exhibit. Coaches the team through designing an architecture that exhibits them.
Choose a technology stack best suited to the product to be built.
Choose a technology stack balancing suitability for the product to be built, the familiarity and capability of the client’s team who will be responsible for it longterm and the maturity/longevity of the stack.
Help developers pick their next unit of work when they aren't sure what to do.
Help developers see the goal the team is trying to reach, the steps needed to get there and how they can contribute.
Help the team and client develop a delivery/release strategy. Help them break the product features down into releasable units.
Help the team and client develop a delivery/release strategy that surfaces problems quickly, enables the project to change direction at any time and avoids “losing work” if the project is abandoned at any time.
Establish high quality standards and gain team buy-in to uphold them.
Take time to give team members feedback reinforcing the moments when they uphold those standards and helping them see the moments when they don’t. Listen to and overcome objections or revise the standards with team input.
When working with dev. partners help Artefact’s team and the partner’s team act as one. Arrange for dev. partners to be included the same as Artefact developers.
Take time to help dev. partners understand Artefact’s processes, why we do them and how it benefits the project. Take time to help Artefact’s team understand the partner’s processes, why they do them and how it benefits the project. Seek to find shared processes that foster close relationships and direct collaboration between design and development.