Eric Kuck
Founder | Principal Software Engineer
Atlanta, Georgia, United States
Actions
Co-founder & CTO, building a future-facing platform on Kotlin Multiplatform and Compose Multiplatform.
Experienced principal engineer with a track record of success driving mobile platform architecture, modernization, modularization, CI/CD, performance engineering, observability, and developer experience at scale for companies like Reddit.
Extensive experience in early stage startups and accelerators.
Long-time open-source author and contributor.
Links
Area of Expertise
Topics
Goodness, Gracious, Great Builds of Gradle
Let's explore how Reddit's Android team has evolved its Gradle usage in recent history. We'll cover where the team started - hundreds of unique build.gradle files with no centralized control or cacheability - to a full-featured gradle plugin that handles configuration, dependencies, adds helpful tasks, and ensures build times stay reasonable.
Key Points:
We've all worked in projects with difficult to understand build environments. What are the benefits of encouraging conciseness and consistency throughout?
* A single lifecycle issue can cause a damaging ripple effect throughout the entire project
* Most Android engineers are not Groovy or Gradle experts and a lot of Internet advice is wrong or outdated. Make the right path the only path to prevent bugs.
* Unlocks mass-migrations (ex: kapt -> ksp)
Where Reddit's build system started and its pain points. These should be recognizable by anyone who's been doing Android development for long enough.
* Huge copy/pasted blocks of code scattered everywhere
* Several "right" ways to do things
* Decentralized, conflicting dependency management
* Eager evaluations everywhere!
What we've built to solve these pain points and accelerate our cycle times - Reddit Gradle Plugin (RGP).
* Central configuration in settings.gradle
* Different plugins for different project types (JVM, Android Library, Android App, Dynamic Feature, etc)
* Project configuration in a `reddit` block in each project build.gradle files
* Examples - Dagger, Anvil, Apollo, test configuration
* Project build.gradle files consist of nothing other than `projects`, `reddit`, and `dependencies`
What has RGP gotten for us?
* Configuration caching - developers have to go out of their way to break this now
* Improved build times - only doing what we _have_ to be doing for a project
* Mass migration capabilities
* Consistency, low mental overhead
* Machine-optimized JVM args for all
* Helpful built-in tasks (affected module tasks, custom code coverage tooling, etc)
* Observability
Case Study: How Android Platform @ Reddit learned to stop worrying and embrace DevX
Successful platform teams are often caretakers of the developer experience and productivity. Explore some of the ways that the Reddit platform team has evolved its tooling and processes over time, and how we turned a platform with multi-hour build times into a hive of modest efficiency. Hear about what worked, what challenges were faced, and learn how you can help your organization evolve successfully over time, no matter the scale.
Key Points:
What We Monitor & How We Measure
* Quantitative and Qualitative Measures
Approaches that improved our local build experience
* Better Code Organization
* Addressing the Pain of Context Switching
* Improved Build Times & Tools for Success
* Preventing Downstream Failures
Approaches that improved our CI build experience
* Improved Workflow Organization
* Faster Runtimes / Parallelism / Sharding
* Improved Stability & Interactivity
* Self-Serve Tooling & Awareness (Bots, so many bots)
Approaches that improved our test coverage and app quality
* Introducing a Full Testing Pyramid
* Observability and Enforcement of Code Coverage
2024 | San Francisco | droidcon Sessionize Event
2023 | NYC | droidcon Sessionize Event
Eric Kuck
Founder | Principal Software Engineer
Atlanta, Georgia, United States
Links
Actions
Please note that Sessionize is not responsible for the accuracy or validity of the data provided by speakers. If you suspect this profile to be fake or spam, please let us know.
Jump to top