This is an English translation of the original Japanese article.
DMM, the company that tries its hand at anything and everything, has developed a variety of services available with our Android apps. Here is a rundown of how Android apps are developed at DMM.
I am @kgmyshin, a team member in the CTO/VPoE offices at DMM.com. LCC. DMM.com LLC has ventures in just about anything and everything. We have also developed a range of services with our Android apps. This article describes how Android apps are developed at DMM.
DMM’s multiple products
DMM has developed many services. The following is a sample of the Android apps developed by DMM Group.
Perhaps, you know some of these or have heard of them and thought “Oh, that’s also DMM.”
Having multiple teams creates close links across our group
We used to not assemble all our mobile engineers in one location to form a group or team, but rather had mobile app development teams for each division. That led to less and less interaction among Android engineers assigned to different business divisions and created an environment where, even if a team in one division was tackling an interesting technological challenge, it was hard to build up the knowledge base throughout the entire company.
Some teams also had many young engineers. Inevitably, there were architecture concerns, and quite a few teams were not really able to catch up and eventually kept their legacy applications.
But, that was the situation several years ago. That environment has been gradually cleared up as in-house demand for app development has risen.
Our mobile engineer community has steadily grown. We hold silent mokumokukai meetups regularly, created a mobile engineer knowledge space where anybody can post technical knowledge, rejection information, and other material about app development. Android lunches are held weekly. We also have Android study workshops which anyone, even from outside DMM, can participate in, and have also rolled out a variety of other measures.
These steps have definitely increased communication among Android engineers in a way that transcends the partitioned business divisions. This has made it much easier to accumulate knowledge and raised the level of our in-house mobile engineers along with app quality.
Building a recommended architecture
One measure that has had a particularly significant contribution to improving coding quality for mobile apps in all business divisions is the configuration of a recommended architecture.
Just as the name indicates, recommended architecture is the architecture configuration that users want the company to keep in mind when major architecture modifications are made or when new apps are developed.
Building an architecture requires quite a lot of time when done from scratch. Setting up a recommended architecture significantly reduces the time required.
Also, as mentioned above, our company has many apps. It is not unusual for app engineers to be reassigned or transferred to provide support in another division, so they may be involved in multiple app projects. When a recommended architecture is designed and adopted by business divisions, the considerable costs incurred as engineers try to catch up with new projects and tasks can be reduced now that the architecture is the same.
These were merits that we anticipated when the architecture was initially configured. At a glance, one might feel that the inability of business divisions to exercise discretion as to what sort of architecture they use might be regarded as a demerit, but the recommended architecture is not mandatory, only recommended. Business divisions are able to pick and choose what they want and some business divisions have actually done it that way.
It has been about two years since the recommended architecture was configured. It has been continually maintained, and used to a significantly greater extent in our divisions. Many divisions developing Android apps have adopted the recommended architecture.
As it has become more and more incorporated in processes, we have also seen merits which we did not initially anticipate. One is that team members have been able to engage in discussions about technology across division boundaries. Many team members have seen sample code of the recommended architecture. This has shaped a sort of common understanding about the code.
For example, when Jetpack Compose was adopted, the recommended architecture was used as the subject matter when we discussed what would be the best mode of adoption. When there isn't anything that is commonly understood by everyone, such as a recommended architecture, it is quite hard to have any sort of concrete discussion. Without that shared awareness, even if everyone got together to discuss something, it’s likely nothing substantial would result. Having our team members independent of any business division discuss and verify technologies has also produced a sort of natural knowledge sharing.
Organization where knowledge circulates
We currently have a project where we are introducing Kotlin Multiplatform Mobile (KMM) in the development process.
Our Android engineers as well as iOS engineers have been offering their perspectives in daily discussions about what we should do to put in place a friendly architecture that maintains the Android and iOS recommended architecture as a base and what will happen if we apply KMM to that.
This repository is kept open internally so it is viewable by anyone. Once this has been completed to a certain extent and development stabilized, it will be rolled out to other engineers internally and the number of projects using KMM will also gradually increase.
In this way, we have applied the recommended architecture to projects and improved it further thanks to feedback received during application. Today, we have an environment where knowledge is well circulated in this way internally.
That’s about all for the Android app development environment at DMM.
Career information, tech blogs, and other information about DMM
DMM.com LLC is looking to hire Android engineers. The following links provide career information as well as a sense of our company atmosphere If you’re interested, please check us out.
Also, if you would like to know more or just have a casual conversation about DMM, please contact me @kgmyshin.