#Codemotion Rome 2018 - There is a common misconception that junior developers are a burden and won’t be delivering value for the first months or even years. Yet, observing my own contributions, I realised how my insights were useful for my team from day one. Working with agile methodologies, using pair programming and code review, you can contribute to your team, deliver value and learn on the job. In this talk I will try to explain why hiring Juniors makes business sense for your company and/or team and how to properly get the most out of every team member no matter their level of experience.
9. ❏ Question EVERYTHING
❏ Test your team's knowledge
❏ Promotes exchange of information
❏ Promotes learning
❏ Promotes mentorship
❏ Invested in the team
Why should I hire a Junior Dev?
10. Junior Dev -> Good Dev
NOT understand programming
concepts like abstraction and
architecture
❏ Include your dev into
meetings/conversations
about architecture early on
❏ [Help them write Architecture
documentation]
11. Junior Dev -> Good Dev
Will produce code without
keeping performance or
maintainability in mind
❏ Use code reviews to mentor
and explain why clean code is
important
❏ [Read Clean Code]
12. Junior Dev -> Good Dev
Can use libraries & frameworks,
does not understand how they
work
❏ Pair Program when using said
frameworks and delve into
them together
13. Junior Dev -> Good Dev
Will need occasional guidance on
how to solve a problems and
release features
❏ Make a regular event to share
tech knowledge
❏ Include Tech discussions at
the end of Daily standup
14. Junior Dev -> Good Dev
Afraid to ask for help
❏ Make sure your team ask
questions regularly and set a
good environment
❏ Foster communication even
outside of work
Good morning, my name is Berta Devant, I work at Novoda which is a London based agency for mobile apps as an IOS developer.
We are here today to talk about what I believe are some of the assumptions people have about junior developers and how talent is being lost by using unnecessary labels.
Now before we start let me set a small disclaimer first and tell you how I got to write this presentation down and why am I giving it.
Experience has value. That it's, is true. There is no substitute for experience. In any team or company you would benefit from someone who has experience or is a so called "senior developer". At no point in this presentation am I trying to undermine experience just trying to overcome some hard set assumptions our industry has.
This is the first disclaimer.
How I got to write this talk:
You see I did not always knew I wanted to be a developer, when I graduated school and went for college I actually wanted to be a photographer. But life is strange and random and at 22 years old I found myself in nyc knowing that tech was the answer to the question: What the hell do I want to do with my life?
So at 22 I started a 4 year degree in Computer System. And this is where the problems started. My degree had basically 3 required classes of code, in terms of being a developer it did not prepare me much. I think most of our degrees didn't.
But I knew I wanted to do this, I wanted to build things with code and I am a stubborn person so I attended meetups and hackathons and tried to cram as many languages and online tutorials I could in my head. And by my last year I had landed an internship as a mobile developer.
At this point I still had no idea what I was doing, hell I did not even knew Swift (IOS programming language) at the time. But Small Planet did something that none of my professors were able to do before. They gave me the support I needed to prove to myself that I could code.
I am what people in our industry would call a Junior developer. I mean obviously I am not a child but I do spend a chunk of my time being a bit lost.
But most days if you asked me I would tell you with absolute certainty that I can actually code. That if you give me a problem I can find a solution, maybe it won't be perfect but I can do it.
Looking for a job is horrible, we all hate it but when you are looking for a developer jobs is a particular kind of horrible. You get homework or take home assignments and you get completely ridiculous candidates expectations.
So after a couple of months at looking at job posting that required 3-5 yrs of experience and hearing the same rejection that you are just not experienced enough, that you would be a burden to any team you start seriously considering a change in career. Being a developer starts looking like a especial club you are just not smart enough to get in.
And if you are already a minority in the field this just seems like yet another reason why you should not even try to enter said club. YOu end up feeling alone and burn out without direction.
I have no experience with hiring techniques, leading teams of developers and being a mentor . All of those are valid points, but that is why I am giving talk. Every place I saw comparing juniors to seniors, talking about hiring techniques, mentorship, etc it was all from the point of view of the team leader, the senior developer, the company. Not the person who they are talking about.
That is why I am here today, speaking as a Junior developer because I want to tell you that not only
why your assumptions about us are wrong but also how they affect us not only professionally but also in a personal level.
We have established that good developers are better than levels of experience developers but you still might think is not worth it for your company or team to set up an entire mentorship and training process just for accommodating junior developers
Question EVERYTHING
Put your team's knowldege to test
Another way they are useful is that they are free to tackle problems you usually do not have developer time to address like documentation, processes, automatization, etc
Now you might be thinking, wait junior developers do have value, and you would be right of course but there is a difference between one person having value and that person being a valuable asset to the team. Anyone of us has looked at a CV or linkedin page of a dev who just recently graduated college or a bootcamp and involuntarily thought: I will have to teach this person.
And that is a fair though, experience is important in what we do but just because a developer is lacking a particular experience that does not make them a non valuable asset of a team. This is probably the most important point of my talk today:
Half of the job we do has nothing to do with writing code.
So why am I being judged on just that ability alone as a Developer?
When I graduated my code levels were pretty low but I was pretty high on People skills and the constant Learning. Why was I being evaluated only one of the 3?
Now as I said on the first disclaimer I know experience has value, and sometimes you just need someone who can get into a code base and get things done. We all have deadlines.
Eric Elliot asked on Twitter and then wrote a very good article on what makes a good and bad developer. I want you to take a look at this characteristics, the only one that deals with how much code or how much you know a system is Skilled. And yes is on the top 2 of best but it is one of 5. And not only is only one of five, it is arguably the easiest one to overcome.
Problem solver != knowing the solution but being able to find a correct one
Skilled: Skills are developed from two ingredients: understanding and practice.
People skills, how much can you pass to others on your team
Passionate developers master their craft, develop a sense of pride and ownership in the work, and they become happier in their jobs.
We have established that good developers are better than levels of experience developers but you still might think is not worth it for your company or team to set up an entire mentorship and training process just for accommodating junior developers
Question EVERYTHING
Put your team's knowldege to test
Another way they are useful is that they are free to tackle problems you usually do not have developer time to address like documentation, processes, automatization, etc
Nowadays almost every company works on agile methodologies, this type of working environments are perfect for training people ON THE JOB while they deliver value.
This are just some ideas and things I have seen work on myself and other developers.
There are many more, you can set up training course and time so they can learn. You can have katas and workshops, etc There are many ways to give the support a developer needs to learn and grow. If you are a junior you should ask to be included, don't be afraid of asking someone to explain how the architecture works and why they decided to use one or the other. You would not believe how many times I have found bugs and bad implementations on code just because I asked Why.
Source: https://www.slideshare.net/geshan/things-i-wished-i-knew-as-a-junior-developer
https://dev.to/clickclickonsal/am-i-still-a-junior-developer
Focus on really understanding one thing, then move to the next
First solve the problem then write the code
TEST EVERYTHING DO ALL THE TESTS
NON tech skills (being part of sprint, communication with clients/users etc)
Challenge them
Nowadays almost every company works on agile methodologies, this type of working environments are perfect for training people ON THE JOB while they deliver value.
This are just some ideas and things I have seen work on myself and other developers.
There are many more, you can set up training course and time so they can learn. You can have katas and workshops, etc There are many ways to give the support a developer needs to learn and grow. If you are a junior you should ask to be included, don't be afraid of asking someone to explain how the architecture works and why they decided to use one or the other. You would not believe how many times I have found bugs and bad implementations on code just because I asked Why.
Source: https://www.slideshare.net/geshan/things-i-wished-i-knew-as-a-junior-developer
https://dev.to/clickclickonsal/am-i-still-a-junior-developer
Focus on really understanding one thing, then move to the next
First solve the problem then write the code
TEST EVERYTHING DO ALL THE TESTS
NON tech skills (being part of sprint, communication with clients/users etc)
Challenge them
Nowadays almost every company works on agile methodologies, this type of working environments are perfect for training people ON THE JOB while they deliver value.
This are just some ideas and things I have seen work on myself and other developers.
There are many more, you can set up training course and time so they can learn. You can have katas and workshops, etc There are many ways to give the support a developer needs to learn and grow. If you are a junior you should ask to be included, don't be afraid of asking someone to explain how the architecture works and why they decided to use one or the other. You would not believe how many times I have found bugs and bad implementations on code just because I asked Why.
Source: https://www.slideshare.net/geshan/things-i-wished-i-knew-as-a-junior-developer
https://dev.to/clickclickonsal/am-i-still-a-junior-developer
Focus on really understanding one thing, then move to the next
First solve the problem then write the code
TEST EVERYTHING DO ALL THE TESTS
NON tech skills (being part of sprint, communication with clients/users etc)
Challenge them
Nowadays almost every company works on agile methodologies, this type of working environments are perfect for training people ON THE JOB while they deliver value.
This are just some ideas and things I have seen work on myself and other developers.
There are many more, you can set up training course and time so they can learn. You can have katas and workshops, etc There are many ways to give the support a developer needs to learn and grow. If you are a junior you should ask to be included, don't be afraid of asking someone to explain how the architecture works and why they decided to use one or the other. You would not believe how many times I have found bugs and bad implementations on code just because I asked Why.
Source: https://www.slideshare.net/geshan/things-i-wished-i-knew-as-a-junior-developer
https://dev.to/clickclickonsal/am-i-still-a-junior-developer
Focus on really understanding one thing, then move to the next
First solve the problem then write the code
TEST EVERYTHING DO ALL THE TESTS
NON tech skills (being part of sprint, communication with clients/users etc)
Challenge them
Nowadays almost every company works on agile methodologies, this type of working environments are perfect for training people ON THE JOB while they deliver value.
This are just some ideas and things I have seen work on myself and other developers.
There are many more, you can set up training course and time so they can learn. You can have katas and workshops, etc There are many ways to give the support a developer needs to learn and grow. If you are a junior you should ask to be included, don't be afraid of asking someone to explain how the architecture works and why they decided to use one or the other. You would not believe how many times I have found bugs and bad implementations on code just because I asked Why.
Source: https://www.slideshare.net/geshan/things-i-wished-i-knew-as-a-junior-developer
https://dev.to/clickclickonsal/am-i-still-a-junior-developer
Focus on really understanding one thing, then move to the next
First solve the problem then write the code
TEST EVERYTHING DO ALL THE TESTS
NON tech skills (being part of sprint, communication with clients/users etc)
Challenge them
Can you train someone to have the skills in 3 months? Then wouldn't that be worth it > spending those 3 months looking for the perfect senior developer?
I go to a lot of meetups and talk to people a lot and everyone always tell me the same thing: It is really hard to hire good developers. Recently every time i heard this I also asked: do you have any junior developers? I was surprise to hear many did not and most of the reasons they had to why was because they had no time or money to train someone.
This answer is not only a company issue but an industry issue: Training, Learning and mentorship in your company are processes not only set up for Juniors but for every developer at your company, if you can't afford a junior right now because this processes are not set up you have a problem.