Adventures in Testing, Programming, Teaching, Automating and Marketing
When you already know how to code, it's easy to forget how hard some of that learning was... until you have to teach people. And if all you've ever built are applications, you don't know really know the nuances of writing code to automate them. And if you've written the code but never had to market the applications then you've not really experienced the full joy of coding.
In this presentation Alan will revisit many of his past projects to identify lessons learned. Lessons from: writing commercial and open source tools, multi-user adventure games, REST APIs, test automation, automating applications to make them do things they are not supposed to do, and coding for technical marketing.
Some lessons we will learn:
* The 'install' is the hardest part
* Writing frameworks is too much fun and should be banned
* Applications are just "code calling other libraries"
* Writing a Text Adventure s the most fun and educational thing you'll ever code
* The Dangers of knowing how to code
We will also learn the dangers of knowing how to code and discover how our coding skills can give us an edge, in business and online live in general, if we choose to harness our skills to improve our daily experiences.
ICT role in 21st century education and its challenges
Joy of Coding Conference 2019 slides - Alan Richardson
1. Adventures in Programming, Automating, Teaching
and Marketing
Alan Richardson
— EvilTester.com
— @EvilTester
— compendiumdev.co.uk
— digitalonlinetactics.com
@EvilTester 1
2. 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
5. 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
23. 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
25. "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
26. "...where do I start?"
"Thanks,
Someone Who Wants To Save The
World"
@EvilTester 26
27. There is nothing wrong
with wanting to save the
world
@EvilTester 27
28. But don't make that the
first thing you try to do
@EvilTester 28
29. 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
30. 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
37. 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
38. "Normal" might not get as
far as tools.
"Normal" stops at tools.
DANGER - Coder Goes Further
@EvilTester 38
39. The Ultimate Secrets of Coding (*)...
which I give away while training beginners
— (*) (some of the secrets)
@EvilTester 39
40. But each secret is a
surface structure
Deeper model comes with
experience
@EvilTester 40
41. Applications are just
"code calling other
libraries"
The Secret is to find the right
libraries
@EvilTester 41
42. 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
56. 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
57. Aspire to be a Solution
Developer
@EvilTester 57