How I Earned the Distinction of Being One of the Top 7 Expert Developers at Indosat Ooredoo Digital Camp 2022

Kevin Jonathan
8 min readOct 19, 2023
IDCamp coordinator contacted me

On 6th September 2023, I was selected among one of the top 7 expert developers at Indosat Ooredoo Digital Camp 2022 (or IDCamp 2022) to represent the students graduating from the program. This was unexpected and I was so confused, yet happy at the same time. How can this be happening?

What is IDCamp?

Indosat Ooredoo Digital Camp, or commonly known as IDCamp, is a program held annually by Indosat Ooredoo Hutchison, aiming to build Indonesia as a Digital Nation by training potential young programmers/developers from Indonesia. IDCamp originally started since 2019, and still continues until now. There are many learning paths developers can choose, such as Android, iOS, Frontend website, etc.

My Thoughts and Reflections

In IDCamp 2022, I chose to enroll in iOS Developer Learning Path. My reason was because I was concentrating on learning mobile app development, especially in iOS. I even took iOS class in my university, and enrolled in Apple Developer Academy.

Everyone, even without prior knowledge of programming, can enroll in this IDCamp program. But I would still recommend having basic programming and logic reasoning skills so that the students can grasp the course materials easier. The course was being conducted using Dicoding Academy’s platform.

The iOS Developer learning path was as follows (it might change in the future):

Dicoding iOS Developer Learning Path (Translated)

The classes were pretty interesting for me, because Dicoding uses the mixed-approach between self-learning, examination, project-based submission, and videos. The only downside is that Dicoding still doesn’t support built-in IDE on their website for hands-on learning experience though, so students are advised to use their own devices to run the codes.

But there are ups and downs while learning the course that I experienced. For example, I had to finish my undergraduate thesis at the same time, and I was accepted as an iOS Developer Intern at Blibli.com too at the time. Also, sometimes I find the documentation in Dicoding platform pretty lacking. Reading my previous experience from my daily journal, sometimes I wonder how I could survive until now. But long story short, I managed to finish everything on my own without external help.

Reflection#1: Swift Programming Class

In this class, all is clear and pretty easy for me, because I had around 4 years of programming experience already. So I managed to pass this class without much difficulty, despite having limited experience on Swift programming. Everything in this class was all about the theory of Swift Programming, which is kind of almost similar to that of the official documentation of Swift language. To pass this class, I had to pass the final examination with a minimum score of 70% out of 100%. It covers everything from the basic topics like variable, function, class, struct, etc until the intermediate topics like generics, closure, etc.

I managed to get a score of 93% and passed the class on 29th May 2022. To be honest, I am personally a little bit disappointed because I thought that I could do much better and get a perfect score, but I think this is not that bad either.

Reflection#2: SOLID Principles of Programming (Optional Class)

If I recall correctly, this class was optional to participate in, so it should be fine whether the students choose to take it or not. Since this class was free of charge, I didn’t want to waste this opportunity and took the class.

This class was all about theory too, especially related to the SOLID principles of programming. SOLID is the abbreviation of Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation Principle, and Dependency Inversion Principle. It just means that we can use the principles to design our code beautifully and make it easy for the developers to collaborate and make changes to the existing code.

My opinion about this? this topic is pretty interesting and is recommended to be used in a team project. But I also think that this could be optional, because there are new ways of programming that I have seen recently. Take example of Dependency Inversion, there is something called Dependency Injection. While both Dependency Inversion and Dependency Injection are crucial concepts for writing clean and maintainable code, they serve different purposes. Dependency Inversion focuses on architectural design principles, emphasizing abstraction over concretion. Dependency Injection is a practical technique that enables the implementation of Dependency Inversion by injecting dependencies externally. The conclusion? use one of the principles based on the use case, it’s not like something is always better than the other one.

I managed to pass the class and got a score of 96% on 29th May 2022. Again, not a perfect score, but I just let it slide anyway.

Reflection#3: iOS App Development for Beginner Class

Finally, the practical class that I had been waiting for. This class was meant for beginners to learn iOS app development from zero. But since I already had the experience of iOS app development, especially in UIKit, I decided to try using SwiftUI.

This class was actually the perfect opportunity for me to learn SwiftUI, because SwiftUI skill was needed when I was interning for Blibli.com. There are many practices, but it was mostly related to UIKit at the time, so documentations related to SwiftUI in Dicoding website was very limited. I decided to learn at Apple’s website instead here. It only took me mere two hours to get a grasp of SwiftUI. I had developed a Flutter app before, which was using declarative UI programming, so the experience is almost similar on SwiftUI.

I managed to pass the class on 29th May 2022 by finishing the project with a score of 5 stars.

My iOS App Development for Beginner Class Project Score (Translated)

I learned to create an app that consists of a list format to display images and information with a minimum of 10 items, having a standard list-detail navigation format, data fetched with API, with minimum to no bugs.

Reflection#4: Fundamental iOS App Development Class

The iOS Developer learning path had just begun, and it was getting harder for me. The reason is because I was still interning at Blibli.com at the time, and had to finish two different tasks, one from my company, and one from IDCamp 2022 at the same time. The deadline was pretty imminent too, so I didn’t have a choice but to do both. I had to use my free time on Saturday to finish this IDCamp project.

Compared to the previous class, I learned additional topics like offline storage (CoreData, etc.), clean code by file separations, using Version Control like Git, and API calls (and managing the API call key in a PLIST file). I have to say that CoreData is simpler than RealmSwift, but I still chose to try using CoreData for my learning experience since I never had the chance to use it before.

I finished the final project on 9th October 2022, with a full 5 stars score.

My Fundamental iOS App Development Class Project Score (Translated)

And here is my project GitHub repository:

Reflection#5: Expert iOS App Development Class

The hardest class in this course, since the project level was almost similar to industry grade projects. It took me around 1–2 weeks to finish this project since I barely had free time at the time. The criterias to get 5 stars score were also much harder compared to the previous project and I almost gave up. But I did my best not to gave up and face the difficulty head on.

In this class, I learned how to use a linter (I used SwiftLint), VIPER pattern for SwiftUI, custom package or library (I used Swift Package Manager), modularization, continuous integration (I used CodeMagic for this project), Alarmofire for API calls, and reactive programming (I used Combine).

The difficulty gap between the fundamental and the expert class was very high that I had troubles when running my code. Also, I noticed that all the practical example in this course was using SwiftUI instead of UIKit like in previous classes. This made a lot of developers (especially the one using UIKit) confused and had to ask in the class forum or WhatsApp group for some help or guidance from the mentor. Yes that’s right, for this expert class, there was a mentor assigned to the students to help if the students are having troubles with the development. This system was almost similar to Bangkit Academy’s if I have to compare.

Long story short, I managed to finish this project on 26th December 2022 with a perfect score of 5 stars again, right after the day of Christmas! I wish I could finish it sooner so that I didn’t have to sacrifice my free time for this.

My Expert iOS App Development Class Project Score (Translated)

This is the link to my project GitHub repository:

And this is the link to the project’s custom package (with SPM):

The Final Result

My efforts weren’t in vain, because I was contacted by the IDCamp coordinator to represent the expert developers in the graduation ceremony. I dunno how I did it, but I am certain that this is because I tried to maintain my high score all the time, since the beginning until the final project.

As a token of appreciation, they sent me some rewards since I earned the distinction of being one of the top 7 expert developers at IDCamp 2022. I kindly want to thank the IDCamp team and Dicoding for this opportunity.

The rewards that I got from IDCamp team

Updated 30 October 2023: Dicoding team also invited me to be a reviewer in Expert iOS Developer class at Dicoding! Of course, I accepted the offer. As of 10 December 2023, I am officially the Academy Code Reviewer (External) at Dicoding Indonesia.

That’s all for my experience! I have yet to decide whether I should enroll in IDCamp 2023 or not, but I definitely think this was truly worth it.

Thank you for reading my article!

--

--

Kevin Jonathan

Just a student intricately weaving personal life experience and technology related stuffs, currently navigating the intersections of life.