< Return to Video

RailsConf 2014 - How to be a Better Junior Developer by Katherine Wu

  • 0:17 - 0:19
    KATHERINE WU: OK. Cool. I'll guess I'll go
    ahead and get
  • 0:19 - 0:20
    started, then.
  • 0:21 - 0:24
    Hi. And, thank you all so much for coming
  • 0:24 - 0:28
    to my talk here. I'm K Wu, and I
  • 0:28 - 0:31
    started at New Relic just about eight months
    ago.
  • 0:31 - 0:34
    And it's my first developer job there. And
    for
  • 0:34 - 0:37
    my talk today, I'm going to first give a
  • 0:37 - 0:40
    bit more context around where I'm coming from
    and
  • 0:40 - 0:43
    my intentions for this talk.
  • 0:43 - 0:45
    I'll then dive into what I see as the
  • 0:45 - 0:49
    main challenges for being a junior developer,
    and I'll
  • 0:49 - 0:51
    talk about my tactics for how to overcome
    these
  • 0:51 - 0:52
    challenges.
  • 0:52 - 0:54
    There is a lot that I want to cover,
  • 0:54 - 0:57
    but if you're taking notes and happen to miss
  • 0:57 - 1:00
    something, I have written a post for the New
  • 1:00 - 1:02
    Relic blog that went up this morning that
    you
  • 1:02 - 1:05
    can reference. And I also have a link to
  • 1:05 - 1:08
    my slides at the end.
  • 1:08 - 1:14
    So. How many people here are junior developers?
    OK.
  • 1:14 - 1:18
    Awesome. Cool. And how many people did something
    else
  • 1:18 - 1:24
    professionally before they worked as developers?
    Nice. OK. So
  • 1:24 - 1:27
    we are like amongst our own people here, right.
  • 1:27 - 1:28
    Very cool.
  • 1:28 - 1:32
    For me, being a developer is probably, like,
    the
  • 1:32 - 1:35
    fourth or fifth career I've had at this point.
  • 1:35 - 1:37
    It's hard to keep track. Some of the other
  • 1:37 - 1:40
    jobs I've had in the past are things like
  • 1:40 - 1:43
    product specialist, tech support. I used to
    work in
  • 1:43 - 1:45
    a biology research lab and I also did some
  • 1:45 - 1:47
    copy editing on the side.
  • 1:47 - 1:50
    So the thing is, compared to people who have
  • 1:50 - 1:54
    been coding since they were kids, I am literally
  • 1:54 - 1:58
    decades behind. This makes me just feel like
    I
  • 1:58 - 2:03
    have so much to catch up on. However, something
  • 2:03 - 2:06
    I've realized is that being a developer is
    essentially
  • 2:06 - 2:11
    about constantly learning new things. And
    guess what? I'm
  • 2:11 - 2:14
    pretty good at that. I'm really practiced
    at it
  • 2:14 - 2:17
    with picking up a new career and starting
    over
  • 2:17 - 2:21
    and over again. And so, despite what my parents
  • 2:21 - 2:24
    think, I like to think that my previous lack
  • 2:24 - 2:28
    of direction is now an asset.
  • 2:28 - 2:32
    The other thing I've realized over the last
    few
  • 2:32 - 2:34
    months is that a lot of it can actually
  • 2:34 - 2:38
    have nothing to do with coding. If you spent
  • 2:38 - 2:42
    a lot of time doing something besides computer
    science,
  • 2:42 - 2:44
    that means you have more experience for all
    of
  • 2:44 - 2:48
    the non-coding portions, and that means you
    can leverage
  • 2:48 - 2:51
    those skills from that experience to help
    your team
  • 2:51 - 2:54
    while you get better at the technical aspects.
  • 2:54 - 2:59
    My thesis is that, just because you switch
    careers
  • 2:59 - 3:03
    doesn't mean you're starting over entirely.
    And, in fact,
  • 3:03 - 3:06
    you can still use those other skills that
    you
  • 3:06 - 3:10
    have. You may already know the different tactics
    I'll
  • 3:10 - 3:12
    be talking about today, so I hope I can
  • 3:12 - 3:16
    prompt you to consider new angles and get
    excited
  • 3:16 - 3:18
    to apply them as a junior developer.
  • 3:18 - 3:21
    There will be sections that are actually more
    targeted
  • 3:21 - 3:25
    towards mentors, but, if you have a mentor
    but
  • 3:25 - 3:27
    he or she doesn't happen to be here today,
  • 3:27 - 3:29
    maybe you can bring some of these ideas back
  • 3:29 - 3:31
    to them and discuss it.
  • 3:31 - 3:33
    For senior, any senior developers that might
    be in
  • 3:33 - 3:36
    the audience, I hope to help you remember
    what
  • 3:36 - 3:39
    it feels like to be on that junior side
  • 3:39 - 3:42
    of the mentoring relationship, and think about
    ways that
  • 3:42 - 3:45
    you can help your proteges feel valued in
    a
  • 3:45 - 3:49
    very concrete kind of way.
  • 3:49 - 3:52
    I think there are two big reasons for why
  • 3:52 - 3:57
    it's hard to be a junior developer. First,
    there's
  • 3:57 - 4:00
    a ridiculous amount to learn. How many people
    feel
  • 4:00 - 4:05
    like that? Yeah. Like, pretty much everyone
    here. Cool.
  • 4:05 - 4:08
    Second, I think it's also really hard to know
  • 4:08 - 4:11
    how you can help your team and not just
  • 4:11 - 4:16
    feel like this helpless little baby bird here.
  • 4:16 - 4:19
    I'll talk a little bit about these challenges
    and
  • 4:19 - 4:22
    how to handle each of them in turn.
  • 4:22 - 4:26
    My three step, fool-proof plan to tackling
    the fact
  • 4:26 - 4:29
    that there's a ridiculous amount to learn,
    is really
  • 4:29 - 4:32
    all about not trying to do it all just
  • 4:32 - 4:35
    on your own.
  • 4:35 - 4:36
    Getting people to want to help you in the
  • 4:36 - 4:38
    first place can be a little bit of a
  • 4:38 - 4:42
    hurdle sometimes, depending on how supportive
    an environment you
  • 4:42 - 4:44
    happen to be in. I've been really lucky at
  • 4:44 - 4:47
    New Relic. But I think there are always things
  • 4:47 - 4:49
    that you can do even if you feel a
  • 4:49 - 4:50
    bit more isolated.
  • 4:50 - 4:54
    People, fundamentally, just aren't all that
    different wherever you
  • 4:54 - 4:59
    go. A lot of this boils down to so-called
  • 4:59 - 5:02
    building relationships. But I prefer to think
    about it
  • 5:02 - 5:05
    as really just getting to know people and
    making
  • 5:05 - 5:11
    friends. Because, of course, friendship is
    magic.
  • 5:11 - 5:15
    I personally find this pretty hard, because
    I'm actually
  • 5:15 - 5:19
    a pretty strong introvert. I fully expect
    to spend
  • 5:19 - 5:22
    most of tonight, like, huddled in a ball,
    like,
  • 5:22 - 5:26
    trying to recover from today. But, you know,
    the
  • 5:26 - 5:28
    thing is, a lot of developers, by and large,
  • 5:28 - 5:31
    are also pretty introverted as well. And so
    sometimes
  • 5:31 - 5:33
    it can be hard to try to get the
  • 5:33 - 5:36
    conversation going. You know, even if you,
    you know,
  • 5:36 - 5:38
    both really want to connect.
  • 5:38 - 5:41
    Luckily, at my last job, I worked with PM
  • 5:41 - 5:46
    and engineering and came up with a few hacks.
  • 5:46 - 5:49
    What I do is I try and pay attention
  • 5:49 - 5:52
    to, to try to remember small details that
    people
  • 5:52 - 5:55
    have told me. Especially about their lives
    outside of
  • 5:55 - 5:58
    work. Sometimes it's actually even easier
    for me to
  • 5:58 - 6:03
    remember these details than peoples' names.
    But usually people
  • 6:03 - 6:06
    are pretty forgiving once I tell them, I do
  • 6:06 - 6:09
    actually remember talking to them for like
    two hours
  • 6:09 - 6:14
    about their love for, like, antique banjo
    collecting or
  • 6:14 - 6:16
    something like that.
  • 6:16 - 6:19
    This makes for much better conversations than
    your typical
  • 6:19 - 6:24
    small talk. Another really dorky thing that
    I do,
  • 6:24 - 6:28
    is that I actually sometimes mentally prepare
    stories to
  • 6:28 - 6:32
    get a conversation going. Like, right after
    a weekend,
  • 6:32 - 6:35
    I'll try to think of something interesting
    or odd
  • 6:35 - 6:38
    that I did, so that I'll have a non-generic
  • 6:38 - 6:41
    answer ready for when someone asks, how was
    your
  • 6:41 - 6:42
    weekend?
  • 6:42 - 6:45
    Otherwise I just kind of freeze up and just
  • 6:45 - 6:47
    say, oh, good, which is kind of a boring
  • 6:47 - 6:51
    answer and doesn't really get conversations
    started. Does anybody
  • 6:51 - 6:55
    else have that knee-jerk reaction sometimes?
    Yeah. Totally.
  • 6:55 - 6:59
    Well, with a story to tell, what I find
  • 6:59 - 7:01
    is that this can then prompt questions and
    get
  • 7:01 - 7:05
    some back and forth started, which breaks
    through any
  • 7:05 - 7:06
    awkwardness there might be.
  • 7:06 - 7:12
    Helping break through awkwardness is also
    something that mentors
  • 7:12 - 7:14
    can do a lot to help with. Mentors are
  • 7:14 - 7:18
    really great for guiding newbies around team
    culture and
  • 7:18 - 7:23
    history. They can help make introductions
    and give advice
  • 7:23 - 7:25
    on how to approach other people. Like, what
    the
  • 7:25 - 7:28
    two of you may have in common, or who's
  • 7:28 - 7:31
    a good person to ask about what.
  • 7:31 - 7:34
    Also, I think that if your company has a
  • 7:34 - 7:38
    support team, you should definitely make some
    good friends
  • 7:38 - 7:42
    there. Support tends to be a little bit chronically
  • 7:42 - 7:45
    undervalued, but they probably know way more
    about the
  • 7:45 - 7:48
    products than you do. And if you think about
  • 7:48 - 7:52
    it, they're very practised at explaining the
    product to
  • 7:52 - 7:54
    newbies like your fellow customers.
  • 7:54 - 7:57
    When I worked in tech support, sometimes they
    would
  • 7:57 - 8:00
    have engineers shadow us so that engineers
    could learn
  • 8:00 - 8:03
    how the customers actually used our product,
    and use
  • 8:03 - 8:06
    it to inform design decisions that they might
    have.
  • 8:06 - 8:10
    And I definitely always really preferred the
    engineers that
  • 8:10 - 8:14
    were really eager to learn from me.
  • 8:14 - 8:16
    Another key component to getting people to
    want to
  • 8:16 - 8:20
    help you is to demonstrate the time that they're
  • 8:20 - 8:24
    taking. And so that you took a reasonable
    amount
  • 8:24 - 8:26
    of time to get as far as you could
  • 8:26 - 8:30
    on your own. Each time someone helps you,
    you'll
  • 8:30 - 8:32
    be able to learn new tactics and push yourself
  • 8:32 - 8:35
    just a little bit further before the next
    time
  • 8:35 - 8:38
    you have to ask a question again.
  • 8:38 - 8:40
    When you do ask for help, you can also
  • 8:40 - 8:43
    ask questions like, if you're busy, who else
    could
  • 8:43 - 8:47
    I talk to about this? When someone does help
  • 8:47 - 8:51
    you, you can always end with asking something
    like,
  • 8:51 - 8:53
    is there somewhere I could have found this
    answer
  • 8:53 - 8:56
    on my own? And if the answer is no
  • 8:56 - 8:58
    and there isn't any good reason it doesn't
    exist
  • 8:58 - 9:01
    already, you should add it.
  • 9:01 - 9:05
    When you do have someone's time, try and think
  • 9:05 - 9:08
    of ways to sort of push out and extend
  • 9:08 - 9:10
    what you're learning from them at that point
    in
  • 9:10 - 9:13
    time. That way, you'll be equipped when a
    variation
  • 9:13 - 9:17
    of that same question comes up again.
  • 9:17 - 9:20
    Lastly, for getting people to want to help
    you,
  • 9:20 - 9:24
    something just as simple as showing your appreciation
    really
  • 9:24 - 9:27
    goes a long way. Great mentors and teachers
    would,
  • 9:27 - 9:31
    of course, probably do it regardless, but
    I just
  • 9:31 - 9:34
    think it never hurts to make people feel extra
  • 9:34 - 9:39
    good about doing something that helps you.
    Making sure
  • 9:39 - 9:41
    to notice when people have gone out of their
  • 9:41 - 9:45
    way to help you encourages more of that to
  • 9:45 - 9:46
    happen.
  • 9:46 - 9:49
    If you're working somewhere that's big enough,
    where not
  • 9:49 - 9:52
    everyone knows what everyone else is doing,
    you can
  • 9:52 - 9:54
    also do things like, let peoples' managers
    know when
  • 9:54 - 9:59
    they've been particularly helpful. Most managers
    like hearing good
  • 9:59 - 10:02
    things about their reports, and most people
    like their
  • 10:02 - 10:04
    managers to now the good things they've done
    for
  • 10:04 - 10:06
    the team. So it's just a nice thing to
  • 10:06 - 10:10
    do all around. We've covered step one now
    of
  • 10:10 - 10:17
    getting people to want to help you.
  • 10:18 - 10:20
    Step two is make it easy for them to
  • 10:20 - 10:25
    help. Help them help you. There are a few
  • 10:25 - 10:30
    different ways you can do this. I think actually
  • 10:30 - 10:32
    that one of the hardest parts to learning
    is
  • 10:32 - 10:36
    just letting people see inside your head and
    understand
  • 10:36 - 10:39
    where you're at right now. But this can be
  • 10:39 - 10:42
    really hard in a field like programming, where
    sometimes
  • 10:42 - 10:45
    you might not even have the vocabulary to
    express
  • 10:45 - 10:48
    what it is that you don't understand because
    you
  • 10:48 - 10:50
    don't understand it.
  • 10:50 - 10:52
    Great teachers can draw it out from you, even
  • 10:52 - 10:55
    when you're asking pretty vague questions.
    But most people
  • 10:55 - 10:59
    that you work with probably aren't highly
    trained teachers.
  • 10:59 - 11:01
    So there are ways that you can make it
  • 11:01 - 11:03
    easier for others to help you by articulating
    the
  • 11:03 - 11:06
    premises that you're working off of and the
    logic
  • 11:06 - 11:10
    that you're using, so that together, you can
    narrow
  • 11:10 - 11:12
    down what it is that you don't understand
    or
  • 11:12 - 11:14
    are missing.
  • 11:14 - 11:17
    You can say things like, you had me up
  • 11:17 - 11:23
    until such and such a point, or I'm confused,
  • 11:23 - 11:26
    because I thought you said this and then this,
  • 11:26 - 11:29
    but it doesn't seem to lead to this point.
  • 11:29 - 11:34
    This is a good general format for describing
    problems
  • 11:34 - 11:37
    that you might have. Say what you're trying
    to
  • 11:37 - 11:40
    do and why, so that someone can jump in
  • 11:40 - 11:42
    if that's not even actually the right goal
    to
  • 11:42 - 11:45
    be aiming for in the first place.
  • 11:45 - 11:49
    Also, describe your current problem and what
    you've tried
  • 11:49 - 11:52
    already. Sometimes people might jump in quickly
    with their
  • 11:52 - 11:54
    idea of what the answer to your question is
  • 11:54 - 11:57
    already, but I think it's still good to be
  • 11:57 - 12:01
    prepared regardless. And if you're a mentor,
    just consider
  • 12:01 - 12:03
    that you should check to make sure that you
  • 12:03 - 12:06
    understand the question before you go ahead
    and answer
  • 12:06 - 12:08
    it.
  • 12:08 - 12:10
    When I worked in tech support, the best clients
  • 12:10 - 12:13
    actually put all of this information up front
    in
  • 12:13 - 12:15
    their ticket, which saved us a ton of time
  • 12:15 - 12:18
    on the back and forth from just trying to
  • 12:18 - 12:22
    even figure out what the question was.
  • 12:22 - 12:26
    Remember that just having the courage to say
    I
  • 12:26 - 12:30
    don't know is a strength. Exposing your own
    ignorance
  • 12:30 - 12:34
    feels really scary. So I'm always practicing
    actually saying
  • 12:34 - 12:38
    things like, wait, I don't even know what
    that
  • 12:38 - 12:41
    words means. I say this all the time.
  • 12:41 - 12:45
    But if it's something that's vital to understanding
    what
  • 12:45 - 12:48
    people are talking about, the sooner I tell
    people
  • 12:48 - 12:50
    I don't actually know what's going on, the
    sooner
  • 12:50 - 12:54
    I can get to actually learning and working.
  • 12:54 - 12:58
    Of all the advice I got when I started
  • 12:58 - 13:01
    at New Relic, this one is my very favorite.
  • 13:01 - 13:05
    One of the best things that mentors can do
  • 13:05 - 13:09
    when junior developers are confused is even
    just validating
  • 13:09 - 13:12
    that feeling. Being honest, and saying, this
    is confusing
  • 13:12 - 13:16
    for me too. It always, without fail, makes
    me
  • 13:16 - 13:19
    feel better when someone I expect to know
    the
  • 13:19 - 13:24
    answer actually says they don't know it either.
  • 13:24 - 13:26
    And then it becomes this team effort to figure
  • 13:26 - 13:28
    out how to get out of this hole of
  • 13:28 - 13:32
    ignorance together. It's also cool because
    when you work
  • 13:32 - 13:35
    with someone that also doesn't know the answer,
    you'll
  • 13:35 - 13:38
    frequently learn new debugging techniques
    that you can apply
  • 13:38 - 13:40
    yourself next time.
  • 13:40 - 13:44
    Now, I want you to think back to the
  • 13:44 - 13:51
    last few times you asked someone for help.
    OK.
  • 13:54 - 13:57
    How many of you, after you got help from
  • 13:57 - 14:00
    someone, heard something from them that was
    like, did
  • 14:00 - 14:05
    that help? A few people. Yeah. I get this
  • 14:05 - 14:08
    all the time. And I realized that this is
  • 14:08 - 14:12
    because most of us are really needy and want
  • 14:12 - 14:16
    validation. That's because, and so, my favorite
    feedback that
  • 14:16 - 14:19
    I get from people is usually people telling
    me
  • 14:19 - 14:22
    that they actually used any advice that I
    gave
  • 14:22 - 14:23
    them.
  • 14:23 - 14:25
    So when you tell people specifically what
    it is
  • 14:25 - 14:27
    they did that helped you, they'll know what
    they
  • 14:27 - 14:32
    can do more of. For example, it really helped
  • 14:32 - 14:35
    me when you walked me through how to use
  • 14:35 - 14:39
    these tools with this example. Or, it really
    helps
  • 14:39 - 14:42
    me to be the driver when we pair program,
  • 14:42 - 14:45
    because I absorb more than when I'm just shadowing.
  • 14:45 - 14:50
    One way of looking at mentoring relationships
    that I
  • 14:50 - 14:52
    really like is from the book club that we
  • 14:52 - 14:54
    had at New Relic when I first started called
  • 14:54 - 15:00
    Managers as Mentors. The idea there is that
    mentoring
  • 15:00 - 15:03
    should not be about this traditional mindset
    of a
  • 15:03 - 15:08
    one-way transmission of information. And instead,
    it's the mentor's
  • 15:08 - 15:13
    responsibility to create a safe environment
    and remove any
  • 15:13 - 15:16
    barriers to learning, so that their mentees
    can speak
  • 15:16 - 15:19
    up about any fears they might have, and not
  • 15:19 - 15:22
    be afraid of failing.
  • 15:22 - 15:25
    This way, they can learn a lot more and
  • 15:25 - 15:26
    a lot faster.
  • 15:26 - 15:31
    I know, for me, making the move from just
  • 15:31 - 15:34
    working on my own projects that no one was
  • 15:34 - 15:39
    depending on to working on something that
    actual people
  • 15:39 - 15:44
    were paying us actual money for was pretty
    terrifying.
  • 15:44 - 15:49
    Sure, we have this idea of failing fast, but
  • 15:49 - 15:51
    it's so hard to apply it when you don't
  • 15:51 - 15:53
    feel secure.
  • 15:53 - 15:56
    What helped me was all the support that I
  • 15:56 - 15:59
    got from mentors sharing their stories about
    how they'd
  • 15:59 - 16:02
    messed things up, too, and the idea that it's
  • 16:02 - 16:05
    not a matter of if you break production, but
  • 16:05 - 16:08
    when.
  • 16:08 - 16:11
    And when you do make mistakes, your team should
  • 16:11 - 16:14
    have processes set up in place to make it
  • 16:14 - 16:17
    easy to recover quickly and ways to try to
  • 16:17 - 16:21
    prevent that same mistake from happening again.
    If none
  • 16:21 - 16:24
    of these processes exist already, you should
    try to
  • 16:24 - 16:28
    help establish them. Because if just one person
    can
  • 16:28 - 16:32
    ruin everything, that's a pretty big problem
    for the
  • 16:32 - 16:33
    entire team.
  • 16:33 - 16:38
    Something I'm a really big fan of, as well,
  • 16:38 - 16:41
    is just having a direct conversation up front
    about
  • 16:41 - 16:44
    someone's learning style along with the other
    person's teaching
  • 16:44 - 16:47
    style. This way you can try to sync them
  • 16:47 - 16:51
    up and talk through any mismatches ahead of
    time
  • 16:51 - 16:55
    before there's any conflict. It's great when
    mentors show
  • 16:55 - 16:57
    that they're open to feedback along the way
    as
  • 16:57 - 17:00
    well, so that they can continue iterating
    and adapting
  • 17:00 - 17:04
    their style to match whatever will help the
    junior
  • 17:04 - 17:05
    learn best.
  • 17:05 - 17:09
    It's also really important to talk about how
    you
  • 17:09 - 17:13
    prefer to be interrupted. My mentor at New
    Relic,
  • 17:13 - 17:15
    David, told me that I could interrupt him
    pretty
  • 17:15 - 17:19
    much any time. And because he was really clear
  • 17:19 - 17:22
    and direct with me when he couldn't help me
  • 17:22 - 17:24
    right then, and still always gave me some
    other
  • 17:24 - 17:28
    resource to try, I had that much more confidence
  • 17:28 - 17:31
    in it being OK to interrupt rather than bottling
  • 17:31 - 17:33
    it all up and just saving it for our
  • 17:33 - 17:37
    designated weekly meetings.
  • 17:37 - 17:41
    When I started, David's desk was right next
    to
  • 17:41 - 17:43
    mine, so that even when I was talking to
  • 17:43 - 17:46
    other people, he could sort of lightly listen
    in
  • 17:46 - 17:49
    and jump in whenever it was clear to him
  • 17:49 - 17:53
    that I was missing something fundamental.
    As my mentor,
  • 17:53 - 17:56
    he had a better overall understanding of where
    my
  • 17:56 - 17:59
    knowledge level was at, so he could help others
  • 17:59 - 18:03
    help me, too.
  • 18:03 - 18:06
    If, as a mentor, part of your philosophy is
  • 18:06 - 18:10
    to let people struggle, this is also something
    that's
  • 18:10 - 18:12
    good to make clear up front. It's really good
  • 18:12 - 18:15
    to talk about this, because that way, you
    can
  • 18:15 - 18:18
    let the juniors know that you are intentionally
    doing
  • 18:18 - 18:20
    this. And it is out of a faith in
  • 18:20 - 18:23
    them, rather than setting them up to fail
    or
  • 18:23 - 18:26
    having misplaced expectations.
  • 18:26 - 18:29
    Just being reminded that you expect this to
    be
  • 18:29 - 18:33
    hard goes really far towards dispelling any
    sense of
  • 18:33 - 18:36
    impostor syndrome, where you might have this
    sinking feeling
  • 18:36 - 18:39
    that it should be easier. But that's wrong.
    It's
  • 18:39 - 18:42
    supposed to be hard.
  • 18:42 - 18:45
    Finally, I think it's ideal if you can push
  • 18:45 - 18:49
    up responsibility for deadlines. The junior
    developer's job is
  • 18:49 - 18:52
    to keep everyone up to date so that no
  • 18:52 - 18:54
    one is surprised by how much work is left
  • 18:54 - 18:57
    to do. On one project, a couple months ago,
  • 18:57 - 19:00
    when I was freaking out because I felt like
  • 19:00 - 19:02
    it was taking me forever to learn even just
  • 19:02 - 19:06
    the basics of D3, one of our project managers
  • 19:06 - 19:09
    came to me and said that shuffling resources
    is
  • 19:09 - 19:11
    his job, so that I could go back to
  • 19:11 - 19:14
    learning and struggling. And if at any point
    the
  • 19:14 - 19:18
    project deadline was in danger, the burden
    wasn't entirely
  • 19:18 - 19:20
    on my shoulders.
  • 19:20 - 19:26
    Now we have covered these first two steps.
  • 19:26 - 19:28
    We are just a little bit halfway through.
    So
  • 19:28 - 19:30
    I just want to take a real quick break.
  • 19:30 - 19:32
    Humor me. If you could all just sort of
  • 19:32 - 19:35
    sit forward in your chairs a little bit. Thank
  • 19:35 - 19:37
    you. And go ahead and just put your arms
  • 19:37 - 19:40
    behind your back like this. And just try to
  • 19:40 - 19:43
    stretch and pull your shoulders down and back
    a
  • 19:43 - 19:46
    little bit. Just try to counteract a little
    bit
  • 19:46 - 19:49
    of the terrible posture a lot of us probably
  • 19:49 - 19:52
    have over a hunched over computer. OK. Cool.
  • 19:52 - 19:55
    Feels better. I do this a lot when we
  • 19:55 - 19:58
    do stand ups actually, because it's like a
    good
  • 19:58 - 20:00
    time as any to stretch and be slightly more
  • 20:00 - 20:01
    ergonomic.
  • 20:01 - 20:07
    All right. Back to where we were.
  • 20:07 - 20:09
    The final step in tackling how much there
    is
  • 20:09 - 20:12
    to learn is much like how you'd approach any
  • 20:12 - 20:18
    other gnarly technical problem. Narrow your
    scope. Mentors are
  • 20:18 - 20:21
    highly helpful here, too, because they can
    help prioritize
  • 20:21 - 20:23
    what to learn next.
  • 20:23 - 20:26
    For example, one of my things is that I
  • 20:26 - 20:28
    still actually need to build a Rails app from
  • 20:28 - 20:34
    the beginning. Know that it's important to
    deliver recommendations
  • 20:34 - 20:37
    at the right time. If a mentor gets really
  • 20:37 - 20:40
    excited about yet another new thing to add
    to
  • 20:40 - 20:43
    the junior developer's plate and just sort
    of blurts
  • 20:43 - 20:46
    it out right then, this can sometimes be taken
  • 20:46 - 20:49
    a little bit like, wow, it must be really
  • 20:49 - 20:51
    important to be told right away that I need
  • 20:51 - 20:55
    to know this. Maybe I should know this already?
  • 20:55 - 20:57
    Which at least, for me, can sometimes lead
    to
  • 20:57 - 21:03
    a little bit of a death spiral of self-doubt.
  • 21:03 - 21:05
    You also have to match up learning style with
  • 21:05 - 21:10
    the tutorial style. This is important, because
    a lot
  • 21:10 - 21:16
    of programming tutorials, well, they're kind
    of like this.
  • 21:16 - 21:20
    How to draw an owl. Step one, draw some
  • 21:20 - 21:24
    circles. Step two, draw the rest of the owl.
  • 21:24 - 21:26
    How many people have done tutorials that are
    like
  • 21:26 - 21:28
    this? Yeah.
  • 21:28 - 21:35
    Well, even on more detailed tutorials, there
    are differences,
  • 21:35 - 21:38
    like whether the work is goal-oriented or
    not. For
  • 21:38 - 21:41
    me, it's actually harder to stay motivated
    when I
  • 21:41 - 21:44
    don't have a specific thing that I'm trying
    to
  • 21:44 - 21:49
    accomplish. I like structure and being too
    free-form actually
  • 21:49 - 21:52
    means that I'll get bored. For example, I
    took
  • 21:52 - 21:55
    calculus in high school. And it was fun and
  • 21:55 - 21:55
    interesting.
  • 21:55 - 21:59
    But it wasn't until I took physics in college
  • 21:59 - 22:03
    that I was like, oh, that's what calculus
    was
  • 22:03 - 22:07
    invented for. But that's just me. And other
    people
  • 22:07 - 22:10
    might be similar or very different.
  • 22:10 - 22:14
    Also, in terms of content, my personal view
    is
  • 22:14 - 22:17
    that the highest value areas are things like
    team
  • 22:17 - 22:21
    processes for code review and version control
    like git.
  • 22:21 - 22:25
    And specific product, product knowledge over
    more generalized programming
  • 22:25 - 22:28
    knowledge.
  • 22:28 - 22:30
    This might be a bit controversial, but I think
  • 22:30 - 22:34
    less useful are actually things like getting
    too much
  • 22:34 - 22:38
    into optimizing your tools and environment.
    Or even learning
  • 22:38 - 22:42
    tons of keyboard short cuts. At least to start.
  • 22:42 - 22:45
    Keyboard short cuts are fun and useful, but
    let's
  • 22:45 - 22:49
    be honest. Right now, how fast I can type
  • 22:49 - 22:52
    is not the limiting factor in how fast I
  • 22:52 - 22:54
    can complete a feature.
  • 22:54 - 22:57
    So that wraps up my ideas for how to
  • 22:57 - 23:00
    tackle this first challenge of how there's
    so much
  • 23:00 - 23:04
    to learn as a junior developer. Next, I'll
    talk
  • 23:04 - 23:06
    about ways that even junior developers can
    help their
  • 23:06 - 23:08
    team immediately.
  • 23:08 - 23:15
    Knowing how to help your team is hard because
  • 23:16 - 23:19
    maybe you feel like you're a drag on your
  • 23:19 - 23:22
    team's productivity with how much help you
    need right
  • 23:22 - 23:25
    then. How many people have felt like this?
  • 23:25 - 23:29
    Well, in one of the first conversations that
    David
  • 23:29 - 23:32
    and I had, I actually pretty much just straight
  • 23:32 - 23:35
    up asked him, how did you get stuck with
  • 23:35 - 23:40
    me? To his and New Relic's everlasting credit,
    he
  • 23:40 - 23:43
    immediately reassured me that it wasn't that
    he got
  • 23:43 - 23:45
    stuck with me, but that he wanted to learn
  • 23:45 - 23:48
    to be a good mentor himself. So it was
  • 23:48 - 23:52
    from there that I realized, ah, even my ignorance
  • 23:52 - 23:55
    can be helpful for the team when it gives
  • 23:55 - 23:59
    them opportunities to practice things like
    mentoring.
  • 23:59 - 24:03
    Also, even if you are a junior developer,
    your
  • 24:03 - 24:08
    technical contributions are still important.
    Yes, you may be
  • 24:08 - 24:12
    working on features that someone else may
    make faster,
  • 24:12 - 24:14
    but in a world where there is never enough
  • 24:14 - 24:17
    junior developers for all of the, you know,
    or
  • 24:17 - 24:19
    just developers in general, for all the developer
    jobs
  • 24:19 - 24:22
    that are out there, it's not actually necessarily
    a
  • 24:22 - 24:27
    choice between a junior developer building
    it slowly and
  • 24:27 - 24:30
    a senior developer building it really quickly.
    It's a
  • 24:30 - 24:33
    choice between having something built and
    not having it
  • 24:33 - 24:36
    at all.
  • 24:36 - 24:39
    Don't forget, either, that everyone started
    out at your
  • 24:39 - 24:42
    point at some, at some point, and you won't
  • 24:42 - 24:45
    be at your current stage forever. As my southern
  • 24:45 - 24:48
    friend likes to drawl, no one comes out of
  • 24:48 - 24:51
    their mama's womb knowing how to code. Just
    think
  • 24:51 - 24:55
    about that for a minute.
  • 24:55 - 25:01
    So onwards to some of the other non-technical
    ways
  • 25:01 - 25:04
    you can help your team right away. First,
    I
  • 25:04 - 25:09
    really strongly believe that questions are
    basically the junior
  • 25:09 - 25:12
    developer's super power, and as we all know,
    with
  • 25:12 - 25:17
    great power comes great responsibility. Fresh
    eyes are helpful,
  • 25:17 - 25:20
    but you can specifically figure out how to
    be
  • 25:20 - 25:22
    an extra helpful set of fresh eyes with the
  • 25:22 - 25:24
    use of skillful questions.
  • 25:24 - 25:28
    Good questions are invaluable for highlighting
    assumptions and helping
  • 25:28 - 25:31
    the team avoid dead ends, which helps you
    all
  • 25:31 - 25:36
    move faster. Questions like, are we working
    on the
  • 25:36 - 25:39
    right thing? Or, is there a reason we're doing
  • 25:39 - 25:42
    it this way? This is something that came up
  • 25:42 - 25:46
    in my old job, too. Because sometimes this
    uncovered
  • 25:46 - 25:51
    an actual misunderstanding about a feature's
    requirements, where, like
  • 25:51 - 25:54
    an offhand comment from a comment email, got
    interpreted
  • 25:54 - 25:56
    as a must-have item.
  • 25:56 - 25:59
    Getting rid of these kinds of things saves
    everyone
  • 25:59 - 26:02
    a lot of time and disappointment.
  • 26:02 - 26:05
    Has anyone here ever worked as a consultant
    or
  • 26:05 - 26:09
    product manager at all? So you probably have
    similar
  • 26:09 - 26:13
    stories like that, too. Of course, you do
    want
  • 26:13 - 26:16
    to ask your questions in a way that won't
  • 26:16 - 26:19
    put people on the defensive. If someone hisses
    at
  • 26:19 - 26:23
    you, that's probably not a good sign.
  • 26:23 - 26:26
    Try to express humility, since you're asking
    these questions
  • 26:26 - 26:29
    from a place where it's because you want to
  • 26:29 - 26:33
    learn rather than assuming that you already
    know. You
  • 26:33 - 26:36
    can also think about questions that other
    non-engineering people
  • 26:36 - 26:40
    might ask, like your sales or support teams.
    Getting
  • 26:40 - 26:43
    these answers earlier on gives your team a
    jump
  • 26:43 - 26:46
    start on looping in other teams as needed.
  • 26:46 - 26:48
    And if the only answers your team has are
  • 26:48 - 26:51
    pretty vague, that's an opportunity to dig
    further for
  • 26:51 - 26:56
    greater clarity. OK. We're two thirds of the
    way
  • 26:56 - 26:57
    through the outline now.
  • 26:57 - 27:02
    On the other side from asking questions, providing
    constructive
  • 27:02 - 27:06
    feedback is really important, too. If you've
    had another
  • 27:06 - 27:07
    career before now, this is a skill that I
  • 27:07 - 27:13
    am sure you have already practiced. Giving
    useful feedback
  • 27:13 - 27:16
    to the right person in the right venue at
  • 27:16 - 27:19
    the right time is hard for a lot of
  • 27:19 - 27:20
    people.
  • 27:20 - 27:22
    For me, when I worked in tech support, we'd
  • 27:22 - 27:25
    frequently do quality reviews of each others
    work to
  • 27:25 - 27:28
    try to improve the customer support experience.
    And we'd
  • 27:28 - 27:32
    also just do general peer feedback every few
    quarters.
  • 27:32 - 27:34
    Which meant that I got a lot of practice
  • 27:34 - 27:37
    at phrasing feedback in a way that wouldn't
    lose
  • 27:37 - 27:41
    me any friends, hopefully.
  • 27:41 - 27:43
    Before offering feedback, I like to spend
    some time
  • 27:43 - 27:45
    thinking about what would be useful to the
    person
  • 27:45 - 27:50
    receiving the feedback. What is it that they
    want?
  • 27:50 - 27:53
    What are they trying to do? You always also
  • 27:53 - 27:56
    get bonus points for bringing suggestions
    for solutions with
  • 27:56 - 27:58
    you.
  • 27:58 - 28:01
    It's hard, sometimes, to refrain from nitpicking
    just for
  • 28:01 - 28:04
    the sake of having something to say, but it's
  • 28:04 - 28:06
    worth it to increase the value that people
    get
  • 28:06 - 28:09
    from listening to you. You just want to have
  • 28:09 - 28:14
    a really high personal ratio of useful to
    not-useful
  • 28:14 - 28:15
    things to say.
  • 28:15 - 28:19
    Something else I've been trying lately is
    to give
  • 28:19 - 28:23
    positive feedback whenever there is an opportunity.
    I don't
  • 28:23 - 28:26
    mean, like, fake positive compliments or anything
    like that
  • 28:26 - 28:29
    at all. But just that it's a lot easier
  • 28:29 - 28:32
    in most cases to complain about something
    than to
  • 28:32 - 28:34
    remember to speak up when there are good things
  • 28:34 - 28:36
    to talk about.
  • 28:36 - 28:39
    My hope is that this is helpful in the
  • 28:39 - 28:41
    longer term, so that I can build up a
  • 28:41 - 28:45
    general reputation for being a positive person.
    And any
  • 28:45 - 28:47
    negative feedback I have will be taken more
    seriously.
  • 28:47 - 28:53
    On the other hand, sometimes giving good feedback
    can
  • 28:53 - 28:56
    also mean just stating, I don't have an opinion
  • 28:56 - 28:59
    on this topic, so that you withdraw yourself
    from
  • 28:59 - 29:01
    the pool of people weighing in. It makes life
  • 29:01 - 29:04
    a lot easier for whoever's in charge of getting
  • 29:04 - 29:06
    the group to a consensus.
  • 29:06 - 29:10
    So now we've covered two strategies for helping
    your
  • 29:10 - 29:14
    team. Lastly, there's a lot you can do to
  • 29:14 - 29:18
    make your team look good to other teams. It
  • 29:18 - 29:20
    isn't all that hard. It helps your team feel
  • 29:20 - 29:23
    good and it helps other teams feel good, too,
  • 29:23 - 29:27
    about working with your team. One of the common
  • 29:27 - 29:30
    areas this can come up in is in any
  • 29:30 - 29:34
    demo or review team, meetings your team might
    have.
  • 29:34 - 29:37
    You can give awesome demos just by being thoughtful
  • 29:37 - 29:39
    and prepared.
  • 29:39 - 29:41
    Think about why this change matters to your
    audience.
  • 29:41 - 29:44
    Why should they care? And think about how
    you
  • 29:44 - 29:46
    can show the before and after, doing things
    like
  • 29:46 - 29:49
    grabbing screen shots, so you can show new
    and
  • 29:49 - 29:52
    old side by side. Or gathering metrics to
    show
  • 29:52 - 29:55
    why the thing that your team did is actually
  • 29:55 - 29:56
    a big deal.
  • 29:56 - 29:59
    Demos are also good for getting full credit
    for
  • 29:59 - 30:02
    your team, for everything that they've done.
    Even ones
  • 30:02 - 30:05
    that aren't easily visible. You can do things
    like
  • 30:05 - 30:09
    talk about corner cases and, you know, choices
    that
  • 30:09 - 30:12
    you either decided to do something about right
    now
  • 30:12 - 30:16
    or have consciously chosen to delay, so that
    it
  • 30:16 - 30:18
    shows other teams, shows these other teams
    that you've
  • 30:18 - 30:21
    been thoughtful about your impact to them,
    like the
  • 30:21 - 30:26
    supportability of a new feature you've released.
  • 30:26 - 30:28
    I like to over prepare. So I almost always
  • 30:28 - 30:32
    write a script, which is sometimes a literal
    word-for-word
  • 30:32 - 30:35
    script. But more often, it's just a list of
  • 30:35 - 30:38
    what I want to show in a particular order
  • 30:38 - 30:40
    so that it flows well and I don't end
  • 30:40 - 30:45
    up having to backtrack because I've forgotten
    something.
  • 30:45 - 30:48
    I also like to do a test run through,
  • 30:48 - 30:50
    so that this way, I'll know everything I need
  • 30:50 - 30:53
    to get preloaded onto my computer, which makes
    the
  • 30:53 - 30:57
    demo really efficient and less prone to errors.
  • 30:57 - 31:02
    In general, making an effort to be responsive,
    thorough,
  • 31:02 - 31:06
    and empathetic really goes a long way. I'm
    really
  • 31:06 - 31:09
    proud of the time that someone on our support
  • 31:09 - 31:11
    team at New Relic told me I was her
  • 31:11 - 31:14
    favorite engineer to work with, mostly just
    because I
  • 31:14 - 31:18
    was being really responsive. All this just
    helps people
  • 31:18 - 31:22
    feel heard, and knock down any stereotypes
    that engineers
  • 31:22 - 31:25
    don't care about what other people care about.
    And
  • 31:25 - 31:29
    so this way, when your team needs their help,
  • 31:29 - 31:30
    they'll be there for you too.
  • 31:30 - 31:34
    That wraps up my ideas for how to tackle
  • 31:34 - 31:35
    the challenge of figuring out how you can
    help
  • 31:35 - 31:40
    your team even when you're a junior developer.
  • 31:40 - 31:41
    Before I finish up my talk, I do want
  • 31:41 - 31:45
    to mention a few caveats and pitfalls to avoid.
  • 31:45 - 31:48
    I'm hoping that mentors, in particular, will
    help out
  • 31:48 - 31:50
    with watching out for these.
  • 31:50 - 31:53
    Sometimes, I think there's a bit of an issue
  • 31:53 - 31:57
    in the tech community of undervaluing non-technical
    skills, and
  • 31:57 - 32:00
    a lot of what I've talked about is essentially
  • 32:00 - 32:05
    using your non-technical skills to help yourself
    move forward.
  • 32:05 - 32:07
    The thing is, you just don't want to be
  • 32:07 - 32:11
    assumed to just be the secretary, which I
    don't
  • 32:11 - 32:13
    mean as a diss on secretaries at all. It's
  • 32:13 - 32:18
    just not the job that I'm working towards.
  • 32:18 - 32:22
    There's also a phenomenon called the Girl
    Scout tax,
  • 32:22 - 32:24
    which comes about because we have a stereotype
    and
  • 32:24 - 32:29
    expectation that women are helpful. Unfortunately,
    this leads to
  • 32:29 - 32:31
    a lot of women not getting credit for the
  • 32:31 - 32:35
    help that they provide, because supposedly,
    that's just what
  • 32:35 - 32:39
    women do. They're helpful. This is just one
    of
  • 32:39 - 32:42
    those unconscious things that we probably
    all do from
  • 32:42 - 32:44
    time to time, and so we should all try
  • 32:44 - 32:47
    to watch out for it so that everyone gets
  • 32:47 - 32:52
    recognized and appreciated for the work that
    they do.
  • 32:52 - 32:54
    You just don't want to get sidelined or pushed
  • 32:54 - 32:58
    into a role you're not interested in. Everything
    I've
  • 32:58 - 33:00
    talked about today is from the stand point
    that
  • 33:00 - 33:02
    you're willing to do whatever's best for your
    team
  • 33:02 - 33:04
    in the short term, but you all need to
  • 33:04 - 33:07
    be doing what's best for everyone longer term
    as
  • 33:07 - 33:11
    well, which is to help you grow as a
  • 33:11 - 33:12
    developer.
  • 33:12 - 33:17
    Ultimately, keep focused on whatever your
    end goal is.
  • 33:17 - 33:20
    Whether that's getting better at coding, working
    on bigger
  • 33:20 - 33:24
    features, or learning about the market and
    industry. This
  • 33:24 - 33:28
    way you can consciously choose what things
    you'll do
  • 33:28 - 33:30
    that will bring you closer to the goal, and
  • 33:30 - 33:33
    not do things that will move you further away
  • 33:33 - 33:35
    from it.
  • 33:35 - 33:39
    These are some recommendations for further
    reading. The first
  • 33:39 - 33:41
    two are books that are actually pretty quick
    and
  • 33:41 - 33:45
    easy reads. Teen Geek was written by a couple
  • 33:45 - 33:48
    of Google engineering managers who actually
    co-founded the Google's
  • 33:48 - 33:52
    engineering office here in Chicago. And that
    second book,
  • 33:52 - 33:55
    the Upside of Down is a good book if
  • 33:55 - 33:57
    you feel like you're being held back by a
  • 33:57 - 34:00
    fear of failure.
  • 34:00 - 34:01
    The other four are blog posts that I also
  • 34:01 - 34:04
    found really interesting and full of good
    career advice
  • 34:04 - 34:07
    for junior developers.
  • 34:07 - 34:10
    So here's the full outline of everything I've
    talked
  • 34:10 - 34:13
    about today. I think there are two main challenges
  • 34:13 - 34:17
    in being a junior developer. For the problem
    of
  • 34:17 - 34:19
    there being so much to learn, the three step
  • 34:19 - 34:22
    plan is to get people to want to help
  • 34:22 - 34:25
    you, make it easy for them to help, and
  • 34:25 - 34:28
    narrow the scope of what you're trying to
    cover.
  • 34:28 - 34:30
    For the problem of not knowing how to help
  • 34:30 - 34:34
    your team, always remember that good questions
    are the
  • 34:34 - 34:37
    junior developer's super power. You can also
    do a
  • 34:37 - 34:41
    lot by giving good feedback and making your
    team
  • 34:41 - 34:44
    look good in front of other teams.
  • 34:44 - 34:48
    In conclusion, we talk a lot about the benefits
  • 34:48 - 34:50
    of diversity, but if you're the one that's
    bringing
  • 34:50 - 34:54
    diversity to your team, that can be hard,
    because
  • 34:54 - 34:58
    the typical narrative won't use your particular
    strength set
  • 34:58 - 35:03
    much, because by definition, they're different.
    As my first
  • 35:03 - 35:06
    boss told me, we can and should work on
  • 35:06 - 35:09
    our areas for development. But it's really
    your strengths
  • 35:09 - 35:12
    that you can lean on most heavily to get
  • 35:12 - 35:13
    you where you want to go.
  • 35:13 - 35:17
    So to all the junior developers and career
    searchers
  • 35:17 - 35:19
    out there, I just want to say, you deserve
  • 35:19 - 35:23
    to feel confidence in yourself as a person.
    Place
  • 35:23 - 35:26
    your confidence in your proven ability to
    learn over
  • 35:26 - 35:30
    your current level of coding knowledge. It's
    only a
  • 35:30 - 35:32
    matter of time, and I hope I've helped you
  • 35:32 - 35:35
    shorten that amount of time as a junior developer,
  • 35:35 - 35:38
    and so someday, when you'll be mentoring junior
    developers
  • 35:38 - 35:39
    yourself.
  • 35:39 - 35:40
    Thank you.
Title:
RailsConf 2014 - How to be a Better Junior Developer by Katherine Wu
Description:

more » « less
Duration:
36:08

English subtitles

Revisions