SlideShare a Scribd company logo
Ike Ellis, MVP, Crafting Bytes
14 Habits of Great
SQL Developers
Things you can do to increase
your value to everyone
Please silence
cell phones
Please silence
cell phones
2
Free online webinar
events
Free 1-day local
training events
Local user groups
around the world
Online special
interest user groups
Business analytics
training
Free Online Resources
PASS Blog
White Papers
Session Recordings
Newsletter www.pass.org
Explore everything PASS has to offer
PASS Connector
BA Insights
Get involved
Session evaluations
Download the GuideBook App
and search: PASS Summit 2017
Follow the QR code link
displayed on session signage
throughout the conference
venue and in the program guide
Your feedback is important and valuable.
Go to passSummit.com
Submit by 5pm Friday, November 10th to win prizes. 3 Ways to Access:
Ike Ellis
Partner, Crafting Bytes
Microsoft MVP
Since 2011
Frequent PASS Summit Speaker
And speak often at SQL Saturdays + maker
of youtube videos – Ike’s tips!
Author of Developing Azure
Solutions
Now in 2nd Edition
/ikeellis @ike_ellis ellisike
• Things great SQL developers have in common
• Great for all developers, not just SQL developers
• In order to benefit you, not benefit me.
• #1, #2, #3 are by far the most important
• This isn’t a performance lesson
• This isn’t a SQL internals lesson
• This isn’t a SQL language best practices lesson
• This is a discussion on the personal habits and characteristics and thought
patterns of great SQL developers.
Habit #2: Testing Best Practices
• Use mocking frameworks, begin tran, action, rollback tran, mock data
• Never use production data
• Love all testing frameworks
• tSQLt
• Visual Studio
• NUnit
• SpecFlow – BDD testing
• Cucumber/Gerkin
• ApprovalTests
• At minimum, test that the sprocs, views, and functions actually run with
the right arguments
Habit #3:
Habit #3: Always Be Shipping
• Automate, automate, automate
• Fold tests into deployment process
• Learn a scripting language
• PowerShell
• Azure CLI
• Grant Fritchey says!
• Never change an object in production directly
• Always go through the deployment pipeline
Habit #4: Question, Re-Evaluate, Act
• Question your own preconceived notions
• Question your own biases
• Question the purpose of new technology
• Question your own derived answers
• Evaluate effect on previous decisions
• Change your mind and behavior
Habit #5:
Habit #5:
• Understand The Real Job
• Not to write code, but deliver value
• Can it all be done in Excel? InfoPath? Power Apps?
• It’s more fun to delete code.
• Deliver as fast as you can.
Habit #6: Software development, at its
most fun, is a team sport
• Code reviews
• Share all information
• Teach technology
• Teach habits and practices
• Teach domain knowledge
• Teach code frameworks and architecture
• Disseminate information at every available opportunity
• Mob Programming
Habit #6: Software development, at its
most fun, is a team sport
Habit #6: Software development, at its
most fun, is a team sport
Habit #6: Software development, at its
most fun, is a team sport
• Focus on a single task
• Complete it
• Test it
• Verify functionality and impact on other systems
• Check in
• Deploy if possible
• Work on next item
• Avoid silos
Habit #7: Fight dependencies
Habit #7: Fight dependencies
• Normalizing and denormalizing and changing the data model is
essential to a good application
• Necessary for performance
• Necessary to represent changes in the business
• Necessary to remove dead features
• Necessary to make data exploration and analysis much easier
• Necessary to speed application development
• T-SQL code is the ultimate dependency
• Should be isolated so schema can change
• Schema can stay vibrant and relevant
Habit #7: Fight dependencies
• Avoid change lock
• Happens because of dependencies
• Lack of testing
• Complicated code
• Loss of intent
Habit #7: Fight dependencies
• Views
• Stored Procedures
• Functions
• ORMs
• Web APIs ~ REST, SOAP, etc
• Come through the front door. Give them an API
• Can cause the use of triggers.
• EDA – ODS, DW, DM
• Never allow direct access to your tables for anything
• Adds initial time to development, but keeps the application
changeable and flexible
Habit #7: Fight dependencies
• One application ~ one database
• Or at least one software development team, one database
• Fight three part names
• Database.dbo.tablename
• Or even worse, four part names
• Servername.database.dbo.tablename
• But if you’re going to use four part names
• Use DNS Alias (CNAME)
• Use Views/Stored Procedures
• Keep the coding contract firm and clear
• Preferable to use Web API/C#/JS
Habit #8: Code for resiliency/code for cloud
• Error handling
• Flag
• Fix
• Fail
• Connection retry
• Short transactions
• Deliberate rollback tran
• Table update order document
Habit #9: Love your tools
• Know every option
• Know keystrokes and shortcuts
• Know code navigation
• Know these tools:
• SQL Prompt
• Visual Studio
• SSMS
• Profiler
• Extended Events
• MS Excel
Habit #10: Love your language
• SQL is a command language
• Think like the optimizer
• Learn new features:
• CONCAT
• TRY_CAST
• Window Functions
• Memory Optimized Tables and Procedures
• Columnstore
• DROP IF EXISTS
• R
• Python
• JSON
Habit #11: High-performance is not created by accident
• But it can be created at the last responsible moment
• Key to performance is to watch dependencies
• Think always about concurrency
• Small things are changeable and scalable
• Think cloud-scale+
Habit #12:
Habit #12: Leave it better than you found it
• Long stored procedures are the bane of the great developer
• Not testable
• Hard to change
• Bad for performance
• Prone to bugs
• Prone to have developers avoid understanding it
• Hard to navigate
• Motorcycle vs Semi-truck
Habit #12: Leave it better than you found it
• Update and repair ~ weed the garden – constantly
• Bad developers work to get the item off their plate so they can do
something else
• Great developers work so that the item is more enjoyable to work
on when they’re asked again
Habit #13:
Habit #13: Respond with a sense of urgency
• Treat it as their most valuable commodity
• Things that erode user trust:
• Repeated mistakes
• Half-done code
• Bugs surfacing at run-time
• Missed deadlines
• Bad listening skills
• Not reading the entire email
• Things that gain user trust
• Doing what you said you do when you said you’d do it
• Digging deeper to understand and empathize
• Doing their work with them, not for them
Habit #14: Time as the most valuable commodity
• Record victories in excel, google doc, or better yet: Toggl
• Think about time doing plumbing and maintenance
• Merging, branching
• In meetings
• Moving code to production
• Maintenance tasks
• Repeated tasks
• Take ownership of their habits and their time
• Make things happen, not happen to them
PRIZES TO GIVE AWAY!
• Next week I’ll ship 10 posters to winners
• Just give me your business card and pick which poster you want. I’ll
send it to you.
Thank You
Learn more from Ike Ellis
ike@craftingbytes.com@ike_ellis
ALL DONE!
Ike Ellis
@ike_ellis
Crafting Bytes
We’re hiring a Data Experts!
Microsoft MVP
Chairperson of the San Diego TIG
Book co-author – Developing Azure Solutions
Upcoming course on Azure Data Lake
www.craftingbytes.com
www.ikeellis.com

More Related Content

PPTX
14 Habits of Great SQL Developers
Ike Ellis
Ā 
PPTX
11 Goals of High Functioning SQL Developers
Ike Ellis
Ā 
PPTX
A lap around microsofts business intelligence platform
Ike Ellis
Ā 
PDF
Built it, but nobody came: avoiding over-engineering
Jon Peck
Ā 
PPTX
JustEnoughDevOpsForDataScientists
Anya Bida
Ā 
PDF
Database story by DevOps
Anton Martynenko
Ā 
PDF
Intro to SharePoint 2010 development for .NET developers
John Ferringer
Ā 
PDF
50 Shades of Fail KScope16
Christian Berg
Ā 
14 Habits of Great SQL Developers
Ike Ellis
Ā 
11 Goals of High Functioning SQL Developers
Ike Ellis
Ā 
A lap around microsofts business intelligence platform
Ike Ellis
Ā 
Built it, but nobody came: avoiding over-engineering
Jon Peck
Ā 
JustEnoughDevOpsForDataScientists
Anya Bida
Ā 
Database story by DevOps
Anton Martynenko
Ā 
Intro to SharePoint 2010 development for .NET developers
John Ferringer
Ā 
50 Shades of Fail KScope16
Christian Berg
Ā 

What's hot (20)

PPTX
Interns What Is DevOps
Aaron Blythe
Ā 
PDF
How to audit Drupal Sites for performance, content and best practices
Jon Peck
Ā 
PPTX
Just Enough DevOps for Data Scientists Part II: Handling Infra Failures When ...
Anya Bida
Ā 
PPTX
Azure ML: from basic to integration with custom applications
Davide Mauri
Ā 
PDF
Drupal Site Audit - SFDUG
Jon Peck
Ā 
PPTX
Emergency Toolkit Presentation
Rich Benner
Ā 
PPTX
Docs as Part of the Product - Open Source Summit North America 2018
Den Delimarsky
Ā 
PPTX
Global Azure Bootcamp - Vancouver (2018) - Testing with Containers
Den Delimarsky
Ā 
PDF
Powerful Automation Made Simple
Gaetano Giunta
Ā 
PPTX
Engage 2019 - De04. Java with Domino After XPages
Jesse Gallagher
Ā 
PPTX
Design for scale
Doug Lampe
Ā 
PPTX
Embracing OSS in the enterprise
cyberzeddk
Ā 
PDF
Scaling Plugins in Critical Systems - Jon Mort
Atlassian
Ā 
PPTX
Oracle SQL Developer Tips and Tricks: Data Edition
Jeff Smith
Ā 
PDF
Optimus XPages: An Explosion of Techniques and Best Practices
Teamstudio
Ā 
PDF
Georgia Tech Drupal Users Group - Local Drupal Development
Eric Sembrat
Ā 
PDF
Developers Use Bitbucket and So Can You
Atlassian
Ā 
PPTX
Peltas - get insights on your Alfresco data
Daniel Gradecak
Ā 
PDF
DocOps: Documentation at the Speed of Agile
Mary Connor
Ā 
PPTX
Webhooks with Azure Functions - Live 360 Conference
SparkPost
Ā 
Interns What Is DevOps
Aaron Blythe
Ā 
How to audit Drupal Sites for performance, content and best practices
Jon Peck
Ā 
Just Enough DevOps for Data Scientists Part II: Handling Infra Failures When ...
Anya Bida
Ā 
Azure ML: from basic to integration with custom applications
Davide Mauri
Ā 
Drupal Site Audit - SFDUG
Jon Peck
Ā 
Emergency Toolkit Presentation
Rich Benner
Ā 
Docs as Part of the Product - Open Source Summit North America 2018
Den Delimarsky
Ā 
Global Azure Bootcamp - Vancouver (2018) - Testing with Containers
Den Delimarsky
Ā 
Powerful Automation Made Simple
Gaetano Giunta
Ā 
Engage 2019 - De04. Java with Domino After XPages
Jesse Gallagher
Ā 
Design for scale
Doug Lampe
Ā 
Embracing OSS in the enterprise
cyberzeddk
Ā 
Scaling Plugins in Critical Systems - Jon Mort
Atlassian
Ā 
Oracle SQL Developer Tips and Tricks: Data Edition
Jeff Smith
Ā 
Optimus XPages: An Explosion of Techniques and Best Practices
Teamstudio
Ā 
Georgia Tech Drupal Users Group - Local Drupal Development
Eric Sembrat
Ā 
Developers Use Bitbucket and So Can You
Atlassian
Ā 
Peltas - get insights on your Alfresco data
Daniel Gradecak
Ā 
DocOps: Documentation at the Speed of Agile
Mary Connor
Ā 
Webhooks with Azure Functions - Live 360 Conference
SparkPost
Ā 
Ad

Viewers also liked (12)

DOC
A seminar report on data aggregation in wireless sensor networks
praveen369
Ā 
PPTX
Tamr | MDM and the Data Unification Imperative
Tamr_Inc
Ā 
PPTX
Biosocial research framework
University of Southampton
Ā 
PPTX
Biosocial research missing data
University of Southampton
Ā 
PPTX
Tamr | cdo-summit
Tamr_Inc
Ā 
PPT
Data Aggregation and Dissemination in Vehicular Ad-Hoc Networks
Michele Weigle
Ā 
PPTX
An introduction to Jupyter Notebooks for Social Science research
University of Southampton
Ā 
PPTX
Introduction to Data Linkage
University of Southampton
Ā 
PPTX
Biosocial research: Biological data quality issues
University of Southampton
Ā 
PPT
Sustainability Information in Mining: Technologies and Processes for Data Agg...
Schneider Electric
Ā 
PPT
Mdm
amithkulkarni
Ā 
PPTX
Dive Into Azure Data Lake - PASS 2017
Ike Ellis
Ā 
A seminar report on data aggregation in wireless sensor networks
praveen369
Ā 
Tamr | MDM and the Data Unification Imperative
Tamr_Inc
Ā 
Biosocial research framework
University of Southampton
Ā 
Biosocial research missing data
University of Southampton
Ā 
Tamr | cdo-summit
Tamr_Inc
Ā 
Data Aggregation and Dissemination in Vehicular Ad-Hoc Networks
Michele Weigle
Ā 
An introduction to Jupyter Notebooks for Social Science research
University of Southampton
Ā 
Introduction to Data Linkage
University of Southampton
Ā 
Biosocial research: Biological data quality issues
University of Southampton
Ā 
Sustainability Information in Mining: Technologies and Processes for Data Agg...
Schneider Electric
Ā 
Dive Into Azure Data Lake - PASS 2017
Ike Ellis
Ā 
Ad

Similar to 14 Habits of Great SQL Developers (20)

PPTX
Developers Best Practices
aqib javaid
Ā 
PDF
Ask the XPages Experts
Teamstudio
Ā 
PDF
Lotusphere 2009 The 11 Commandments
Bill Buchan
Ā 
PDF
UX in Action: IBM Watson
UserTesting
Ā 
PDF
Friday final test
bcoder
Ā 
PDF
It is a sunny day
bcoder
Ā 
PPTX
BrainQuest-DevOps
Eric Phan
Ā 
PDF
Introduction to Agile Software Development - Eric Wu - MBAX6360 New Product D...
Eric Wu
Ā 
PDF
Why do mobile projects (still) fail - September 2014 edition
Indiginox
Ā 
PDF
How to guarantee your change is integrated to Moodle core
Dan Poltawski
Ā 
PDF
Devconf 2011 - PHP - How Yii framework is developed
Alexander Makarov
Ā 
PDF
FileMaker Scripting Best Practices
DB Services
Ā 
PPT
Synerzip Agile Software Development
Synerzip
Ā 
PPT
Agile Software Development
Synerzip
Ā 
PPTX
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
Karel Zikmund
Ā 
PDF
Surviving a Hackathon and Beyond
imoneytech
Ā 
PPTX
.NET executable requirements
Godfrey Nolan
Ā 
PDF
How Not to Be Conned by Your Drupal Vendor!
pixelonion
Ā 
PDF
Agile Software Development
Ahmet Bulut
Ā 
PPTX
Art of refactoring - Code Smells and Microservices Antipatterns
El Mahdi Benzekri
Ā 
Developers Best Practices
aqib javaid
Ā 
Ask the XPages Experts
Teamstudio
Ā 
Lotusphere 2009 The 11 Commandments
Bill Buchan
Ā 
UX in Action: IBM Watson
UserTesting
Ā 
Friday final test
bcoder
Ā 
It is a sunny day
bcoder
Ā 
BrainQuest-DevOps
Eric Phan
Ā 
Introduction to Agile Software Development - Eric Wu - MBAX6360 New Product D...
Eric Wu
Ā 
Why do mobile projects (still) fail - September 2014 edition
Indiginox
Ā 
How to guarantee your change is integrated to Moodle core
Dan Poltawski
Ā 
Devconf 2011 - PHP - How Yii framework is developed
Alexander Makarov
Ā 
FileMaker Scripting Best Practices
DB Services
Ā 
Synerzip Agile Software Development
Synerzip
Ā 
Agile Software Development
Synerzip
Ā 
NDC London 2020 - Challenges of Managing CoreFx Repo -- Karel Zikmund
Karel Zikmund
Ā 
Surviving a Hackathon and Beyond
imoneytech
Ā 
.NET executable requirements
Godfrey Nolan
Ā 
How Not to Be Conned by Your Drupal Vendor!
pixelonion
Ā 
Agile Software Development
Ahmet Bulut
Ā 
Art of refactoring - Code Smells and Microservices Antipatterns
El Mahdi Benzekri
Ā 

More from Ike Ellis (20)

PPTX
Storytelling with Data with Power BI
Ike Ellis
Ā 
PPTX
Storytelling with Data with Power BI.pptx
Ike Ellis
Ā 
PPTX
Build a modern data platform.pptx
Ike Ellis
Ā 
PPTX
Data Modeling on Azure for Analytics
Ike Ellis
Ā 
PPTX
Migrate a successful transactional database to azure
Ike Ellis
Ā 
PPTX
Data modeling trends for analytics
Ike Ellis
Ā 
PPTX
Data modeling trends for Analytics
Ike Ellis
Ā 
PPTX
Relational data modeling trends for transactional applications
Ike Ellis
Ā 
PPTX
Power bi premium
Ike Ellis
Ā 
PPTX
Move a successful onpremise oltp application to the cloud
Ike Ellis
Ā 
PPTX
Azure Databricks is Easier Than You Think
Ike Ellis
Ā 
PPTX
Pass 2018 introduction to dax
Ike Ellis
Ā 
PPTX
Pass the Power BI Exam
Ike Ellis
Ā 
PPTX
Slides for PUG 2018 - DAX CALCULATE
Ike Ellis
Ā 
PPTX
Introduction to DAX
Ike Ellis
Ā 
PPTX
60 reporting tips in 60 minutes - SQLBits 2018
Ike Ellis
Ā 
PPTX
Survey of the Microsoft Azure Data Landscape
Ike Ellis
Ā 
PPTX
SQL PASS BAC - 60 reporting tips in 60 minutes
Ike Ellis
Ā 
PPTX
Introduction to Azure DocumentDB
Ike Ellis
Ā 
PPTX
Azure DocumentDB 101
Ike Ellis
Ā 
Storytelling with Data with Power BI
Ike Ellis
Ā 
Storytelling with Data with Power BI.pptx
Ike Ellis
Ā 
Build a modern data platform.pptx
Ike Ellis
Ā 
Data Modeling on Azure for Analytics
Ike Ellis
Ā 
Migrate a successful transactional database to azure
Ike Ellis
Ā 
Data modeling trends for analytics
Ike Ellis
Ā 
Data modeling trends for Analytics
Ike Ellis
Ā 
Relational data modeling trends for transactional applications
Ike Ellis
Ā 
Power bi premium
Ike Ellis
Ā 
Move a successful onpremise oltp application to the cloud
Ike Ellis
Ā 
Azure Databricks is Easier Than You Think
Ike Ellis
Ā 
Pass 2018 introduction to dax
Ike Ellis
Ā 
Pass the Power BI Exam
Ike Ellis
Ā 
Slides for PUG 2018 - DAX CALCULATE
Ike Ellis
Ā 
Introduction to DAX
Ike Ellis
Ā 
60 reporting tips in 60 minutes - SQLBits 2018
Ike Ellis
Ā 
Survey of the Microsoft Azure Data Landscape
Ike Ellis
Ā 
SQL PASS BAC - 60 reporting tips in 60 minutes
Ike Ellis
Ā 
Introduction to Azure DocumentDB
Ike Ellis
Ā 
Azure DocumentDB 101
Ike Ellis
Ā 

Recently uploaded (20)

PDF
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
Ā 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
Ā 
PDF
Doc9.....................................
SofiaCollazos
Ā 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
Ā 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
Ā 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
Ā 
PPTX
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
Ā 
PDF
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
Ā 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
Ā 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
Ā 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
Ā 
PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
Ā 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
Ā 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
Ā 
PDF
Software Development Methodologies in 2025
KodekX
Ā 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
Ā 
PPTX
Simple and concise overview about Quantum computing..pptx
mughal641
Ā 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
Ā 
PPTX
cloud computing vai.pptx for the project
vaibhavdobariyal79
Ā 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
Ā 
Data_Analytics_vs_Data_Science_vs_BI_by_CA_Suvidha_Chaplot.pdf
CA Suvidha Chaplot
Ā 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
Ā 
Doc9.....................................
SofiaCollazos
Ā 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
Ā 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
Ā 
Presentation about Hardware and Software in Computer
snehamodhawadiya
Ā 
Applied-Statistics-Mastering-Data-Driven-Decisions.pptx
parmaryashparmaryash
Ā 
How ETL Control Logic Keeps Your Pipelines Safe and Reliable.pdf
Stryv Solutions Pvt. Ltd.
Ā 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
Ā 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
Ā 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
Ā 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
Ā 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
Ā 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
Ā 
Software Development Methodologies in 2025
KodekX
Ā 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
Ā 
Simple and concise overview about Quantum computing..pptx
mughal641
Ā 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
Ā 
cloud computing vai.pptx for the project
vaibhavdobariyal79
Ā 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
Ā 

14 Habits of Great SQL Developers

  • 1. Ike Ellis, MVP, Crafting Bytes 14 Habits of Great SQL Developers Things you can do to increase your value to everyone
  • 2. Please silence cell phones Please silence cell phones 2
  • 3. Free online webinar events Free 1-day local training events Local user groups around the world Online special interest user groups Business analytics training Free Online Resources PASS Blog White Papers Session Recordings Newsletter www.pass.org Explore everything PASS has to offer PASS Connector BA Insights Get involved
  • 4. Session evaluations Download the GuideBook App and search: PASS Summit 2017 Follow the QR code link displayed on session signage throughout the conference venue and in the program guide Your feedback is important and valuable. Go to passSummit.com Submit by 5pm Friday, November 10th to win prizes. 3 Ways to Access:
  • 5. Ike Ellis Partner, Crafting Bytes Microsoft MVP Since 2011 Frequent PASS Summit Speaker And speak often at SQL Saturdays + maker of youtube videos – Ike’s tips! Author of Developing Azure Solutions Now in 2nd Edition /ikeellis @ike_ellis ellisike
  • 6. • Things great SQL developers have in common • Great for all developers, not just SQL developers • In order to benefit you, not benefit me. • #1, #2, #3 are by far the most important • This isn’t a performance lesson • This isn’t a SQL internals lesson • This isn’t a SQL language best practices lesson • This is a discussion on the personal habits and characteristics and thought patterns of great SQL developers.
  • 7. Habit #2: Testing Best Practices • Use mocking frameworks, begin tran, action, rollback tran, mock data • Never use production data • Love all testing frameworks • tSQLt • Visual Studio • NUnit • SpecFlow – BDD testing • Cucumber/Gerkin • ApprovalTests • At minimum, test that the sprocs, views, and functions actually run with the right arguments
  • 9. Habit #3: Always Be Shipping • Automate, automate, automate • Fold tests into deployment process • Learn a scripting language • PowerShell • Azure CLI • Grant Fritchey says! • Never change an object in production directly • Always go through the deployment pipeline
  • 10. Habit #4: Question, Re-Evaluate, Act • Question your own preconceived notions • Question your own biases • Question the purpose of new technology • Question your own derived answers • Evaluate effect on previous decisions • Change your mind and behavior
  • 12. Habit #5: • Understand The Real Job • Not to write code, but deliver value • Can it all be done in Excel? InfoPath? Power Apps? • It’s more fun to delete code. • Deliver as fast as you can.
  • 13. Habit #6: Software development, at its most fun, is a team sport • Code reviews • Share all information • Teach technology • Teach habits and practices • Teach domain knowledge • Teach code frameworks and architecture • Disseminate information at every available opportunity • Mob Programming
  • 14. Habit #6: Software development, at its most fun, is a team sport
  • 15. Habit #6: Software development, at its most fun, is a team sport
  • 16. Habit #6: Software development, at its most fun, is a team sport • Focus on a single task • Complete it • Test it • Verify functionality and impact on other systems • Check in • Deploy if possible • Work on next item • Avoid silos
  • 17. Habit #7: Fight dependencies
  • 18. Habit #7: Fight dependencies • Normalizing and denormalizing and changing the data model is essential to a good application • Necessary for performance • Necessary to represent changes in the business • Necessary to remove dead features • Necessary to make data exploration and analysis much easier • Necessary to speed application development • T-SQL code is the ultimate dependency • Should be isolated so schema can change • Schema can stay vibrant and relevant
  • 19. Habit #7: Fight dependencies • Avoid change lock • Happens because of dependencies • Lack of testing • Complicated code • Loss of intent
  • 20. Habit #7: Fight dependencies • Views • Stored Procedures • Functions • ORMs • Web APIs ~ REST, SOAP, etc • Come through the front door. Give them an API • Can cause the use of triggers. • EDA – ODS, DW, DM • Never allow direct access to your tables for anything • Adds initial time to development, but keeps the application changeable and flexible
  • 21. Habit #7: Fight dependencies • One application ~ one database • Or at least one software development team, one database • Fight three part names • Database.dbo.tablename • Or even worse, four part names • Servername.database.dbo.tablename • But if you’re going to use four part names • Use DNS Alias (CNAME) • Use Views/Stored Procedures • Keep the coding contract firm and clear • Preferable to use Web API/C#/JS
  • 22. Habit #8: Code for resiliency/code for cloud • Error handling • Flag • Fix • Fail • Connection retry • Short transactions • Deliberate rollback tran • Table update order document
  • 23. Habit #9: Love your tools • Know every option • Know keystrokes and shortcuts • Know code navigation • Know these tools: • SQL Prompt • Visual Studio • SSMS • Profiler • Extended Events • MS Excel
  • 24. Habit #10: Love your language • SQL is a command language • Think like the optimizer • Learn new features: • CONCAT • TRY_CAST • Window Functions • Memory Optimized Tables and Procedures • Columnstore • DROP IF EXISTS • R • Python • JSON
  • 25. Habit #11: High-performance is not created by accident • But it can be created at the last responsible moment • Key to performance is to watch dependencies • Think always about concurrency • Small things are changeable and scalable • Think cloud-scale+
  • 27. Habit #12: Leave it better than you found it • Long stored procedures are the bane of the great developer • Not testable • Hard to change • Bad for performance • Prone to bugs • Prone to have developers avoid understanding it • Hard to navigate • Motorcycle vs Semi-truck
  • 28. Habit #12: Leave it better than you found it • Update and repair ~ weed the garden – constantly • Bad developers work to get the item off their plate so they can do something else • Great developers work so that the item is more enjoyable to work on when they’re asked again
  • 30. Habit #13: Respond with a sense of urgency • Treat it as their most valuable commodity • Things that erode user trust: • Repeated mistakes • Half-done code • Bugs surfacing at run-time • Missed deadlines • Bad listening skills • Not reading the entire email • Things that gain user trust • Doing what you said you do when you said you’d do it • Digging deeper to understand and empathize • Doing their work with them, not for them
  • 31. Habit #14: Time as the most valuable commodity • Record victories in excel, google doc, or better yet: Toggl • Think about time doing plumbing and maintenance • Merging, branching • In meetings • Moving code to production • Maintenance tasks • Repeated tasks • Take ownership of their habits and their time • Make things happen, not happen to them
  • 32. PRIZES TO GIVE AWAY! • Next week I’ll ship 10 posters to winners • Just give me your business card and pick which poster you want. I’ll send it to you.
  • 33. Thank You Learn more from Ike Ellis [email protected]@ike_ellis
  • 34. ALL DONE! Ike Ellis @ike_ellis Crafting Bytes We’re hiring a Data Experts! Microsoft MVP Chairperson of the San Diego TIG Book co-author – Developing Azure Solutions Upcoming course on Azure Data Lake www.craftingbytes.com www.ikeellis.com