Kompetensi Desain Aplikasi Backend
Kompetensi Desain Aplikasi Backend
Design data structure Memahami konsep data dan informasi dalam pembuatan Memahami berbagai tipe data dalam aplikasi (numerik, Mampu memilih jenis penyimpanan data yang sesuai Menguasai berbagai model struktur data dan pilihan
aplikasi alfanumerik, boolean, dsb) dengan requirement (key-value, relational, graph, dsb) produk/teknologi yang dapat dipilih
Mampu merancang skema penyimpanan data (struktur Mampu mereview rancangan skema penyimpanan data Mampu menganalisa dan membandingkan kesesuaian
tabel, tipe data, atribut data) (struktur tabel, tipe data, atribut data) berbagai pilihan model struktur data
Dapat menjelaskan kelebihan dan kekurangan masing-
masing pilihan model struktur data
Select and use framework and library Memahami framework dan library yang umum digunakan Memahami cara kerja dan cara pakai framework dan Mampu memilih technology stack yang sesuai dengan Menguasai beberapa alternatif technology stack yang bisa
dalam project library yang digunakan dalam project aplikasi yang akan dibuat dipilih dalam mengimplementasikan requirement
Mahir menggunakan technology stack yang dipilih Dapat menjelaskan kelebihan dan kekurangan masing-
Mampu membimbing Junior Developer dalam masing alternatif technology stack
menggunakan technology stack Dapat mengkombinasikan stack dari berbagai
platform/bahasa pemrograman
Document Design Writing Memahami konsep document writing dalam software mampu medokumentasikan rancangan system dalam Mampu mendokumentasikan berbagai model design Mampu mebuat serta merumuskan dokumen yang sesuai
development sebuah dokumen system dalam berbagai model maupun platform dengan kebutuhan project
2 Application Programming Collaboration tools Memahami konsep dasar dan kegunaan version control Menguasai operasi dasar version control Menguasai penggunaan version control tingkat lanjut Mampu mendefinisikan workflow version control seperti:
- commit - release management - Trunk based repository
Definisi: - pull / update - undo/revert - Feature / Topic branch
Pengetahuan dan kemampuan dalam memahami, - create branch - rebase
menginput (coding) bahasa pemrograman tertentu - merge Mampu merumuskan kebijakan CI/CD
(e.g., Java, Kotlin, dll.), serta menggunakan tools - handle conflict Menguasai penggunaan issue tracker tingkat lanjut
terkait untuk mengembangkan aplikasi client-side - kategori issue (feature, enhancement, bug)
Menguasai penggunaan issue tracker - milestone
- create issue
- add comment/feedback Menguasai konfigurasi CI/CD
- resolve issue - build deliverable (*.jar, docker image, *zip)
- deploy to target server (vps, k8s cluster)
Writing source code Memahami konsep dasar pemrograman Menguasai teknik pemrograman dasar (variabel, tipe-Memahami secara mendalam best-practices dalam Menguasai berbagai design pattern dalam penulisan kode
data, looping, branching) penulisan kode program (DRY Principle, SOLID program
Menguasai minimal satu bahasa pemrograman secara Architecture, dsb) Dapat melakukan review dan memberikan feedback
mahir Menguasai minimal satu bahasa pemrograman secara terhadap kode program yang kurang optimal
Dapat menulis kode program mengikuti coding mahir, dan dua bahasa pemrograman lain secara basic Mampu mendefinisikan coding convention, pattern, dan
convention yang telah ditetapkan Menguasai multithreaded programming secara mahir aturan dalam penulisan kode dalam tim
Dapat mengikuti panduan best practices dalam menulis
Menguasai asynchronous programming secara mahir Mampu membuat library atau framework untuk keperluan
kode program (Clean Code, DRY Principle, dsb) Mampu melakukan review dan memberikan feedback internal
terhadap kode program yang salah atau tidak mengikuti Mampu melakukan riset terhadap best-practices
aturan yang berlaku pemrograman di industri
Mampu mengkonfigurasi tools untuk memastikan Mampu melakukan analisa terhadap masalah
kesesuaian kode program dengan coding convention performance
Mampu mengkonfigurasi build system yang dibutuhkan Mampu melakukan analisa terhadap masalah integritas
dalam project (maven, npm, dsb) data
Mampu mengimplementasikan quality gate (coverage, Menguasai distributed programming secara mahir
static code analysis)
Manage data in application Memahami konsep normal form dalam database Mampu mengimplementasikan operasi baca tulis data Memahami prinsip dan implementasi integritas data pada Memahami prinsip dan implementasi akses data pada
relasional (CRUD operation) ke database relasional database relasional (database transaction, ACID database terdistribusi (eventual consistency, CAP
Memahami cara penggunaan SQL untuk berinteraksi Mampu melakukan operasi data pada tabel berelasi principle) theorem)
dengan data relasional Mampu melakukan operasi data pada penyimpanan data Memahami prinsip dan implementasi akses data secara Memahami prinsip dan implementasi aliran data dalam
key-value konkuren (locking, deadlock, isolation level) aplikasi berbasis event (event sourcing)
Mampu melakukan operasi data pada penyimpanan data Memahami prinsip dan implementasi aliran data dalam
berbasis dokumen (document based) aplikasi berbasis messaging
Integrate and impement API Memahami interaksi antar aplikasi frontend dan backend Mampu memahami spesifikasi API Mampu membuat desain spesifikasi API Mampu melakukan review dan memberikan feedback
Mampu membuat simulator untuk mensimulasikan API Mampu menjelaskan spesifikasi API kepada Junior terhadap desain API
yang akan dipanggil Developer dan mitra pengguna API Dapat mengajukan berbagai alternatif desain API
Mampu membuat client code untuk memanggil API dari Memahami dan bisa mengimplementasikan API Dapat membuat roadmap evolusi API
service lain versioning Memahami berbagai metode integrasi aplikasi
Mampu membuat service endpoint agar aplikasi bisa Mampu mengimplementasikan pembatasan akses (messaging, file transfer, dsb)
diakses orang lain melalui API terhadap API (permission, rate limiting, dsb)
Mampu mengimplementasikan pengukuran terhadap
akses API
Mampu menangani kegagalan dalam mengakses API
(retry, exponential backoff, fallback method, cache, dsb)
Internal
#
Matrix Competency Software Developer - Backend
No Competency Sub Competency Awareness Basic Intermediate Advanced
2 Application Programming Handling error/bug Memahami pesan error yang terjadi pada saat membuat Mampu membaca dan memahami laporan atau log error Mampu menentukan data/informasi yang dibutuhkan Mampu mengumpulkan data bug/error dari banyak
aplikasi aplikasi untuk menganalisa bug/error aplikasi ke dalam satu database
Definisi: Mampu melakukan diagnosa awal terhadap laporan error Mampu membaca dan menganalisa error log Mampu membuat rekapitulasi dan klasifikasi dari data
Pengetahuan dan kemampuan dalam memahami, Mampu melakukan implementasi perbaikan error Mampu menentukan penyebab terjadi error error
menginput (coding) bahasa pemrograman tertentu Mampu menentukan solusi terhadap error Mampu melakukan root cause analysis berdasarkan data
(e.g., Java, Kotlin, dll.), serta menggunakan tools Mampu memberikan estimasi penyelesaian error error dari banyak aplikasi
terkait untuk mengembangkan aplikasi client-side Mampu menemukan bug/error dari laporan user dan log Mampu merumuskan metode instrumentasi/pengukuran
aplikasi untuk mengotomasi pengumpulan data error dalam
Mampu membuat pesan log yang informatif untuk aplikasi
memudahkan pencarian bug Mampu menghasilkan solusi generik untuk mengurangi
Mampu melakukan instrumentasi terhadap kode program bug/error yang bisa diimplementasikan di banyak project
untuk melokalisir dan menemukan bug Mampu merumuskan perubahan dalam metode
development agar bisa mengurangi tingkat kemunculan
bug/error
Mampu menentukan langkah preventif untuk mencegah
error terjadi lagi
Mampu merumuskan prosedur/mekanisme untuk
memperpendek response time penanganan error
Mampu membuat laporan post mortem terhadap error
yang terjadi di production
3 Application/Software Testing Prepare automated testing environment Memahami pentingnya tes dalam pembuatan aplikasi Mampu mengkonfigurasi IDE untuk menjalankan Mampu merancang dan membuat sample data untuk tes Mampu merancang dan mengenhance kelengkapan non-
Memahami konsep dasar automated test (ekspektasi vs automated test Mampu mengotomasi proses setup sample data untuk tes functional test
Definisi: aktual) Mampu mengkonfigurasi PC/Laptop dan jaringan untuk Mampu menganalisa non functional test - performance test
Pengetahuan dan kemampuan dalam merumuskan menjalankan test - load test
detail rencana pengujian, yang terdiri dari tujuan, Mampu mempublish kelengkapan non functional test - security test
kriteria keberhasilan, penentuan
kondisi/persyaratan pengujian, serta definisi kasus
yang mungkin terjadi (test cases), melaksanakan
pengujian aplikasi/software, baik secara
konvensional maupun dengan bantuan tools, e.g.,
Write automated test Memahami berbagai jenis tes (functional, integration, Mampu membuat unit test code Mampu membuat integration test code Mampu mengimplementasikan automated non-functional
Selenium, Testing-Whiz, Katalon Studio, dll.,
blackbox, whitebox) Mampu membuat functional test code Mampu mengotomasi proses tes test
termasuk menginput formula/kode logika tertentu
Mampu menjalankan automated test Mampu mengimplementasikan CI/CD Mampu mengintegrasikan automated non-functional test
untuk menjalankan proses testing
Mampu membaca hasil automated test dalam proses CI/CD
terautomasi—automation testing, hingga
mengevaluasi permasalahan yang terjadi saat
pengujian (e.g., gangguan umum, bug, kesalahan,
dll.), sehingga menghasilkan rekomendasi
perbaikan/modifikasi lanjutan terhadap
aplikasi/software
4 DevSecOps Management Deploy application Memahami konsep menjalankan aplikasi di berbagai Memahami konsep aplikasi cloud-native Mampu membuat aplikasi cloud-native (contoh referensi: Memahami konsep dan implementasi Infrastructure as a
environment (development, testing, production) Mampu mengaplikasikan konfigurasi deployment ke 12 factor) Code
Definisi: server tujuan Mampu membuat konfigurasi untuk environment Mampu merancang sistem deployment yang otomatis
Pengetahuan dan kemampuan dalam melakukan Mampu menjalankan aplikasi di server tujuan development, testing, staging, dan production Mampu membuat template konfigurasi deployment yang
pengaturan/integrasi proses pengembangan Mampu mengkonfigurasi aplikasi sebagai system service Mampu membuat deployment descriptor untuk modular dan reusable
aplikasi/software, dimulai dari integrasi penginputan Mampu mendeploy aplikasi di cloud environment deployment ke IaaS platform Mampu merumuskan best practices dalam deployment
(coding) antara kode baru & kode utama secara Mampu membuat konfigurasi logging aplikasi aplikasi
bersama-sama dengan bantuan version control Mampu melakukan setup SSL pada deployment
system (git repositories), melaksanakan Mampu mengotomasi deployment dengan CI/CD (perlu
serangkaian pengujian berkelanjutan terotomatisasi tahu, tidak perlu jadi responsibility)
(automated testing), hingga memastikan akurasi,
keamanan & kesiapan kode yang telah terinput, Performing data migration Memahami perbedaan format data antar berbagai aplikasi Mampu membuat script untuk mengambil dan mengolah Mampu mengotomasi persiapan data awal Mampu merumuskan aturan konversi data existing
dengan menerapkan beragam pola deployment data existing Mampu mengotomasi migrasi data existing Mampu menentukan format data yang cocok untuk
berisiko rendah (low-risk deployment pattern, e.g., Mampu melakukan migrasi existing data ke dalam integrasi/migrasi antar aplikasi
canary, A/B, blue-green, dll.), guna menghasilkan aplikasi
software yang aman, siap untuk beroperasi (go Document application feature Memahami pentingnya dokumentasi aplikasi Mampu membuat petunjuk pemakaian aplikasi Mampu mendefinisikan kebutuhan dokumentasi untuk Mampu membuat sistem dokumentasi aplikasi yang
live), serta sesuai dengan kebutuhan user & bisnis berbagai jenis user terintegrasi dengan proses development
perusahaan Mampu merumuskan prosedur pembaruan dokumen
agar selalu sinkron dengan perubahan aplikasi
Menambahkan fitur monitoring ke dalam Memahami proses monitoring dalam aplikasi Mampu melihat data operasional pada waktu aplikasi Mampu mengimplementasikan database untuk Mampu mengimplementasikan sistem analisa terhadap
aplikasi berjalan (CPU, RAM, I/O, dsb) menyimpan data historis kinerja aplikasi data monitoring (peak time, idle time)
Mampu melakukan pengumpulan data operasional Mampu mengimplementasikan sistem notifikasi untuk Mampu membuat model prediksi penggunaan resource
aplikasi memberikan alert melalui berbagai channel (email,
whatsapp, telegram, dsb)
Memperbaiki error yang terjadi di Memahami pentingnya security dalam aplikasi Mampu menerima laporan error pada aplikasi yang Mampu menganalisa error yang dilaporkan pada aplikasi Mampu menentukan langkah preventif untuk mencegah
production Mengetahui kasus-kasus kebocoran aplikasi yang sedang berjalan yang sedang berjalan error terjadi lagi
diberitakan di media massa Mampu melakukan diagnosa awal terhadap laporan error Mampu menentukan penyebab terjadi error Mampu merumuskan prosedur/mekanisme untuk
Mampu melakukan implementasi perbaikan error Mampu menentukan solusi terhadap error memperpendek response time penanganan error
Mampu memberikan estimasi penyelesaian error Mampu membuat laporan post mortem terhadap error
yang terjadi di production
5 Application Security Develop secure application Memahami pentingnya security dalam aplikasi Memahami konsep confidentiality (data rahasia) dalam Mampu mengidentifikasi data-data yang termasuk Mampu mengimplementasikan standar security ke dalam
Mengetahui kasus-kasus kebocoran aplikasi yang aplikasi confidential dalam aplikasi project (misal: PCI/DSS, OWASP Pentest Checklist, dsb)
Definisi: diberitakan di media massa Mampu mengimplementasikan mekanisme hash, Memahami berbagai mekanisme pengamanan data Mampu mengimplementasikan berbagai security testing
Pengetahuan dan kemampuan dalam memahami masking, dan enkripsi untuk mengamankan data confidential tools dalam proses development
penerapan keamanan pada pengembangan Mampu menggunakan fasilitas security yang disediakan Memahami Top 10 Web Application Security Risk Mampu menentukan langkah preventif untuk mencegah
aplikasi (termasuk web dan mobile apps, dll) terkait library/framework yang digunakan dalam project OWASP kebocoran terjadi lagi
karakteristik, perilaku, alur algoritma dan Mampu menerima laporan kebocoran keamanan aplikasi Memahami berbagai mekanisme yang perlu dilakukan Mampu menentukan langkah recovery terhadap data
pengolahan data serta menerapkan standar untuk Mampu melakukan diagnosa awal terhadap laporan untuk memitigasi Top 10 OWASP yang bocor/hilang
memproteksi penyalahgunaan akses dan kontrol. kebocoran keamanan Mampu menentukan lokasi dan penyebab kebocoran Mampu membuat laporan post mortem terhadap security
aplikasi breach yang terjadi di production
Mampu menentukan solusi kebocoran
Mampu memberikan estimasi penyelesaian/perbaikan
Internal
#