
Working as a Mobile Developer at Chartboost. Our Experience.
November 16, 2021
3
min read
Like most mobile software engineers, Daniel and I started our careers as app developers, SDKs were tools we used to speed up our development and get things done in a more efficient and robust way, and we never gave much thought to the idea of working on an SDK.
One can think of developing an SDK as creating one specific module of an app, so most app development skills certainly are applicable. If you take pride in creating modularized and reusable code with public methods that are easy to understand and use, thats a big part of what working on an SDK requires.
Your users are not the final users of an app, but the engineers that develop that app. If you work on a software project as part of a team you want your code to be self-documenting, free of side effects and bugs. You dont want your peers (or your future self) to come asking for help on using a piece of code you wrote months ago or complaining that it does not do what they expected it to do. All this becomes more crucial when you have thousands of developers who you have never met using your code: the expectations are higher and so is the cost if something goes wrong.
When joining the Chartboost SDK team we had several expectations: less UI work, a bigger focus on architecture and lower level app layers, good testing and QA practices, and all this turned out to be true, but theres so much more.
After working for a couple of years on app development UI work can become somewhat repetitive how many times have you had to code a button or a login screen? and at times it can feel like you are spending your efforts into debugging the idiosyncrasies of a platforms UI framework rather than doing actual software engineering.
Many developers interests lean towards architecture and other app layers as they evolve in their careers. This fits well with the kind of work we do here in the Chartboost SDK.
As an SDK that basically shows ads we do have some UI components, but most of our UI logic is offloaded to web views. This does not mean we dont have to deal with native frameworks (UI and non-UI related), on the contrary. We focus on some key parts of these frameworks and we really go in depth. Theres no way for us to foresee all the possible integration setups that our SDK will be used in, and we support a wide range of OS versions and devices. With the number of users we have this means if something can go wrong it will go wrong. This forces us to gain a deep understanding of all the aspects and edge cases that any framework we use has. We may not ever have to integrate iOS widgets, new UICollectionView or complex RecyclerView layouts, but we need to become experts on view life-cycle, app footprint, memory usage and particular frameworks like SKAdNetwork or Google Play Services.
This does not mean we dont play around with new technologies. One of the unexpected things we found at Chartboost is how much time we would spend with the latest iOS and Android tech while developing testing apps, showcase apps, automation tools and tests. Our SDK needs to be everywhere, which means we need to make sure it works well with any new relevant technology e.g. SwiftUI or Jetpack Compose and we do that by using and testing with those technologies ourselves.
We love to make products wed ourselves want to use and we spend a lot of time on the drawing board figuring out whats the best architectural solution for a problem or how to best define a new public API so our users can integrate it smoothly.
We work every day with top-tier companies like Facebook, Twitter, Google and many more to make our products compatible with each other and optimize each others strengths. We need to understand industry standards such as MRAID, VAST or OpenRTB and coordinate with teams from other companies to get the job done.
Working on the Chartboost SDK means being part of an exciting environment where you can develop architectural skills while also delving into the intricacies of the Android and iOS platforms. At the same time, it is a must to stay up to date with the latest platform technologies and updates so it never gets boring.
Our products are integrated by hundreds of developers every day and used by millions of users worldwide so you will feel the impact of your work right away.