SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
Customer Story:
Next Level Coding
DEV 101
Presenter: Devin Olson
• azlighthouse works, llc
• Notes and Domino Developer since R3
• Also, Java, COBOL, Delphi, Pascal,
MASM, TASM, etc.
• Consultant, Educator, Mentor,
Curmudgeon
Presenter: Mike McGarel
• Senior Application Developer for Celina
Insurance Group
• Working with Notes/Domino since
version 4.6
• Working on the web since 1996
• CollabSphere site team member
What is
Next Level Coding?
Coding
as
Communication
Machines are
just your
initial audience
Your
next level audience
is
other programmers
What does my code
say to the person
reading it?
Who are these other programmers?
• Your team members
• Reviewers
• Testers
• Outside consultants
• Your supervisor
• Your future self
What is your audience looking for?
• Understandable
• Maintainable
• Modular
How you know
you’re doing it wrong
WTF?
WTF?WTF?!!!
The Whys of Leveling Up
• Faster fixes and changes
• Smoother testing
• Less code that everyone is afraid
to touch
• Better relationships with co-workers
The Hows of Leveling Up
Format to Communicate
• First impressions
• Language standards
• Company standards
• “White space” between functions
• Indenting
• Consistency!
Examples of Formatting Standards
• Constants in ALL CAPS
• Constants at beginning of a class or
library
• Braces starting on same line or next line
• Tabs or spaces? (You have to pick one)
Variable and Parameter Names
• Clear
• Meaningful
• Internal consistency
Examples of Variable Names
• quoteSubmittedDate
• quoteApprovedDate
• policyStartDate
• policyEndDate
Another Variable Name Example
The variable “result” as an internal
return value of a function
String getSomeStringValue() {
String result = “”;
// lots of way cool code here
return result;
}
Functions, Methods, and Subroutines
• Accurate, detailed and descriptive
names
• A function should either:
o One important thing
o Groups others together
Example of Function Naming
• Meh:
convertCity(city)
• Better:
convertCityName(city)
• Better Still:
convertCityNameToCityCode(cityName)
Example of Modular Functions
• getToNames()
• getCCNames()
• getBCCNames()
• getSubject()
Classes and Script Libraries
• Accurate and descriptive name
• Part of a consistent name pattern
• Related group of functions
• Small
• Single Responsibility Principle
• Tools in an organized toolbox
• Easy to describe (less than 3 lines)
Class Examples
InsurerPersonalInfoValidation
This class validates the insurer’s
personal information (name, address,
email, employer) etc. on the quote form.
InsurerVehicleInfoValidation
This class validates the insurer’s vehicle
information (make, model, VIN, etc.) for
each vehicle.
Error / Exception Handling
• Informative log messages with specific
error and source
(example: method and full path of class)
• Defensive coding
• Never pass nulls
• Tell the user what to do
Testing
• Modular code is easier to test
• Modular code is easier to troubleshoot
• Test Fail early
• Test often
Code Comments
• Goal is to make them unnecessary
Think
• Versioning
• Reducing Duplication
• Reduce dependencies on outside libraries
• List the ones you have up front
• Need balance between duplication and
dependencies.
• “Turtles all the way down”
Keep up with Modern Programming
• Time consuming but necessary
• Get familiar with design patterns
• Don’t recreate code – use free libraries
• Java examples: StringUtils
• JavaScript: jQuery, React, Vue
• Standard practices
Keep up with Modern UI
• Time consuming but necessary
• Device independence and proliferation
• Responsive layout frameworks
• Bootstrap, Foundation
• Icon Libraries
• Font Awesome, Google Material Design
Costs of Leveling Up
• Takes longer initially
• Different way of thinking
Costs of Not Leveling Up
• Wading through code takes more time
for everyone
• Technical debt
Takeaways
• Communicate intent with every name
• Be consistent!
• Plan your code’s structure
• Keep up with standards
• Long and Winding Road
References
• Clean Code by Robert C. Martin
• codinghorror.com (Jeff Atwood)
Thank You!
Customer Story: Next Level Coding

Más contenido relacionado

Similar a Customer Story: Next Level Coding

Clean code presentation
Clean code presentationClean code presentation
Clean code presentationBhavin Gandhi
 
Mr. Burhan Khalid - secure dev.
Mr. Burhan Khalid - secure dev.Mr. Burhan Khalid - secure dev.
Mr. Burhan Khalid - secure dev.nooralmousa
 
A Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven DevelopmentA Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven DevelopmentShawn Jones
 
An Introduction To Software Development - Implementation
An Introduction To Software Development - ImplementationAn Introduction To Software Development - Implementation
An Introduction To Software Development - ImplementationBlue Elephant Consulting
 
Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Maven Logix
 
Quality metrics and angular js applications
Quality metrics and angular js applicationsQuality metrics and angular js applications
Quality metrics and angular js applicationsnadeembtech
 
Twelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btechTwelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btechIIITA
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software DevelopmentAhmet Bulut
 
Cross functional peer review preso 10-01-2013
Cross functional peer review preso 10-01-2013Cross functional peer review preso 10-01-2013
Cross functional peer review preso 10-01-2013SmartBear
 
Building iOS App Project & Architecture
Building iOS App Project & ArchitectureBuilding iOS App Project & Architecture
Building iOS App Project & ArchitectureMassimo Oliviero
 
Mob Programming for Continuous Learning
Mob Programming for Continuous LearningMob Programming for Continuous Learning
Mob Programming for Continuous LearningMike Clement
 
Writing Clean Code (Recommendations by Robert Martin)
Writing Clean Code (Recommendations by Robert Martin)Writing Clean Code (Recommendations by Robert Martin)
Writing Clean Code (Recommendations by Robert Martin)Shirish Bari
 
Type mock isolator
Type mock isolatorType mock isolator
Type mock isolatorMaslowB
 

Similar a Customer Story: Next Level Coding (20)

Clean code presentation
Clean code presentationClean code presentation
Clean code presentation
 
Mr. Burhan Khalid - secure dev.
Mr. Burhan Khalid - secure dev.Mr. Burhan Khalid - secure dev.
Mr. Burhan Khalid - secure dev.
 
Secured Development
Secured DevelopmentSecured Development
Secured Development
 
Clean code
Clean codeClean code
Clean code
 
A Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven DevelopmentA Brief Introduction to Test-Driven Development
A Brief Introduction to Test-Driven Development
 
An Introduction To Software Development - Implementation
An Introduction To Software Development - ImplementationAn Introduction To Software Development - Implementation
An Introduction To Software Development - Implementation
 
Clean Code Talk (draft)
Clean Code Talk (draft)Clean Code Talk (draft)
Clean Code Talk (draft)
 
Vba Class Level 3
Vba Class Level 3Vba Class Level 3
Vba Class Level 3
 
Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening Capability Building for Cyber Defense: Software Walk through and Screening
Capability Building for Cyber Defense: Software Walk through and Screening
 
TDD In Practice
TDD In PracticeTDD In Practice
TDD In Practice
 
Quality metrics and angular js applications
Quality metrics and angular js applicationsQuality metrics and angular js applications
Quality metrics and angular js applications
 
Twelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btechTwelve practices of XP_Se lect5 btech
Twelve practices of XP_Se lect5 btech
 
Agile Software Development
Agile Software DevelopmentAgile Software Development
Agile Software Development
 
Cross functional peer review preso 10-01-2013
Cross functional peer review preso 10-01-2013Cross functional peer review preso 10-01-2013
Cross functional peer review preso 10-01-2013
 
Building iOS App Project & Architecture
Building iOS App Project & ArchitectureBuilding iOS App Project & Architecture
Building iOS App Project & Architecture
 
Mob Programming for Continuous Learning
Mob Programming for Continuous LearningMob Programming for Continuous Learning
Mob Programming for Continuous Learning
 
Writing Clean Code (Recommendations by Robert Martin)
Writing Clean Code (Recommendations by Robert Martin)Writing Clean Code (Recommendations by Robert Martin)
Writing Clean Code (Recommendations by Robert Martin)
 
Code Quality
Code QualityCode Quality
Code Quality
 
Type mock isolator
Type mock isolatorType mock isolator
Type mock isolator
 
Code Review for iOS
Code Review for iOSCode Review for iOS
Code Review for iOS
 

Más de Devin Olson

Paired with an Idiot: Things that sabotage success
Paired with an Idiot: Things that sabotage successPaired with an Idiot: Things that sabotage success
Paired with an Idiot: Things that sabotage successDevin Olson
 
Resolving Cached Design Element Corruption Issues in the IBM Notes Client
Resolving Cached Design Element Corruption Issues in the IBM Notes ClientResolving Cached Design Element Corruption Issues in the IBM Notes Client
Resolving Cached Design Element Corruption Issues in the IBM Notes ClientDevin Olson
 
Do you have a website? Do you want to get sued?
Do you have a website?  Do you want to get sued?Do you have a website?  Do you want to get sued?
Do you have a website? Do you want to get sued?Devin Olson
 
IBM Traveler and Verse: Device Security and Administration Overview
IBM Traveler and Verse: Device Security and Administration OverviewIBM Traveler and Verse: Device Security and Administration Overview
IBM Traveler and Verse: Device Security and Administration OverviewDevin Olson
 
Website Accessibility Workshop
Website Accessibility WorkshopWebsite Accessibility Workshop
Website Accessibility WorkshopDevin Olson
 
Raw Iron to Enterprise Server: Installing Domino on Linux
Raw Iron to Enterprise Server: Installing Domino on LinuxRaw Iron to Enterprise Server: Installing Domino on Linux
Raw Iron to Enterprise Server: Installing Domino on LinuxDevin Olson
 
Curing the Headaches: How to Deal with Bad Developers
Curing the Headaches: How to Deal with Bad DevelopersCuring the Headaches: How to Deal with Bad Developers
Curing the Headaches: How to Deal with Bad DevelopersDevin Olson
 
Accessibility for the Visually Impaired with IBM Lotus Domino
Accessibility for the Visually Impaired with IBM Lotus DominoAccessibility for the Visually Impaired with IBM Lotus Domino
Accessibility for the Visually Impaired with IBM Lotus DominoDevin Olson
 
Countdown to Domino 10
Countdown to Domino 10Countdown to Domino 10
Countdown to Domino 10Devin Olson
 
Pink Slip Time: Turning a Job Loss into a Career Win
Pink Slip Time: Turning a Job Loss into a Career WinPink Slip Time: Turning a Job Loss into a Career Win
Pink Slip Time: Turning a Job Loss into a Career WinDevin Olson
 
XPages Development 2
XPages Development 2XPages Development 2
XPages Development 2Devin Olson
 
XPages Development 1
XPages Development 1XPages Development 1
XPages Development 1Devin Olson
 
Countdown to Domino 2025
Countdown to Domino 2025Countdown to Domino 2025
Countdown to Domino 2025Devin Olson
 
Big Data with Graph, IBM Domino, and the OpenNTF API
Big Data with Graph, IBM Domino, and the OpenNTF APIBig Data with Graph, IBM Domino, and the OpenNTF API
Big Data with Graph, IBM Domino, and the OpenNTF APIDevin Olson
 
Countdown to Domino 2025 - Preparing for the NOW
Countdown to Domino 2025 - Preparing for the NOWCountdown to Domino 2025 - Preparing for the NOW
Countdown to Domino 2025 - Preparing for the NOWDevin Olson
 
Installing and Configuring Domino 10 on CentOS 7
Installing and Configuring Domino 10 on CentOS 7Installing and Configuring Domino 10 on CentOS 7
Installing and Configuring Domino 10 on CentOS 7Devin Olson
 
Extreme Development: Pair Programming
Extreme Development: Pair ProgrammingExtreme Development: Pair Programming
Extreme Development: Pair ProgrammingDevin Olson
 
Installing & Configuring IBM Domino 9 on CentOS
Installing & Configuring IBM Domino 9 on CentOSInstalling & Configuring IBM Domino 9 on CentOS
Installing & Configuring IBM Domino 9 on CentOSDevin Olson
 
Ad104 build a bean workshop
Ad104 build a bean workshopAd104 build a bean workshop
Ad104 build a bean workshopDevin Olson
 

Más de Devin Olson (19)

Paired with an Idiot: Things that sabotage success
Paired with an Idiot: Things that sabotage successPaired with an Idiot: Things that sabotage success
Paired with an Idiot: Things that sabotage success
 
Resolving Cached Design Element Corruption Issues in the IBM Notes Client
Resolving Cached Design Element Corruption Issues in the IBM Notes ClientResolving Cached Design Element Corruption Issues in the IBM Notes Client
Resolving Cached Design Element Corruption Issues in the IBM Notes Client
 
Do you have a website? Do you want to get sued?
Do you have a website?  Do you want to get sued?Do you have a website?  Do you want to get sued?
Do you have a website? Do you want to get sued?
 
IBM Traveler and Verse: Device Security and Administration Overview
IBM Traveler and Verse: Device Security and Administration OverviewIBM Traveler and Verse: Device Security and Administration Overview
IBM Traveler and Verse: Device Security and Administration Overview
 
Website Accessibility Workshop
Website Accessibility WorkshopWebsite Accessibility Workshop
Website Accessibility Workshop
 
Raw Iron to Enterprise Server: Installing Domino on Linux
Raw Iron to Enterprise Server: Installing Domino on LinuxRaw Iron to Enterprise Server: Installing Domino on Linux
Raw Iron to Enterprise Server: Installing Domino on Linux
 
Curing the Headaches: How to Deal with Bad Developers
Curing the Headaches: How to Deal with Bad DevelopersCuring the Headaches: How to Deal with Bad Developers
Curing the Headaches: How to Deal with Bad Developers
 
Accessibility for the Visually Impaired with IBM Lotus Domino
Accessibility for the Visually Impaired with IBM Lotus DominoAccessibility for the Visually Impaired with IBM Lotus Domino
Accessibility for the Visually Impaired with IBM Lotus Domino
 
Countdown to Domino 10
Countdown to Domino 10Countdown to Domino 10
Countdown to Domino 10
 
Pink Slip Time: Turning a Job Loss into a Career Win
Pink Slip Time: Turning a Job Loss into a Career WinPink Slip Time: Turning a Job Loss into a Career Win
Pink Slip Time: Turning a Job Loss into a Career Win
 
XPages Development 2
XPages Development 2XPages Development 2
XPages Development 2
 
XPages Development 1
XPages Development 1XPages Development 1
XPages Development 1
 
Countdown to Domino 2025
Countdown to Domino 2025Countdown to Domino 2025
Countdown to Domino 2025
 
Big Data with Graph, IBM Domino, and the OpenNTF API
Big Data with Graph, IBM Domino, and the OpenNTF APIBig Data with Graph, IBM Domino, and the OpenNTF API
Big Data with Graph, IBM Domino, and the OpenNTF API
 
Countdown to Domino 2025 - Preparing for the NOW
Countdown to Domino 2025 - Preparing for the NOWCountdown to Domino 2025 - Preparing for the NOW
Countdown to Domino 2025 - Preparing for the NOW
 
Installing and Configuring Domino 10 on CentOS 7
Installing and Configuring Domino 10 on CentOS 7Installing and Configuring Domino 10 on CentOS 7
Installing and Configuring Domino 10 on CentOS 7
 
Extreme Development: Pair Programming
Extreme Development: Pair ProgrammingExtreme Development: Pair Programming
Extreme Development: Pair Programming
 
Installing & Configuring IBM Domino 9 on CentOS
Installing & Configuring IBM Domino 9 on CentOSInstalling & Configuring IBM Domino 9 on CentOS
Installing & Configuring IBM Domino 9 on CentOS
 
Ad104 build a bean workshop
Ad104 build a bean workshopAd104 build a bean workshop
Ad104 build a bean workshop
 

Último

%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...kalichargn70th171
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park masabamasaba
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedDelhi Call girls
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxalwaysnagaraju26
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplatePresentation.STUDIO
 

Último (20)

%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptxBUS PASS MANGEMENT SYSTEM USING PHP.pptx
BUS PASS MANGEMENT SYSTEM USING PHP.pptx
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 

Customer Story: Next Level Coding

  • 1. Customer Story: Next Level Coding DEV 101
  • 2.
  • 3. Presenter: Devin Olson • azlighthouse works, llc • Notes and Domino Developer since R3 • Also, Java, COBOL, Delphi, Pascal, MASM, TASM, etc. • Consultant, Educator, Mentor, Curmudgeon
  • 4. Presenter: Mike McGarel • Senior Application Developer for Celina Insurance Group • Working with Notes/Domino since version 4.6 • Working on the web since 1996 • CollabSphere site team member
  • 9. What does my code say to the person reading it?
  • 10. Who are these other programmers? • Your team members • Reviewers • Testers • Outside consultants • Your supervisor • Your future self
  • 11. What is your audience looking for? • Understandable • Maintainable • Modular
  • 12. How you know you’re doing it wrong WTF? WTF?WTF?!!!
  • 13. The Whys of Leveling Up • Faster fixes and changes • Smoother testing • Less code that everyone is afraid to touch • Better relationships with co-workers
  • 14. The Hows of Leveling Up
  • 15. Format to Communicate • First impressions • Language standards • Company standards • “White space” between functions • Indenting • Consistency!
  • 16. Examples of Formatting Standards • Constants in ALL CAPS • Constants at beginning of a class or library • Braces starting on same line or next line • Tabs or spaces? (You have to pick one)
  • 17. Variable and Parameter Names • Clear • Meaningful • Internal consistency
  • 18. Examples of Variable Names • quoteSubmittedDate • quoteApprovedDate • policyStartDate • policyEndDate
  • 19. Another Variable Name Example The variable “result” as an internal return value of a function String getSomeStringValue() { String result = “”; // lots of way cool code here return result; }
  • 20. Functions, Methods, and Subroutines • Accurate, detailed and descriptive names • A function should either: o One important thing o Groups others together
  • 21. Example of Function Naming • Meh: convertCity(city) • Better: convertCityName(city) • Better Still: convertCityNameToCityCode(cityName)
  • 22. Example of Modular Functions • getToNames() • getCCNames() • getBCCNames() • getSubject()
  • 23. Classes and Script Libraries • Accurate and descriptive name • Part of a consistent name pattern • Related group of functions • Small • Single Responsibility Principle • Tools in an organized toolbox • Easy to describe (less than 3 lines)
  • 24. Class Examples InsurerPersonalInfoValidation This class validates the insurer’s personal information (name, address, email, employer) etc. on the quote form. InsurerVehicleInfoValidation This class validates the insurer’s vehicle information (make, model, VIN, etc.) for each vehicle.
  • 25. Error / Exception Handling • Informative log messages with specific error and source (example: method and full path of class) • Defensive coding • Never pass nulls • Tell the user what to do
  • 26. Testing • Modular code is easier to test • Modular code is easier to troubleshoot • Test Fail early • Test often
  • 27. Code Comments • Goal is to make them unnecessary
  • 28. Think • Versioning • Reducing Duplication • Reduce dependencies on outside libraries • List the ones you have up front • Need balance between duplication and dependencies. • “Turtles all the way down”
  • 29.
  • 30. Keep up with Modern Programming • Time consuming but necessary • Get familiar with design patterns • Don’t recreate code – use free libraries • Java examples: StringUtils • JavaScript: jQuery, React, Vue • Standard practices
  • 31. Keep up with Modern UI • Time consuming but necessary • Device independence and proliferation • Responsive layout frameworks • Bootstrap, Foundation • Icon Libraries • Font Awesome, Google Material Design
  • 32. Costs of Leveling Up • Takes longer initially • Different way of thinking
  • 33. Costs of Not Leveling Up • Wading through code takes more time for everyone • Technical debt
  • 34. Takeaways • Communicate intent with every name • Be consistent! • Plan your code’s structure • Keep up with standards • Long and Winding Road
  • 35. References • Clean Code by Robert C. Martin • codinghorror.com (Jeff Atwood)