The video on-demand of this session is available to logged in QCon attendees only. Please login to your QCon account to watch the session.

Session + Live Q&A

Analyzing Codebases for Fun and Profit

One problem existing for many developers today is ramping up quickly complex and sometimes messy codebases. Analyzing domains is an important skill when we need to solve complex problems, take ownership, contribute to open source, break down monoliths, or even perform code reviews in unknown domains. Using entry-points, breadth-first scanning, and operation tagging related to state or remote communication, you can demystify the domain, see where you need to dive deeper, and uncover what technical debt may exist.

Main Takeaways

1 Find out how to approach unknown complex codebases, understand them, and remove some technical debt.

2 Learn how to navigate through a codebase using static code analysis and sometimes a debugger.


What is the work that you're doing today in your day job?

I am currently working at Castlight Health, filling the role of an architect. I mostly work on company-wide initiatives, helping teams simplify and design their systems. Because of this, I constantly jump into legacy codebases to understand and redesign them. I recently spent time developing stream processing and event-driven systems. 

What are the takeaways from your session? 

My goal is to share techniques that have been helpful for me when jumping into complex codebases within time constraints. I feel like some engineers tend to rely too heavily on StackOverflow. Time pressure appears to be a primary factor, but also some of these codebases are very complex. If you are working on internal projects, one can only hope someone wrote some documentation and the tribal knowledge remains somewhere. For open-source projects, you file a ticket and hope someone will pick it up. Given minimal time and resources, how can you quickly get some level of comfort with the source code? I hope that the ideas and techniques I provide here will resonate and help someone do this better. Being able to quickly understand a code base is a critical skill for being an effective engineer.

Do you show specific developer tools or are you using tips on how to work with the team to get you up to speed? What focus do you have? 

I don't use anything developers don’t already have. Some of the pre-work before digging into codebases themselves may be obvious. You want some context, such as working with a developer who knows the code, reading the documentation, or trying out some simple examples. However, documentation and engineers are often limited, and lots of details and history only live in the codebases. Debuggers and other runtime observations often help identify an entry point or code branch you want to investigate. Most modern IDEs provide a massive advantage for analyzing codebases. 

My main focus is on identifying entry points and key functions of interest, not getting stuck understanding functions of passive interest, identifying potential items of debt, and how to share that knowledge with others. With Castlight, we invested more into using Kafka for mission-critical functions in the last few years. While, luckily, Kafka has a vast community and documentation, we were relying on it for tasks that have a significant impact on the business, so we had to ensure we understood its nuances, specifically around the Kafka consumer. So how do we up our knowledge as quickly as possible to somewhere between surface-level and active contributor?

Do you stick to static code reading, or do you ever fire up the debugger to see what it does, where the data flows?

It depends on my focus; if I am debugging a problem or identifying a given branch and entry-point, I leverage debuggers pretty heavily. In the world of Spring Boot, understanding all the entry points has become more complex with auto-configuration, which runtime debugging can aid in identifying. Sometimes, however, you don’t have the luxury of debugging, or setting up a debuggable environment would take longer than static code analysis.


Speaker

Jordan Bragg

Architect @CastlightHealth

Jordan Bragg is a generalist who started his career in QA at Lockheed Martin. Creating automated test frameworks, performance testing, and dealing with software developers laid an excellent foundation for improved quality and empathy. Jordan has since worked full-stack, focusing on back-end...

Read more
Find Jordan Bragg at:

Date

Tuesday Nov 2 / 12:10PM EDT (40 minutes)

Track

Becoming a Better Developer

Topics

Developer ExperienceDevelopmentProgrammingCode AnalysisTestingIDEsApplication SecurityTechnical Debt

Add to Calendar

Add to calendar

Share

From the same track

Session + Live Q&A Developer Experience

Creating an Atmosphere of Psychological Safety

Tuesday Nov 2 / 01:10PM EDT

Psychological safety is being able to show and employ one’s self without fear of negative consequences of self-image, status, or career. Psychological safety can be defined as a shared belief that the team is safe for interpersonal risk-taking. In psychologically safe teams, team members...

Tim Berglund

Senior Director of Developer Experience @Confluent

Session + Live Q&A Developer Experience

Talk Like a Suit: Making a Business Case for Engineering Work

Tuesday Nov 2 / 02:10PM EDT

We all know the feeling. We see these scary problems in our code and architecture, we raise our concerns, leadership nods their head encouragingly, but every planning session and backlog grooming, only features show up on the list. You think, well, I guess we'll have to wait for something...

David Van Couvering

Senior Principal Architect @eBay

PANEL DISCUSSION + Live Q&A Developer Experience

Becoming a Better Developer Panel

Tuesday Nov 2 / 03:10PM EDT

In this panel, we'll discuss ways to improve as developers. Are better tools the solution or can simple changes in mindset help be a more effective developer as well as a better team player? And what practices are already here but not yet universally adopted? 

Jordan Bragg

Architect @CastlightHealth

David Van Couvering

Senior Principal Architect @eBay

Dave Copeland

CTO @mood_health

View full Schedule