Modernizing Development Workflow

Introduction

This case study highlights the successful collaboration between our three engineers and a pharmaceutical equipment company, referred to as "PharmaTech," to enhance their software development and deployment processes. The objective was to streamline development workflows, improve software performance, and ensure a more efficient delivery of products and services.

Challenges Faced

PharmaTech encountered several challenges with their existing development practices and infrastructure:

1. Outdated Version Control: PharmaTech's codebase was stored in CVS, which lacked modern features and scalability required for a growing pharmaceutical equipment company.

2. Legacy Builds: Legacy builds were stored in disparate locations, causing confusion and inefficiency in the development pipeline.

3. Lack of CI/CD: The absence of Continuous Integration/Continuous Deployment (CI/CD) pipelines hindered PharmaTech's ability to automate testing, build processes, and software deployments.

4. Manual Provisioning: Provisioning new Windows 10 machines for quality assurance (QA) testing was a time-consuming manual process, taking up to 8 hours per machine.

5. Codebase Modernization: PharmaTech needed to migrate its codebase from various old versions to .NET 6 to address security vulnerabilities and enhance software performance.

6. Manual BIOS Settings: Manually configuring BIOS settings on physical computers was a tedious and time-consuming task for administrators.

7. Software Installation: Manual software installation on new computer systems, development environments, and testing environments was resource-intensive and prone to errors.

Solutions Implemented

Our team of three engineers collaborated closely with PharmaTech's development and IT teams to address these challenges and implement effective solutions:

1. Codebase Migration: The engineers successfully migrated PharmaTech's extensive codebase from CVS to Git, hosted on GitHub, ensuring version control and collaboration are streamlined.

2. NuGet Repository: A NuGet repository was established for build artifacts, enabling a unified location for storing and managing builds. Legacy builds were migrated to this repository for consistency.

3. Branching and Versioning Strategy: A robust branching and versioning strategy was devised, enabling efficient management of features and bug fixes.

4. CI/CD Pipelines: CI/CD pipelines were created using GitHub Actions to automate build, test, publish, and release processes. This greatly accelerated the development and deployment cycle.

5. Ansible Playbook: An Ansible playbook was developed to provision new Windows 10 machines rapidly. It included pre-requisite software installation such as MSSQL, IIS, RabbitMQ, and more. The provisioning time was reduced from 8 hours to just 30 minutes per machine.

6. Codebase Modernization: The team conducted a successful migration of PharmaTech's codebase to .NET 6, resolving security issues, and enhancing software performance.

7. BIOS Settings Automation: Automation scripts were implemented to modify BIOS settings on physical computers, saving administrators hundreds of hours in manual work.

8. Software Installation Automation: Wix Toolset Installers were created to automate software installation on computer systems. This significantly reduced the time required to provision new computers and set up development and testing environments.

9. Knowledge Sharing: The engineers worked closely with PharmaTech's development team, sharing knowledge and best practices, thus increasing the expertise of team members.

10. Modern Development Practices: PharmaTech adopted modern development practices, enhancing predictability in releases, reducing coding errors, and improving communication among team members.

11. New Software Development: The team created new software for use in pharmacies across North America using technologies such as C# WPF, Client-Server, MySQL, RabbitMQ, and Angular Ionic.

Results and Benefits

The collaboration between our engineers and PharmaTech led to several significant improvements:

1. Streamlined Workflow: The migration to Git and GitHub, along with the implementation of CI/CD pipelines, streamlined the development workflow.

2. Efficiency Gains: Automation of provisioning, BIOS settings, and software installation reduced manual work hours and improved efficiency.

3. Enhanced Security and Performance: The codebase modernization improved software security and performance.

4. Time Savings: Provisioning new Windows 10 machines, which previously took 8 hours, now takes only 30 minutes.

5. Predictable Releases: Modern development practices and CI/CD pipelines led to more predictable and error-free releases.

6. Knowledge Transfer: Knowledge sharing between teams increased the expertise of PharmaTech's development team.

7. Competitive Advantage: PharmaTech gained a competitive edge by offering modern and efficient software solutions to pharmacies.

Conclusion

Our engineers' collaboration with PharmaTech resulted in a significant transformation of their software development and deployment processes. The adoption of modern practices, automation, and efficient tools not only saved time and resources but also improved the quality and security of PharmaTech's software products. This case study demonstrates the positive impact of technology and process improvements on a pharmaceutical equipment company's operations and competitiveness.