sunlight & air: 10 lessons for growing junior developers

23
SUNLIGHT & AIR 10 LESSONS FOR GROWING JUNIOR DEVELOPERS

Upload: erika-carlson

Post on 12-Apr-2017

5.744 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Sunlight & Air: 10 Lessons for Growing Junior Developers

SUNLIGHT & AIR10 LESSONS FOR GROWING JUNIOR DEVELOPERS

Page 2: Sunlight & Air: 10 Lessons for Growing Junior Developers

HELLO!

Page 3: Sunlight & Air: 10 Lessons for Growing Junior Developers

WHO AM I?Hi! I’m Erika.

I’m a software engineer.

I work at Detroit Labs in Detroit, Michigan.

I’m currently the Director of Apprenticeship & Training programs.

In 2014, our company decided to try an experiment: we created a 3-month apprenticeship program where people with no prior software experience were paid to learn, and offered full-time employment to successful graduates.

Page 4: Sunlight & Air: 10 Lessons for Growing Junior Developers

WHO AM I?Since 2014, we’ve trained 33 developers through our iOS, Android, and JavaScript apprenticeship programs.

We’ve trained 12 additional developers through partnership programs.

In the past 2 years, I have worked individually with 45 junior developers, including classroom instruction, technical coaching, soft skills training, mentoring, and providing ongoing support as they integrate into development teams.

Page 5: Sunlight & Air: 10 Lessons for Growing Junior Developers

WHO ARE YOU?

Page 6: Sunlight & Air: 10 Lessons for Growing Junior Developers

WHAT IS THIS?In this talk, we’ll cover aspects of effectively growing junior developers, including:

‣ Choosing the right fit for your team

‣ Getting off to a good start

‣ Setting & managing expectations

‣ Providing effective feedback

‣ Encouraging ongoing growth

‣ Conflict resolution

Page 7: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #1: CHOOSE WELL‣ Not everyone can or will become 1.) a successful

developer or 2.) an effective team member

‣ A junior developer’s past experience (if they have any) may not tell you much, so look for potential

‣ Talent is great, but it’s not the most important piece or even necessarily a requirement

‣ First and foremost, good developers are natural problem-solvers: they are curious, thoughtful, and persistent

Page 8: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #1: CHOOSE WELL‣ “Teachability” is key: look for people who aren’t afraid to

ask questions, and are willing to engage in the process of finding an answer

‣ When evaluating junior developers, as much emphasis should be placed on soft skills as on technical ability

‣ The ability to receive and effectively incorporate feedback is essential

‣ Communication, collaboration, conflict resolution

Page 9: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #2: FIND THE RIGHT FIT‣ The team a junior developer will be joining should be as

involved as possible in the hiring process

‣ Team buy-in is absolutely essential

‣ Adding a new person to a team creates a constellation of new relationships

‣ The “right fit” will bring new strengths to the team while challenging them in areas of struggle: better feedback, communication, and knowledge-sharing are just a few possible improvements

Page 10: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #3: SET EXPECTATIONS‣ Set clear, fair, realistic expectations for everyone before a

junior developer joins the team

‣ If senior team members will be expected to dedicate time to pairing, coaching, and mentoring the new addition, discuss this in advance to determine interest and ability

‣ It may be necessary to adjust a senior developer’s workload if he/she is expected to do significant coaching in addition to his/her own work

‣ Seek input from the team in setting expectations and be sure to create a feedback loop for adjustments

Page 11: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #3: SET EXPECTATIONS‣ Set expectations for junior developers in terms of progress

and performance

‣ Junior developers should have specific, measurable goals to meet on a regular basis (weekly, monthly, etc.)

‣ Junior developers should have a designated person(s) to ask for help with technical and interpersonal issues

‣ Develop a clear plan of growth: Where are a junior developer’s skills expected to be in 3 months? 6 months? In a year? What specific areas need improvement?

Page 12: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #4: PAIR UP‣ Pair programming from the start is one of the quickest,

most effective ways to ramp up a junior developer who is new to the team, new to a language/platform, new to development, or all of the above

‣ Pair junior developers with more experienced developers (they don’t necessarily have to be senior!) who are good communicators and have an interest in mentoring

‣ Set expectations for pairing, as junior/senior pairs can often turn into “shadowing”

Page 13: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #4: PAIR UP‣ Junior developers should be actively driving and

navigating during pairing sessions

‣ Pairing partners should encourage questions and provide direction, but not always give answers: as the junior developer gains skills and confidence, he/she should be increasingly responsible for figuring out answers on his/her own

‣ Teach junior developers to seek direction instead of answers: “I’m struggling with [X] problem. I’ve tried [Y] options without success. My current hypothesis is [Z]. What should my next step be? Why?”

Page 14: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #5: BALANCE STRUCTURE AND FREEDOM‣ Junior developers need structure to thrive, especially at

first

‣ Structure includes clear expectations and goals, assigned tasks, accountability, supervision, and regular feedback

‣ Providing structure creates a framework for the future, when the junior developer will manage his/her work and learning more independently, and will become more skilled at self-assessment

Page 15: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #5: BALANCE STRUCTURE AND FREEDOM‣ Freedom interspersed with structure can accelerate

learning and increase motivation and enthusiasm

‣ Giving a junior developer assigned time to work on a personal project can significantly build his/her skills and confidence

‣ Learning projects should have specific requirements in terms of difficulty and complexity, and regular updates and demos should be provided

Page 16: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #6: POSITIVE FEEDBACK‣ Feedback (of all kinds) is one of the most important pieces

of growing junior developers

‣ Positive feedback tends to get lost in the shuffle, especially when the focus is on growth and improvement

‣ Positive feedback builds confidence, improves collaboration and team relationships, and increases motivation

‣ Positive feedback should be specific, timely, and sincere

Page 17: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #7: CONSTRUCTIVE FEEDBACK‣ The term “constructive feedback” helps to reduce the

stressful connotations of the term “negative feedback”

‣ Constructive feedback can be stressful and anxiety-provoking for anyone who struggles with receiving feedback, but it is almost always difficult for junior developers, who tend to already have a lot of anxiety about their performance

‣ Avoid giving major constructive feedback “on the spot”

Page 18: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #7: CONSTRUCTIVE FEEDBACK‣ Significant constructive feedback should be given in a

structured setting, such as a 1:1 meeting

‣ It may be helpful to provide constructive feedback in advance of an in-person meeting (e.g., through email) to give the recipient time to sort through his/her initial reaction, which may be emotional

‣ Give constructive feedback on a regular, frequent basis in order to lessen anxiety and increase the likelihood that feedback will be accepted non-defensively

Page 19: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #8: LISTEN & SUPPORT‣ The junior developer should have regular 1:1 meetings

with someone who can provide support and confidential listening, as well as help addressing any issues that arise

‣ Junior developers are often hesitant to raise issues with the team, and regular meetings with a supportive person decrease the likelihood that problems will go undetected

‣ Support is extremely important to success: adjusting to a new job and a team (and in some cases, a new technology or even a new career) can be stressful, emotional, and sometimes overwhelming

Page 20: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #9: ADDRESS ISSUES‣ Tensions and challenges are inevitable

‣ Create a framework for later problem-solving by acknowledging up front that adding a junior member to the team may bring up challenges on all sides

‣ Ignoring problems leaves senior developers feeling frustrated, resentful, and/or overwhelmed

‣ Failure to address obvious team tensions leaves junior developers feeling unwanted, anxious, and/or hopeless

‣ Issues that go ignored can become toxic to the team

Page 21: Sunlight & Air: 10 Lessons for Growing Junior Developers

LESSON #10: ENJOY THE RIDE‣ The right junior developer can bring a lot of enthusiasm,

energy, learning, and commitment to the team

‣ Coaching & mentoring a junior developer can be extremely rewarding for more seasoned team members

‣ The process of growing a junior developer creates many opportunities for reflection, feedback, improvement, and growth as a team

‣ Junior developers who receive intentional mentorship, coaching, and support tend to have strong loyalty to the team, their teammates, and the company

Page 22: Sunlight & Air: 10 Lessons for Growing Junior Developers

QUESTIONS?