It’s been a year since I became a Junior Android Developer, during which I’ve gained valuable insights into teamwork, problem-solving, and technical skills. Here’s a look at my journey and future aspirations.
Finding the Internship
A bit of background: I graduated from university after three years and began my career as freelancer, focusing on automation and reverse engineering. I dedicated about a year to this work, but once my projects gained stability, I found myself with little to do. I spent my days and nights aimlessly surfing the internet, which led me to realize I needed a new challenge.
I discovered this opportunity at a job fair hosted by my university. Initially, I attended the fair with friends, seeking a break from my freelance work, which had been sparse lately. I didn’t expect to find a job but ended up applying for a Software Developer position, focusing on Java backend and Android native development. To my surprise, I was granted an interview that same day.
The position was for an internship, which allowed me to progress quickly through the hiring process. With my year of experience in Android development and a desire to change my tech stack, I felt ready to embrace this new challenge. About two weeks later, I received a call from HR, and since I had no immediate commitments, I decided to accept the internship offer, eager to experience working in an office setting for the first time.
Starting the Internship
On my first day, I navigated to the company using Google Maps. After signing some paperwork, I had a quick meeting with my team leader to understand the workflow (using GitHub, reporting, task estimation, etc.). I learned that my primary responsibility would be as an Android native developer, aligning with my strengths.
During the meeting, I was informed that I would have one month to create a demo app showcasing my skills to convince the company of my qualifications. I chose to enhance my existing projects, Udemy Coupons and my own SpringBoot server, adding additional features and modifying the architecture to meet the company’s standards.
Mentorship and Project Development
Later that day, I met my mentor, who was supportive but often busy during my internship. I mostly sought guidance from him regarding project requirements. The company provided a feature sheet to help demonstrate my comprehension of the framework.
Internship Timeline
- First Week:
- Read through all company policies.
- Learned how to estimate tasks (a skill I’m still mastering).
- Familiarized myself with messaging tools (Chatwork).
- Set up my MacBook (installing tools and accounts), while still using my personal laptop.
- Reviewed the coding guidelines (Android code style).
- Created a demo project to practice using Git and Gitflow, focusing on commit messages, branching, and pull requests.
- Got acquainted with Git commands and terminal usage.
- Second Week:
- Planned to learn about Android components but quickly advanced since I was already familiar with them.
- Started working on my demo project (cloning from my previous work and setting up a live server).
- Estimated features from the requirements sheet (most estimates were inaccurate).
- Broke down features into smaller subtasks.
- Began asking my mentor technical questions regarding project implementation.
- Third and Fourth Weeks:
- Focused deeply on the demo project, implementing authentication (JWT), custom zoomable views, dependency injection, dark mode, settings features, and list-detail screens.
- Confirmed requirements with my mentor.
- Received reviews and resolved comments on my pull requests for each feature.
Final Internship Assessment
I sent the built APK file and source code to my mentor and the team leader. In our 1:1 meeting, I received positive feedback: my technical skills were excellent, but my soft skills, particularly in explanation and presentation, needed improvement. Ultimately, my technical skills outweighed the shortcomings in my soft skills, leading to my acceptance into the team.
Two Months Probation
I first met my leader – the one that I respect most
During my two-month probation period, my first meeting with the project leader was a pivotal moment. I had a one-on-one conversation that lasted about an hour, during which I was struck by his impressive soft skills. Our shared experiences and communication styles resonated with me, inspiring a desire to improve my own abilities in these areas. This interaction changed my perspective on the importance of soft skills in the workplace.
I first met with the project that I’m gonna to work on
Shortly after, I was introduced to the project itself—an outdated Java Android application plagued by legacy code, duplication, and numerous bugs.
I was provided with a MacBook Air 2017 for Android Studio, which struggled under the load. My initial weeks were spent familiarizing myself with the codebase to understand its logic, and play around with it. After extensive troubleshooting and support from my leader, I began to grasp the general structure of the project.
My First Ticket (feature)
Eventually, I received my first official ticket from the client, which I initially estimated would take around 14 days to complete. However, it turned into a challenging 30-day endeavor. I faced obstacles integrating the API, which was poorly implemented, and had to navigate 2 existing pull requests with diffirent approace styles that complicated my development process.
This experience taught me the value of collaboration and communication; I realized that I needed to engage with my teammates instead of trying to solve everything on my own. By embracing teamwork, I became more efficient and focused on learning from my peers.
Transition to Full-Time Junior Android Developer
After a two-month probation period, I was officially accepted as a team member, even with my skill gaps. Although the salary was lower than my freelance income, I chose to quit freelancing due to the demands of my new job—a decision I later regretted.
Contributions Over One Year
I spent exactly one year collaborating with my team and leader on this project, completing a total of 19 tickets. Some primary features I developed include:
- Recently viewed items
- New flow for learning features
- Payment flow enhancements
- Deep dive into AI SDK integration
- Creation of various custom views and animations
- Push notification flow implementation
- API metrics tracking (not added later though)
- Integration of Flutter modules into the existing native app
- Try Implementing of WebRTC (SkyWay) for screen sharing features
Highlights and Insights
- Team Building: I had the opportunity to participate in a team trip, which helped me connect with colleagues and express myself.
- Collaboration with Testers: I learned that testers are allies, not adversaries. Everyone on the team strives to tackle bugs together, often working late to clear the bug list.
- Working with Knowledgeable BA/BPMs: Collaborating with a Business Analyst or Business Process Manager with strong technical knowledge is invaluable. It can be challenging to explain technical details to non-tech individuals, but this is an opportunity to enhance my communication skills.
- Coding Perspectives: The reality is that most people, apart from my pair programmer, do not care about intricate code details. Sharing technical code can lead to confusion and frustration.
- Curse of Knowledge: I learned that not everyone shares the same experiences. It’s important to communicate as if your audience is unfamiliar with the context.
- Communication Simplicity: Simplicity is key to effective communication. I strive to be direct, stating my needs first in meetings and messages.