SlideShare a Scribd company logo
Adventures in Programming, Automating, Teaching
and Marketing
Alan Richardson
— EvilTester.com
— @EvilTester
— compendiumdev.co.uk
— digitalonlinetactics.com
@EvilTester 1
You Have Evolved
"I Can Code!"
We have evolved to a point where we can survive in a world of
Software
Note: does not need to be programming - any
software development role has enhanced survival
abilities.
@EvilTester 2
Survive
"We can survive"
— Normal people.
— Non-programmers.
May not be able to survive.
@EvilTester 3
Requisite Variety
Cybernetics:
— "Variety can destroy variety" - Ross Ashby
— "Variety can absorb variety" - Stafford Beer
@EvilTester 4
Thrive
"We don't want to just Survive, we want to Thrive"
if( PROGRAMMER & TESTER &
ARCHITECT & DESIGNER &
AUTOMATOR & MARKETEER &
TEACHER & OPS){
return SOFTWARE_DEVELOPER;
}
— You May Not Want to Admit It
@EvilTester 5
Aspire to be a Software
Developer
@EvilTester 6
Getting started is the
hardest part.
@EvilTester 7
@EvilTester 8
Read More code
@EvilTester 9
We used to be exposed to a lot more code
— Mainstream Magazines
— Multiple Languages
— Multiple Platforms
— Aimed at kids
@EvilTester 10
Bug Detection was for Winners
@EvilTester 11
@EvilTester 12
Polyglot by Default
@EvilTester 13
@EvilTester 14
Osmosis
@EvilTester 15
@EvilTester 16
It wasn't all good though
@EvilTester 17
@EvilTester 18
Learn from Super Stars
@EvilTester 19
@EvilTester 20
Now it is all in our
browser
@EvilTester 21
@EvilTester 22
So Much Code Available
— Read Code on Github
— look for codepen (etc.) runnable examples
— YouTube live coding videos
— etc.
People wanted the 'one true book'. Immersion is
what it really took.
@EvilTester 23
Writing frameworks is too
much fun and should be
banned
@EvilTester 24
"Dear Alan,
I have just started learning
Selenium WebDriver and Java and
I am going to write a framework to
make it easy for anyone to use
WebDriver and Java..."
@EvilTester 25
"...where do I start?"
"Thanks,
Someone Who Wants To Save The
World"
@EvilTester 26
There is nothing wrong
with wanting to save the
world
@EvilTester 27
But don't make that the
first thing you try to do
@EvilTester 28
What they meant was
— I'm finding it hard to learn this stuff
— I keep making mistakes
— Automating is hard
— It seems easier to write the support code
— I Want a Job For Life
@EvilTester 29
What they needed
— Create solutions to problems
— Learn and gain experience
— Refactor to generalised abstractions
— Build libraries rather than frameworks
— Refactor back to inline code
@EvilTester 30
Frameworks are
Incredibly hard to build
well and require a lot of
experience
@EvilTester 31
Dangers of knowing how
to code
@EvilTester 32
Every problem looks like a
reason to create a Tech
Startup...
@EvilTester 33
... or a framework, or a
system, or an application,
or code
Every Problem!
@EvilTester 34
Problems with Twitter
Feed not displayed in time order
Cannot filter tweets - too much
noise
What choice did I have?
@EvilTester 35
ChatterScan
.com
@EvilTester 36
Solved Problem with Tools Known at the time
— I did review other tools - Twitter clients, but...
— I found the easiest reliable Twitter API wrapper I
could find
— I had an MVP working in hours
— I now have a 'thing'
@EvilTester 37
"Normal" might not get as
far as tools.
"Normal" stops at tools.
DANGER - Coder Goes Further
@EvilTester 38
The Ultimate Secrets of Coding (*)...
which I give away while training beginners
— (*) (some of the secrets)
@EvilTester 39
But each secret is a
surface structure
Deeper model comes with
experience
@EvilTester 40
Applications are just
"code calling other
libraries"
The Secret is to find the right
libraries
@EvilTester 41
But the art is in...
— choosing a library for: easy of use? efficiency?
authority?
— abstracting it away or not?
— trusting it, or testing it?
@EvilTester 42
Programmers Don't
Actually Remember
Anything
Google -> StackOverflow
@EvilTester 43
But the Art is in ...
— wrapping the copied code in a test
— refactoring it into our domain
— taking responsibility for it
@EvilTester 44
IDEs write and fix code
Press Alt+Enter repeatedly, don't
remember syntax.
Control+Space and Code
completion, don't try and
remember library functionality.
@EvilTester 45
But the art is in...
— the design, not the syntax
— writing what we want to see
@EvilTester 46
Programmers Don't
Actually Run the App to
see if it works
Unit Tests
Continuous Integration
@EvilTester 47
But the art is in...
— creating a trust building assertion safety net
— creating a robust execution mechanism
@EvilTester 48
Everything you need to
know you can learn from
writing Text Adventures
@EvilTester 49
Coding Them
@EvilTester 50
You Learn
— Parsing, Tokenisation
— Domain Specific Languages
— Writing Interpreters
— Data Generation
— Data Structures
— Data Compression
— Engines
— Incremental releases, System, MVP
@EvilTester 51
No Limit
— Web Apps
— REST API
— Multi-User
@EvilTester 52
Coding Not Always Required
— finished games
— using an engine
— data driven
— learn design
— DSL creation
@EvilTester 53
Playing Them
— Architecture Mapping
— Testing
— Exploring
— Reverse Engineering
@EvilTester 54
Marketing
— Solve Problems
— Solution Development
@EvilTester 55
Solution Development
— Code for individual joy and fun
— Survival not the end goal
— Thrive as a Software Developer
— Build Solutions rather than Software
— Help other people Thrive
@EvilTester 56
Aspire to be a Solution
Developer
@EvilTester 57
End
Alan Richardson
EvilTester.com
https://twitter.com/eviltester
@EvilTester 58
Games shown
— https://www.compendiumdev.co.uk/games/
buggygames/
— https://www.compendiumdev.co.uk/page/
restmud
@EvilTester 59
References
— various screenshots of magazines from
archive.org
— MUD MUD: Messrs Bartle and Trubshaw's
Astonishing Contrivance
— https://www.youtube.com/watch?
v=YfX8Z8W9JCE
@EvilTester 60
About Alan Richardson
— EvilTester.com
— CompendiumDev.co.uk
— Talotics.com
— @EvilTester
@EvilTester 61

More Related Content

PDF
Odinstar 2017 - Real World Automating to Support Testing
PDF
Test Automation Day 2015 Keynote Alan Richardson - Practical Lessons Learned ...
PDF
Automating Pragmatically - Testival 20190604
PDF
How To Test With Agility
PDF
Push Functional Testing Further
PDF
Your Automated Execution Does Not Have to be Flaky
PDF
Secrets and Mysteries of Automated Execution Keynote slides
PDF
The Future of Testing Webinar
Odinstar 2017 - Real World Automating to Support Testing
Test Automation Day 2015 Keynote Alan Richardson - Practical Lessons Learned ...
Automating Pragmatically - Testival 20190604
How To Test With Agility
Push Functional Testing Further
Your Automated Execution Does Not Have to be Flaky
Secrets and Mysteries of Automated Execution Keynote slides
The Future of Testing Webinar

What's hot (20)

PDF
Effective Software Testing for Modern Software Development
PDF
Test Bash Netherlands Alan Richardson "How to misuse 'Automation' for testing...
PDF
Add More Security To Your Testing and Automating - Saucecon 2021
PDF
Automating Strategically or Tactically when Testing
PDF
Devfest 2019-slides
PDF
Technical and Testing Challenges: Using the "Protect The Square" Game
PPTX
Risk Mitigation Using Exploratory and Technical Testing - QASymphony Webinar ...
PDF
Automating Tactically vs Strategically SauceCon 2020
ODP
How to Improve Your Technical Test Ability - AADays 2015 Keynote
PDF
If you want to automate, you learn to code
PDF
Practical Test Automation Deep Dive
PDF
What is Regression Testing?
PDF
Confessions of an Accidental Security Tester
PDF
Technical Testing Webinar
PDF
Automating to Augment Testing
PDF
Black Ops Testing Workshop from Agile Testing Days 2014
PDF
Evil testers guide to technical testing
PDF
Technology Based Testing
PDF
TestWorksConf 2015 Keynote Test Automation Conference Amsterdam
PDF
TestIstanbul May 2013 Keynote Experiences With Exploratory Testing
Effective Software Testing for Modern Software Development
Test Bash Netherlands Alan Richardson "How to misuse 'Automation' for testing...
Add More Security To Your Testing and Automating - Saucecon 2021
Automating Strategically or Tactically when Testing
Devfest 2019-slides
Technical and Testing Challenges: Using the "Protect The Square" Game
Risk Mitigation Using Exploratory and Technical Testing - QASymphony Webinar ...
Automating Tactically vs Strategically SauceCon 2020
How to Improve Your Technical Test Ability - AADays 2015 Keynote
If you want to automate, you learn to code
Practical Test Automation Deep Dive
What is Regression Testing?
Confessions of an Accidental Security Tester
Technical Testing Webinar
Automating to Augment Testing
Black Ops Testing Workshop from Agile Testing Days 2014
Evil testers guide to technical testing
Technology Based Testing
TestWorksConf 2015 Keynote Test Automation Conference Amsterdam
TestIstanbul May 2013 Keynote Experiences With Exploratory Testing
Ad

Similar to Joy of Coding Conference 2019 slides - Alan Richardson (20)

PPTX
Shut Up And Eat Your Veg
PDF
97 thingseveryprogrammershouldknow
PDF
Selective 97 things every programmer should know
PDF
Sacrificing the golden calf of "coding"
PDF
Killing the golden calf of coding - We are Developers keynote
PDF
How To Win At Software - Advice for New Engineers - by Gabe Johnson
PPTX
11 rules for programmer should live by
PDF
How To Be A Real Developer In Two Easy Steps
PPTX
MagmaRails - Passionate Programmer
PPTX
Passionate Programmer
PDF
The Developers World
PPTX
Developers Best Practices
KEY
Essential programmer library
PDF
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
PPTX
Developing an Engineering Mindset by Junaid Javed
PPTX
30% faster coder on-boarding when you have a code cookbook
PDF
Binary crosswords
PDF
Surviving a Hackathon and Beyond
PPTX
My Dream Job ITC By Jhundelito G. Abiera II
PDF
Culture And Aesthetic Revisited
Shut Up And Eat Your Veg
97 thingseveryprogrammershouldknow
Selective 97 things every programmer should know
Sacrificing the golden calf of "coding"
Killing the golden calf of coding - We are Developers keynote
How To Win At Software - Advice for New Engineers - by Gabe Johnson
11 rules for programmer should live by
How To Be A Real Developer In Two Easy Steps
MagmaRails - Passionate Programmer
Passionate Programmer
The Developers World
Developers Best Practices
Essential programmer library
"Startups, comment gérer une équipe de développeurs" par Laurent Cerveau
Developing an Engineering Mindset by Junaid Javed
30% faster coder on-boarding when you have a code cookbook
Binary crosswords
Surviving a Hackathon and Beyond
My Dream Job ITC By Jhundelito G. Abiera II
Culture And Aesthetic Revisited
Ad

More from Alan Richardson (15)

PDF
Open source tools - Test Management Summit - 2009
PDF
Programming katas for Software Testers - CounterStrings
PDF
About Consultant Alan Richardson Compendium Developments Evil Tester
PDF
Shift left-testing
PDF
Automating and Testing a REST API
PDF
TDD - Test Driven Development - Java JUnit FizzBuzz
PDF
What is Testability vs Automatability? How to improve your Software Testing.
PDF
What is Agile Testing? A MindMap
PDF
Evil Tester's Guide to Agile Testing
PDF
The Evil Tester Show - Episode 001 Halloween 2017
PDF
Simple ways to add and work with a `.jar` file in your local maven setup
PDF
Re-thinking Test Automation and Test Process Modelling (in pictures)
PDF
Learning in Public - A How to Speak in Public Workshop
PDF
How to Practise to Remove Fear of Public Speaking
PDF
FAQ - why does my code throw a null pointer exception - common reason #1 Rede...
Open source tools - Test Management Summit - 2009
Programming katas for Software Testers - CounterStrings
About Consultant Alan Richardson Compendium Developments Evil Tester
Shift left-testing
Automating and Testing a REST API
TDD - Test Driven Development - Java JUnit FizzBuzz
What is Testability vs Automatability? How to improve your Software Testing.
What is Agile Testing? A MindMap
Evil Tester's Guide to Agile Testing
The Evil Tester Show - Episode 001 Halloween 2017
Simple ways to add and work with a `.jar` file in your local maven setup
Re-thinking Test Automation and Test Process Modelling (in pictures)
Learning in Public - A How to Speak in Public Workshop
How to Practise to Remove Fear of Public Speaking
FAQ - why does my code throw a null pointer exception - common reason #1 Rede...

Recently uploaded (20)

PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Approach and Philosophy of On baking technology
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Modernizing your data center with Dell and AMD
PDF
KodekX | Application Modernization Development
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Machine learning based COVID-19 study performance prediction
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Approach and Philosophy of On baking technology
Digital-Transformation-Roadmap-for-Companies.pptx
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Mobile App Security Testing_ A Comprehensive Guide.pdf
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
20250228 LYD VKU AI Blended-Learning.pptx
Modernizing your data center with Dell and AMD
KodekX | Application Modernization Development
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
The Rise and Fall of 3GPP – Time for a Sabbatical?
Machine learning based COVID-19 study performance prediction
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Reach Out and Touch Someone: Haptics and Empathic Computing
The AUB Centre for AI in Media Proposal.docx
Chapter 3 Spatial Domain Image Processing.pdf
Advanced methodologies resolving dimensionality complications for autism neur...
Diabetes mellitus diagnosis method based random forest with bat algorithm

Joy of Coding Conference 2019 slides - Alan Richardson