Gaining Confidence and Improving Android Developer Workflows as a Software Engineering Intern at Uber

Ankit Agrawal
13 min readintermediate
--
View Original

Overview

The article discusses Ankit Agrawal's internship experience at Uber, focusing on his work with the Android/Java Developer Experience team. It highlights the challenges he faced, the skills he gained, and the impact of his project, the Uber Error Parser, on improving developer workflows.

What You'll Learn

1

How to develop a feature that enhances developer workflows in IntelliJ IDEA

2

Why effective error visualization is crucial for improving coding efficiency

3

When to utilize tools like Buck and ErrorProne for build error detection

Prerequisites & Requirements

  • Basic understanding of Android development and Java programming
  • Familiarity with IntelliJ IDEA and version control systems like Git(optional)

Key Questions Answered

How did Ankit Agrawal's internship at Uber impact his development skills?
Ankit's internship at Uber significantly enhanced his technical skills, particularly in developing tools for Android developers. He learned to navigate a production environment, collaborated with experienced engineers, and gained confidence in his contributions, which shaped his approach to future projects.
What was the purpose of the Uber Error Parser project?
The Uber Error Parser aimed to visualize custom build errors inline in IntelliJ IDEA, allowing developers to identify and correct errors more efficiently. This tool was designed to enhance the overall developer experience by integrating error detection directly into the coding workflow.
What technologies were utilized in the development of the Uber Error Parser?
The development of the Uber Error Parser involved technologies such as Buck for build management, IntelliJ IDEA for the development environment, and ErrorProne for static analysis. These tools helped streamline the process of error detection and visualization within the Android monorepo.
How did Ankit overcome initial fears during his internship?
Ankit overcame his initial fears by engaging in hands-on projects, collaborating with experienced team members, and gradually building his confidence through successful contributions. His proactive approach to learning and seeking help from mentors played a crucial role in his development.

Technologies & Tools

Build System
Buck
Used for managing builds in the Android project.
IDE
Intellij Idea
The development environment where the Uber Error Parser was implemented.
Static Analysis
Errorprone
Utilized for detecting build errors in the codebase.

Key Actionable Insights

1
Developing tools that integrate error visualization can significantly enhance developer productivity.
By providing immediate feedback on errors within the coding environment, developers can address issues more efficiently, reducing the time spent switching between different tools.
2
Engaging in collaborative discussions with experienced engineers can accelerate learning and skill development.
Interns and junior developers should actively seek mentorship and participate in team discussions to gain insights and improve their technical abilities.
3
Familiarity with build tools like Buck and static analysis tools like ErrorProne is essential for modern software development.
Understanding these tools can help developers streamline their workflows and improve code quality, making them valuable assets in any development team.

Common Pitfalls

1
New developers often underestimate the importance of understanding the tools and frameworks they are working with.
This can lead to inefficiencies and frustration when encountering issues that could have been resolved with a better grasp of the technology stack.

Related Concepts

Android Development Best Practices
Error Handling In Software Engineering
Static Analysis Tools And Their Benefits