Skilling up to code with data
Steph Locke (@SteffLocke)
2017-04-20
Agenda
- Why code with data
- What coding languages can be used
- Coding best practices
- Source control
- Testing
- Continuous testing (& deployment)
- Coding your infrastructure
- Wrap up
Have any of these happened to you?
- Someone changed a database in production and now everything has gone Pete Tong
- Someone changed a report and now someone says the numbers are wrong, but what was changed?
- Someone deleted the spreadsheet on the F:/ drive
Have any of these happened to you?
- All the charts in a Word report are pictures, now you have to go through the spreadsheet again and make them
- None of the charts in a Word report were pictures, someone played with spreadsheet, and now you have to go through and put it all back the way it was
- Someone wants some new information in a report and you have to amend the SQL, the pivot charts, the reports, the text
Have any of these happened to you?
- The auditors want to know how you know you’re right
- Someone decided to change the company font and all the reports must conform by YESTERDAY
- Someone didn’t set the range up on Excel correctly and the report has been missing data for months
Positives!
- Reproducible
- Controllable
- Auditable
- Extendible
What coding languages can be used?
Excel
Not everything has to be coded
Hello world
- Hello world!
- KISS
- DRY
- Modularise
- Test, test, test
- Document as you go
Style
- White space
- Comments
- (Sometimes) bigger is better
- Consistency
Paradigms
Take the time to learn about how the language works
- Procedural
- Declarative
- Functional
- Object-Oriented
Commandment
Thou shalt source control all the things 
Why?
Coz reasons
- a backup system for your code
- a means of tracking why you made changes
- a way of sharing code
- a system for multiple people to work safely
- another potential way to deploy code manually
- options for automated testing and deployment
- audit trails
Core concepts
- Centralised vs Distributed
- Repository
- Branch
- Commit
Commandment
Thou shalt always test before committing
Types of tests
- Unit
- Functional
- User
- Smoke test
- Reconciliation
Unit testing
Test discrete bits of code
- Success
- Errors
- Warnings
- Edge cases
- Bugs
Continuous testing (& delivery)
Why do it?
- Avoid works on my machine
- Verify that everyones changes work
- More faith in the product
- Less time spent manually doing it
Why do it?
- Avoid infrastructure!
- Confidence in the environments
- Time saving
Containers
- Contained code
- Scripted infrastructure
- Bundled dependencies
- Lower maintenance than VMs
- Docker
Why code?
- To save time
- To be right and know it
- To be replacable
What to code?
From databases to reports, you can code it!
Where to go from here?
- Get this online & use the various links
- Get started!
- Keep in touch: @SteffLocke