SlideShare a Scribd company logo
Structuring an Application Some Thoughts
Topics VENDOR project goals Quick tour System architecture choices Mistakes
Project Goals Augment commercial tax assessment system with GIS tools Provide workflow management tools for clerks, appraisers, and GIS editors Minimize data entry and re-entry by plugging in 3rd party data sources Be stable enough for commercial deployment to multiple tax districts
Delivered Components
Design Decisions Centralize business logic in model classes Model View Presenter for GUI applications Plug-in architecture for 3rd party data sources Push GIS code to framework wherever possible Mostly because of unfamiliarity of team
System Architecture Choices Separation Web stuff belongs in web projects GIS stuff belongs in GIS projects Etc. Reuse The model is what ties things together so attempt to centralize and reuse
Guiding Principle NEVER REPEAT YOURSELF! Handle GIS archiving/versioning in one place only Rule set for generating XML documents in one place only If we do something twice, automate and refactor
The Softer Side Mandatory phone meetings twice a week for 6 months Knowing who the client is: “product owner” vs. who can sign the acceptance Post deployment: client interactions via issue tracking web site
Tools I’m forgetful How to do something in SQL How to write that thingy in C# Which users to add to what group Which things are different on my PC vs. clients Tooling and automation is one way to avoid pitfalls
MSBuild Biggest discovery of 2008 for my productivity Makes even simple things easier in the short run with multiple developers Learned to isolate what is different on my machine than other machines Team members, client machine
MSBuild Really cool GUI  Let’s look at an example
WIXWindows Installer XML Open sourced tool from Microsoft to create Microsoft Installers (MSI) Scriptable and can do anything, with a learning curve Has nice extensions for AD, IIS, etc. Used to create documentation only on this project. See more use in future
WIXWindows Installer XML
WIXWindows Installer XML Example – Building documentation
Goofs and Gaffs When things went horribly wrong
Mistakes Being strict with structure led to unnecessary complexity a.k.a. I learned something in a peer review Even just with plethora of projects Staying on top of testing At some point I just let them slide for older code while adding more for new stuff
Suggestion Strive for “good enough” not perfection If it works as expected, it’s perfect to the client Perfection is in the eye of the beholder Does not mean you should not try to do a good job Resist the temptation to “make a quick improvement” – DONE == DONE!
Mistakes Not being rigorous with understanding the goal before starting work Very complex system, tons of business rules Became more successful through time because we began to do this
Suggestion Use descriptive text and pictures to verify your assumptions with the client
Mistakes Not communicating enough Make a DB schema change which is not communicated Update a config setting which is not communicated Change method signature on web service which is not communicated
Suggestion You absolutely cannot communicate too much If you need time to get things done close your door, “Do Not Disturb” on IM, and block off calendar Otherwise…5 minute conversation now could save 1 hour later today.
What is your experience? How have you done it?

More Related Content

What's hot

Delivering High Quality Software Through Agile
Delivering High Quality Software Through AgileDelivering High Quality Software Through Agile
Delivering High Quality Software Through Agile
John Bristowe
 
Hack website creation - How we got 7% bounce rate
Hack website creation - How we got 7% bounce rateHack website creation - How we got 7% bounce rate
Hack website creation - How we got 7% bounce rate
Sonat Yalçınkaya 苏纳德
 
Startup Product Development
Startup Product DevelopmentStartup Product Development
Startup Product Development
Aaron Stannard
 
How different Minimum Viable Products helped us understand customers.
How different Minimum Viable Products helped us understand customers.How different Minimum Viable Products helped us understand customers.
How different Minimum Viable Products helped us understand customers.
Pushkar Gaikwad
 
Offshore tips sharing_2.0
Offshore tips sharing_2.0Offshore tips sharing_2.0
Offshore tips sharing_2.0
Dao Ngoc Kien
 
Chen's second test slides
Chen's second test slidesChen's second test slides
Chen's second test slidesHima Challa
 
Chen's second test slides again
Chen's second test slides againChen's second test slides again
Chen's second test slides againHima Challa
 

What's hot (7)

Delivering High Quality Software Through Agile
Delivering High Quality Software Through AgileDelivering High Quality Software Through Agile
Delivering High Quality Software Through Agile
 
Hack website creation - How we got 7% bounce rate
Hack website creation - How we got 7% bounce rateHack website creation - How we got 7% bounce rate
Hack website creation - How we got 7% bounce rate
 
Startup Product Development
Startup Product DevelopmentStartup Product Development
Startup Product Development
 
How different Minimum Viable Products helped us understand customers.
How different Minimum Viable Products helped us understand customers.How different Minimum Viable Products helped us understand customers.
How different Minimum Viable Products helped us understand customers.
 
Offshore tips sharing_2.0
Offshore tips sharing_2.0Offshore tips sharing_2.0
Offshore tips sharing_2.0
 
Chen's second test slides
Chen's second test slidesChen's second test slides
Chen's second test slides
 
Chen's second test slides again
Chen's second test slides againChen's second test slides again
Chen's second test slides again
 

Viewers also liked

Basics to gis concepts unit i
Basics to gis concepts unit iBasics to gis concepts unit i
Basics to gis concepts unit i
H.M College of science and technology, Manjeri
 
Municipal GIS: Beyond Open Data
Municipal GIS: Beyond Open DataMunicipal GIS: Beyond Open Data
Municipal GIS: Beyond Open Data
DMTI Spatial
 
Gis based multi criteria suitability analysis of community hospital
Gis based multi criteria suitability analysis of community hospitalGis based multi criteria suitability analysis of community hospital
Gis based multi criteria suitability analysis of community hospital
Sourav Bhadra
 
Rajeshwari Urban Environment, RS and GIS
Rajeshwari  Urban Environment, RS and GISRajeshwari  Urban Environment, RS and GIS
Rajeshwari Urban Environment, RS and GIS
rajeshwariku
 
Applications of GIS in Municipal Solid Waste Management
Applications of GIS in Municipal Solid Waste ManagementApplications of GIS in Municipal Solid Waste Management
Applications of GIS in Municipal Solid Waste Management
Vignesh Sekar
 
applications of rs and gis in solid waste management
applications of rs and gis in solid waste managementapplications of rs and gis in solid waste management
applications of rs and gis in solid waste management
Nitin Ravuri
 
Gis in urban
Gis in urbanGis in urban
Gis in urban
Dilhan Bandara
 
GIS for Urban Planning and Design
GIS for Urban Planning and DesignGIS for Urban Planning and Design
GIS for Urban Planning and Design
Anthony Smith
 
Application of gis & rs in urban planning
Application of gis & rs in urban planning Application of gis & rs in urban planning
Application of gis & rs in urban planning
sathish1446
 

Viewers also liked (9)

Basics to gis concepts unit i
Basics to gis concepts unit iBasics to gis concepts unit i
Basics to gis concepts unit i
 
Municipal GIS: Beyond Open Data
Municipal GIS: Beyond Open DataMunicipal GIS: Beyond Open Data
Municipal GIS: Beyond Open Data
 
Gis based multi criteria suitability analysis of community hospital
Gis based multi criteria suitability analysis of community hospitalGis based multi criteria suitability analysis of community hospital
Gis based multi criteria suitability analysis of community hospital
 
Rajeshwari Urban Environment, RS and GIS
Rajeshwari  Urban Environment, RS and GISRajeshwari  Urban Environment, RS and GIS
Rajeshwari Urban Environment, RS and GIS
 
Applications of GIS in Municipal Solid Waste Management
Applications of GIS in Municipal Solid Waste ManagementApplications of GIS in Municipal Solid Waste Management
Applications of GIS in Municipal Solid Waste Management
 
applications of rs and gis in solid waste management
applications of rs and gis in solid waste managementapplications of rs and gis in solid waste management
applications of rs and gis in solid waste management
 
Gis in urban
Gis in urbanGis in urban
Gis in urban
 
GIS for Urban Planning and Design
GIS for Urban Planning and DesignGIS for Urban Planning and Design
GIS for Urban Planning and Design
 
Application of gis & rs in urban planning
Application of gis & rs in urban planning Application of gis & rs in urban planning
Application of gis & rs in urban planning
 

Similar to Dev Cast - Lessons from a Complex Application

Improving The Software Development Lifecycle With Visual Studio Team System
Improving The Software Development Lifecycle With Visual Studio Team SystemImproving The Software Development Lifecycle With Visual Studio Team System
Improving The Software Development Lifecycle With Visual Studio Team Systemmatthewphillips
 
Common Mistakes Made By Web Developers
Common Mistakes Made By Web DevelopersCommon Mistakes Made By Web Developers
Common Mistakes Made By Web Developers
BOSS Webtech
 
ASP.NET Core For The Agile Enterprise
ASP.NET Core For The Agile EnterpriseASP.NET Core For The Agile Enterprise
ASP.NET Core For The Agile Enterprise
Dennis Moon
 
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Perficient, Inc.
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
Preetam Palwe
 
MongoDb Schema Pattern - Kalpit Pandit.pptx
MongoDb Schema Pattern - Kalpit Pandit.pptxMongoDb Schema Pattern - Kalpit Pandit.pptx
MongoDb Schema Pattern - Kalpit Pandit.pptx
KalpitPandit1
 
IT@C What If?
IT@C What If?IT@C What If?
IT@C What If?
golsombe
 
How to deliver a Single View in Financial Services
 How to deliver a Single View in Financial Services How to deliver a Single View in Financial Services
How to deliver a Single View in Financial Services
MongoDB
 
Efficient Software Development with Visual Studio Team System 2008
Efficient Software Development with Visual Studio Team System 2008Efficient Software Development with Visual Studio Team System 2008
Efficient Software Development with Visual Studio Team System 2008
richardbushnell
 
Isset Presentation @ EECI2009
Isset Presentation @ EECI2009Isset Presentation @ EECI2009
Isset Presentation @ EECI2009
Isset Internet Professionals
 
BI, Hive or Big Data Analytics?
BI, Hive or Big Data Analytics? BI, Hive or Big Data Analytics?
BI, Hive or Big Data Analytics?
Datameer
 
Critical Success Factors: Separating Fact from Fantasy
Critical Success Factors: Separating Fact from FantasyCritical Success Factors: Separating Fact from Fantasy
Critical Success Factors: Separating Fact from Fantasy
Scott Abel
 
Building a Marketing Data Warehouse from Scratch - SMX Advanced 202
Building a Marketing Data Warehouse from Scratch - SMX Advanced 202Building a Marketing Data Warehouse from Scratch - SMX Advanced 202
Building a Marketing Data Warehouse from Scratch - SMX Advanced 202
Christopher Gutknecht
 
Pdf js-express-default-doc-v2
Pdf js-express-default-doc-v2Pdf js-express-default-doc-v2
Pdf js-express-default-doc-v2
SdadClub1
 
Yellowfin 7.3 launch presentation slides
Yellowfin 7.3 launch presentation slidesYellowfin 7.3 launch presentation slides
Yellowfin 7.3 launch presentation slides
Yellowfin
 
How the economist with cloud BI and Looker have improved data-driven decision...
How the economist with cloud BI and Looker have improved data-driven decision...How the economist with cloud BI and Looker have improved data-driven decision...
How the economist with cloud BI and Looker have improved data-driven decision...
Looker
 
Domain Driven Design & Hexagonal Architecture
Domain Driven Design & Hexagonal ArchitectureDomain Driven Design & Hexagonal Architecture
Domain Driven Design & Hexagonal Architecture
Can Pekdemir
 
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
Daniel Fisher
 
Electronic Document Management Case Study
Electronic Document Management Case StudyElectronic Document Management Case Study
Electronic Document Management Case Study
DougWinning
 

Similar to Dev Cast - Lessons from a Complex Application (20)

Improving The Software Development Lifecycle With Visual Studio Team System
Improving The Software Development Lifecycle With Visual Studio Team SystemImproving The Software Development Lifecycle With Visual Studio Team System
Improving The Software Development Lifecycle With Visual Studio Team System
 
Common Mistakes Made By Web Developers
Common Mistakes Made By Web DevelopersCommon Mistakes Made By Web Developers
Common Mistakes Made By Web Developers
 
ASP.NET Core For The Agile Enterprise
ASP.NET Core For The Agile EnterpriseASP.NET Core For The Agile Enterprise
ASP.NET Core For The Agile Enterprise
 
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
Portal Deployment Best Practices | IBM Portal Excellence Conference 2009
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
MongoDb Schema Pattern - Kalpit Pandit.pptx
MongoDb Schema Pattern - Kalpit Pandit.pptxMongoDb Schema Pattern - Kalpit Pandit.pptx
MongoDb Schema Pattern - Kalpit Pandit.pptx
 
IT@C What If?
IT@C What If?IT@C What If?
IT@C What If?
 
How to deliver a Single View in Financial Services
 How to deliver a Single View in Financial Services How to deliver a Single View in Financial Services
How to deliver a Single View in Financial Services
 
Efficient Software Development with Visual Studio Team System 2008
Efficient Software Development with Visual Studio Team System 2008Efficient Software Development with Visual Studio Team System 2008
Efficient Software Development with Visual Studio Team System 2008
 
Isset Presentation @ EECI2009
Isset Presentation @ EECI2009Isset Presentation @ EECI2009
Isset Presentation @ EECI2009
 
BI, Hive or Big Data Analytics?
BI, Hive or Big Data Analytics? BI, Hive or Big Data Analytics?
BI, Hive or Big Data Analytics?
 
Critical Success Factors: Separating Fact from Fantasy
Critical Success Factors: Separating Fact from FantasyCritical Success Factors: Separating Fact from Fantasy
Critical Success Factors: Separating Fact from Fantasy
 
Building a Marketing Data Warehouse from Scratch - SMX Advanced 202
Building a Marketing Data Warehouse from Scratch - SMX Advanced 202Building a Marketing Data Warehouse from Scratch - SMX Advanced 202
Building a Marketing Data Warehouse from Scratch - SMX Advanced 202
 
Pdf js-express-default-doc-v2
Pdf js-express-default-doc-v2Pdf js-express-default-doc-v2
Pdf js-express-default-doc-v2
 
Yellowfin 7.3 launch presentation slides
Yellowfin 7.3 launch presentation slidesYellowfin 7.3 launch presentation slides
Yellowfin 7.3 launch presentation slides
 
How the economist with cloud BI and Looker have improved data-driven decision...
How the economist with cloud BI and Looker have improved data-driven decision...How the economist with cloud BI and Looker have improved data-driven decision...
How the economist with cloud BI and Looker have improved data-driven decision...
 
Domain Driven Design & Hexagonal Architecture
Domain Driven Design & Hexagonal ArchitectureDomain Driven Design & Hexagonal Architecture
Domain Driven Design & Hexagonal Architecture
 
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
2008 - TechDays PT: Modeling and Composition for Software today and tomorrow
 
Ch17
Ch17Ch17
Ch17
 
Electronic Document Management Case Study
Electronic Document Management Case StudyElectronic Document Management Case Study
Electronic Document Management Case Study
 

Recently uploaded

Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 

Recently uploaded (20)

Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 

Dev Cast - Lessons from a Complex Application

  • 2. Topics VENDOR project goals Quick tour System architecture choices Mistakes
  • 3. Project Goals Augment commercial tax assessment system with GIS tools Provide workflow management tools for clerks, appraisers, and GIS editors Minimize data entry and re-entry by plugging in 3rd party data sources Be stable enough for commercial deployment to multiple tax districts
  • 5. Design Decisions Centralize business logic in model classes Model View Presenter for GUI applications Plug-in architecture for 3rd party data sources Push GIS code to framework wherever possible Mostly because of unfamiliarity of team
  • 6. System Architecture Choices Separation Web stuff belongs in web projects GIS stuff belongs in GIS projects Etc. Reuse The model is what ties things together so attempt to centralize and reuse
  • 7. Guiding Principle NEVER REPEAT YOURSELF! Handle GIS archiving/versioning in one place only Rule set for generating XML documents in one place only If we do something twice, automate and refactor
  • 8. The Softer Side Mandatory phone meetings twice a week for 6 months Knowing who the client is: “product owner” vs. who can sign the acceptance Post deployment: client interactions via issue tracking web site
  • 9. Tools I’m forgetful How to do something in SQL How to write that thingy in C# Which users to add to what group Which things are different on my PC vs. clients Tooling and automation is one way to avoid pitfalls
  • 10. MSBuild Biggest discovery of 2008 for my productivity Makes even simple things easier in the short run with multiple developers Learned to isolate what is different on my machine than other machines Team members, client machine
  • 11. MSBuild Really cool GUI  Let’s look at an example
  • 12. WIXWindows Installer XML Open sourced tool from Microsoft to create Microsoft Installers (MSI) Scriptable and can do anything, with a learning curve Has nice extensions for AD, IIS, etc. Used to create documentation only on this project. See more use in future
  • 14. WIXWindows Installer XML Example – Building documentation
  • 15. Goofs and Gaffs When things went horribly wrong
  • 16. Mistakes Being strict with structure led to unnecessary complexity a.k.a. I learned something in a peer review Even just with plethora of projects Staying on top of testing At some point I just let them slide for older code while adding more for new stuff
  • 17. Suggestion Strive for “good enough” not perfection If it works as expected, it’s perfect to the client Perfection is in the eye of the beholder Does not mean you should not try to do a good job Resist the temptation to “make a quick improvement” – DONE == DONE!
  • 18. Mistakes Not being rigorous with understanding the goal before starting work Very complex system, tons of business rules Became more successful through time because we began to do this
  • 19. Suggestion Use descriptive text and pictures to verify your assumptions with the client
  • 20. Mistakes Not communicating enough Make a DB schema change which is not communicated Update a config setting which is not communicated Change method signature on web service which is not communicated
  • 21. Suggestion You absolutely cannot communicate too much If you need time to get things done close your door, “Do Not Disturb” on IM, and block off calendar Otherwise…5 minute conversation now could save 1 hour later today.
  • 22. What is your experience? How have you done it?