How to How-to
Or, Tips for Effectively Educating New Developers
Dan Gribbin
@dangribbin
Me:
Front End Engineer
Brand Networks
Web Dev classes in Rochester
Records
Baseball
Coffee
Bro, do you even Aeropress?
I work with...
Software Engineers
Front End Engineers
Interaction Designers
QA...folks
Project Managers / Scrum Masters
bn.u
Fridays at 3pm
Beer + Learning
At one time, we all knew nothing about our jobs...
...and that's unfortunately easy to forget
Learning new things
is a crucial part of doing your job!
Things that change in our field:
All the things.
Hardware → Software
Possibilities → Realities → Expectations
Teaching can be hard. Why?
We have generally have a terrible memory about the learning process
Which means...
We sometimes take our knowledge for granted
Which means...
Teaching what we know can be difficult
Why be a teacher?
Enhance your leadership skills
Have positive influence on developer's careers
Your dev team will thank you!
Teaching Effectively - Some tips on 'how'
Adapt your teaching style to your trainee's learning style.
Be Inspirational!
Make real learning happen.
The way you teach makes a difference!
A few influences on learning:
-
Learning style preference
- Personalities
- Co-workers
- Goals
-
Interests
-
Learning style preference
- Personalities
- Co-workers
- Goals
-
Interests
On Learning Styles
A very short, shallow Cognitive Psychology lecture from a non-expert
Two hemispheres in every brain
Right side- creative processing
Left side- logical processing
Some people's processing skills are dominated by one or the other, and some neither.
Which means...
People learn effectively and process info in different ways.
(end of lecture)
Recognition of distinct learning preferences allows you to customize the teaching process.
Two Common Learning Styles
Analytical/Logical
(bottom-up, left-brained)
Creative/Visual
(top-down, right-brained)
For Creative/Visual Learners
A top-down/holistic approach can be effective.
Show where you intend to end up.
Use a progressively fine-grained examination of the topic.
Teach with examples and demonstrations.
For Logical Learners
Effective learning begins with understanding the most basic elements of the subject.
Problem solving involves a logical, linear progression of thoughts.
"Because I know this, I can assume that" etc.
For Logical Learners
We need deep examinations of "why?"
Q: Why is this CSS selector being overridden?
A: An ID has a higher specificity than a class.
...but what the heck is specificity?
Effective learning happens step-by-step
Avoid advanced concepts until the basics are down pat.
Match your teaching style with a developer's learning style
Getting a sense for learning preference
Ask questions!
How do you learn best?Tell me about a time you struggled to learn something.If you had to learn a new technology, where would you start?
YMMV, but...
"The best predictor of future behavior is past behavior"
-My psychologist girlfriend and other people smarter than me
But, give it a try!
Be Inspirational!
"If you want to build a ship, don't drum up people to collect wood and don't assign them tasks and work, but rather teach them to long for the endless immensity of the sea."
- Antoine de Saint-Exupery
In other words: encourage curiosity!
Set an example of inspiration.
Be Inspirational, part deux
Have empathy
Encourage an optimistic attitude
Show respect
The best learning happens when solving real problems.
Get new devs in the trenches!
...even if they aren't ready.
Teaching new devs- When?
If you're in a classroom setting,
this is easy.
If you're in a job setting,
finding time to teach new devs
can be difficult.
When then?
Pair Programming
Code Reviews
Stupid Question Sessions
What topics should I prioritize when teaching new developers?
(An incomplete list.)
Critical thinking
Separating Concerns
Resourcefulness
Code reusability
Technical things
Debugging (HTML, CSS, JS)
Tools (debugging, development)
(knowing how they work)
1. Critical Thinking
Teach understanding of the concepts behind any technology used.
What is HTML for?
What is it without CSS?
How should the two work together?
2. Separating Concerns
HTML | CSS | JS
Don't mix structure, style, and functionality
When a developer applies critical thinking to the technologies they use, separating concerns comes more naturally!
3. Resourcefulness / Small Victories
Get new devs using community-developed tools.
small victories | smɔːl ˈvɪktərɪz
plural noun
The daily ego-boosters that deliver small doses of pleasant-feeling chemicals to your brain when you do something good that makes you want to keep doing that one thing.
For new devs, make it as easy as possible to achieve small victories.
4. Code Reusability
Encourage reusable CSS classes and abstracted JS functionality.
Instead of this:
Do this:
$('.element').on('click.closeButton', handleCloseButtonClick);
function handleCloseButtonClick(){
// Re-usable! Put your functionality here...
}
$('.element').on('click.closeButton', function(){
$('.someDiv').animate({opacity: 0, 'left', '-25px'}, function(){
$('.someDiv').hide().css({'opacity':'1', 'left':'0px'});
});
$('.element').whatever().somethingElse(); });
A Few Final Thoughts
New devs are eager to learn and build. More experienced developers can either be intimidating or inspiring.
Be inspiring!
A new dev's best weapon is his own curiosity.
Hiring passionate, curious developers goes a long way towards encouraging the learning process.
Thanks.
How to How-to
By Dan Gribbin
How to How-to
- 5,020