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: 

MySql
DB
MySql...
V3...C# APIRedis...WordPressWordPress...Album Processor...React SPA...Cache Refresher
Flickr
Flickr
Vimeo
Vimeo
Recommendation...C# API 2WordPress...
Linked
Linked
AWS
AWS
iTrellis
iTrellis
Client
Client
3rd Party
3rd Party
Ownership Key
Ownership Key
Vimeo
Cache
Vimeo...
Linked
Linked
Recommendation...Social Backend
Text is not SVG - cannot display
PHP
PHP
3rd Party
3rd Party
JavaScript
JavaScript
Language
Language
C#
C#
MSSql
MSSql
MySql
MySql
Redis
Redis
MySql
DB
MySql...
V3...C# APIRedis...WordPressWordPress...Album Processor...React SPA...Cache Refresher
Flickr
Flickr
Vimeo
Vimeo
Linked
Linked
AWS
AWS
Vimeo
Cache
Vimeo...
Linked
Linked
Recommendation...C# API 2WordPress...Recommendation...Social Backend
Text is not SVG - cannot display
  • 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.

Previous
Previous

Get Docusaurus Running on Azure Static Web App

Next
Next

Automated Application Testing using Selenium