00:00:20.240
Anxiously watching the clock, we're officially at 3:30.
00:00:25.260
So we'll go ahead and get started. Don't worry, there's plenty of fluff, so if people filter in, that's fine.
00:00:32.220
Welcome to "Deep End Diving: Getting Up to Speed on New Codebases." I am Allison Hill, and I am going to be sharing some interdisciplinary strategies on what you or your team can do to make the onboarding process easier and smoother for new hires, regardless of their experience level.
00:00:37.559
To kick things off, let me share a bit about my personal background. In 2019, I graduated with a BS in Neuroscience from Trinity University. I dabbled in computer science; to be honest, math seemed scarier than organic chemistry, so I stuck to the life sciences.
00:01:01.980
My first full-time job outside of college was with the Children's Learning Institute at the University of Texas Health Science Center in Houston. I worked on various research projects focused predominantly on early childhood education, specifically looking at language acquisition and early STEM skills. I really enjoyed this work.
00:01:14.580
However, in the spring of 2022, I wanted to transition into something more technical. I enrolled in the Flatiron School's boot camp program. While doing that, I was also freelancing in curriculum writing and teaching music lessons, all while looking at everything through an educational perspective. Fast forward to eight months ago, I started as a junior developer on the product team at workforce.com—a global SaaS company specializing in scheduling, timesheets, and payroll.
00:01:48.299
So, I know a thing or two about learning, and I also have recently been onboarded, so these experiences are very fresh in my mind. Even though I consider myself knowledgeable in this area, I sent out an informal survey to friends and colleagues in tech to ensure I wasn’t totally off base with my advice.
00:02:18.180
Twenty people responded, and I was particularly interested in which tools they found most useful for learning new things, as well as which tools they really disliked using. For context, the percentages off to the right represent the proportion of respondents who selected each tool.
00:02:36.060
The survey allowed for multiple selections, and some notable patterns emerged. Firstly, collaboration is very popular: of the top four responses, two involved some form of collaboration—is it through pair programming or simply asking someone for clarification on what you're working on. Additionally, people have a love-hate relationship with documentation, which was the most popular yet also the least favored tool.
00:03:05.400
Another finding was that many rely heavily on various online resources, such as Google, YouTube videos, and guided tutorials. I also posed open-ended questions regarding what was helpful versus what was unhelpful, and the responses largely corroborated my own experiences. This helped me narrow down some key themes. The main areas we will discuss today include Stress Management, consistent patterns, and mentorship.
00:03:41.520
The first theme, Stress Management, is about striking a balance between stimulation and stress. To start, I want to establish a common understanding of what stress actually is. Many of us often think about stress as an emotion—something we can feel, like anxiety or feeling overwhelmed. However, stress is actually a cascade of physiological effects triggered by a stressor. It encompasses not just our emotions, but how our body reacts as well.
00:04:40.739
Stress can originate from real or perceived threats. These can be physical, like facing a wild animal, or social, like presenting in front of an unfamiliar audience at a conference. What happens is that this perceived threat activates our stress response, resulting in neurotransmitters in the brain that increase activity in certain areas while decreasing it in others.
00:05:03.539
This process also triggers a release of stress hormones that circulate through the bloodstream, preparing us for a fight-or-flight response. This includes increasing blood pressure, raising blood sugar levels, and speeding up heart rate while slowing down digestion. The key takeaway is that recovering from a stressful event can take time. Even when you feel emotionally better, your body requires time to return to its baseline state.
00:05:41.760
Stress isn't inherently bad—it has evolved to help us focus our attention on things that need our immediate response. However, stress can also disrupt learning and significantly impair creativity. It hampers our ability to retrieve memories and can negatively affect how we process new information. This creates a situation where we can perform routine or mechanical tasks under pressure but struggle with complex cognitive functions.
00:06:43.139
Another important point is that stress lowers activity in the prefrontal cortex, which is responsible for planning and complex thinking. So, during periods of stress, you'll find it more challenging to focus your attention, and the productivity may not reflect the effort you're putting in.
00:07:17.340
Fortunately, the types of stressors we face while onboarding are primarily influenced by our perceptions of the environment. Concerns about being negatively evaluated by team members or feelings of imposter syndrome can heighten stress levels. By tackling these perceptions, we can mitigate some cognitive impacts associated with stress.
00:07:56.339
Some stressors we can work to alleviate include feelings of impostor syndrome, communication breakdowns, and feelings of overwhelm. There are concrete strategies to address these issues. For instance, impostor syndrome often stems from the difficulty in recognizing one's achievements as a result of effort, rather than luck or coincidence.
00:08:36.119
To counter impostor syndrome, it helps to clearly define what success looks like. A valuable metric shared with me by a mentor is that, in a corporate environment, success often means delivering value to customers — providing useful products that simplify their lives.
00:09:00.600
Moreover, my team excels at fostering a culture of public recognition. When someone successfully ships a new feature or contributes significantly to the QA process, we publicly acknowledge their contributions, which helps reinforce positive experiences and builds confidence. Feedback is also critical; people need to receive acknowledgment for what they're doing well.
00:09:43.920
Additionally, setting people up for success requires support through resources such as documentation, onboarding videos, mentorship, and clear expectations. When new team members understand what is expected, they can self-regulate and feel validated in their efforts. We can also help them ramp-up their involvement with progressively challenging tasks—rather than just throwing them into the deep end.
00:10:25.380
Team support is also crucial; isolation can intensify impostor syndrome. Having a diverse team can counteract this feeling, as different perspectives enhance collaboration. Diversity should be considered not just via demographics but also in terms of experience. For instance, my team includes developers from boot camps and traditional computer science programs, leading to varied approaches and insights that improve our overall product.
00:11:00.360
In addition to boosting morale and building confidence, regular feedback and checkpoints help everyone stay on track. Early course correction is essential, as it ensures team members remain validated in their accomplishments and minimizes confusion. Collaborations, particularly with senior team members, provide insights into different methodologies and thought processes, helping ease any feeling of isolation.
00:11:47.940
Now, let's have a little fun! If you're feeling tired of sitting and listening, I invite you to stand up for a moment. We're going to do a quick polling activity. I'm going to show you a pattern, and you'll need to fill in the blanks for one of the options. Move to one side of the room if you choose one option and to the other side for the alternative. Don't worry about memorizing—just go with your gut!
00:12:18.780
First up, we have a blackfish, a gray fish, and a teal fish. Do we think the next one is the purple fish or the whale? So if you think it's a fish, go to this side; if you think it's a whale, go to that side.
00:12:44.820
Alright, it looks like the fish is the winner! Anyone want to share their reasoning? Yes, fantastic! It is, indeed, the fish!
00:13:08.520
Now for our second question, which will be a little trickier. We have a penguin, a platypus, and a peacock. What do you think comes next — a duck or a polar bear? Alright, everyone discuss and move to your sides!
00:13:50.340
Okay, it looks like there’s a divide! Team Duck, feel free to voice your opinion! And Team Polar Bear, you can do the same. A consensus has formed, and it seems Team Duck has defended their choice with solid reasoning!
00:14:20.880
In this instance, the reasoning suggests that the answers relate to animals that start with the letter 'P.' This kind of ambiguous pattern, which I've termed 'polar bear patterns,' can cause confusion among team members. During a code review, these patterns can muddy our understanding of code construction.
00:14:34.320
So, how can we improve our documentation? Use pull requests (PRs) to explain your decisions, even if it seems obvious. This grants others the opportunity to understand the rationale behind your choices. Blogs serve a similar purpose, offering insight into new features or strategies we've adopted. A recurring complaint is the inconsistency of documentation — sometimes it’s useful, and other times, it can be terribly unhelpful.
00:15:13.800
Readable patterns in coding are essential. As Ruby developers, we should prioritize creating code that is easy to read, even for those who may not be the most experienced. This extends to ensuring our work is understandable in the long run and providing context on which versions of the tools we used.
00:16:00.360
Tests play a crucial role as well; they don’t just identify when something breaks, but also help document intended behaviors. Good tests are descriptive and provide clarity around expected outcomes, which in turn helps establish our design patterns.
00:16:55.620
As we near the end, I’d like to reiterate that teamwork truly makes the dream work! Feedback from my informal survey indicates that coding with an experienced buddy is viewed as overwhelmingly beneficial for onboarding. The 'experienced buddy' doesn't necessarily have to be a senior developer; they can simply be someone who is more familiar with specific parts of the codebase or tool.
00:17:56.520
This collaborative dynamic enhances understanding for everyone involved, whether they’re teaching or learning. It’s also effective for identifying polar bear patterns, which can often arise from ambiguous naming or setup. Discussing these areas can clarify confusion and promote understanding.
00:18:38.250
Also, it is critical to recognize that everyone has something to contribute. Diverse perspectives foster innovation, improving the overall quality of our product. Engaging with teammates from various backgrounds helps expand our understanding of user needs and potentially exposes hidden edge cases.
00:19:18.750
Moreover, a diverse team reduces feelings of isolation among new hires, which can exacerbate feelings of impostor syndrome. When your team comprises individuals with different experiences, educational backgrounds, and viewpoints, it creates a supportive environment.
00:20:06.900
So, how do we successfully integrate teamwork into our workplace culture? One effective strategy is assigning buddies or project points of contact. Having a designated person within a team who is approachable makes it easier for new hires to seek clarity and avoid confusion.
00:21:00.840
Additionally, implementing regular check-in meetings can help alleviate stress. These meetings provide structured opportunities to ask for help and share challenges, making it easier for team members to communicate and support one another.
00:21:36.540
During remote work periods, my teammates and I established informal morning check-ins, where we'd provide brief outlines of our daily tasks, any potential blockers, and some casual chit-chat. This practice has continued even after returning to in-person collaboration.
00:22:17.280
Our weekly meetings, lasting 30 minutes or less, serve as informal touchpoints where we discuss our progress, challenges, and upcoming needs, allowing team members to communicate proactively.
00:22:55.320
Pair programming remains a popular tool for onboarding. It helps individuals observe the coding process of more experienced developers, learn shortcuts, and discover resources. This method is particularly effective, as it does not solely rely on one-on-one interaction, allowing a more collaborative learning environment.
00:23:43.740
We should also encourage a gradual increase in responsibilities for new hires, ensuring that they do not feel overwhelmed. This process involves providing opportunities for increased autonomy as they become more confident in their skills, rather than just tossing them into the deep end.
00:24:28.020
Asynchronous collaboration has its place as well. With teams spread across various time zones, using pull request comments enhances communication, especially among cross-functional teams.
00:25:00.700
Broadly speaking, effective mentorship and the growth of team members should not be viewed as optional—something nice to do on the side. It should be integral to your team's culture, similar to how coding and shipping software are prioritized.
00:25:56.460
Going forward, I encourage teams to actively schedule time for mentorship, allowing senior team members to work closely with junior hires in an intentional and organized manner. This commitment will yield long-term benefits not only for new team members but for the entire team as their skills and confidence grow.
00:26:46.680
Before I conclude, I want to thank several groups. I express my gratitude to my colleagues at workforce.com for their support and input during my survey. A special thank you to RailsConf 2023 for the opportunity to speak at my first conference, and to freepik.com for providing public domain images.
00:27:21.720
And a final thanks to all of you for listening to my talk. It means a great deal to me.
00:28:01.380
Now, does anyone have any questions? Additionally, I have Neuroscience articles and related materials linked in the slides, and I'm happy to discuss them!
00:28:38.640
Yes! I'm thrilled you brought that question up. The question revolves around unfamiliar or intimidating parts of a codebase, especially legacy code. I've been in this situation recently myself.
00:29:12.960
In my case, I worked on an integration with a mentor who also lacked experience in that area. Although we were unsure together, the collaboration was beneficial because we were both able to contribute our thoughts and insights.
00:29:41.460
Even as a junior developer, I actively engaged by asking questions and clarifying reasons behind certain decisions. This experience was valuable—we learned together.
00:30:22.680
Further, the question was about differences in mentorship experiences between educational psychology and coding. In coding, the peer-to-peer dynamic is much stronger, with a smaller experience gap at times.
00:30:57.480
In educational psychology, a clear hierarchy exists compared to coding, and most interactions feel heavily one-sided. Coding encourages dialogue—fostering collaborative mentorship that can evolve positively.
00:31:43.680
Does anyone else have further questions or inquiries about varied perspectives?
00:31:50.640
In working with larger codebases like a massive Ruby monolith that no one has touched, communication and clarity help immensely, whether discussing with senior team members or those from different teams.
00:32:20.640
With effective communication, a more comprehensive understanding emerges, and collaboration fosters a supportive environment. Thank you again, everyone.
00:32:49.680
Now, I’ll share additional resources and articles linked in the slides. Thank you for your time!