SlideShare a Scribd company logo
1 of 27
Download to read offline
Persiapan Sebelum Ujian Sertifikasi
Associate Android Developer (AAD)
Ahmad Arif Faizin
(Curriculum Developer-Dicoding Indonesia)
Apa itu AAD?
● Sertifikasi resmi langsung dari
Google Developers Certification.
● Menguji skill yang harus dimiliki
untuk memulai karir sebagai
Android Developer dengan standar
global.
● Bisa menjadi bukti otentik bahwa
kamu ahli dan berkompeten.
Keuntungan Sertifikasi
● Kamu bisa cantumkan badge AAD di
LinkedIn, medsos, email, dsb.
● Lebih cepat dilirik perusahaan.
● Kemudahan dalam mengambil
project nasional.
● Berkesempatan ke Google I/O*.
● Masuk ke daftar Google Developers
Certification Directory.
Proses Ujian AAD
● Daftar Google Developer Certification di TrueAbility.
● Bisa pilih Kotlin/Java.
● Verifikasi identitas (Passport/SIM).
● Cost $149 USD.
● Proses ujian.
● Tunggu pengumuman maksimal 45 hari .
Jenis Ujian AAD
● Coding ● Exit Interview
Ketentuan Ujian
● Menggunakan plugin Google
Developer Certification di Android
Studio
● Disediakan starter project.
● Lengkapi 8 task yang diberikan.
● Waktu pengerjaan 8 jam.
● Boleh buka browser &
StackOverflow :)
Materi Ujian
● Android core functionality
● User interface
● Data management
● Debugging
● Testing
Sumber : https://developers.google.com/certification/associate-android-developer#exam-content
Ketentuan Exit Interview
● Bisa pilih waktu sendiri 7 hari
setelah ujian coding.
● Bukan interview langsung, namun
hanya merekam jawaban.
● 5 soal terkait project.
● Waktu menjawab per soal maksimal
2 menit (total 10 menit).
● Harus menggunakan bahasa
Inggris.
Materi Interview
● Project apa yang dibuat?
● Bagian mana yang paling susah?
● Teori seputar Android.
● Bagaimana suatu fitur bekerja?
● Bagaimana cara menyelesaikan
suatu masalah?
Bagaimana Jika Gagal?
● Jika gagal sekali, maka harus menunggu 14 hari .
● Jika gagal lagi, maka harus menunggu 2 bulan.
● Jika gagal lagi, maka harus menunggu 1 tahun.
Note:
Harus daftar dan bayar lagi :(
Let’s Prepare!
Study Guide
Android Core
Toast, Snackbar, JobScheduler, WorkManager, Notification + Pending Intent.
User interface
ConstraintLayout, RecyclerView, Paging, ViewPager2, CustomView, Style and
Theme (Dark Mode), Menu & Pickers.
Data management
LiveData & Single Event, ViewModel & ViewModelFactory, Room & RawQuery,
SharedPreference & Setting.
Testing
UI Testing dengan Espresso.
Android Architecture Component
● Activity/Fragment
● ViewModel
● LiveData
● Repository
● Room
Sample Case #1 : Complete Database Table
@Entity(tableName = "tasks")
data class Task(
@PrimaryKey(autoGenerate = true)
@NonNull
@ColumnInfo(name = "id")
val id: Int = 0,
@NonNull
@ColumnInfo(name = "title")
val title: String,
@NonNull
@ColumnInfo(name = "dueDate")
val dueDateMillis: Long,
@NonNull
@ColumnInfo(name = "completed")
val isCompleted: Boolean = false
)
data class Task(
val id: Int = 0,
val title: String,
val dueDateMillis: Long,
val isCompleted: Boolean = false
)
{
"fieldPath": "title",
"columnName": "title",
"affinity": "TEXT",
"notNull": true
}
● Schema in JSON
● Starter Code
Sample Case #2 : Define DAO
@Dao
interface TaskDao {
@RawQuery(observedEntities = [Task::class])
fun getTasks(query: SupportSQLiteQuery):
DataSource.Factory<Int, Task>
@Query("SELECT * FROM tasks WHERE completed
= 0 ORDER BY dueDate ASC LIMIT 1")
fun getNearestActiveTask(): Task
@Insert(onConflict =
OnConflictStrategy.REPLACE)
fun insertAll(vararg tasks: Task)
@Delete
suspend fun deleteTask(task: Task)
}
interface TaskDao {
fun getTasks(query: SupportSQLiteQuery):
DataSource.Factory<Int, Task>
fun getNearestActiveTask(): Task
fun insertAll(vararg tasks: Task)
suspend fun deleteTask(task: Task)
}
● Starter Code
Sample Case #3 : Pre-populate Database
fun getInstance(context: Context): TaskDatabase {
return INSTANCE ?: synchronized(this) {
val instance = Room.databaseBuilder(context.applicationContext, TaskDatabase::class.java,
"task.db)
.addCallback(object : Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
super.onCreate(db)
INSTANCE?.let { database ->
Executors.newSingleThreadScheduledExecutor().execute {
fillWithStartingData(context.applicationContext, database.taskDao())
}
}
}
})
.build()
INSTANCE = instance
instance
}
}
Sample Case #4 : Paging
companion object {
const val PAGE_SIZE = 30
const val PLACEHOLDERS = true
}
fun getTasks(filter: TasksFilterType): LiveData<PagedList<Task>> {
val query = "SELECT * FROM tasks WHERE completed = 1"
val tasks = tasksDao.getTasks(query)
val config= PagedList.Config.Builder()
.setEnablePlaceholders(PLACEHOLDERS)
.setInitialLoadSizeHint(PAGE_SIZE)
.setPageSize(PAGE_SIZE)
.build()
return LivePagedListBuilder(tasks, config).build()
}
Sample Case #5 : Implement Setting
class SettingsFragment : PreferenceFragmentCompat() {
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
setPreferencesFromResource(R.xml.root_preferences, rootKey)
val prefListThemes = findPreference<ListPreference>(getString(R.string.pref_key_dark))
prefListThemes?.setOnPreferenceChangeListener { _, newValue ->
when (newValue) {
getString(R.string.pref_dark_on) -> updateTheme(AppCompatDelegate.MODE_NIGHT_YES)
getString(R.string.pref_dark_off) -> updateTheme(AppCompatDelegate.MODE_NIGHT_NO)
else -> updateTheme(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)
}
}
}
private fun updateTheme(mode: Int): Boolean {
AppCompatDelegate.setDefaultNightMode(mode)
requireActivity().recreate()
return true
}
}
Other Sample Case
● Lengkapi kode di ViewModel & Repository.
● Lengkapi kode di RecyclerView Adapter.
● Buat layout sesuai mockup.
● Tampilkan notifikasi setiap jam 6 pagi dan ketika diklik bisa masuk ke
aplikasi.
● Gunakan Custom View yang disediakan.
● Benerin bug dari QA berikut ...
● Buat UI testing ketika ...
3 Simulation Project
TO DO yang Jelas
Review yang Membangun
Tips & Trik
● Mulai pagi hari, pilih hari yang longgar. Atur waktu istirahat (untuk ibadah).
● Pilih hari yang berbeda dengan hari pendaftaran, bisa jadi ada problem saat
mendaftar.
● Jangan panik, lihat seluruh kode dan pahami alur aplikasi & instruksinya.
● Lihat contoh kode di class lain, beberapa kode yang menjadi task ada di class
lain.
● Fokus untuk menampilkan data dulu, setelah itu kerjakan dari yang paling
mudah.
● Manfaatkan shortcut dan plugin.
● Jangan menambahkan kode yang tidak diperintahkan.
● Double check / triple check setelah selesai.
Contact:
Ahmad Arif Faizin
arif@dicoding.com
medium.com/@arifaizin
Replace Me!
(Bisa ditambahkan dengan image yang relevan)

More Related Content

What's hot

Penerapan text mining menggunakan python
Penerapan text mining menggunakan pythonPenerapan text mining menggunakan python
Penerapan text mining menggunakan pythonAndreas Chandra
 
Dts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlinDts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlinAhmad Arif Faizin
 
Domain Driven Design Made Functional with Python
Domain Driven Design Made Functional with Python Domain Driven Design Made Functional with Python
Domain Driven Design Made Functional with Python Jean Carlo Machado
 
Pemrograman Mobile Pertemuan 1
Pemrograman Mobile Pertemuan 1Pemrograman Mobile Pertemuan 1
Pemrograman Mobile Pertemuan 1Akhmad Khanif Zyen
 
Struktur bahasa delphi
Struktur bahasa delphiStruktur bahasa delphi
Struktur bahasa delphimistriana
 
Algoritma dan Pemrograman C++ (Percabangan)
Algoritma dan Pemrograman C++ (Percabangan)Algoritma dan Pemrograman C++ (Percabangan)
Algoritma dan Pemrograman C++ (Percabangan)Nabil Muhammad Firdaus
 
C traps and pitfalls for C++ programmers
C traps and pitfalls for C++ programmersC traps and pitfalls for C++ programmers
C traps and pitfalls for C++ programmersRichard Thomson
 
Algebraic Data Types for Data Oriented Programming - From Haskell and Scala t...
Algebraic Data Types forData Oriented Programming - From Haskell and Scala t...Algebraic Data Types forData Oriented Programming - From Haskell and Scala t...
Algebraic Data Types for Data Oriented Programming - From Haskell and Scala t...Philip Schwarz
 
Dts x dicoding #4 memulai pemrograman kotlin
Dts x dicoding #4 memulai pemrograman kotlinDts x dicoding #4 memulai pemrograman kotlin
Dts x dicoding #4 memulai pemrograman kotlinAhmad Arif Faizin
 
Android JetPack: easy navigation with the new Navigation Controller
Android JetPack: easy navigation with the new Navigation ControllerAndroid JetPack: easy navigation with the new Navigation Controller
Android JetPack: easy navigation with the new Navigation ControllerLeonardo Pirro
 
Algoritma Greedy (contoh soal)
Algoritma Greedy (contoh soal)Algoritma Greedy (contoh soal)
Algoritma Greedy (contoh soal)Ajeng Savitri
 

What's hot (20)

Jawaban Struktur data soal-latihan
Jawaban Struktur data soal-latihanJawaban Struktur data soal-latihan
Jawaban Struktur data soal-latihan
 
Penerapan text mining menggunakan python
Penerapan text mining menggunakan pythonPenerapan text mining menggunakan python
Penerapan text mining menggunakan python
 
Dts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlinDts x dicoding #3 memulai pemrograman kotlin
Dts x dicoding #3 memulai pemrograman kotlin
 
Domain Driven Design Made Functional with Python
Domain Driven Design Made Functional with Python Domain Driven Design Made Functional with Python
Domain Driven Design Made Functional with Python
 
Double linked list
Double linked listDouble linked list
Double linked list
 
Pengenalan Java Swing
Pengenalan Java SwingPengenalan Java Swing
Pengenalan Java Swing
 
Constructor and destructor
Constructor  and  destructor Constructor  and  destructor
Constructor and destructor
 
Pemrograman Mobile Pertemuan 1
Pemrograman Mobile Pertemuan 1Pemrograman Mobile Pertemuan 1
Pemrograman Mobile Pertemuan 1
 
Optimasi query
Optimasi queryOptimasi query
Optimasi query
 
Control flow statements in java
Control flow statements in javaControl flow statements in java
Control flow statements in java
 
Struktur bahasa delphi
Struktur bahasa delphiStruktur bahasa delphi
Struktur bahasa delphi
 
Algoritma dan Pemrograman C++ (Percabangan)
Algoritma dan Pemrograman C++ (Percabangan)Algoritma dan Pemrograman C++ (Percabangan)
Algoritma dan Pemrograman C++ (Percabangan)
 
C traps and pitfalls for C++ programmers
C traps and pitfalls for C++ programmersC traps and pitfalls for C++ programmers
C traps and pitfalls for C++ programmers
 
Algebraic Data Types for Data Oriented Programming - From Haskell and Scala t...
Algebraic Data Types forData Oriented Programming - From Haskell and Scala t...Algebraic Data Types forData Oriented Programming - From Haskell and Scala t...
Algebraic Data Types for Data Oriented Programming - From Haskell and Scala t...
 
Dts x dicoding #4 memulai pemrograman kotlin
Dts x dicoding #4 memulai pemrograman kotlinDts x dicoding #4 memulai pemrograman kotlin
Dts x dicoding #4 memulai pemrograman kotlin
 
Latihan soal struktur data
Latihan soal struktur dataLatihan soal struktur data
Latihan soal struktur data
 
Android JetPack: easy navigation with the new Navigation Controller
Android JetPack: easy navigation with the new Navigation ControllerAndroid JetPack: easy navigation with the new Navigation Controller
Android JetPack: easy navigation with the new Navigation Controller
 
Function dalam PHP
Function dalam PHPFunction dalam PHP
Function dalam PHP
 
Latihan latihan logika algoritma
Latihan latihan logika algoritmaLatihan latihan logika algoritma
Latihan latihan logika algoritma
 
Algoritma Greedy (contoh soal)
Algoritma Greedy (contoh soal)Algoritma Greedy (contoh soal)
Algoritma Greedy (contoh soal)
 

Similar to Persiapan Sebelum Ujian Sertifikasi Associate Android Developer - Ahmad Arif Faizin

Training Android Wonderkoding
Training Android WonderkodingTraining Android Wonderkoding
Training Android WonderkodingAhmad Arif Faizin
 
Belajar Android PHP MySQL Login dengan Volley
Belajar Android PHP MySQL Login dengan VolleyBelajar Android PHP MySQL Login dengan Volley
Belajar Android PHP MySQL Login dengan VolleyAgus Haryanto
 
F 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajriF 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajriSyarif Fudin
 
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...DicodingEvent
 
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLiteCara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLitecreatorb dev
 
Tutorial JSON-LD dan RabbitMQ di Java
Tutorial JSON-LD dan RabbitMQ di JavaTutorial JSON-LD dan RabbitMQ di Java
Tutorial JSON-LD dan RabbitMQ di JavaHendy Irawan
 
Belajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog ProdukBelajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog ProdukAgus Haryanto
 
54 hal-dasar-dasar-jquery
54 hal-dasar-dasar-jquery54 hal-dasar-dasar-jquery
54 hal-dasar-dasar-jqueryFajar Baskoro
 
#7 - Stored Procedure And Function.pptx
#7 - Stored Procedure And Function.pptx#7 - Stored Procedure And Function.pptx
#7 - Stored Procedure And Function.pptxahmadfadlitambunan
 
Tutorial lanjutan java netbeans 8 : Create Read Update Delete
Tutorial lanjutan java netbeans 8 : Create Read Update DeleteTutorial lanjutan java netbeans 8 : Create Read Update Delete
Tutorial lanjutan java netbeans 8 : Create Read Update DeleteSMK Negeri 6 Malang
 
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...GITS Indonesia
 
001 belajar java dasar
001   belajar java dasar001   belajar java dasar
001 belajar java dasarTri Suwarno
 
Modul framework code igniter
Modul framework code igniterModul framework code igniter
Modul framework code igniterFakhir Rizal
 
Pemrograman Dasar Android
Pemrograman Dasar AndroidPemrograman Dasar Android
Pemrograman Dasar AndroidAbas Djumadi
 
Jeni Web Programming Bab 15 J2 Ee Design Pattern
Jeni Web Programming Bab 15 J2 Ee Design PatternJeni Web Programming Bab 15 J2 Ee Design Pattern
Jeni Web Programming Bab 15 J2 Ee Design PatternIndividual Consultants
 

Similar to Persiapan Sebelum Ujian Sertifikasi Associate Android Developer - Ahmad Arif Faizin (20)

Training Android Wonderkoding
Training Android WonderkodingTraining Android Wonderkoding
Training Android Wonderkoding
 
Belajar Android PHP MySQL Login dengan Volley
Belajar Android PHP MySQL Login dengan VolleyBelajar Android PHP MySQL Login dengan Volley
Belajar Android PHP MySQL Login dengan Volley
 
F 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajriF 10011543 fathorazi nur fajri
F 10011543 fathorazi nur fajri
 
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
Dicoding Developer Coaching #23: Android | Membangun Modern App dengan Jetpac...
 
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLiteCara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
Cara Membuat Aplikasi Android Resep Masakan Sederhana Android-SQLite
 
Tutorial JSON-LD dan RabbitMQ di Java
Tutorial JSON-LD dan RabbitMQ di JavaTutorial JSON-LD dan RabbitMQ di Java
Tutorial JSON-LD dan RabbitMQ di Java
 
Modul pbo baru
Modul pbo baruModul pbo baru
Modul pbo baru
 
Belajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog ProdukBelajar Android Membuat Katalog Produk
Belajar Android Membuat Katalog Produk
 
Jeni konsep oop
Jeni   konsep oopJeni   konsep oop
Jeni konsep oop
 
Jquery id
Jquery idJquery id
Jquery id
 
54 hal-dasar-dasar-jquery
54 hal-dasar-dasar-jquery54 hal-dasar-dasar-jquery
54 hal-dasar-dasar-jquery
 
JQuery
JQueryJQuery
JQuery
 
#7 - Stored Procedure And Function.pptx
#7 - Stored Procedure And Function.pptx#7 - Stored Procedure And Function.pptx
#7 - Stored Procedure And Function.pptx
 
Tutorial lanjutan java netbeans 8 : Create Read Update Delete
Tutorial lanjutan java netbeans 8 : Create Read Update DeleteTutorial lanjutan java netbeans 8 : Create Read Update Delete
Tutorial lanjutan java netbeans 8 : Create Read Update Delete
 
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...
GITS Class #11: Android Architecture Component bersama Derayan Bima (Android ...
 
Belajar Java Programming
Belajar Java ProgrammingBelajar Java Programming
Belajar Java Programming
 
001 belajar java dasar
001   belajar java dasar001   belajar java dasar
001 belajar java dasar
 
Modul framework code igniter
Modul framework code igniterModul framework code igniter
Modul framework code igniter
 
Pemrograman Dasar Android
Pemrograman Dasar AndroidPemrograman Dasar Android
Pemrograman Dasar Android
 
Jeni Web Programming Bab 15 J2 Ee Design Pattern
Jeni Web Programming Bab 15 J2 Ee Design PatternJeni Web Programming Bab 15 J2 Ee Design Pattern
Jeni Web Programming Bab 15 J2 Ee Design Pattern
 

More from DicodingEvent

Developer Coaching #114.pdf
Developer Coaching #114.pdfDeveloper Coaching #114.pdf
Developer Coaching #114.pdfDicodingEvent
 
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...DicodingEvent
 
tantangan menjadi developer di abad 21
tantangan menjadi developer di abad 21tantangan menjadi developer di abad 21
tantangan menjadi developer di abad 21DicodingEvent
 
Mengenalkan augmented reality (ar) pada snapchat
Mengenalkan augmented reality (ar) pada snapchatMengenalkan augmented reality (ar) pada snapchat
Mengenalkan augmented reality (ar) pada snapchatDicodingEvent
 
Membangun Aplikasi Serverless di Platfrom AWS
Membangun Aplikasi Serverless di Platfrom AWSMembangun Aplikasi Serverless di Platfrom AWS
Membangun Aplikasi Serverless di Platfrom AWSDicodingEvent
 
IDCamp X Madrasah: Pengenalan Computational Thinking
IDCamp X Madrasah: Pengenalan Computational ThinkingIDCamp X Madrasah: Pengenalan Computational Thinking
IDCamp X Madrasah: Pengenalan Computational ThinkingDicodingEvent
 
Membuat Produk Digital Terbaik ala Startup Unicorn
Membuat Produk Digital Terbaik ala Startup UnicornMembuat Produk Digital Terbaik ala Startup Unicorn
Membuat Produk Digital Terbaik ala Startup UnicornDicodingEvent
 
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsTechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsDicodingEvent
 
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CDTechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CDDicodingEvent
 
Membuat Solusi Bermanfaat dengan Programming - Nur Rohman
Membuat Solusi Bermanfaat dengan Programming - Nur RohmanMembuat Solusi Bermanfaat dengan Programming - Nur Rohman
Membuat Solusi Bermanfaat dengan Programming - Nur RohmanDicodingEvent
 
Potensi karier menjadi ios developer di masa depan
Potensi karier menjadi ios developer di masa depanPotensi karier menjadi ios developer di masa depan
Potensi karier menjadi ios developer di masa depanDicodingEvent
 
Id camp x dicoding live : persiapan jadi software engineer hebat 101
Id camp x dicoding live : persiapan jadi software engineer hebat 101Id camp x dicoding live : persiapan jadi software engineer hebat 101
Id camp x dicoding live : persiapan jadi software engineer hebat 101DicodingEvent
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021DicodingEvent
 
Teknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
Teknologi Baru Android di Google I/O 2021 - Andrew KurniadiTeknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
Teknologi Baru Android di Google I/O 2021 - Andrew KurniadiDicodingEvent
 
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...DicodingEvent
 
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...DicodingEvent
 
Pengantar Cloud Computing dengan AWS - Petra Novandi Barus
Pengantar Cloud Computing dengan AWS - Petra Novandi BarusPengantar Cloud Computing dengan AWS - Petra Novandi Barus
Pengantar Cloud Computing dengan AWS - Petra Novandi BarusDicodingEvent
 
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...DicodingEvent
 
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...DicodingEvent
 
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...DicodingEvent
 

More from DicodingEvent (20)

Developer Coaching #114.pdf
Developer Coaching #114.pdfDeveloper Coaching #114.pdf
Developer Coaching #114.pdf
 
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
Ask Us Anything about Studi Independen Bersertifikat Kampus Merdeka X Dicodin...
 
tantangan menjadi developer di abad 21
tantangan menjadi developer di abad 21tantangan menjadi developer di abad 21
tantangan menjadi developer di abad 21
 
Mengenalkan augmented reality (ar) pada snapchat
Mengenalkan augmented reality (ar) pada snapchatMengenalkan augmented reality (ar) pada snapchat
Mengenalkan augmented reality (ar) pada snapchat
 
Membangun Aplikasi Serverless di Platfrom AWS
Membangun Aplikasi Serverless di Platfrom AWSMembangun Aplikasi Serverless di Platfrom AWS
Membangun Aplikasi Serverless di Platfrom AWS
 
IDCamp X Madrasah: Pengenalan Computational Thinking
IDCamp X Madrasah: Pengenalan Computational ThinkingIDCamp X Madrasah: Pengenalan Computational Thinking
IDCamp X Madrasah: Pengenalan Computational Thinking
 
Membuat Produk Digital Terbaik ala Startup Unicorn
Membuat Produk Digital Terbaik ala Startup UnicornMembuat Produk Digital Terbaik ala Startup Unicorn
Membuat Produk Digital Terbaik ala Startup Unicorn
 
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOpsTechTalk 2021: Peran IT Security dalam Penerapan DevOps
TechTalk 2021: Peran IT Security dalam Penerapan DevOps
 
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CDTechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
TechTalk 2021: Peningkatan Performa Software Delivery dengan CI/CD
 
Membuat Solusi Bermanfaat dengan Programming - Nur Rohman
Membuat Solusi Bermanfaat dengan Programming - Nur RohmanMembuat Solusi Bermanfaat dengan Programming - Nur Rohman
Membuat Solusi Bermanfaat dengan Programming - Nur Rohman
 
Potensi karier menjadi ios developer di masa depan
Potensi karier menjadi ios developer di masa depanPotensi karier menjadi ios developer di masa depan
Potensi karier menjadi ios developer di masa depan
 
Id camp x dicoding live : persiapan jadi software engineer hebat 101
Id camp x dicoding live : persiapan jadi software engineer hebat 101Id camp x dicoding live : persiapan jadi software engineer hebat 101
Id camp x dicoding live : persiapan jadi software engineer hebat 101
 
Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021Tips sukses berkarir sebagai developer dan programmer 2021
Tips sukses berkarir sebagai developer dan programmer 2021
 
Teknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
Teknologi Baru Android di Google I/O 2021 - Andrew KurniadiTeknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
Teknologi Baru Android di Google I/O 2021 - Andrew Kurniadi
 
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
Dicoding Developer Coaching #38: Android | 5 Library Android yang Patut Kamu ...
 
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
Dicoding Developer Coaching #37: Android | Kesalahan yang Sering Terjadi pada...
 
Pengantar Cloud Computing dengan AWS - Petra Novandi Barus
Pengantar Cloud Computing dengan AWS - Petra Novandi BarusPengantar Cloud Computing dengan AWS - Petra Novandi Barus
Pengantar Cloud Computing dengan AWS - Petra Novandi Barus
 
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...
Dicoding Developer Coaching #36: Android | Pentingnya Performa pada Aplikasi ...
 
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
Dicoding Developer Coaching #34: Android | Modular Android App dengan Dynamic...
 
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
Dicoding Developer Coaching #35: Android | Setup Continuous Integration di An...
 

Persiapan Sebelum Ujian Sertifikasi Associate Android Developer - Ahmad Arif Faizin

  • 1. Persiapan Sebelum Ujian Sertifikasi Associate Android Developer (AAD) Ahmad Arif Faizin (Curriculum Developer-Dicoding Indonesia)
  • 2. Apa itu AAD? ● Sertifikasi resmi langsung dari Google Developers Certification. ● Menguji skill yang harus dimiliki untuk memulai karir sebagai Android Developer dengan standar global. ● Bisa menjadi bukti otentik bahwa kamu ahli dan berkompeten.
  • 3. Keuntungan Sertifikasi ● Kamu bisa cantumkan badge AAD di LinkedIn, medsos, email, dsb. ● Lebih cepat dilirik perusahaan. ● Kemudahan dalam mengambil project nasional. ● Berkesempatan ke Google I/O*. ● Masuk ke daftar Google Developers Certification Directory.
  • 4.
  • 5. Proses Ujian AAD ● Daftar Google Developer Certification di TrueAbility. ● Bisa pilih Kotlin/Java. ● Verifikasi identitas (Passport/SIM). ● Cost $149 USD. ● Proses ujian. ● Tunggu pengumuman maksimal 45 hari .
  • 6. Jenis Ujian AAD ● Coding ● Exit Interview
  • 7. Ketentuan Ujian ● Menggunakan plugin Google Developer Certification di Android Studio ● Disediakan starter project. ● Lengkapi 8 task yang diberikan. ● Waktu pengerjaan 8 jam. ● Boleh buka browser & StackOverflow :)
  • 8. Materi Ujian ● Android core functionality ● User interface ● Data management ● Debugging ● Testing Sumber : https://developers.google.com/certification/associate-android-developer#exam-content
  • 9. Ketentuan Exit Interview ● Bisa pilih waktu sendiri 7 hari setelah ujian coding. ● Bukan interview langsung, namun hanya merekam jawaban. ● 5 soal terkait project. ● Waktu menjawab per soal maksimal 2 menit (total 10 menit). ● Harus menggunakan bahasa Inggris.
  • 10. Materi Interview ● Project apa yang dibuat? ● Bagian mana yang paling susah? ● Teori seputar Android. ● Bagaimana suatu fitur bekerja? ● Bagaimana cara menyelesaikan suatu masalah?
  • 11. Bagaimana Jika Gagal? ● Jika gagal sekali, maka harus menunggu 14 hari . ● Jika gagal lagi, maka harus menunggu 2 bulan. ● Jika gagal lagi, maka harus menunggu 1 tahun. Note: Harus daftar dan bayar lagi :(
  • 13. Study Guide Android Core Toast, Snackbar, JobScheduler, WorkManager, Notification + Pending Intent. User interface ConstraintLayout, RecyclerView, Paging, ViewPager2, CustomView, Style and Theme (Dark Mode), Menu & Pickers. Data management LiveData & Single Event, ViewModel & ViewModelFactory, Room & RawQuery, SharedPreference & Setting. Testing UI Testing dengan Espresso.
  • 14. Android Architecture Component ● Activity/Fragment ● ViewModel ● LiveData ● Repository ● Room
  • 15. Sample Case #1 : Complete Database Table @Entity(tableName = "tasks") data class Task( @PrimaryKey(autoGenerate = true) @NonNull @ColumnInfo(name = "id") val id: Int = 0, @NonNull @ColumnInfo(name = "title") val title: String, @NonNull @ColumnInfo(name = "dueDate") val dueDateMillis: Long, @NonNull @ColumnInfo(name = "completed") val isCompleted: Boolean = false ) data class Task( val id: Int = 0, val title: String, val dueDateMillis: Long, val isCompleted: Boolean = false ) { "fieldPath": "title", "columnName": "title", "affinity": "TEXT", "notNull": true } ● Schema in JSON ● Starter Code
  • 16. Sample Case #2 : Define DAO @Dao interface TaskDao { @RawQuery(observedEntities = [Task::class]) fun getTasks(query: SupportSQLiteQuery): DataSource.Factory<Int, Task> @Query("SELECT * FROM tasks WHERE completed = 0 ORDER BY dueDate ASC LIMIT 1") fun getNearestActiveTask(): Task @Insert(onConflict = OnConflictStrategy.REPLACE) fun insertAll(vararg tasks: Task) @Delete suspend fun deleteTask(task: Task) } interface TaskDao { fun getTasks(query: SupportSQLiteQuery): DataSource.Factory<Int, Task> fun getNearestActiveTask(): Task fun insertAll(vararg tasks: Task) suspend fun deleteTask(task: Task) } ● Starter Code
  • 17. Sample Case #3 : Pre-populate Database fun getInstance(context: Context): TaskDatabase { return INSTANCE ?: synchronized(this) { val instance = Room.databaseBuilder(context.applicationContext, TaskDatabase::class.java, "task.db) .addCallback(object : Callback() { override fun onCreate(db: SupportSQLiteDatabase) { super.onCreate(db) INSTANCE?.let { database -> Executors.newSingleThreadScheduledExecutor().execute { fillWithStartingData(context.applicationContext, database.taskDao()) } } } }) .build() INSTANCE = instance instance } }
  • 18. Sample Case #4 : Paging companion object { const val PAGE_SIZE = 30 const val PLACEHOLDERS = true } fun getTasks(filter: TasksFilterType): LiveData<PagedList<Task>> { val query = "SELECT * FROM tasks WHERE completed = 1" val tasks = tasksDao.getTasks(query) val config= PagedList.Config.Builder() .setEnablePlaceholders(PLACEHOLDERS) .setInitialLoadSizeHint(PAGE_SIZE) .setPageSize(PAGE_SIZE) .build() return LivePagedListBuilder(tasks, config).build() }
  • 19. Sample Case #5 : Implement Setting class SettingsFragment : PreferenceFragmentCompat() { override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { setPreferencesFromResource(R.xml.root_preferences, rootKey) val prefListThemes = findPreference<ListPreference>(getString(R.string.pref_key_dark)) prefListThemes?.setOnPreferenceChangeListener { _, newValue -> when (newValue) { getString(R.string.pref_dark_on) -> updateTheme(AppCompatDelegate.MODE_NIGHT_YES) getString(R.string.pref_dark_off) -> updateTheme(AppCompatDelegate.MODE_NIGHT_NO) else -> updateTheme(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM) } } } private fun updateTheme(mode: Int): Boolean { AppCompatDelegate.setDefaultNightMode(mode) requireActivity().recreate() return true } }
  • 20. Other Sample Case ● Lengkapi kode di ViewModel & Repository. ● Lengkapi kode di RecyclerView Adapter. ● Buat layout sesuai mockup. ● Tampilkan notifikasi setiap jam 6 pagi dan ketika diklik bisa masuk ke aplikasi. ● Gunakan Custom View yang disediakan. ● Benerin bug dari QA berikut ... ● Buat UI testing ketika ...
  • 21.
  • 22.
  • 24. TO DO yang Jelas
  • 26. Tips & Trik ● Mulai pagi hari, pilih hari yang longgar. Atur waktu istirahat (untuk ibadah). ● Pilih hari yang berbeda dengan hari pendaftaran, bisa jadi ada problem saat mendaftar. ● Jangan panik, lihat seluruh kode dan pahami alur aplikasi & instruksinya. ● Lihat contoh kode di class lain, beberapa kode yang menjadi task ada di class lain. ● Fokus untuk menampilkan data dulu, setelah itu kerjakan dari yang paling mudah. ● Manfaatkan shortcut dan plugin. ● Jangan menambahkan kode yang tidak diperintahkan. ● Double check / triple check setelah selesai.
  • 27. Contact: Ahmad Arif Faizin arif@dicoding.com medium.com/@arifaizin Replace Me! (Bisa ditambahkan dengan image yang relevan)