The Problem: Scale Beyond Commercial Solutions
When I joined the Denver VA Medical Center project as Document Control Manager in 2010, we quickly realized the scale of documentation would be unprecedented. A billion-dollar, nearly decade-long federal healthcare project generates massive amounts of documentation—thousands of submittals, RFIs, transmittals, change orders, and contract documents.
We evaluated numerous commercial project management and document control solutions. Some were too simple, designed for smaller projects. Others were overly complex, requiring extensive training and creating barriers to adoption. None quite fit our specific workflow requirements and federal project constraints.
That's when we made a decision that would prove transformative: we'd build our own custom documentation software tailored precisely to our needs.
Why Build Custom Software?
Building custom software for a construction project isn't a decision to make lightly. It requires time, resources, and expertise. But several factors made it the right choice for our situation:
Specific Workflow Requirements
Federal healthcare projects have unique requirements that commercial software often doesn't address well. We needed:
- Compliance with federal documentation standards
- Integration with specific VA approval processes
- Tracking systems that matched our contract structure
- Reporting formats required by federal oversight
- Security and access controls meeting federal standards
Adapting commercial software to these requirements would have been as difficult as building from scratch—and we'd still be limited by the commercial product's underlying architecture.
Scale and Performance
We needed a system that could handle:
- Thousands of submittals tracked simultaneously
- Hundreds of active RFIs at any given time
- Massive document libraries with quick search capability
- Dozens of concurrent users without performance degradation
- Years of historical data readily accessible
Many commercial solutions struggled with this scale, either slowing down with large data sets or requiring expensive enterprise licenses.
Cost Considerations
While building custom software required upfront investment, the long-term economics made sense. Commercial solutions charged per-user, per-month fees that would total hundreds of thousands over the project's duration. Custom software had higher initial development costs but minimal ongoing expenses.
For a decade-long project, the break-even point came quickly.
Control and Flexibility
Perhaps most importantly, custom software gave us complete control. When we identified improvements or needed new features, we could implement them immediately rather than waiting for commercial vendors to update their products. As project needs evolved, our software evolved with them.
The Development Process
I approached software development the same way I approached construction projects—with careful planning, clear requirements, and iterative implementation.
Planning and analysis - essential for both construction and software development
Phase 1: Requirements Definition
Before writing any code, we spent time understanding exactly what we needed:
User Interviews: I talked with everyone who would use the system—project managers, field engineers, subcontractors, design teams. What information did they need? How did they want to access it? What would make their jobs easier?
Process Mapping: We documented current workflows in detail. How did submittals flow through review processes? What information was tracked at each step? Where were bottlenecks?
Reporting Requirements: What reports did stakeholders need? What metrics mattered? How should information be presented?
Integration Needs: What other systems needed to exchange data with our software? How would that work?
This requirements phase took weeks, but it prevented building the wrong solution. Understanding needs thoroughly before coding saved countless hours of rework.
Phase 2: Architecture and Design
With requirements clear, I designed the system architecture:
Database Design: The foundation was a robust database structure that could efficiently store and retrieve large volumes of data. I designed tables for submittals, RFIs, transmittals, documents, and all their relationships.
User Interface: The interface needed to be intuitive. Construction professionals aren't software experts—the system had to be obvious to use. I focused on clean, simple screens that matched familiar workflows.
Security: Federal projects require strict access controls. The system needed role-based permissions ensuring people could only access appropriate information.
Scalability: The architecture had to handle growth—more users, more documents, more data—without performance degradation.
Phase 3: Iterative Development
Rather than trying to build everything at once, we used an iterative approach:
Start with Core Functions: We built the most critical features first—submittal tracking and basic document management. Get those working, then expand.
Test with Real Users: As soon as we had working features, we put them in users' hands. Real-world testing revealed issues that theoretical planning missed.
Gather Feedback: Users told us what worked, what didn't, and what was missing. We incorporated this feedback in the next iteration.
Add Features Gradually: Once core functions were solid, we added RFI tracking, then transmittal management, then reporting tools, then integration with other systems. Each addition built on a stable foundation.
This iterative approach meant we had useful software quickly, even if it wasn't complete. It also meant we could adjust direction based on actual use rather than guesses about what people needed.
Phase 4: Training and Adoption
Great software is worthless if people don't use it. We invested heavily in training and adoption:
Comprehensive Training: Everyone who would use the system received hands-on training. Not just "click here" instructions, but understanding of why the system worked the way it did.
Documentation: We created user guides, quick reference cards, and video tutorials. People could find help when they needed it.
Support: I was available to answer questions, troubleshoot problems, and help users get comfortable with the system.
Management Backing: Leadership mandated system use and held people accountable. Optional systems don't get adopted—required systems do.
Key Features That Made a Difference
Several features proved particularly valuable:
Automated Workflow Routing
The system automatically routed submittals and RFIs to appropriate reviewers based on specification section, project phase, and other criteria. This eliminated manual routing decisions and ensured nothing got lost.
Real-Time Status Tracking
Anyone could instantly see the status of any submittal or RFI—who had it, how long they'd had it, what action was needed. This transparency kept things moving and made bottlenecks obvious.
Automated Reminders
The system sent automatic reminders for upcoming deadlines and overdue items. This proactive approach prevented many delays.
Powerful Search
With thousands of documents, finding specific information was crucial. The system's search function could find documents by number, description, specification section, date range, status, or any combination of criteria.
Custom Reporting
We built report generators that could create any report stakeholders needed—status reports, aging reports, workload reports, compliance reports. Users could generate reports themselves rather than requesting them from IT.
Audit Trails
The system logged every action—who did what, when. This created accountability and provided evidence for disputes or audits.
Mobile Access
Field personnel could access the system from tablets or phones. They could check status, view documents, and update information without returning to the office.
Challenges and Solutions
Building custom software presented challenges we had to overcome:
Challenge: Limited Programming Background
While I had some programming experience, I wasn't a professional software developer. Building enterprise-scale software was ambitious.
Solution: I focused on technologies I could learn quickly—primarily database-driven web applications using familiar languages. I also wasn't too proud to ask for help from more experienced developers when stuck.
Challenge: Changing Requirements
As the project evolved, requirements changed. Features we thought were essential became less important. Needs we didn't anticipate emerged.
Solution: Flexible architecture and iterative development made changes manageable. We accepted that requirements would evolve and built systems that could adapt.
Challenge: User Resistance
Some users resisted new systems, preferring familiar spreadsheets and paper processes.
Solution: We made the system obviously better than old methods. When people saw how much time it saved and how much easier it made their jobs, resistance faded. Management support also helped—system use wasn't optional.
Challenge: Data Migration
We had existing documentation that needed to be moved into the new system without losing information or disrupting work.
Solution: Careful planning and phased migration. We imported historical data in batches, verified accuracy, then gradually shifted active work to the new system. We maintained parallel systems briefly to ensure nothing was lost.
Challenge: Maintenance and Support
Custom software requires ongoing maintenance—fixing bugs, updating features, supporting users.
Solution: I built maintenance into my role. Regular system checks, prompt bug fixes, and continuous minor improvements kept the system running smoothly.
Lessons Learned
Developing custom software for a major construction project taught valuable lessons:
1. Understand the Problem Before Coding
Time spent understanding requirements prevents building the wrong solution. Resist the urge to start coding immediately—invest in thorough planning first.
2. Simple and Functional Beats Complex and Perfect
Users prefer simple systems that work over complex systems with every imaginable feature. Focus on core functions done well rather than trying to do everything.
3. Real Users Provide the Best Feedback
Get working software in users' hands as quickly as possible. Their feedback is more valuable than any planning session.
4. Training is as Important as Development
Great software that people don't know how to use is useless. Invest in comprehensive training and ongoing support.
5. Flexibility is Essential
Requirements change. Build systems that can adapt rather than rigid solutions that become obsolete when needs evolve.
6. Document Everything
Document code, processes, and decisions. When you need to modify the system months or years later, documentation makes it possible.
7. Security Can't Be an Afterthought
Build security into the system from the start. Retrofitting security is difficult and often incomplete.
The Impact
The custom documentation software proved highly successful on the Denver VA project:
- Efficiency Gains: Tasks that previously took hours could be completed in minutes
- Reduced Errors: Automated workflows and validation prevented many common mistakes
- Better Visibility: Real-time status tracking gave everyone better project visibility
- Faster Processing: Submittals and RFIs moved through review processes more quickly
- Improved Compliance: Automated tracking ensured we met federal documentation requirements
- Cost Savings: Efficiency gains and avoided commercial software fees saved significant money
Perhaps most importantly, the software became an integral part of how the project functioned. People couldn't imagine managing documentation any other way.
When Custom Software Makes Sense
Not every project needs custom software. Commercial solutions work well for many situations. But custom development makes sense when:
- Unique requirements that commercial products don't address
- Scale beyond what commercial solutions handle efficiently
- Long project duration where custom development costs are justified
- Need for specific integrations with existing systems
- Requirements for customization that exceed commercial product capabilities
- Available technical expertise to develop and maintain the software
The Broader Lesson
Beyond the specific software development story, there's a broader lesson about construction management: don't be limited by available tools. If existing solutions don't meet your needs, be creative. Adapt tools, develop new processes, or build custom solutions.
The construction industry often accepts inefficiency because "that's how it's always been done." The best project managers question inefficiency and find better ways. Sometimes that means custom software. Sometimes it means process improvements, new workflows, or creative use of existing tools.
The key is recognizing that you're not limited to off-the-shelf solutions. With creativity, technical skills, and willingness to invest effort, you can build tools that give your projects competitive advantages.
Need Custom Solutions?
Facing unique project challenges that commercial solutions don't address? Let's discuss how custom tools and processes could help.
Get In Touch