Keynote from ACCU 2015 conference (http://accu.org/index.php/conferences/accu_conference_2015)
@petegoodliffe
www.goodliffe.net
Synopsis:
You've come this conference to improve your skills. You're here to learn: to learn new technologies, to learn new techniques, and to fuel your passion by meeting like-minded people.
Becoming a better programmer means more than just learning new technologies. It means more than practising techniques and idioms. It's about more than passion and attitude. It's the combination of all these things. That's what this session will look at.
Pete Goodliffe, author of the new book Becoming a Better Programmer, unpacks important mindsets and techniques that will help you improve as a programmer.
You'll discover specific tools that will help you review your current skillset, and you'll learn techniques to help you “become a better programmer”.
24. “
PHYSICIAN, QUOTE THYSELF...
Pretty early in any programmer’s career comes the realisation
that there’s more to being a great coder than a simple
understanding of syntax and a mastery of basic design. The
awesome programmers, those productive people who
craft beautiful code and work effectively with other people,
know far more. There are methods of working,
attitudes, approaches, idioms, and techniques
you learn over time that increase your
effectiveness. There are useful social skills, and a
whole pile of tribal knowledge to pick up.
Pete Goodliffe (Becoming a Better Programmer)
42. unskilled
fail to realise own ineptness
skilled
underestimate their relative competence
assume others are as good
Models of learning
43. “
Models of learning
The miscalibration of the
incompetent stems from
an error about the self,
whereas the miscalibration
of the highly competent
stems from an
error about others.
David Dunning and Justin Kruger
"Unskilled and Unaware of It: How Difficulties in Recognizing One's Own Incompetence Lead to
Inflated Self-Assessments". Journal of Personality and Social Psychology
48. novicerule-centric, no judgement
advanced beginner
breaks from rules, gets stuck, can get answers, can’t filter
competent
mental model, plan routes, solves unknown problems
proficient
corrects previous errors, learns from others,
interprets maxims, has tacit knowledge
expert
authority, interlinked with other skills, intuition
Models of learning
49. aid learning
describes you can learn right now
teamwork
how you work with others in your team
Models of learning
56. “
10,000
The theoretical framework presented in this article
explains expert performance as the end result of
individuals' prolonged efforts to improve performance
while negotiating motivational and external constraints.
In most domains of expertise, individuals begin in their
childhood a regimen of effortful activities
(deliberate practice) designed to optimize improvement.
Individual differences, even among elite performers, are
closely related to assessed amounts of deliberate practice.
Many characteristics once believed to reflect innate
talent are actually the result of intense practice
extended for a minimum of 10 years. Analysis of
expert performance provides unique evidence on the
potential and limits of extreme environmental adaptation
and learning.
K. Anders Ericsson, Ralf Th. Krampe,
and Clemens Tesch-Romer
The Role of Deliberate Practice in the Acquisition of Expert Performance
K. Anders Ericsson, Ralf Th. Krampe, and Clemens Tesch-Romer, 1993
69. THE PRACTICE OF PROGRAMMING
know what software
development is
define
cultural rules
keep it
simple
use your
brain
nothing is set
in stone
“correct”
code reuse
effective
version control
working with
QA
“code freeze”
making software
releases
70. PERSONAL SKILLS
learn to learn
know what makes
a “good” developer
seek out fulfilling
challenges
avoid
stagnation
act ethically
love languages;
learn them adopt good
posture
work smarter;
not harder
define what
“done” looks like
focus to find
the solution
71. WORKING WITH OTHERS
work well
in a team
accountability
communication skills
manifestos, rules,
tribal knowledge
(an ode to code)
dealing with
conflict
74. “
Learning
The more that you read,
the more things you will
know. The more that you
learn, the more places
you'll go.
Dr. Seuss, I Can Read With My Eyes Shut!
85. HOW WILL YOU LEARN
IN EACH SESSION?
WHAT INFO DO YOU NEED
IN EACH SESSION?
ASK APPROPRIATE
QUESTIONS
86. Questions... (keynote version)
LOOKING AT THE TIMETABLE:
WANT WILL YOU EXTEND
YOUR KNOWLEDGE ABOUT?
WHAT WILL YOU LEARN
AS A NOVICE?
HOW WILL YOU SHARE YOUR
KNOWLEDGE WITH HUMILITY?
HOW WILL YOU ENSURE THAT
YOU IMPROVE YOUR
PROGRAMMING SKILLS?
(it’s easy to coast!)
87. Questions...
DO YOU WANT TO GET BETTER?
WHAT’S IN IT FOR YOU?
WHAT IS YOUR MOST DIFFICULT
ISSUE AT THE MOMENT?
WHAT WILL YOU WORK ON?
(does this benefit you or the team?)
HOW WILL YOU ENSURE THAT
YOU DO IMPROVE?