Phill Farrugia

PlanGrid

Construction Blueprints & Productivity Platform
2019

Annotate Blueprints, track Issues, submit RFIs and generate Field Reports

In a modern day world where Software is changing everything, construction is one of the least digitized industries in the world, still dependent on paper as the primary medium for viewing blueprints. Communication between General Contractors, Architects and Stakeholders in the building process is fragmented, error prone and ripe for improvement.

PlanGrid is a construction software productivity platform that aims to replace the paper blueprints used on building sites with a mobile focused platform that brings the construction industry into the modern era. Founded in September 2012, PlanGrid is an alumni of Y-Combinator and was recently acquired by AutoDesk in November 2018.

I joined PlanGrid in February of 2019, joining a large team of talented, experienced and passionate engineers to help improve the way the world’s infrastructure is designed and built. In the short time that I’ve been at PlanGrid, I’ve had the opportunity to contribute some meaning ful improvements to the iOS platform including re-writing the core IssueLogViewController, implementing Sheet-less Issues functionality, improving exportable Sheet Reports and being responsible for Photos and Videos across the app.

App Architecture

Our application is still largely written in Objective C, but includes a lot of Swift. We use a FLUX architecture to adopt uni-directional data flow throughout the application. We split business logic, UI and features into a series of embedded frameworks, and have recently adopted Kotlin Native as a way to share some core underlying code across several of our platforms.

PlanGrid supports offline usage in order to allow our customers (construction workers) to use the app to view blueprints and to document information while out in the field where a network connection is not always reliable. We have a strong, battle tested and reliable Sync infrastructure that ensures the local database and backend server are kept up to date as often as possible.

At the center of application is the Blueprints viewer which handles rendering large, high resolution documents in an efficient way. It supports a digital layer above the document called the AnnotationView which allows users to add Annotations such as Tasks, Hyperlinks, Markups, Measurements, Text and Photos. These annotations sync are published and synced across a project so that all team members can see them in real time.

Features

Tasks

When I joined PlanGrid, I started on the Tasks feature team, responsible for the Tasks feature throughout the iOS application. While on the team I implemented a series of features such as exportable Task Report - allowing users to generate a PDF or XLSX document from a list of Tasks on a Sheet, or in the Task Log. This report provides detailed information to project managers when trying to track the progress and setbacks of a construction site.

I fixed a series of long standing bugs such as improving the rendering of custom Issue Icons, filtering Issues by Date and assigning Issues to groups of users. I implemented the Sheet Association feature which allowed users to create Issues independent of any specific blueprint, and then later assign Issues to a sheet. I investigated and resolved retain cycles, memory management bugs and improved the concurrency of features within the Tasks log.

My biggest achievement while on the Tasks team was a re-write of the main TaskLogViewController. Previously the Tasks Log (a screen used to present a list of every task on a project), was written in Objective C, contained a lot of legacy and did not use the same FLUX architecture as the rest of the app. This meant a lot of difficult to resolve bugs that users had to workaround, and a less than ideal experience.

During my allotted Fix-It Friday time, I took the initiative to audit, and re-write the entire ViewController as a Swift and FLUX-based ViewController, that took advantage of all of the latest functionality in our codebase. I improved the core Tasks experience and resovled a long list of legacy behaviors that would otherwise have remained.

Photos

I now work on the Photos & Camera team, responsible for all Camera related features throughout the iOS application. In the short time I’ve been on the team I’ve started to make a similar impact on the Photos related features within the app. I’ve worked on the handling of EXIF/XMP metadata within photos, orientation of iamges, rendering 360 Panorama images in a dedicated viewer and handling the correct Date Added/Date Taken dates on photo and video assets.

I’m excited and passionate about bringing my interest in photography to the camera and photos experience within PlanGrid. I have a lot of plans and see ample opprtunity to improve the experience for users and to make a meaningful impact on the product.

What did I learn?

In the time that I’ve been at PlanGrid, I’ve learned a lot about working in a large software organization. I’ve learned about the best practices in deployment, release management, incident managenent and incident retrospectives. These are skills that are vital to ensuring that a product used by people worldwide remains stable and up and running when people need it most.

I’ve dived deeper into understanding how to implement a solid syncing infrastructure that handles conflict resolution, retries and complicated syncing dependencies on a mobile platform. I have worked closer with engineers from other platforms including Android, Windows, Web and Backend.

I have a lot more to learn at AutoDesk/PlanGrid and I’m looking forward to all of the opportunities ahead to keep learning about the exciting construction software industry.