Build software better, build better software
Working With Allen
Every organization is different, so requires a unique solution. I work collaboratively rather than telling you what to do, and my advice focuses on making you and your business successful, not on selling some off-the-shelf one-size-fits-all process. I can usually significantly improve organizational effectiveness in a very short timeframe, while at the same time creating a deeply satisfying work environment for your employees, reducing churn, and delivering software that's actually valuable to your customers.
The Process
I always start with a exploratory conversation at no charge to you. We’ll discuss your goals, the problems you see, any issues you’ve identified, and how best I can help you.
Every organization is unique, and our assessment is customized to address your specific goals and concerns. The scope may be company-wide or focus on a department, project, or initiative. A typical assessment spans five days (longer if remote or the company is large) and combines discovery with active coaching.
During the assessment, I talk extensively with everyone involved in the software-development process and observe your teams at work, providing advice and lightweight coaching when appropriate. This is a collaborative process. We listen, of course, but are happy to provide advice an present our observations as we work.
Then, working collaboratively, we'll develop an Action Plan that addresses your objectives. That plan usually includes active coaching to ensure that you have the support and guidance you need to meet your goals, and may also include formal training and one-on-one work with you, your executives or managers, and the teams.
My initial role is that of an advisor, providing an outsider's perspective and considerable experience. I will identify areas of improvement that you can't see, and will help you identify concrete actions that will unleash your organization's potential. I'll then help make those improvements a reality by working directly with you, your management, and your teams.
Step 1: Two-way Assessment/Discovery
Areas of focus
- Pain points
- We'll discuss you pain points. What keeps you up at night? Where do you think you need improvement?
- Organizational culture and structure
- We'll assess everything from team and department structure and support to overall culture. This stage often involves collaboratively creating both an organizational-structure map that shows, not just the reporting hierarchy, but all communication paths, and a "value-stream map," which makes your process visible and helps you get a deep understanding of your entire system.
- Process
- We look at the processes you use to build and deploy your software, leveraging our deep understanding of both Lean and various Agile processes and frameworks to find improvements.
- Code and Architecture
- We'll assess the code and architecture of your software system. An inappropriate architecture can slow you down so much that agility becomes difficult. We will need to see all your planning/organizational/architectural resources and artifacts, including your backlog. Ideally, we'll also have access to your git code repository (or a copy of your code).
- Development and deployment environments
- We'll evaluate the physical and remote-working environments, as well as the tools you use for day-to-day work (for programming, deployment, and Agile-process monitoring and management).
Step 2: Consolidation
- Build a shared understanding of how current structures, practices, and policies impact organizational effectiveness.
- Identify high-value opportunities for improvement, focusing on high-impact changes we can do immediately.
- Working together, we'll develop a concrete, but adaptive, plan for moving forward. We use Mike Rother's 3-part Improvement Kata, of which the Discovery phase is the first step (assess the current condition). The action plan is the second step: developing several eperiments tha will move you in the right direction. During the consolidation phase, below, we'll execute those experiments and assess the results. If they don't lead to improvement, we'll refine or change them. If they do, we'll create additional experiments at that point. In other words, The Consolodiation phase is really the first step of an iterative Agile proces. Try something small, assess the result, adapt based on those assessments.
Step 3: Moving to Awesome
- Transition-team building
- In larger organizations, our first step is usually building an internal team to guide the overall transition. Unlike many consulting firms, my goal is to make myself unnecessary by building a capable internal team that can carry on with the work once I'm gone.
- Executives
- Advice in desiging policies and structures that deliver value to your customers and employees. We focus on providing an environment within which the teams can be optimally effective in identifying and delivering valuable high-quality software to your customers in minimum time. We can help with everything from agile-friendly product strategy, to company culture, to organizational structure.
- Management and Product
- Agile teams are often self managing, and if there is a designated manager, that person acts as a servant-leader. We work with both mangagers and teams to make them effective in controlling the work while easily adapting to change. We focus on value-based planning and incremental development. On the product side, we help you develop product strategies focused on user value, and suitable for incremental development and rapid regular release cycles. We'll show you how to create effective user stories suitable for passing on to Engineering and how to organize and size stories to identify and eliminate low-value work.
- Teams
- We work to make the teams effective, focusing on technical agile process and architecture. We help improve code quailty while simultaneously improving delivery time, working at the process, architecture, and code levels. For example, we can help you migrate towards agile-friendly evolutionary architectures like microservices, improve your code through practices like TDD and refactoring, help with team dynamics by introducing practices like mob programming and #NoEstimates, and help develop optimal workflows that take a user story from inception to deployment.
- Training
- We can provide formal training in a full-range of agile topics, using either lecture or workshop formats. We also provide immersive learning workshops that combine education with work on your actual product. Our classes are highly rated and practically focused, often presented as hands-on workshops.