Resume: David Gadd | Email: gaddzeit@yahoo.ca | Website: http://www.gaddblog.com Page No. 1
David Gadd
#306 – 1465 Comox St., Vancouver, BC V6G 1N9 (604) 710-0546
Email:
gaddzeit@yahoo.ca | Web: http://gaddblog.com
Senior .NET Application Developer
Proven application developer with a track record of seven successful production applications, with the four most
recent on the .NET platform. 17 years experience in the design, development, integration and testing of software.
Applies strong critical thinking and a keen analytical mind to creatively solving business problems through application
design and development. Brings strong interpersonal and communication skills to working with internal and external
clients and colleagues.
Experience: A database application developer since 1993, web application developer since 1998, and C# and
ASP.NET developer since 2002, with a particular focus on the domain layer.
Focus: Since 2006, increasing emphasis on object-oriented best practices including refactoring, test-driven
development (TDD), domain-driven design (DDD), and persistence with NHibernate and custom ORMs,
supported by automated unit and integration tests. Recent shift towards “design-by-test”, ReSharper, mocks
and the MVP pattern.
Professional Experience
KnowledgeTech Consulting, Vancouver, BC,
12/2006 - Present
Senior Developer, 12/2006 – 05/2010 (full-time)
Senior Developer, 06/2010 – present (contract)
Monthly Parking System - Impark (3 project cycles from late 2006 to 2010):
Assigned to complex long-term project with a mandate to develop solutions to handle North American-wide, monthly
parking customers. Created a web services layer and underlying domain model for handling long-running batch
processes to calculate monthly charges, interest, invoices, and payments with transaction reconciliation, as well as
short-term business processes to handle changes such as moving a start date or parking assignment, with all required
transaction reversals, prorated parking charges and taxes. Delivered on an evolving set of business requirements over
3 project cycles.
• Built the first pass of the processes using mandated .NET 2.0 DataSets.
• In second phase, proposed and gained approval for a migration from DataSets to a POCO domain model with
NHibernate to resolve redundancy, maintainability and performance issues. Mapped the database to a domain
model, refactored all business logic into domain entities, created a repository layer to encapsulate queries, and
built an application service layer to orchestrate calls to the repository and the domain. Use of the domain model /
repository architecture simplified performance optimization (a gain of 4x faster performance was achieved).
• Drove the adoption of test-driven development, resulting in more than 300 unit tests against the domain model,
more than 100 persistence tests against the repository layer, and a series of integration tests against the application
services layer. Test coverage made it possible to implement change requests without creating side effects.
• Use of domain model increased code reuse, which helped to decrease development time on new features by 50%.
Technical: Visual Studio 2005, C#, ASMX web services, SQL Server 2005 | Phase 1: DataSets, stored procedures |
Phase 2/3: VS Test, domain model, NHibernate
Case File Management System – Centre for Child Development (08/2007 – 07/2008, + additional phases):
Responsible for the design and development of a new case file management system to manage case files and their
treatment plans against staff members, funding contracts, clinical records, correspondence, and all related people.
For the data layer, created a domain model, a repository layer using NHibernate, an application services layer, and a
remote façade/web services layer with DTOs mapped to domain entities. For automated testing, created unit and
persistence tests in the data layer and integration tests (against web services) in the client layer. Built the application
client as a portal of 60+ custom web parts, each of which addressed the web services layer.