Things We Do to Improve Delivery
Today I was asked the question: "What does iTrellis do well when it comes to building software?"
I have been developing software now for 11 years, and I have spent 7 of those years as an iTrellis consultant. During this time, I have been a part of many different iTrellis teams. One must adjust quickly to new coworkers, managers, tools, and technologies – and having a culture that encourages teamwork, collaboration, and communication really helps.
When left to ponder the question about what we do well, I realize the question is really “how do we make sure we are successful”, I arrived at the following 3 items:
Documentation
Cadence, Collaboration, and Communication
Delivery Focused
Documentation
Whether it is a blank canvas or an existing implementation, documentation is important. Our documentation describes the purpose of the software, provides context for use, and a roadmap for development and support. Our documentation is not only for developers, but also management. Up-to-date documentation will also help new team members ramp up faster. I have found the following types of documentation to be useful on projects:
Application Architecture Schematics
Show every component of an application, what services are communicating with them, relationships between components and then use these schematics to express differing aspects of development, for example:
Chart Use the schematic as a conversation guide, helping developers to communicate clearly, remove ambiguity, and reach agreement when it comes to things like mapping state or user flows.
Sequence Diagrams
Help to decompose key features of the software into individual function calls, helping engineers agree to the scope of the work, what each function will do, and how services will communicate with one another.
sequenceDiagram Wordpress->>+API: Sync album 1234 API->>+Service: Process album Service->>+ProcessedAlbumRepository: Check if album has been processed ProcessedAlbumRepository->>-Service: ProcessedAlbum status or null Service-->>ProcessedAlbumRepository: Insert / Mark album as Processing Service->>+ContentRepository: Get album images ContentRepository->>-Service: Return album images loop Process Images Service->>+Image Processor: Process image Image Processor->>ImageDZIRepository: Get / Insert image DZI entry ImageDZIRepository->>Image Processor: Return image DZI entry Image Processor->>Image Processor: Download image to process loop Reszie and tile Image Image Processor->>Image Processor: Create tiles end Image Processor->>Image Processor: Create meta data files Image Processor->>Image Processor: Delete main image Image Processor->>+Azure Blob Storage: Upload metadata and tiles to blob Azure Blob Storage->>-Image Processor: Return status Image Processor->>Image Processor: Update ImageDZI Entry Image Processor->>Image Processor: Cleanup directories Image Processor->>-Service: Image processed end Service->>+ProcessedAlbumRepository: Update ProcessedAlbum entry ProcessedAlbumRepository->>-Service: Return ProcessedAlbum entry Service->>-API: Return status API->>-Wordpress: Return status
Gantt Charts / Roadmaps
Being able to show what's completed and what is future work helps to get team consensus on scope, and plan the work remaining
Our desire for this type of tool led iTrellis to build and publish Portfolio++, an extension to Microsoft Azure DevoOps that provides Gantt chart capability to Azure DevOps, which is now used by development teams around the world.
Cadence, Collaboration, and Communication
Effective communication and teamwork are critical components of successful software development. Following a development cadence is one piece of the puzzle. iTrellians prefer iterative development with frequent deliveries to help keep us on track. Given the choice, we practice the Scaled Agile Framework (“SAFe”). SAFe promotes incremental development, where we break down work into manageable chunks that can be completed within each development iteration. This helps to ensure that we are consistently delivering value to our customers, and that the projects are always moving forward. Continuous delivery builds trust and confidence across team members, and in turn, our clients.
The Scaled Agile framework also promotes collaboration and clear communication through frequent meetings. For one, it helps to reduce the risk of project failure by ensuring that everyone is on the same page and working towards the same goals. It also promotes a culture of continuous improvement and teamwork, allowing us to learn from our mistakes and celebrate incremental deliveries along the way. At iTrellis, we have found that our ability to communicate effectively and work together as a team has been instrumental in our success.
Delivering Software
iTrellian consultants are quick studies. Because of this, we often become the "jack of all trades" on our client engagement teams. While most of our consultants are engaged because of a particular expertise, iTrellians are also often the “figure it out” team members. iTrellis is composed of many talented individuals who have a wide range of skills and decades of experience delivering software. We leverage this experience through “chat” tools like Slack, where iTrellians help each other through the congress of opinion on what works and what doesn’t.
I have collected a set of patterns, languages, and frameworks that have proven successful. I have made a name for myself as an expert on the “front-end” of development projects and I like to help my teammates. I believe that while it is fun and exciting to use modern technologies, going with proven solutions usually works best for my co-workers and clients. My goal is to leave a client in a better place than where I found them, and I am confident in the solution I have built or the advice I have given. Being able to pull from this toolset allows me to start new projects or give advice that provides quick results. This goes both ways, and other iTrellians share their best practices with me – which in turn leads to well architected solutions “end to end”.
Conclusion
By producing high-quality documentation, adhering to a development cadence, and sharing best practices, we have been able to build a culture that values and demonstrates collaboration and continuous improvement. As a result, our culture helps to attract and retain top talent.