SlideShare uma empresa Scribd logo
1 de 38
Baixar para ler offline
The Care and Keeping of Your
Junior Developer
Bonnie Mattson @BonMatts
Why Junior Developers
- Aren’t enough senior developers
- Hiring picasso to paint your apartment
- Senior developers tend to be set in their ways
- With talented management, and good process, junior
developers can fill some of the talent void
Junior Developers are great!
“Helping grow someone into a fully functioning member of
the team makes our team stronger in the long run, and
helps us pass along good process and behavior practice
into the organization.”
Overview
1. Survey
2. Positive Company Culture
3. Mentorship/Guidance
4. Clear Expectations
5. Advice for Junior developers
Survey Demographics
Gender Identity
women 63%
men 29%
genderqueer 4%
no answer 4%
Experience
< year 22%
1-5 years 40%
10 years 19%
>10 years 19%
Job Level
junior 31%
mid 41%
senior 24%
other 4%
You are going to fail.
Do you get imposter syndrome?
“Often. Writing about whatever I was doing, and having
other developers bring it up later was a great confidence
boost”
“I finally became comfortable calling myself a software engineer
around the time I became a team lead. Until then it just seemed
too rarified a title for me. Recognizing (or probably more so,
others expressing) how advanced my skills were compared to my
colleagues.”
“Constantly. I started programming late in life compared to most,
and even once I get good at it, I'm not sure it's possible to get fully
caught up with someone who is my age or younger with 5 or more
years of experience on me, or even someone with the same
length of experience who has had the luxury of more learning
time.”
“ [It was frustrating] not knowing if difficulties were because
I didn't understand something or because it was not well
designed, broken, etc.”
Positive Company Culture
Combating Imposter syndrome!
- Overall Positive environment
- Diversity
- A culture of sharing knowledge
Don’t be this cat.
“[I found it frustrating] when I wouldn't get
something and a team member would say things
like "How are you not getting this?" and becoming
clearly frustrated when I wasn't getting something
right away. This was so discouraging.”
“ [When I had questions, I ] struggled, asked
the internet. Asked senior team members as
a last resort, knowing that the response I'd
get would be rude and condescending.“
“ [When I had questions ] I asked people.
Or, I hid in the stairwell because I was
afraid to ask them, because they clearly
didn't want to be asked. I hid in the
stairwell a lot.”
- No Feigning Surprise
- No well-actually's
- No back-seat driving
- No subtle -isms
Hacker School Code of Conduct
https://www.hackerschool.com/manual
Culture and Communication
“ [I got over my imposter syndrome through] transparency and
feedback. It's scary and vulnerable to open yourself up, and it
is up to the senior developers and managers to lead by
example and create social norms where it is safe to do so, but
there is no way to get a sense of how well you are doing
relative to others without both of you working out in the open.”
“The most valuable-for-my-career class I took in college was actually a
poetry class, where I learned to think very carefully and systematically
about word choice, metaphor and creative collaborations. “
“ [I found it helpful to ] Just watch people program . . . it helps
make it clear what things are ‘normal’.”
“Communication is far more important than technology skill.
Flat or no hierarchy means it is implicit.”
“ I am lucky though because I have a great co-worker
who is always available to answer anything for me.
Knowing that I have that is very empowering.”
Diversity
A comfortable developer is quicker to adapt,
and consequently more productive.
Culture of Knowledge
- Project Presentations
- Education Budget
- Company Library
- Experienced programmers given time to share
their knowledge
Mentorship/Guidance
- Direct mentorship
- Positive feedback
- Documentation
- Pairing/ Code reviews
What makes a good mentor?
“I've not had any good [mentors]. Some were not available enough.
Some assumed that because they were senior they had nothing to
learn from juniors.“
“ [a good mentor is] someone willing to listen and take time
to explain, even if they've got their own deadlines to fight.
I've learned the most from sitting with some of the brightest
people at the company to figure out a problem, and would
consider them an excellent mentor.”
“A good [senior developer] is one who sets a good example by
consistently doing good work and writing good code and do
helpful code reviews.”
“Explaining why a certain approach works. Passion for coding.
Helping think about a problem or approach.”
“I rarely had someone knowledgeable to ask questions. I
had to figure most things out on my own. I would have loved
to have a more senior, knowledgeable person to learn
from.”
“A lack of ego, patience and the ability to trouble-shoot *why* a
junior developer is having a particular problem and address the
underlying problem (ideally while teaching the developer the skills to
do that for themselves in the future.) It's all about that extra step that
the junior developers might not know they should be taking.”
Senior Devs = College Professors
Teaching is part of the Job.
Time Management
One cannot mentor while also maintaining a full
workload of a senior dev. Productivity will
decrease.
Positive Feedback Chart
Positive
Negative
Specific General
It was really smart how
you made that method a
helper and re-used it in
other parts of the code.
That was really DRY!
Nice job!
Looks Good!
Your code looks
really bad.
That was terrible.
This code does not
follow the style guide
for these specific
reasons. Might I
suggest these
revisions?
Positive Feedback
Compliment sandwich!
“Thank you for reporting that bug! It would be helpful
if you could let us know which version of the code you
found it in. The detail you did provide on recreating
the bug was excellent!”
Thoughts on Feedback
“Having the right manager is really key. My original manager was
great with former interns, but I had another manager come on
and he hadn't worked with programmers as inexperienced as I
was. At some point he gave me feedback, and while I'm usually
super fond of feedback, he gave it in a subpar manner, made me
stress out thinking I was going to get fired. He didn't know how to
give positive comments to push me forward when I was already
really down on myself because the whole experience was
frustrating.”
“Getting the first job with comprehensive code reviews, short,
small projects, rapid iterations and realistic expectations was
amazing. Feedback is the most useful learning tool, second is
the chance to see the code of more experienced developers
and third is trying a bunch of different things to develop
personal experience. But without useful feedback, just trying a
bunch of different things doesn't necessarily lead to progress.”
“[A good mentor has ] patience and solid constructive
criticism of code and other behaviors. Immediate or
quick feedback on issues 1-2 days. Ability to mold
aptitude into ownership and responsibility.”
Thoughts on documentation
“I say I found documentation useful - but that's only
true when it was GOOD. Most of it was wrong or
incomplete which was not helpful. People should
write better. “
“The biggest struggle I faced as a junior was a lack of documentation, lack
of process, lack of chain of command, and the rude attitudes of other
developers with 'holier than thou' attitudes.”
“There was a senior person to me on the team,
but he was grouchy and mostly didn't want to
be bothered. I learned a lot on my own, and
wrote documentation for the next people to
come along.”
“People. People, people people. Searchable documentation.”
“Stepping into a new position and not having any documentation for
getting our software up and running. Knowing that there are small
bugs I could be helping with, but not being able to access them.
Bug documentation that doesn't specifically point to the problem. “
Documentation!
- Inline
- Internal wiki
- Requirements
- Unit tests
Thoughts on Pairing
“I work at a pairing company, and after my first month of
pairing and getting to know the codebase, I did a one
month solo project where I built out some admin tools. It
really helped to have that time to integrate the things I'd
been learning from pairing and find the holes in my
knowledge.”
“Pairing sessions are the most helpful for tracking down
and resolving difficult bugs. Both mentor and mentee will
get the most of the pairing sessions if they had done some
prep work beforehand. Pairing helps the mentee see ways
to be more productive on the command line.”
“Pairing is amazing, but I still have a hard time
driving when I know significantly less than the
person I'm pairing with. (I also find it challenging
to be the senior pair with our new interns — both
sides of junior/senior pairing are pretty
challenging.)”
“Pair programming was both good and bad. I needed
some solo time otherwise I couldn't figure out how to do
the same things that I did yesterday. However, my
questions were more easily answered with pair
programming.”
Pairing!
- Mutually beneficial
- Juniors pairing with
juniors
- Set time aside for pairing
-Offer and ask to pair
Code reviews
- efficient use of time
- reviewee should explain work
- how requirements were met
- how they came up with the implementation
- reviewer should provide constructive feedback
The benefits of mentoring a junior developer
“I really enjoy being able to watch their code improve, their confidence grow and
building a team that shares the vocabulary to collaborate effectively. I'm good at
figuring out why other people are doing what they are doing, which makes me an
effective mentor. Plus they are really impressed when I can remote-diagnose their
bugs: it gives me perspective on how far I have come and highlights the useful skills I
have.”
“They're more willing to try different approach - not stuck in old
patterns.They learn quickly, ramp up - more visible progress
since there's so much to absorb initially”
“That time and energy is an investment which, when it
starts to pay off, is rewarding both in terms of increased
productivity, and having another great person to bounce
ideas around with.”
“I probably learned a different skill set from talking
to a newer developer and finding out [their]
interests and experience... and we were able to
build a working relationship that way.”
What do you wish you knew before your first developer job?
“How to tie my very theoretical and abstract
education into actual day to day work. They have
seemed very disconnected until recently.”
“Processes and best practices for certain
programming tasks.”“Knowing how to use tools.”
“More linux, more terminal stuff. How
to cut up text files at a terminal
prompt. More scripting languages.”
“Process workflow. How public and
private keys work.
How to setup a dev environment.”
[I] wish I'd known how much of the development process does not involve
actual programming.
“Wish I knew a little bit more devOps stuff.”
Clear Expectations
- Process!
- Reasonable Goals
- Well-written Requirements
Process!
- Methodology
- Ownership/responsibility
- Basic DevOps
Goal Setting
“ I wish I had a mentor to help me set time goals in
correlation with the size and speed of the project, eg: "If you
get stuck, only let yourself struggle for one hour before
coming to me for help."
“Structure is really important. Need to have clearly defined goals
for learning.”
“[I found] Tasks that are far past my skill level with little support to
complete them [frustrating]. Not being allowed input on my own
estimates.”
“A good mentor give[s] the mentee helpful expectations :
intersection of business needs and tasks where the mentee
stretches himself/herself but is able to finish the task.”
“[I found] projects with clear goals [helpful], or project
management that lead to clear goals.”
Reasonable Goals
Do not expect someone new to complete as
many tasks as you would someone
experienced.
Thoughts on projects as a junior
“[I found] Very short projects [helpful. It limited
the scope of the implicit project management I
had to do (which is an often-overlooked skill
programmers have to master).”
“hunting for bugs gave me the best experience with
a broad system.”
“I loved when I got a chance to try something
new or got something working that seemed
complicated, like encryption.”
“I love debugging code that mostly works. I need to be able to
see the parts that are working so that I can understand why
they work and solve the problem at hand.”
“Building out our integration testing suite. This really helped me
to learn the system and how it works.”
Clear Requirements
- Detail
- What behavior is expected in minute detail
- Implementation Suggestions
- QA test cases written beforehand so the dev
knows what they are up against
What qualities does a good junior developer have?
“Willingness to learn, to take on new tasks, go outside their comfort
zone.”
“Openness, willingness to learn, ability to figure things
out when I don't give them all the information.”
“I just get a feeling off certain people that they seem smart and willing to
learn. I'm sure there is something more definable going on, but it's hard to
put my finger on. It may be something about the way they approach things
they don't know or are frustrating.”
“General brightness, not necessarily programming skill. Curiosity,
patience when problem solving, willingness to engage with a problem
by breaking it down into smaller questions and not bringing too many
assumptions that might lead to a quick, but incorrect solution.”
Advice to Junior Developers
“Google, read and debug code. Learning to use development tools to
figure out what was going on was massively important, because then I
could bootstrap things.”
“Quickly adaptable is the best [quality]. I don't care if they've
never written a unit test, as long as a month after they are
introduced to the concept there are tests attached to every
project. When I suggest using an enum someplace, I want to
see that the next time that situation comes up they'll use an
enum without prompting. I also want enough curiosity and
independence that they are learning the whys for what they are
doing at the same time they are doing it. Teaching generative
principles is far more efficient than case-based teaching.”
“ [A good junior developer is] stubborn. They've got the right balance of hubris and
humbleness. Like they're willing to tackle the big problems, but also realize they might run
their approach past a senior dev first.
The ability to accept criticism is also important. You have to learn to choke down the urge
to get defensive if someone criticizes your code. If you're code reviewing it's your job to be
tactful about it, though.”
“Everyone has impostor syndrome. Everyone
makes mistakes - they won't get you fired, they're
an opportunity to learn things. People around you
are not programming gods.”
TAKEOUT MESSAGE
The tools that can be used to empower junior
developers are useful for the entire
organization, and everyone benefits.
thank you.
@BonMatts
“I really wish every computer science program required enough liberal arts classes
that students were all exposed to gender studies, post-modernism and basic social
systems analysis. Also probably enough therapy that everyone was coming in with
basic self-awareness.”

Mais conteúdo relacionado

Semelhante a The Care and Keeping of Your Junior Developer

QA's lead role in agile transformations
QA's lead role in agile transformationsQA's lead role in agile transformations
QA's lead role in agile transformationsDave Ungar
 
How to Manage a UX Team (without losing your mind!)
How to Manage a UX Team (without losing your mind!)How to Manage a UX Team (without losing your mind!)
How to Manage a UX Team (without losing your mind!)Autodesk
 
Working with Mentors and Investors
Working with Mentors and InvestorsWorking with Mentors and Investors
Working with Mentors and InvestorsEveline Buchatskiy
 
Designing Engaging e-Learning
Designing Engaging e-LearningDesigning Engaging e-Learning
Designing Engaging e-LearningCammy Bean
 
Active Lectures - Michelle Blackburn for TLC webinar April 2014
Active Lectures - Michelle Blackburn for TLC webinar April 2014Active Lectures - Michelle Blackburn for TLC webinar April 2014
Active Lectures - Michelle Blackburn for TLC webinar April 2014Andrew Middleton
 
Communication Category - Interpersonal skills
Communication Category - Interpersonal skillsCommunication Category - Interpersonal skills
Communication Category - Interpersonal skillsPhuDucNguyenHuynh
 
The Subtle Dynamics of Leading Without Authority as a Technical Lead - Oren E...
The Subtle Dynamics of Leading Without Authority as a Technical Lead - Oren E...The Subtle Dynamics of Leading Without Authority as a Technical Lead - Oren E...
The Subtle Dynamics of Leading Without Authority as a Technical Lead - Oren E...DevOpsDays Tel Aviv
 
devops - what's missing? what's next?
devops - what's missing? what's next?devops - what's missing? what's next?
devops - what's missing? what's next?Andrew Shafer
 
Happy Developer's Guide to the Galaxy: Thinking About Motivation of Developers
Happy Developer's Guide to the Galaxy: Thinking About Motivation of DevelopersHappy Developer's Guide to the Galaxy: Thinking About Motivation of Developers
Happy Developer's Guide to the Galaxy: Thinking About Motivation of DevelopersLemi Orhan Ergin
 
Mit workshop june 2012
Mit workshop june 2012Mit workshop june 2012
Mit workshop june 2012Cammy Bean
 
The elements of product success for designers and developers
The elements of product success for designers and developersThe elements of product success for designers and developers
The elements of product success for designers and developersNick Myers
 
INTERPERSONAL SKILLS
INTERPERSONAL SKILLSINTERPERSONAL SKILLS
INTERPERSONAL SKILLSvipin balan
 
How to Partner with Developers When You Don’t Code - SXSW 2019 submission
How to Partner with Developers When You Don’t Code - SXSW 2019 submission How to Partner with Developers When You Don’t Code - SXSW 2019 submission
How to Partner with Developers When You Don’t Code - SXSW 2019 submission Chris Massey
 
What made you a software testing leader?
What made you a software testing leader?What made you a software testing leader?
What made you a software testing leader?Rosie Sherry
 
VSL MSHQ 2022 - Supercharged Feedback Techniques in 20 minutes - Dugan.pdf
VSL MSHQ 2022 - Supercharged Feedback Techniques in 20 minutes - Dugan.pdfVSL MSHQ 2022 - Supercharged Feedback Techniques in 20 minutes - Dugan.pdf
VSL MSHQ 2022 - Supercharged Feedback Techniques in 20 minutes - Dugan.pdfAngela Dugan
 
Scaling Digital Marketers: How to Scale Digital Marketing Education
Scaling Digital Marketers: How to Scale Digital Marketing EducationScaling Digital Marketers: How to Scale Digital Marketing Education
Scaling Digital Marketers: How to Scale Digital Marketing EducationRhea Drysdale
 

Semelhante a The Care and Keeping of Your Junior Developer (20)

QA's lead role in agile transformations
QA's lead role in agile transformationsQA's lead role in agile transformations
QA's lead role in agile transformations
 
Future organisations
Future organisationsFuture organisations
Future organisations
 
How to Manage a UX Team (without losing your mind!)
How to Manage a UX Team (without losing your mind!)How to Manage a UX Team (without losing your mind!)
How to Manage a UX Team (without losing your mind!)
 
HackerRank
HackerRankHackerRank
HackerRank
 
Working with Mentors and Investors
Working with Mentors and InvestorsWorking with Mentors and Investors
Working with Mentors and Investors
 
Designing Engaging e-Learning
Designing Engaging e-LearningDesigning Engaging e-Learning
Designing Engaging e-Learning
 
Active Lectures - Michelle Blackburn for TLC webinar April 2014
Active Lectures - Michelle Blackburn for TLC webinar April 2014Active Lectures - Michelle Blackburn for TLC webinar April 2014
Active Lectures - Michelle Blackburn for TLC webinar April 2014
 
Communication Category - Interpersonal skills
Communication Category - Interpersonal skillsCommunication Category - Interpersonal skills
Communication Category - Interpersonal skills
 
The Subtle Dynamics of Leading Without Authority as a Technical Lead - Oren E...
The Subtle Dynamics of Leading Without Authority as a Technical Lead - Oren E...The Subtle Dynamics of Leading Without Authority as a Technical Lead - Oren E...
The Subtle Dynamics of Leading Without Authority as a Technical Lead - Oren E...
 
Starting with c
Starting with cStarting with c
Starting with c
 
devops - what's missing? what's next?
devops - what's missing? what's next?devops - what's missing? what's next?
devops - what's missing? what's next?
 
Happy Developer's Guide to the Galaxy: Thinking About Motivation of Developers
Happy Developer's Guide to the Galaxy: Thinking About Motivation of DevelopersHappy Developer's Guide to the Galaxy: Thinking About Motivation of Developers
Happy Developer's Guide to the Galaxy: Thinking About Motivation of Developers
 
Protest
ProtestProtest
Protest
 
Mit workshop june 2012
Mit workshop june 2012Mit workshop june 2012
Mit workshop june 2012
 
The elements of product success for designers and developers
The elements of product success for designers and developersThe elements of product success for designers and developers
The elements of product success for designers and developers
 
INTERPERSONAL SKILLS
INTERPERSONAL SKILLSINTERPERSONAL SKILLS
INTERPERSONAL SKILLS
 
How to Partner with Developers When You Don’t Code - SXSW 2019 submission
How to Partner with Developers When You Don’t Code - SXSW 2019 submission How to Partner with Developers When You Don’t Code - SXSW 2019 submission
How to Partner with Developers When You Don’t Code - SXSW 2019 submission
 
What made you a software testing leader?
What made you a software testing leader?What made you a software testing leader?
What made you a software testing leader?
 
VSL MSHQ 2022 - Supercharged Feedback Techniques in 20 minutes - Dugan.pdf
VSL MSHQ 2022 - Supercharged Feedback Techniques in 20 minutes - Dugan.pdfVSL MSHQ 2022 - Supercharged Feedback Techniques in 20 minutes - Dugan.pdf
VSL MSHQ 2022 - Supercharged Feedback Techniques in 20 minutes - Dugan.pdf
 
Scaling Digital Marketers: How to Scale Digital Marketing Education
Scaling Digital Marketers: How to Scale Digital Marketing EducationScaling Digital Marketers: How to Scale Digital Marketing Education
Scaling Digital Marketers: How to Scale Digital Marketing Education
 

Último

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Modelsaagamshah0812
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsJhone kinadey
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 

Último (20)

Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 

The Care and Keeping of Your Junior Developer

  • 1. The Care and Keeping of Your Junior Developer Bonnie Mattson @BonMatts
  • 2. Why Junior Developers - Aren’t enough senior developers - Hiring picasso to paint your apartment - Senior developers tend to be set in their ways - With talented management, and good process, junior developers can fill some of the talent void
  • 3. Junior Developers are great! “Helping grow someone into a fully functioning member of the team makes our team stronger in the long run, and helps us pass along good process and behavior practice into the organization.”
  • 4. Overview 1. Survey 2. Positive Company Culture 3. Mentorship/Guidance 4. Clear Expectations 5. Advice for Junior developers
  • 5. Survey Demographics Gender Identity women 63% men 29% genderqueer 4% no answer 4% Experience < year 22% 1-5 years 40% 10 years 19% >10 years 19% Job Level junior 31% mid 41% senior 24% other 4%
  • 6. You are going to fail.
  • 7. Do you get imposter syndrome? “Often. Writing about whatever I was doing, and having other developers bring it up later was a great confidence boost” “I finally became comfortable calling myself a software engineer around the time I became a team lead. Until then it just seemed too rarified a title for me. Recognizing (or probably more so, others expressing) how advanced my skills were compared to my colleagues.” “Constantly. I started programming late in life compared to most, and even once I get good at it, I'm not sure it's possible to get fully caught up with someone who is my age or younger with 5 or more years of experience on me, or even someone with the same length of experience who has had the luxury of more learning time.” “ [It was frustrating] not knowing if difficulties were because I didn't understand something or because it was not well designed, broken, etc.”
  • 8. Positive Company Culture Combating Imposter syndrome! - Overall Positive environment - Diversity - A culture of sharing knowledge
  • 9. Don’t be this cat. “[I found it frustrating] when I wouldn't get something and a team member would say things like "How are you not getting this?" and becoming clearly frustrated when I wasn't getting something right away. This was so discouraging.” “ [When I had questions, I ] struggled, asked the internet. Asked senior team members as a last resort, knowing that the response I'd get would be rude and condescending.“ “ [When I had questions ] I asked people. Or, I hid in the stairwell because I was afraid to ask them, because they clearly didn't want to be asked. I hid in the stairwell a lot.”
  • 10. - No Feigning Surprise - No well-actually's - No back-seat driving - No subtle -isms Hacker School Code of Conduct https://www.hackerschool.com/manual
  • 11. Culture and Communication “ [I got over my imposter syndrome through] transparency and feedback. It's scary and vulnerable to open yourself up, and it is up to the senior developers and managers to lead by example and create social norms where it is safe to do so, but there is no way to get a sense of how well you are doing relative to others without both of you working out in the open.” “The most valuable-for-my-career class I took in college was actually a poetry class, where I learned to think very carefully and systematically about word choice, metaphor and creative collaborations. “ “ [I found it helpful to ] Just watch people program . . . it helps make it clear what things are ‘normal’.” “Communication is far more important than technology skill. Flat or no hierarchy means it is implicit.” “ I am lucky though because I have a great co-worker who is always available to answer anything for me. Knowing that I have that is very empowering.”
  • 12. Diversity A comfortable developer is quicker to adapt, and consequently more productive.
  • 13. Culture of Knowledge - Project Presentations - Education Budget - Company Library - Experienced programmers given time to share their knowledge
  • 14. Mentorship/Guidance - Direct mentorship - Positive feedback - Documentation - Pairing/ Code reviews
  • 15. What makes a good mentor? “I've not had any good [mentors]. Some were not available enough. Some assumed that because they were senior they had nothing to learn from juniors.“ “ [a good mentor is] someone willing to listen and take time to explain, even if they've got their own deadlines to fight. I've learned the most from sitting with some of the brightest people at the company to figure out a problem, and would consider them an excellent mentor.” “A good [senior developer] is one who sets a good example by consistently doing good work and writing good code and do helpful code reviews.” “Explaining why a certain approach works. Passion for coding. Helping think about a problem or approach.” “I rarely had someone knowledgeable to ask questions. I had to figure most things out on my own. I would have loved to have a more senior, knowledgeable person to learn from.” “A lack of ego, patience and the ability to trouble-shoot *why* a junior developer is having a particular problem and address the underlying problem (ideally while teaching the developer the skills to do that for themselves in the future.) It's all about that extra step that the junior developers might not know they should be taking.”
  • 16. Senior Devs = College Professors Teaching is part of the Job.
  • 17. Time Management One cannot mentor while also maintaining a full workload of a senior dev. Productivity will decrease.
  • 18. Positive Feedback Chart Positive Negative Specific General It was really smart how you made that method a helper and re-used it in other parts of the code. That was really DRY! Nice job! Looks Good! Your code looks really bad. That was terrible. This code does not follow the style guide for these specific reasons. Might I suggest these revisions?
  • 19. Positive Feedback Compliment sandwich! “Thank you for reporting that bug! It would be helpful if you could let us know which version of the code you found it in. The detail you did provide on recreating the bug was excellent!”
  • 20. Thoughts on Feedback “Having the right manager is really key. My original manager was great with former interns, but I had another manager come on and he hadn't worked with programmers as inexperienced as I was. At some point he gave me feedback, and while I'm usually super fond of feedback, he gave it in a subpar manner, made me stress out thinking I was going to get fired. He didn't know how to give positive comments to push me forward when I was already really down on myself because the whole experience was frustrating.” “Getting the first job with comprehensive code reviews, short, small projects, rapid iterations and realistic expectations was amazing. Feedback is the most useful learning tool, second is the chance to see the code of more experienced developers and third is trying a bunch of different things to develop personal experience. But without useful feedback, just trying a bunch of different things doesn't necessarily lead to progress.” “[A good mentor has ] patience and solid constructive criticism of code and other behaviors. Immediate or quick feedback on issues 1-2 days. Ability to mold aptitude into ownership and responsibility.”
  • 21.
  • 22. Thoughts on documentation “I say I found documentation useful - but that's only true when it was GOOD. Most of it was wrong or incomplete which was not helpful. People should write better. “ “The biggest struggle I faced as a junior was a lack of documentation, lack of process, lack of chain of command, and the rude attitudes of other developers with 'holier than thou' attitudes.” “There was a senior person to me on the team, but he was grouchy and mostly didn't want to be bothered. I learned a lot on my own, and wrote documentation for the next people to come along.” “People. People, people people. Searchable documentation.” “Stepping into a new position and not having any documentation for getting our software up and running. Knowing that there are small bugs I could be helping with, but not being able to access them. Bug documentation that doesn't specifically point to the problem. “
  • 23. Documentation! - Inline - Internal wiki - Requirements - Unit tests
  • 24. Thoughts on Pairing “I work at a pairing company, and after my first month of pairing and getting to know the codebase, I did a one month solo project where I built out some admin tools. It really helped to have that time to integrate the things I'd been learning from pairing and find the holes in my knowledge.” “Pairing sessions are the most helpful for tracking down and resolving difficult bugs. Both mentor and mentee will get the most of the pairing sessions if they had done some prep work beforehand. Pairing helps the mentee see ways to be more productive on the command line.” “Pairing is amazing, but I still have a hard time driving when I know significantly less than the person I'm pairing with. (I also find it challenging to be the senior pair with our new interns — both sides of junior/senior pairing are pretty challenging.)” “Pair programming was both good and bad. I needed some solo time otherwise I couldn't figure out how to do the same things that I did yesterday. However, my questions were more easily answered with pair programming.”
  • 25. Pairing! - Mutually beneficial - Juniors pairing with juniors - Set time aside for pairing -Offer and ask to pair
  • 26. Code reviews - efficient use of time - reviewee should explain work - how requirements were met - how they came up with the implementation - reviewer should provide constructive feedback
  • 27. The benefits of mentoring a junior developer “I really enjoy being able to watch their code improve, their confidence grow and building a team that shares the vocabulary to collaborate effectively. I'm good at figuring out why other people are doing what they are doing, which makes me an effective mentor. Plus they are really impressed when I can remote-diagnose their bugs: it gives me perspective on how far I have come and highlights the useful skills I have.” “They're more willing to try different approach - not stuck in old patterns.They learn quickly, ramp up - more visible progress since there's so much to absorb initially” “That time and energy is an investment which, when it starts to pay off, is rewarding both in terms of increased productivity, and having another great person to bounce ideas around with.” “I probably learned a different skill set from talking to a newer developer and finding out [their] interests and experience... and we were able to build a working relationship that way.”
  • 28. What do you wish you knew before your first developer job? “How to tie my very theoretical and abstract education into actual day to day work. They have seemed very disconnected until recently.” “Processes and best practices for certain programming tasks.”“Knowing how to use tools.” “More linux, more terminal stuff. How to cut up text files at a terminal prompt. More scripting languages.” “Process workflow. How public and private keys work. How to setup a dev environment.” [I] wish I'd known how much of the development process does not involve actual programming. “Wish I knew a little bit more devOps stuff.”
  • 29. Clear Expectations - Process! - Reasonable Goals - Well-written Requirements
  • 31. Goal Setting “ I wish I had a mentor to help me set time goals in correlation with the size and speed of the project, eg: "If you get stuck, only let yourself struggle for one hour before coming to me for help." “Structure is really important. Need to have clearly defined goals for learning.” “[I found] Tasks that are far past my skill level with little support to complete them [frustrating]. Not being allowed input on my own estimates.” “A good mentor give[s] the mentee helpful expectations : intersection of business needs and tasks where the mentee stretches himself/herself but is able to finish the task.” “[I found] projects with clear goals [helpful], or project management that lead to clear goals.”
  • 32. Reasonable Goals Do not expect someone new to complete as many tasks as you would someone experienced.
  • 33. Thoughts on projects as a junior “[I found] Very short projects [helpful. It limited the scope of the implicit project management I had to do (which is an often-overlooked skill programmers have to master).” “hunting for bugs gave me the best experience with a broad system.” “I loved when I got a chance to try something new or got something working that seemed complicated, like encryption.” “I love debugging code that mostly works. I need to be able to see the parts that are working so that I can understand why they work and solve the problem at hand.” “Building out our integration testing suite. This really helped me to learn the system and how it works.”
  • 34. Clear Requirements - Detail - What behavior is expected in minute detail - Implementation Suggestions - QA test cases written beforehand so the dev knows what they are up against
  • 35. What qualities does a good junior developer have? “Willingness to learn, to take on new tasks, go outside their comfort zone.” “Openness, willingness to learn, ability to figure things out when I don't give them all the information.” “I just get a feeling off certain people that they seem smart and willing to learn. I'm sure there is something more definable going on, but it's hard to put my finger on. It may be something about the way they approach things they don't know or are frustrating.” “General brightness, not necessarily programming skill. Curiosity, patience when problem solving, willingness to engage with a problem by breaking it down into smaller questions and not bringing too many assumptions that might lead to a quick, but incorrect solution.”
  • 36. Advice to Junior Developers “Google, read and debug code. Learning to use development tools to figure out what was going on was massively important, because then I could bootstrap things.” “Quickly adaptable is the best [quality]. I don't care if they've never written a unit test, as long as a month after they are introduced to the concept there are tests attached to every project. When I suggest using an enum someplace, I want to see that the next time that situation comes up they'll use an enum without prompting. I also want enough curiosity and independence that they are learning the whys for what they are doing at the same time they are doing it. Teaching generative principles is far more efficient than case-based teaching.” “ [A good junior developer is] stubborn. They've got the right balance of hubris and humbleness. Like they're willing to tackle the big problems, but also realize they might run their approach past a senior dev first. The ability to accept criticism is also important. You have to learn to choke down the urge to get defensive if someone criticizes your code. If you're code reviewing it's your job to be tactful about it, though.” “Everyone has impostor syndrome. Everyone makes mistakes - they won't get you fired, they're an opportunity to learn things. People around you are not programming gods.”
  • 37. TAKEOUT MESSAGE The tools that can be used to empower junior developers are useful for the entire organization, and everyone benefits.
  • 38. thank you. @BonMatts “I really wish every computer science program required enough liberal arts classes that students were all exposed to gender studies, post-modernism and basic social systems analysis. Also probably enough therapy that everyone was coming in with basic self-awareness.”