Developer Experience (DX)
Deep End Diving: Getting Up to Speed on New Codebases

Summarized using AI

Deep End Diving: Getting Up to Speed on New Codebases

Allison Hill • June 27, 2023 • online

Summary of "Deep End Diving: Getting Up to Speed on New Codebases"

In this talk, Allison Hill discusses the crucial topic of effectively onboarding developers to new codebases, highlighting how efficient onboarding can mitigate feelings of imposter syndrome and boost team collaboration. Her presentation, delivered at the WNB.rb Meetup, provides insights into strategies that can help new developers acclimate quickly and seamlessly to their roles.

Key Points Discussed:

  • Overview of Personal Journey: Allison shares her background, transitioning from neuroscience and early childhood education to tech, underscoring her experiences as a junior developer while navigating new environments.
  • Common Challenges: She addresses the stress experienced by new hires, particularly focusing on imposter syndrome, communication barriers, and feelings of overwhelm when starting in a new role.
  • Effects of Stress: Stress is both psychological and physiological; it can impair memory and cognitive performance. Effective stress management is essential for new hires to allow for better learning and retention of information.
  • Recognizing Success: A clear definition of success in the workplace, such as delivering value to customers rather than focusing solely on perfectionism, can bolster morale and reduce stress.
  • Mentorship Importance: Establishing mentorship relationships where new hires can ask questions and seek support is vital. This approach not only aids their learning but also builds a supportive team culture.
  • Strategies for Onboarding:
    • Clear expectations and ramping up tasks gradually help integrate new hires without overwhelming them.
    • Consistent feedback, peer programming, and frequent check-ins improve communication and can foster collaboration.
    • Using PR bodies to provide context for changes to the codebase ensures that everyone understands the purpose and details of modifications.
  • Exploration of Patterns: Understanding and identifying patterns within codebases is crucial. Alison uses an analogy involving animals to illustrate how recognizing patterns can facilitate learning and comprehension among new developers.
  • Diversity: A diverse team offers varied perspectives, enriching the problem-solving process and helping to prevent blind spots in product development.
  • Concluding Takeaways:
    • Effective onboarding is a team effort that requires open communication, collaborative practices, and a positive culture that acknowledges achievements regularly.
    • Organizations should invest time and effort in these practices to improve onboarding experiences for new team members, leading to better overall productivity and satisfaction in the workplace.

Deep End Diving: Getting Up to Speed on New Codebases
Allison Hill • June 27, 2023 • online

Learning new tools and using them effectively is a fundamental component of being a developer. The more efficiently developers can get onboarded and oriented to your project or tool, the faster the return on investment is for everybody involved. For newbies, a smooth entry into a new role can help shake off imposter syndrome and encourage a growth mindset. For the rest of the team, it means more time spent collaborating, adding value to your product, and making things! In this talk, we will discuss some strategies you can use as a team to make onboarding smooth sailing.
https://www.wnb-rb.dev/meetups/2023/06/27

WNB.rb Meetup

00:00:00.000 so just to like introduce myself a
00:00:02.700 little bit I'm Allison
00:00:04.799 um today we'll be talking about getting
00:00:06.359 up to speed on new code bases
00:00:09.300 um my pronouns are she her and I think
00:00:11.460 that covers all the like super super
00:00:13.559 basic introductory level things
00:00:16.440 um and also this will be less of a focus
00:00:18.960 about you personally being able to get
00:00:22.680 up to speed on things quickly and more
00:00:24.779 of an Institutional focus of what are
00:00:26.820 some practices that you can bring into
00:00:28.800 your workplace and your work culture to
00:00:31.320 really facilitate that for everybody on
00:00:34.980 your team
00:00:36.960 so just to give you a little bit more
00:00:38.640 about my background
00:00:40.559 um so I don't come through like a
00:00:42.780 traditional like computer science degree
00:00:44.820 background
00:00:46.379 um in 2019 I graduated with a BS in
00:00:49.440 Neuroscience from Trinity University I
00:00:51.960 dabbled in computer science a little bit
00:00:53.399 took a handful of classes but my main
00:00:55.379 focus was neuroscience and music much
00:00:57.180 more life sciences
00:00:59.820 um and then my first job out of college
00:01:02.219 was a research assistant at the
00:01:04.440 Children's Learning Institute under UT
00:01:06.060 Health so most of the projects that I
00:01:08.400 were working on were focused on early
00:01:09.960 childhood education language and
00:01:11.700 literacy
00:01:13.320 um and I'm like you know happy to chit
00:01:16.619 chat if you want to connect after this
00:01:18.600 but
00:01:19.979 um yeah basically I was doing a lot of
00:01:21.479 Assessments with kids surrounding their
00:01:24.180 language skills and verbal expressions
00:01:27.960 in the spring of 2022 I decided to do a
00:01:31.380 bit of a career change I went through
00:01:32.820 the Flatiron boot camp program where I
00:01:35.460 learned how to code in Ruby and react
00:01:38.840 and now
00:01:40.740 also into sprinkled through all of this
00:01:42.840 I was teaching private music lessons
00:01:45.119 violin cello piano and doing some
00:01:48.000 tutoring and then now these days I'm a
00:01:51.299 junior developer at workforce.com which
00:01:54.060 is a SAS company that focuses in
00:01:56.939 workforce management so scheduling
00:01:59.100 payroll we're building a payroll product
00:02:00.960 right now it's very exciting learning a
00:02:03.180 lot about tax laws
00:02:05.219 um so I know if you're about about
00:02:07.680 learning just from my professional
00:02:09.599 background and then also I've started my
00:02:12.480 first tech job within the past years so
00:02:14.580 I'm kind of familiar with
00:02:17.180 being kind of tossed in the deep end a
00:02:20.099 little bit
00:02:21.660 um so
00:02:24.060 because things don't exist in a vacuum I
00:02:26.700 decided to send out a little informal
00:02:28.379 survey to some of my friends and
00:02:30.180 colleagues just to feel out
00:02:32.400 what other people think about things in
00:02:35.280 this area specifically I was interested
00:02:37.080 in what are some of your favorite tools
00:02:38.879 when you're learning something new what
00:02:40.920 sorts of resources do you tend to go for
00:02:43.680 and then what do you really dislike what
00:02:46.080 is your least favorite kind of tool to
00:02:48.180 work with
00:02:50.700 um and so just a couple of patterns that
00:02:53.819 emerged it kind of corroborated my own
00:02:56.040 experience
00:02:57.180 but collaboration is a super popular one
00:03:00.540 among the
00:03:02.280 resources that people really like to use
00:03:04.739 people really enjoy collaborating with
00:03:06.959 their peers and asking other people
00:03:08.340 questions
00:03:10.379 um definitely a love-hate relationship
00:03:12.659 with documentation
00:03:15.000 um sometimes it's really useful and then
00:03:16.739 sometimes it really does not help you
00:03:18.659 get on board at all and then a lot of
00:03:22.140 other miscellaneous online resources are
00:03:24.120 also pretty popular
00:03:26.340 so people who usually kind of draw from
00:03:28.200 a wide variety of sources
00:03:30.780 and I also asked some more open-ended
00:03:33.360 questions about what was helpful and
00:03:36.120 then what absolutely sucked about your
00:03:38.640 onboarding experiences which also kind
00:03:40.980 of validated my own experience and
00:03:42.959 helped me narrow down some themes
00:03:45.659 so
00:03:47.280 the main themes that kind of stood out
00:03:50.340 to me are Stress Management
00:03:53.459 consistent patterns and mentorship
00:03:58.620 so first things first also get to put on
00:04:01.440 my little Neuroscience hat for a little
00:04:03.239 bit here is striking a balance between
00:04:06.420 stimulation and stress
00:04:09.540 so one of the things that I want us to
00:04:12.060 help all understand and to get us all on
00:04:14.879 the same page is what is
00:04:17.459 stress making sure we have a common
00:04:19.680 definition of what stress actually is
00:04:22.620 and so I feel like we tend to think
00:04:24.180 about stresses mostly a mental
00:04:25.800 experience or an emotional state like
00:04:28.380 we're feeling stressed we're feeling
00:04:29.880 worried we're feeling all sorts of
00:04:32.759 turbulent emotions
00:04:35.040 but stress is not just in your brain
00:04:38.520 it's physiological and it's
00:04:40.380 psychological and it's a Cascade of
00:04:43.020 effects in response to a stressful event
00:04:46.919 so basically what happens is there is
00:04:50.220 either a physical threat
00:04:52.860 or a perceived threat
00:04:55.199 and that sets off this chain of
00:04:57.419 reactions in your whole entire body so
00:05:00.540 in the brain it causes release of
00:05:03.780 neurotransmitters
00:05:05.759 that stimulate and really suppress some
00:05:08.340 parts of the brain and activate others
00:05:11.400 um it also triggers the release of all
00:05:13.500 these hormones from various glands
00:05:16.020 throughout the body that cause this more
00:05:18.479 long-term
00:05:20.580 impact of stress because they're
00:05:22.199 circulating the blood so they take
00:05:23.460 longer to get where they need to go and
00:05:25.560 that's what causes the changes in blood
00:05:28.020 pressure
00:05:29.460 increasing blood sugar increasing your
00:05:31.860 heart rate slowing down digestion and
00:05:34.199 what's mostly important about this is
00:05:36.180 that there's some impacts of stress that
00:05:38.460 linger after the initial stressful event
00:05:41.759 like you know getting chased by a tiger
00:05:43.800 or delivering a presentation
00:05:46.080 the good news is stress is not
00:05:48.240 inherently bad it's very evolutionarily
00:05:50.220 advantageous but it has some impacts on
00:05:53.940 how we function
00:05:57.360 so stress can impair memory and
00:06:00.000 retrieval specifically updating memories
00:06:02.340 and it nudges your brain towards more
00:06:04.560 rigid habitual learning versus more
00:06:06.960 cognitive and flexible learning so kind
00:06:10.199 of the easiest way
00:06:11.940 that I conceptualize it is it's very
00:06:15.060 good for wrote things so like CPR is a
00:06:19.919 fantastic example it's that's those
00:06:22.740 sorts of things where there's like very
00:06:24.500 sequential steps where you're doing the
00:06:26.759 same process every single time kind of
00:06:29.100 muscle memory things
00:06:30.780 stress can actually kind of give you a
00:06:32.880 little bit of boost of a boost in those
00:06:34.560 areas just because when there's more
00:06:36.419 emotionally Salient things and the
00:06:39.300 things that are titled is more
00:06:40.380 emotionally intense sometimes they're
00:06:42.240 easier to remember
00:06:44.880 um whereas if you're doing something
00:06:46.259 that's a little bit more cognitively
00:06:47.639 complex that involves like dissecting a
00:06:50.100 problem or the creative problem solving
00:06:52.139 it's not you know following the exact
00:06:54.120 same sequential steps every time it's a
00:06:56.460 little bit more difficult and so
00:06:59.759 stress lowers activation in the
00:07:01.440 prefrontal cortex which is the part of
00:07:03.120 our brain that's responsible for
00:07:04.620 rational decision making processing
00:07:06.720 complex information directing attention
00:07:09.419 and so what this means is basically you
00:07:11.699 might be working harder you might be
00:07:13.620 putting more effort towards directing
00:07:15.180 your attention but you have a little bit
00:07:17.460 less to show for it which adds barriers
00:07:20.039 to things like task switching which is
00:07:21.599 something that we encounter a lot in our
00:07:23.160 day-to-day work
00:07:24.360 as Engineers but the good news is since
00:07:27.300 we're not getting eaten by tigers in our
00:07:29.099 workplace
00:07:30.120 stress impacts are heavily influenced by
00:07:33.360 our perception of the stressful event or
00:07:36.060 environment so there's actually a fair
00:07:37.680 amount that we can do
00:07:39.300 to kind of mitigate the impact of some
00:07:42.360 of these stresses that might pop up
00:07:44.699 so some of the sources of stress that we
00:07:46.919 might actually like encounter in our
00:07:48.900 workplace environment are things like
00:07:51.000 imposter syndrome communication
00:07:53.160 breakdowns and just kind of feeling
00:07:55.520 overwhelmed by some facet of our work
00:07:58.500 that we're doing
00:07:59.759 especially as movies
00:08:02.520 so some of the critical components of
00:08:05.099 imposter syndrome are not really being
00:08:08.039 able to recognize your achievements as
00:08:09.780 achievements that you did versus like
00:08:11.699 something that just kind of happened to
00:08:13.440 you
00:08:14.160 so one of the easiest wins in terms of
00:08:16.979 mitigating imposter syndrome is just
00:08:19.560 recognizing accomplishments so that
00:08:22.560 might mean just having a more clear
00:08:25.080 definition of what success looks like so
00:08:27.539 coming from Mostly an education
00:08:29.039 background I'm used to like grades being
00:08:31.259 the metric of success and so for me one
00:08:33.779 of the rough transitions into the
00:08:35.700 workforce was I'm not necessarily
00:08:37.800 getting a grade like how do I know that
00:08:40.500 I'm doing a good job and I'm doing what
00:08:42.120 I need to do and so one of my mentors at
00:08:45.600 my current job
00:08:46.980 put it in a very nice and concise way
00:08:49.980 and basically success is valuing
00:08:52.260 delivery to our about delivering value
00:08:54.300 to our customers so making our product
00:08:57.120 easier to use making them more satisfied
00:08:59.519 while they're using it implementing
00:09:01.320 building and implementing features that
00:09:02.940 they actually need that make their life
00:09:05.399 and scheduling and managing payroll
00:09:07.200 easier that's a win that's what success
00:09:09.720 looks like not necessarily delivering
00:09:11.700 the absolute most perfect product or
00:09:14.519 like an amazing iteration as the very
00:09:16.800 first version there's a little bit more
00:09:18.660 fluidity there
00:09:20.760 um and one of the things that my
00:09:22.740 workplace culture does is we shout out
00:09:24.420 accomplishments fairly frequently
00:09:26.700 um just recognizing what sorts of
00:09:28.260 contributions people are making to the
00:09:30.360 team or to projects whether they're
00:09:32.040 helping
00:09:32.940 being especially helpful with code
00:09:34.500 review or they've just shipped a really
00:09:37.019 exciting new feature
00:09:39.240 um and then also just giving feedback
00:09:41.040 letting people know what they're doing
00:09:43.200 well where they can improve on so you're
00:09:45.060 not as much in your own head of trying
00:09:46.980 to judge how am I doing a good job like
00:09:49.080 you have a little bit more external
00:09:50.519 feedback
00:09:52.740 um some other facets that you can kind
00:09:55.920 of bring to mitigating some of this
00:09:57.360 imposter syndrome stress in your
00:09:58.800 workplace is just doing as much as you
00:10:01.920 can to help set up your new hires to
00:10:04.620 succeed so making sure that they're
00:10:06.839 supporting resources if there's anything
00:10:08.640 that's particularly unique about your
00:10:11.339 code base
00:10:13.140 um having some sort of like mentorship
00:10:15.240 relationship set up so having a more
00:10:18.420 experienced buddy to ask questions
00:10:20.760 outlining very clear expectations of
00:10:22.980 exactly what you expect to be done
00:10:24.660 because everyone's coming in from a
00:10:26.519 different background
00:10:27.959 um in an ideal scenario obviously
00:10:30.839 um with a more diverse workplace but
00:10:32.399 everyone's coming in with a different
00:10:33.839 background so everyone might have
00:10:35.640 different levels of what they internally
00:10:39.360 think is doing a good job versus what
00:10:42.600 the kind of the workplace culture of
00:10:44.040 doing a good job is I know me personally
00:10:46.260 I tend to set the bar very high for
00:10:48.360 myself and then sometimes I'm I'm
00:10:51.360 stressing and then I actually get a
00:10:54.120 chance to speak with one of my more
00:10:55.620 experienced co-workers they're like yeah
00:10:57.420 when I first started like I didn't nail
00:10:59.100 this concept until probably a couple
00:11:01.920 months in a year and I didn't really
00:11:03.720 start feeling comfortable until you know
00:11:06.300 a year year and a half and so you're
00:11:07.980 actually doing fine
00:11:10.560 um and then also ramp up tasks so not
00:11:13.500 always tossing people completely in the
00:11:15.540 deep end kind of incrementally stepping
00:11:18.540 people up and giving them tasks that you
00:11:21.779 know start smaller and are but still are
00:11:24.120 just like a little bit outside of their
00:11:26.579 current experience just to give them
00:11:28.079 some space to grow
00:11:30.240 um and then team culture wise
00:11:33.060 um just having diverse perspectives on
00:11:35.220 your team that's a really big win
00:11:38.220 um just because if you know not everyone
00:11:41.100 is thinking the same way then there's a
00:11:43.320 little bit more space to kind of
00:11:45.839 feel out okay is this like a different
00:11:47.700 way of thinking or am I going about this
00:11:49.500 the wrong way
00:11:51.240 um and also just having some more
00:11:53.579 frequent checkpoints opportunities for
00:11:55.800 feedback and opportunities for
00:11:57.660 collaboration also just being able to
00:11:59.459 see how other people work
00:12:04.500 next up we're going to talk about
00:12:06.300 patterns and this one is super fun
00:12:08.940 um I have a little a little game that
00:12:10.920 we're gonna play so let's see
00:12:15.000 got a little bit of a pattern matching
00:12:17.160 game so we have a dark gray fish
00:12:21.480 a white fish
00:12:23.160 a green fish
00:12:25.380 next up do we think it's going to be a
00:12:28.079 purple fish or a whale and we can do
00:12:30.959 what reactions do we have we could do a
00:12:34.140 sparkly heart for the fish and then a
00:12:36.300 celebrate for the whale
00:12:38.880 just a little bit of a
00:12:41.880 fun full time I'm seeing a lot of
00:12:43.860 sparkly Hearts amazing yes we are all so
00:12:47.700 so smart
00:12:49.079 it's a fish
00:12:50.579 that it's pretty straightforward right
00:12:52.440 we've got a whole bunch of fish the next
00:12:55.200 one's probably a fish
00:12:58.019 all right so our next one is a little
00:13:00.720 bit more challenging we have
00:13:04.200 a penguin
00:13:05.519 a platypus
00:13:07.079 a peacock
00:13:09.120 next up a duck or polar bear and we can
00:13:13.320 do sparkly heart for polar bear and the
00:13:16.139 celebration for the duck
00:13:22.380 okay I'm seeing a little bit of a mix so
00:13:25.260 does they want to jump in either like
00:13:27.060 verbally or in the chat if you chose the
00:13:30.420 like why you chose your your choice
00:13:34.380 yeah a lot of them have beaks
00:13:36.959 polar bear starts with a P starts with a
00:13:39.120 P they lay eggs
00:13:42.300 I think I think platypus yeah eggs
00:13:45.779 all right cool so yes there's very
00:13:48.899 justifiable reasons why it could be
00:13:51.240 either choice
00:13:53.160 so in this case
00:13:55.320 it's the polar bear because our pattern
00:13:57.120 is animals that start with the letter p
00:13:59.820 so this kind of highlights what I feel
00:14:03.660 like we encounter a lot of times when
00:14:05.700 we're working at a code base and we're
00:14:07.260 super new and there we're sure there's a
00:14:10.260 pattern there's definitely a pattern
00:14:12.060 connecting all of these pieces but it's
00:14:14.399 a little bit hard to really abstract
00:14:17.220 what that example is without being
00:14:19.800 explicitly told what it is
00:14:22.320 and so polar bear patterns are not
00:14:24.720 inherently bad like sometimes there is
00:14:27.060 very much a reason for them
00:14:29.399 but it's not as immediately obvious so
00:14:32.639 this is a sort of area where it's really
00:14:34.740 helpful to have
00:14:37.079 a some sort of like newbie crash course
00:14:41.639 or some supporting resources that really
00:14:44.880 help you clarify like this is this is
00:14:48.000 what the pattern is
00:14:49.980 um because you know we're all pretty
00:14:51.240 smart we can usually like figure figure
00:14:53.100 things out we can see some sort of
00:14:55.320 pattern
00:14:56.399 um but making sure that you're seeing
00:14:57.959 the pattern that's intended
00:15:01.380 um
00:15:02.459 um so let's see here we go some ways
00:15:05.279 that you can actually bring better
00:15:07.260 patterns into practice in your workplace
00:15:09.779 so PR bodies are a really helpful way to
00:15:14.820 accomplish this so I'm sure we all use
00:15:16.980 GitHub as our predominant um
00:15:20.760 revision history
00:15:23.160 software version history management
00:15:25.380 system
00:15:27.300 um and so PR bodies are really
00:15:30.959 are a really great place to kind of
00:15:32.760 document what this change is why it's
00:15:35.579 happening
00:15:37.199 um
00:15:38.100 what it's related to kind of what the
00:15:40.320 intentions are
00:15:42.240 um something that my co-workers and I
00:15:44.100 have started doing that's very helpful
00:15:45.540 is if there's some sort of reason why
00:15:48.540 we're doing something weird something
00:15:50.459 more Polar Polar Bear pattern e we'll
00:15:54.060 leave a comment
00:15:55.440 um in the pr itself with any sort of
00:15:58.920 supporting resources so for example
00:16:01.440 right now we're working on building a
00:16:02.940 payroll product notcha files are one of
00:16:05.940 the file types we need to export in
00:16:07.920 order to get people paid
00:16:09.540 and it took a little bit of digging to
00:16:12.000 figure out what sort of file extension
00:16:14.519 these files are actually supposed to
00:16:16.199 have so that was something that I left
00:16:18.000 in a comment so when you're using the
00:16:19.980 get blame extension on vs code or
00:16:22.560 whatever your like coding environment of
00:16:25.260 choices
00:16:26.940 um
00:16:27.540 you can see okay when you go back to
00:16:30.480 this PR you'll be able to see this is
00:16:32.880 why we chose the file extension that we
00:16:34.920 did
00:16:36.360 um and just something that I've started
00:16:38.459 doing a kind of a PR body format that
00:16:41.100 I've decided that I'm a fan of is like a
00:16:44.220 super short blurb about what the
00:16:45.779 intended purpose is
00:16:47.339 a link to any sort of documents about
00:16:50.399 what the project is so we use the shape
00:16:53.220 cycle at Workforce so we have basically
00:16:56.100 like a series of projects that are
00:16:58.079 pitched throughout six intended to be
00:17:00.600 done in like six to eight week chunks
00:17:03.360 um and so this for me is just a link to
00:17:06.179 like what the original project specs
00:17:08.520 were and then a little section for
00:17:11.220 follow-up steps and related PRS it's not
00:17:13.679 just in one place you can kind of see
00:17:16.439 everything that's related to this
00:17:19.799 um split out into smaller sections
00:17:21.720 they're all part of the same cohesive
00:17:23.100 whole but you can see all of them in one
00:17:26.699 place without having to do any sort of
00:17:29.160 major scavenger hunting
00:17:31.620 also you know documentation is the
00:17:34.080 number one complaint it's a loved and
00:17:35.400 hated resource so anything we can do to
00:17:37.140 make it better
00:17:38.280 is awesome
00:17:40.440 so
00:17:42.299 other things we can do
00:17:44.640 tests are actually really helpful not
00:17:46.980 just in knowing if you're breaking stuff
00:17:48.660 but also providing some insight into the
00:17:51.000 intended Behavior
00:17:53.280 um and so that's probably in my my
00:17:56.460 workplace the main way that we use tests
00:17:58.440 is you know just a very quick litmus
00:18:00.240 test of am I breaking any sort of major
00:18:02.220 intended functionality
00:18:06.360 yeah I don't know if you've ever tried
00:18:08.400 to look up the documentation for uh
00:18:11.400 turbo
00:18:12.799 Turbo or stimulus but uh it's a little
00:18:16.200 bit lacking
00:18:18.120 um
00:18:19.080 and but as it gets better you know I'm
00:18:21.780 I'm sure feelings on that one will
00:18:24.179 change at least in my in my sense but
00:18:26.940 yeah tests are super are super useful
00:18:31.380 um and then also linters are super
00:18:34.260 helpful just for keeping some of making
00:18:37.320 things more readable so that's another
00:18:40.919 facet of
00:18:43.820 yeah so PR bodies
00:18:46.799 um so when you have a project on
00:18:50.100 GitHub or like an organization and you
00:18:53.160 have especially if you're working in
00:18:54.600 like a larger organization so it's less
00:18:57.419 comes up in personal projects where
00:18:59.700 you're maybe one of one or two people
00:19:01.260 working on it
00:19:02.580 but basically it's um a document that if
00:19:06.840 you have some sort of process for
00:19:08.640 managing like no one yeah so if there's
00:19:12.780 um
00:19:13.500 like a project where
00:19:16.140 you have to basically get a green light
00:19:18.360 to be able to merge into Master you
00:19:19.919 can't just kind of do it whenever
00:19:22.679 um GitHub basically it's kind of it's
00:19:24.360 kind of like this template document
00:19:26.940 um that when you create a new branch and
00:19:29.400 you push it to the remote repository it
00:19:31.919 pops the first time you push it you can
00:19:33.660 open up one of these little template
00:19:35.880 things where you can add some additional
00:19:38.340 information about what the changes a
00:19:40.679 little bit of additional context
00:19:43.200 um before you merge it merge it in so
00:19:47.160 it's kind of a little bit of a
00:19:49.799 process I can also send a like add some
00:19:53.340 links into the presentation I'll share
00:19:55.980 it out
00:19:57.480 um just with some additional like they
00:19:59.340 have like a whole little help guide for
00:20:00.780 like what a PR is what its intended
00:20:02.820 purpose is
00:20:03.960 that I can shout share out later but um
00:20:07.980 very big fan of like PR bodies they're
00:20:10.559 very helpful
00:20:11.880 um just for organizing what is going on
00:20:14.520 and what these changes are are that are
00:20:16.740 happening
00:20:17.880 cylinders super helpful keeping things
00:20:20.280 repeatable
00:20:22.260 um we use sorbet type checking as part
00:20:25.200 of our
00:20:26.640 code Library which is really helpful
00:20:29.820 because it helps you know exactly what
00:20:32.100 data type you're putting in and what
00:20:33.539 data type you're expecting to get out of
00:20:35.580 a
00:20:36.660 function or whatever something that's
00:20:40.260 also super helpful is namespacing that
00:20:42.960 namespacing is
00:20:45.419 my new best friend just to kind of help
00:20:48.600 keep things organized of what
00:20:50.760 conceptually belongs with what so in my
00:20:54.539 workplace we're an international
00:20:55.380 organization so we have some things that
00:20:57.840 are associated with the Australian part
00:21:00.900 of the product
00:21:02.039 you know some things that are associated
00:21:03.900 with the US portion of the product and
00:21:05.820 so namespacing is one of the main ways
00:21:07.500 that we're partitioning those out
00:21:08.960 especially as we're working towards you
00:21:12.240 know getting payroll working in all 50
00:21:14.940 states
00:21:16.380 um just to be able to keep things more
00:21:18.660 organized also it's really simple well
00:21:21.900 it's surprisingly complex and it's
00:21:24.419 surprising how often this can get kind
00:21:27.240 of like pushed to the bottom of the
00:21:29.700 hierarchy in terms of like maintaining
00:21:32.100 code maintenance things but just keeping
00:21:34.740 your file structure organized so not
00:21:37.500 just having everything in one Mega
00:21:39.600 folder but keeping things organized
00:21:42.780 finding a nice balance between not
00:21:45.419 having like just file file file file
00:21:47.640 file and having to click a bazillion
00:21:49.440 times to get to things but having things
00:21:51.360 conceptually grouped
00:21:53.760 um kind of similar to
00:21:55.919 Ruby's um
00:21:57.780 convention over configuration mindset of
00:22:01.799 you know controllers do do this models
00:22:05.100 do this similar sort of thing
00:22:08.580 and I'm just going to take one second to
00:22:11.760 catch up on the chat for just a second
00:22:18.120 cool cool
00:22:21.419 yep all right so final thing thank you
00:22:25.500 everyone for your patience is Teamwork
00:22:27.960 Makes the teamwork so
00:22:31.740 literally everyone independent of what
00:22:35.280 level they're at from Junior to senior
00:22:38.159 said something about coding along with a
00:22:40.679 more experienced buddy as their favorite
00:22:43.340 resource for getting oriented for
00:22:46.980 feeling more confident in what they're
00:22:49.919 doing and just that's their favorite
00:22:52.200 learning tool was coding with a more
00:22:54.539 experienced buddy
00:22:57.600 so
00:22:59.700 even though this is another thing that
00:23:01.440 kind of sometimes gets a little bit
00:23:02.940 pushed to the Wayside it's something
00:23:04.799 that has incredible value for the team
00:23:06.960 even though it does have a little bit of
00:23:08.640 an upfront cost in terms of time
00:23:11.520 so it helps everyone grow first of all
00:23:14.580 both the person who's learning and the
00:23:17.400 person who's teaching
00:23:19.799 it also is a really great way of
00:23:22.919 catching some of those polar bear
00:23:24.419 patterns
00:23:25.620 um just because when you're working by
00:23:27.120 yourself a little bit more independently
00:23:28.740 in a vacuum everything makes sense to
00:23:30.600 you
00:23:31.799 um but making sure that it also makes
00:23:33.659 sense to your teammates especially your
00:23:35.760 teammates who are newer and have a
00:23:38.100 little bit less background experience in
00:23:40.799 some of the quirks and conventions of
00:23:42.539 your of your product or your code base
00:23:44.640 is really helpful there's been a handful
00:23:47.880 of times where I've been collaborating
00:23:49.679 with one of my more senior engineer work
00:23:53.580 Pals and they've been like yeah I don't
00:23:56.640 know why we did it that way this is the
00:23:58.919 pattern this is what we're doing I don't
00:24:01.080 know why we made those choices though
00:24:02.580 I'm sorry
00:24:05.039 um and then also just as a more Global
00:24:09.179 thing everyone has something to offer
00:24:10.799 everyone has different strengths and
00:24:12.960 weaknesses and more diverse perspectives
00:24:15.360 make a stronger product like
00:24:18.860 999 times out of a thousand
00:24:22.559 um
00:24:23.520 just because you're not having any sort
00:24:27.059 of large blind spots in your product or
00:24:29.580 the way it works
00:24:31.860 um and it also kind of helps kick
00:24:34.440 imposter syndrome out the door and
00:24:36.720 reduces stress and overwhelm because you
00:24:38.940 have a lot of different people
00:24:40.919 weighing in and bringing their unique
00:24:43.080 background experiences to the table and
00:24:45.840 so
00:24:46.740 um yeah and I think also sometimes as
00:24:51.539 it's good to remember that diversity is
00:24:53.460 multifaceted so it's you know sometimes
00:24:56.280 you know like obviously like gender
00:24:58.140 diversity is great no one wants to be
00:25:00.179 working with just like a room full of
00:25:01.559 like only dudes
00:25:03.000 all of the time
00:25:04.620 but there's also diversity in just
00:25:06.480 background and experience so someone
00:25:09.299 who's you know an early 20 something is
00:25:11.760 going to have a different experience
00:25:12.960 than someone who's like 40 or 50 someone
00:25:16.200 who's coming from a traditional computer
00:25:18.720 science like four-year degree or
00:25:20.580 master's degree program is going to have
00:25:22.200 a different experience than someone who
00:25:24.120 came through a boot camp program so all
00:25:26.940 of those sorts of
00:25:29.539 backgrounds differences are great and
00:25:33.059 amazing and wonderful and really make
00:25:36.360 sure that you're helping make sure that
00:25:38.460 you're covering all of your bases and
00:25:40.320 you're making code that is not only
00:25:42.960 quality but is also readable for a
00:25:45.539 diverse group because
00:25:47.700 um you know there's always going to be
00:25:49.980 new people coming in and learning what
00:25:52.140 you're about
00:25:53.159 foreign
00:25:55.580 that you can facilitate this in the
00:25:58.500 workplace and you can bring these sorts
00:26:00.059 of practices into your team
00:26:01.980 are having an assigned buddy or a
00:26:04.500 project point of contact basically
00:26:06.539 someone to bother with all of your silly
00:26:10.140 or not so silly questions
00:26:12.659 um just so that you you know who you
00:26:14.580 know could go to you know who probably
00:26:16.200 has the answers
00:26:18.980 and
00:26:20.760 also having semi-regular check-in
00:26:23.279 meetings is great especially if you're
00:26:25.860 working with newbies that might be on
00:26:27.900 the more shy end of the spectrum it
00:26:30.059 might need a little bit more prompting
00:26:31.980 to let you know what's going well and
00:26:34.740 maybe what's not going well before
00:26:36.840 they're too too deep into it so my team
00:26:39.600 have started doing
00:26:41.400 um check-in meetings on Mondays where we
00:26:43.500 basically go over like hey this is what
00:26:45.419 I'm working on this is where I think I
00:26:47.400 might need some help or assistance
00:26:49.860 um also just so as a team we can kind of
00:26:52.140 manage our time best and know who might
00:26:54.360 be having like a larger PR or a larger
00:26:57.419 project coming up that needs review
00:27:00.840 um versus like who might need a little
00:27:03.059 bit of help and all these sorts of
00:27:04.919 different areas that we have a heads up
00:27:07.140 about that at the beginning of the week
00:27:08.279 and we can prioritize our time as needed
00:27:11.640 um
00:27:12.360 peer programming also great
00:27:16.380 um just because you can kind of bounce
00:27:17.640 ideas off of each other it takes a
00:27:19.799 little bit more time up front sometimes
00:27:21.539 if there's like a little bit of a
00:27:24.240 mismatch in experience levels or
00:27:26.520 knowledge
00:27:27.659 but
00:27:29.100 it provides it provides us more value
00:27:32.100 than it costs and nine times out of ten
00:27:34.700 and also you can collaborate
00:27:39.960 um in the sense of like kind of doing a
00:27:42.900 little bit of training wheels action so
00:27:46.200 um especially for your newer newer
00:27:48.179 people giving them kind of a progressive
00:27:51.299 amount of autonomy so not and not
00:27:54.120 entirely you know like holding their
00:27:56.220 hand the whole entire time
00:27:59.100 um but giving these them this sort of
00:28:02.460 like ramp up in terms when you're
00:28:04.559 portioning out projects to your team
00:28:07.020 and giving them something that's just
00:28:08.880 ever so slightly more than they can chew
00:28:10.980 at the time but they have the supporting
00:28:12.539 resources to make it happen so we're
00:28:15.600 good
00:28:17.039 um also like collaborating
00:28:18.299 asynchronously
00:28:20.400 um is also great and so you can do that
00:28:22.500 in terms of code review so even if you
00:28:25.260 don't get the chance to actually be like
00:28:27.000 physically or virtually in the same room
00:28:29.279 together looking at the same thing at
00:28:30.779 the same time there's also a lot of
00:28:33.000 value in just being able to look at your
00:28:36.179 teammates work even if you don't feel
00:28:38.460 confident yourself giving them the green
00:28:40.440 light like this looks great looks like
00:28:42.000 it's not going to break anything
00:28:44.279 um
00:28:45.240 you can
00:28:47.279 still provide value just in asking
00:28:49.440 clarifying questions about why they uh
00:28:52.260 set something up a certain way and
00:28:54.779 things like that
00:28:56.640 and so yeah basically just mentorship
00:28:59.400 teammate chip collaboration it's not so
00:29:03.179 much like a cherry on top but more the
00:29:05.820 whole ice cream cone
00:29:12.779 alrighty
00:29:14.940 so
00:29:16.440 some acknowledgments
00:29:18.240 um a shout out to my friends and
00:29:19.500 colleagues at workforce.com for being
00:29:21.720 patient with all of my surveys and
00:29:23.940 questions
00:29:25.320 um railsconf 2023 through basically
00:29:27.600 giving me an excuse to pull this
00:29:29.220 presentation together
00:29:30.899 um first off
00:29:32.460 um women in non-binary rubiists for
00:29:34.559 inviting me to speak today freepik.com
00:29:37.140 for all the domain images and all of you
00:29:39.539 for participating and being receptive so
00:29:45.419 any and then I've also got all the
00:29:47.940 Articles Linked In but any questions
00:29:52.140 any comments
00:29:55.080 constructive criticism and feedback I
00:29:58.080 really enjoyed
Explore all talks recorded at WNB.rb Meetup
+20