Pelatihan Talenta Digital Indonesia 2021
Pelatihan Talenta Digital Indonesia 2021
Era Digitalisasi pada Industri 4.0 di Indonesia saat ini dihadapkan pada tantangan hadirnya
permintaan dan penawaran talenta digital dalam mendukung perkembangan ekosistem industri teknologi.
Tantangan tersebut perlu dihadapi salah satunya melalui kegiatan inovasi dan inisiasi dari berbagai pihak
dalam memajukan talenta digital Indonesia, baik dari pemerintah maupun mitra kerja pemerintah yang
dapat menyiapkan angkatan kerja muda sebagai talenta digital Indonesia. Kementerian Komunikasi dan
Informatika melalui Badan Penelitian dan Pengembangan Sumber Daya Manusia sejak tahun 2018-2019,
telah menginisiasi Program Digital Talent Scholarship yang telah berhasil dianugerahkan kepada 26.000
penerima pelatihan di bidang teknologi informasi dan komunikasi. Program Digital Talent Scholarship ini
ditujukan untuk memberikan pelatihan dan sertifikasi tema-tema bidang teknologi informasi dan
komunikasi, diharapkan menjadi bagian untuk memenuhi permintaan dan penawaran talenta digital
Indonesia.
Tahun ini, Program Digital Talent Scholarship menargetkan pelatihan peningkatan kompetensi
bagi 60.000 peserta yang bertujuan untuk meningkatkan keterampilan dan daya saing SDM bidang
teknologi informasi dan komunikasi sebagai bagian dari program pembangunan prioritas nasional.
Program pelatihan DTS 2021 ditujukan untuk meningkatkan keterampilan, keahlian angkatan kerja muda
Indonesia, masyarakat umum dan aparatur sipil negara di bidang teknologi informasi dan komunikasi
sehingga dapat meningkatkan produktivitas dan daya saing bangsa di era Industri 4.0.
Program DTS 2021 secara garis besar dibagi menjadi Tujuh akademi, yaitu: Fresh Graduate
Academy (FGA), Program pelatihan berbasis kompetensi bersama GlobalTech yang ditujukan kepada
peserta pelatihan bagi lulusan S1 bidang TIK dan MIPA, dan terbuka bagi penyandang disabilitas; Vocational
School Graduate Academy (VSGA), Program pelatihan berbasis kompetensi nasional yang ditujukan kepada
peserta pelatihan bagi lulusan SMK dan Pendidikan Vokasi bidang TI, Telekomunikasi, Desain, dan
Multimedia; Coding Teacher Academy (CTA), Program pelatihan merupakan program pelatihan
pengembangan sumberdaya manusia yang ditujukan kepada peserta pelatihan bagi Guru setingkat
SMA/SMK/MA/SMP/SD di bidang pemrograman. Online Academy (OA), Program pelatihan OA merupakan
program pelatihan Online di bidang Teknologi Informasi yang ditujukan kepada peserta pelatihan bagi
Masyarakat umum, ASN, mahasiswa, dan pelaku industri; Thematic Academy (TA), Program pelatihan TA
merupakan program pelatihan multisektor bagi pengembangan sumberdaya manusia yang ditujukan
kepada peserta pelatihan dari jenjang dan multidisiplin yang berbeda; Regional Development Academy
(RDA), Program pelatihan RDA merupakan program pelatihan pengembangan sumberdaya manusia yang
ditujukan untuk meningkatkan kompetensi ASN di Kawasan Prioritas Pariwisata dan 122 Kabupaten
Prioritas Pembangunan. Digital Entrepreneurship Academy (DEA), Program pelatihan DEA merupakan
program pelatihan pengembangan sumberdaya manusia yang ditujukan kepada talenta digital di bidang
Usaha Mikro, Kecil, dan Menengah (UMKM).
Selamat mengikuti Pelatihan Digital Talent Scholarship, mari persiapkan diri kita menjadi talenta digital
Indonesia.
Pendahuluan
A. Tujuan Umum
Setelah mempelajari modul ini peserta latih diharapkan mampu memahami dasar dari
software engineering secara umum.
B. Tujuan Khusus
Adapun tujuan mempelajari unit kompetensi melalui buku informasi Pelatihan
Introduction to Software Engineering adalah memahami proses dari pencarian
masalah, memecahkan masalah, siklus pengembangan perangkat lunak, serta
versioning yang nantinya dapat digunakan untuk berkolaborasi saat proses pembuatan
perangkat lunak.
Latar belakang
Dalam pembuatan sebuah perangkat lunak, kita harus memahami bagaimana proses
pembuatan perangkat lunak dilakukan, agar perangkat lunak yang kita buat memang
memecahkan masalah yang ada. Untuk itu perlu dipahami bagaimana sebuah proses
mulai dari pencarian sebuah masalah, sampai dengan pencarian solusi dari
permasalahan tersebut. Setelah mendapatkan ide untuk pemecahan sebuah masalah,
saat proses pembuatan perangkat lunak, kita juga harus memahami bagaimana siklus
pembuatan perangkat lunak, agar proses pembuatan perangkat lunak tersebut dapat
dikerjakan dengan mudah. Salah satu siklus pembuatan perangkat lunak yang cukup
terkenal adalah SCRUM.
Selain itu dalam pembuatan perangkat lunak, umumnya tidak dikerjakan dengan satu
orang. Sehingga diperlukan pemahaman bagaimana untuk dapat membuat perangkat
lunak yang dikerjakan bersama-sama. Sehingga perlu pemahaman tentang git, agar
pembuatan perangkat lunak tersebut dapat dikerjakan bersama-sama secara
asynchronous atau paralel.
Deskripsi Pelatihan
Materi ini berisi penjelasan dari bagaimana kita memecahkan masalah sampai dengan
mencari solusi untuk permasalahan tersebut dengan Design Thinking, Alur pembuatan
perangkat lunak dengan mempelajari siklus hidup perangkat lunak SCRUM, dan
pembuatan perangkat lunak bersama-sama dengan menggunakan git.
Tujuan Pembelajaran
A. Tujuan Umum
Setelah mempelajari modul ini peserta latih diharapkan mampu memahami
dasar dari software engineering secara umum.
B. Tujuan Khusus
Adapun tujuan mempelajari unit kompetensi melalui buku informasi Pelatihan
Introduction to Software Engineering adalah memahami proses dari pencarian
masalah, memecahkan masalah, siklus pengembangan perangkat lunak, serta
versioning yang nantinya dapat digunakan untuk berkolaborasi saat proses
pembuatan perangkat lunak.
Kompetensi Dasar
Mampu mencari masalah untuk diselesaikan dengan solusi pembuatan perangkat lunak
dengan metode design thinking
Mampu memanajemen proyek, dengan menggunakan metode SCRUM
Mampu memahami versioning control dengan git
Mampu bekerja bersama dalam pembuatan perangkat lunak dengan menggunakan git
INFORMASI PELATIHAN
Sertifikasi
INFORMASI PEMBELAJARAN
SDLC and Scrum for 1. Pengenalan SDLC Daring / Online 2 60% Teori,
Managing Project dan 40% Praktik
jenis-jenisnya
2. Penjelasan Detail
SDLC metode
Scrum
Materi Pokok
1. Design Thinking
Pendekatan ini awalnya diperkenalkan oleh Stanford University, namun yang
menggunakan penyebutan serta melakukan standarisasi terhadap proses dan
bagaimana pendekatan ini dipergunakan dalam sebuah organisasi atau
perusahaan adalah IDEO, dan dilakukan oleh David Kelley & Tim Brown sejak
1990. Secara umum design thinking merupakan salah satu pendekatan human
centered, yang digunakan untuk menemukan sebuah solusi atau merumuskan
suatu inovasi.
fig 1. Irisan ide yang dibuat dari desirability, viability, dan feasibility (1)
Seperti dijelaskan dalam gambar fig 1 dimana pendekatan ini akan membantu
proses perumusan suatu solusi yang benar-benar dibutuhkan dan diinginkan
oleh konsumen. namun tetap mungkin tercapai bila dilihat dari sisi teknologi dan
ekonomi.
Berdasarkan ke-3 mindset tersebut design thinking akan banyak berputar pada
kegiatan “memahami konsumen”, “rapid prototyping”, dan “brainstorming”.
Seperti dijelaskan pada fig 2 proses design thinking akan terbagi menjadi 6
tahapan. Secara deskriptif proses ini terlihat linear, namun pada penerapannya
sangat diperbolehkan untuk kembali ke tahapan sebelumnya serta melakukan
keseluruhan secara iteratif.
Secara singkat user persona merupakan sebuah gambaran fiktif namun tetap
realistis dari target konsumen yang dituju. Umumnya persona akan atas
beberapa bagian seperti data demografis, kebutuhan konsumen, permasalahan
yang dialami, dan tujuan yang ingin dicapai seperti dijelaskan dalam gambar fig
3.
Dalam gambar fig 3 terdapat beberapa bagian yang tidak ditandai seperti
behavioral consideration serta task. Bagian ini tidak wajib untuk didefinisikan
namun dalam penerapannya akan sangat membantu tim untuk memperoleh
pemahaman terkait dengan target konsumen yang akan dituju.
Dikarenakan user persona merupakan langkah awal dari tahapan design thinking
dan digunakan sebagai salah satu guideline pada tahapan-tahapan selanjutnya
berikut beberapa hal yang dapat diperhatikan, diantaranya:
- Prosesnya lebih baik jika dilakukan bersamaan dengan anggota tim
lainnya (brainstorming).
- Mulai proses pembuatan persona dengan mengelompokkan karakteristik
dari konsumen yang dituju (data demografis)
- Untuk data demografis jangan gunakan identitas yang didasarkan pada
teman atau orang yang dikenal. (fiktif tapi tetap realistis)
- Jelaskan latar belakang dengan realistis, seperti apa pekerjaan yang
dilakukan serta bagaimana kegiatan sehari-harinya.
- Berikan keterangan terkait pemahaman konsumen terhadap produk atau
solusi yang sedang dikembangkan (tech savviness)
- Berikan konteks kapan produk atau solusi anda digunakan, seberapa
sering, dan bagaimana “itu” (solusi) akan digunakan.
- (opsional) Tambahkan personal quotes untuk menyimpulkan attitude atau
sifat yang dimiliki oleh konsumen.
eg. “Tidak ada yang salah, yang ada hanya kebenaran yang tertunda”
Desk Research merupakan sebutan lain dari secondary research. Seperti namanya
pada bagian ini proses pengumpulan inspirasi akan dilakukan menggunakan
sumber ke-2 seperti berita, jurnal penelitian, report penelitian perusahaan yang
telah dilakukan sebelumnya, juga kompetitor. Sebagai konteks desk research
dapat dilakukan untuk mencapai tujuan penelitian seperti yang dijelaskan dalam
gambar fig 4 sebelumnya. Berdasarkan gambar tersebut beberapa bagian yang
dapat dipenuhi melalui proses ini antara lain:
- Users & Environments, interaksi user (konsumen) dengan lingkungan. Pada
bagian ini jangan membatasi cakupan hanya pada domain permasalahan
yang coba diselesaikan, namun coba juga cari tahu dari sudut pandang
lainnya.
- Environments & Goals, hal ini akan mencakup bagian-bagian yang akan
diakomodasi oleh solusi yang sedang dikembangkan beserta peranannya
dalam mencapai tujuan namun tidak melibatkan pengguna secara
langsung.
eg. Kemungkinan penerapan data analytics, customer care, dll
Bagian ini merupakan salah satu pendekatan dari Primary Research, dimana akan
meng-cover proses untuk memahami irisan pada bagian Users dan Goals-nya,
seperti dijelaskan dalam gambar fig 4. Sehingga dalam beberapa kasus metode
ini tidak akan relevan untuk diterapkan. Bila melihat penjelasan deskriptif dari
metode In Depth Interview, metode ini merupakan bentuk riset kualitatif yang
dilakukan melalui obrolan atau wawancara secara mendalam pada sekelompok
kecil partisipan, dengan catatan dilakukan satu per satu. Melalui obrolan yang
intim, metode ini dapat digunakan untuk menjawab pertanyaan why dan how,
seperti mencari tahu pengalaman dari partisipan, proses yang biasa dilakukan,
dan berbagai hal personal lainnya.
Pada tahapan ini kegiatan yang dilakukan akan banyak berpusat pada proses
menyatukan data-data yang telah diperoleh dari tahapan sebelumnya untuk
membentuk suatu solusi. Oleh karena itu apabila memungkinkan diharapkan
seluruh bagian dari tim dapat terlibat dalam proses brainstorming pada tahapan
ini. Tentunya bertukar ide tanpa ada suatu guideline tertentu tidak akan efektif,
oleh karena itu terdapat beberapa tools yang dapat dimanfaatkan seperti:
Perlu diingat solusi yang dihasilkan dari proses pemikiran dengan pendekatan
abductive reasoning tidak sepenuhnya benar. Terlebih data yang diperoleh dari
proses In Depth Interview juga tidak dapat memberikan gambaran menyeluruh
dari target konsumen yang dituju. Oleh karena ini tahapan ini harus dilakukan
sesegera mungkin. Semakin dini dan semakin sering dilakukan tentunya akan
membantu tim untuk segera belajar dan mengetahui kesalahan-kesalahan yang
terjadi. Sehingga proses perumusan solusi baru dapat segera dilakukan.
Seperti namanya, tahapan ini menjadi bagian terakhir dari pendekatan design
thinking. Nantinya hasil dari penggalian permasalahan, hingga solusi yang
diajukan akan dipresentasikan kepada stakeholder-stakeholder terkait, dengan
harapan memperoleh feedback dari kegiatan yang dilakukan serta hasil yang
telah diperoleh.
Software Development Life Cycle (SDLC)
Dalam proses pengembangan perangkat lunak tentunya banyak hal yang harus
diperhatikan seperti sumber daya manusia, costing, timeline, visibilitas produk,
dan lain sebagainya. Apabila melihat produk yang dihasilkan nantinya tidak
memiliki wujud fisik, hal ini tidak membuat proses pengembangan perangkat
lunak menjadi pekerjaan yang mudah untuk dilakukan. Berdasarkan penelitian
yang sempat dilakukan oleh Standish Group dari 8380 proyek yang dilakukan
hanya 16% yang berhasil selesai tepat waktu dan tidak over budget, sedangkan
31% lainnya gagal, dan 53% sisanya melewati batasan waktu dan budget yang
telah didefinisikan.
Tentunya banyak sekali faktor yang menyebabkan terjadinya hal tersebut. Mulai
dari scoping proyek yang tidak jelas, sumberdaya yang tidak memenuhi, hingga
proses pendekatan yang kurang tepat. Berbicara seputar pendekatan dalam
pengerjaan proyek perangkat lunak dikenal istilah yang dinamakan dengan
Software Development Life Cycle (SDLC). SDLC sendiri merupakan serangkaian
proses yang harus dipenuhi untuk menyelesaikan suatu produk, umumnya akan
dimulai dengan penggalian kebutuhan hingga proses rilis dan maintenance.
Pemilihan SDLC yang tepat menyesuaikan dengan karakteristik produk yang
akan dikembangkan menjadi langkah pertama yang harus diperhatikan. Dimana
karakteristik ini akan terbagi menjadi 4 seperti dijelaskan dalam antara lain:
fig 7. Kuadran karakteristik perangkat lunak
- Q1 Produk yang memiliki solusi dan tujuan yang jelas. Untuk produk pada
kuadran ini akan cocok menggunakan SDLC linear seperti waterfall
- Q2 Produk dengan tujuan yang jelas namun belum memiliki solusi yang
jelas. Pada kuadran ini akan cocok menggunakan SDLC incremental
- Q3 Produk dengan tujuan serta solusi yang belum jelas. Pada kuadran ini
akan cocok menggunakan SDLC dengan pendekatan ekstrim seperti
Extreme Programming
- Q4 Produk dengan solusi yang jelas namun tujuannya belum jelas. Untuk
ini akan cocok menggunakan SDLC dengan pendekatan yang adaptif
seperti agile.
Pada kesempatan kali ini hal yang akan banyak dibahas berada pada kuadran
ke-4. Dimana suatu produk telah memiliki solusi yang terdefinisi dengan tujuan
yang berubah-ubah. Seperti proses yang banyak terjadi pada pengembangan
perusahaan rintisan, dimana produk akan banyak menyesuaikan dengan
kebutuhan pengguna, visibilitas pengembangan, serta perubahan dari business
direction yang telah disepakati.
2. Scrum
Scrum merupakan sebuah kerangka kerja yang membantu tim untuk
menyelesaikan suatu permasalahan atau mengembangkan produk dengan
kompleksitas yang tinggi, melalui pendekatan yang adaptif. Secara umum Scrum
memiliki beberapa sifat seperti ringan, sederhana untuk dipahami, dan sulit
untuk dikuasai. Perlu dicatat bila scrum bukanlah sebuah metodologi, proses,
ataupun teknik, melainkan sebuah kerangka kerja. Sehingga dalam penerapannya
sangat dimungkinkan untuk menerapkan berbagai teknik maupun proses
lainnya. Dalam penerapannya Scrum akan mengekspos ketidakefektifan proses
manajemen produk yang sudah berjalan, sehingga seiring berjalannya waktu hal
ini dapat segera diselesaikan.
Meskipun Scrum cukup fleksibel dalam penerapannya namun ada beberapa hal
yang sangat diatur, terlebih hubungan-hubungan yang terjadi seperti pembagian
role dalam team, events yang akan terjadi seiring dijalankannya Scrum, dan
artefak atau dokumen yang akan dihasilkan pada tiap event-nya.
- Adaptif, sebagai kerangka kerja Scrum tidak hanya dapat digunakan untuk
kegiatan pengembangan produk berbasis teknologi. Melainkan Scrum
juga dapat digunakan untuk menyelesaikan permasalahan pada domain
lain seperti pendidikan, layanan masyarakat, hingga proses manajemen
sumber daya manusia
- Ringan, salah satu yang menjadi esensi dari Scrum adalah tim-tim kecil
yang terdiri dari beberapa orang. Melalui Scrum nantinya tim-tim kecil ini
akan bertanggung jawab atas bagian kecil dan berkolaborasi serta
berinteraksi untuk menyelesaikan bagian besarnya.
- Efektif, dari tim-tim kecil yang terlibat hal ini memungkinkan adanya
proses transfer knowledge yang berkelanjutan dan spesifik.
Dalam susunan tim kecil yang telah disebutkan sebelumnya setiap orang yang
terlibat nantinya akan terbagi menjadi 3 peran diantaranya Product Owner,
Development Team, dan Scrum Master. Tim ini nantinya akan bergerak secara
pilot dan bersifat lintas fungsi. Pilot disini berarti tim memiliki otonomi
tersendiri untuk memilih jalan yang dianggap baik, dibandingkan dengan
memperoleh arahan dari luar tim. Sedangkan yang dimaksud dengan lintas
fungsi yaitu setiap tim kecil ini diharapkan telah memiliki memiliki setiap
keahlian esensial yang diperlukan dalam pengembangan sebuah produk,
sehingga tidak perlu untuk bergantung pada orang maupun tim lain.
A. Product Owner
Secara garis besar product owner merupakan peran bertanggung jawab
untuk memaksimalkan potensi bisnis dari produk yang sedang
dikembangkan. Peran ini nantinya akan diambil oleh individu tertentu.
Peran ini merupakan satu-satunya peran yang memiliki tanggung jawab
untuk mengelola Product Backlog. Kegiatan pengelolaan ini akan
termasuk:
- Menyampaikan kepada tim isi dari product backlog secara rinci dan
jelas, serta memastikan tim mengetahui langkah apa yang harus
diambil selanjutnya.
- Mengurutkan product backlog sesuai dengan tujuan yang akan
dicapai
- Mengoptimalkan nilai bisnis dari produk yang sedang
dikembangkan
Agar peran ini dapat berhasil seluruh pihak dalam tim harus menghargai
serta bekerjasama pada keputusan yang telah diambil oleh product owner.
Sebagai contoh backlog yang telah didefinisikan, terkait dengan hal ini
tidak ada siapapun baik didalam maupun diluar tim yang dapat memaksa
tim untuk mengerjakan hal diluar dari backlog yang telah didefinisikan.
B. Development Team
Setiap fase pengembangan produk dalam Scrum akan dikenal dengan sebutan
Sprint, dimana setiap Sprint akan kembali dibagi menjadi beberapa event yang
lebih kecil. Event-event ini sengaja dirancang untuk memastikan adanya
transparansi pada setiap proses pengerjaan serta hasil yang diperoleh.
Konsekuensi dari Scrum Event yang tidak berjalan dengan baik akan
menghilangkan kesempatan tim untuk belajar dan beradaptasi dari kesalahan
yang dibuat. Selain untuk memastikan adanya transparansi event ini akan
membentuk suatu habit positif diantara anggota tim dan mengurangi meeting
yang tidak efektif. Berikut dijelaskan dalam gambar fig 6 kerangka dari event
yang terlibat dalam Scrum.
fig 8. Kerangka Kerja Scrum
A. Sprint
B. Sprint Planning
Seperti namanya tahapan ini merupakan bagian paling awal dari sprint
dimana akan menjadi event yang meng-inisiasi jalannya sprint. Sprint
planning haruslah dilakukan secara kolaboratif dengan melibatkan
seluruh tim scrum yang terlihat. Untuk memastikan sprint planning dapat
berjalan dengan efektif maka, product owner harus memastikan setiap
pihak yang hadir telah memahami product backlog yang telah
didefinisikan. Serta bagaimana memberikan prioritas pada item yang
paling penting, dan meng-incorporate item tersebut pada tujuan
pengembangan produk.
C. Daily Scrum
D. Sprint Review
E. Sprint Retrospective
Kegiatan ini kurang lebih sama dengan sprint review, yang membedakan
ada pada aspek yang disoroti. Pada sprint retrospective tim akan lebih
banyak mendiskusikan bagaimana tim menjalankan scrum, dan
bagaimana mencapai proses kerja yang lebih efektif guna meningkatkan
kualitas dari sprint yang akan dijalankan kedepannya.
A. Product Backlog
Bagian ini merupakan list dari apa yang harus dilakukan dalam proses
pengembangan suatu produk. Bagian ini juga yang akan menjadi
satu-satunya sumber informasi terkait dengan pekerjaan yang harus
diselesaikan oleh tim. Dalam pembuatannya product backlog tidak akan
pernah selesai. Hal tersebut dapat tercapai atas dasar pembaharuan yang
diperoleh dari setiap sprint yang telah dilakukan.
Komitmen pada artifact ini disebut dengan “product goal”. Product goal
akan mendefinisikan kondisi di masa yang akan datang dengan asumsi
produk yang dikembangkan akan sesuai dengan tujuan yang dicapai. Masa
depan yang dimaksud dalam bagian ini merupakan rencana jangka
panjang. Secara tidak langsung Product Goals akan ada pada tiap item
yang didefinisikan ada Product Backlog (the what).
B. Sprint Backlog
Sprint backlog merupakan sebuah kesatuan dari sprint goal (the why),
item yang diambil dari product backlog, serta rencana yang disusun untuk
mencapai tujuan tersebut (the how). Berbeda dengan artifact sebelumnya
sprint planning akan didefinisikan oleh development teams untuk mereka
sendiri. Meninjau dari tingkat pemahaman masing-masing anggota tim
yang terlibat sehingga perencanaan dapat dibuat lebih realistis dengan
effort yang lebih terukur.
Komitmen pada artifact ini disebut dengan “sprint goal”. Sprint goal
merupakan tujuan yang haru dicapai dalam sebuah pelaksanaan sprint
yang juga didefinisikan oleh development team. Bagian ini juga
didefinisikan dalam kegiatan sprint planning, dimana nantinya akan
menjadi guideline bagi tim pengembang selama menjalankan suatu sprint.
C. Increment
Git adalah salah satu dari yang sistem yang disebut dengan version control system
atau yang biasa disebut dengan VCS. VCS memungkinkan kita untuk melacak sejarah
dari perubahan yang sudah kita lakukan. Kita dapat menggunakan VCS sebagai individu
atau sebagai tim untuk berkolaborasi mengerjakan sebuah proyek. Dengan
menggunakan VCS, kita dapat melihat :
Git lebih spesifik lagi merupakan contoh dari distributed version control system
(DVCS). DVCS banyak dipakai pada project sumber terbuka, dan perangkat lunak
komersial. selain DVCS, ada juga yang biasa disebut dengan centralized version control
system. Penggunaan versi sentral ini tidak dimintai banyak programmer karena
mengharuskan kita untuk selalu terhubung ke repository pusat secara terus menerus.
Sedangkan dengan versi distribusi, programmer tidak harus terhubung ke repository
pusat. sehingga memungkingkan programmer untuk bekerja dari mana saja, dan
berkolaborasi dari banyak zona waktu.
● git Init
git init digunakan untuk menginisialisasi git repository pada sebuah
folder. Dengan menggunakan git init, akan terdapat satu subfolder yang
tersembunyi. folder ini digunakan untuk menyimpan data structure yang
digunakan untuk version control
● git Clone
Git clone digunakan untuk membuat local copy dari sebuah project yang
telah ada di server. dengan menggunakan git clone, semua project file, history dan
branch akan ter-copy.
● git add
Menambahkan file atau folder yang nantinya ingin kita simpan dengan
command git commit
● git status
Menampilkan perubahan file atau folder yang belum ditambahkan,
dirubah atau yang sudah ditambahkan
● git branch
menampilkan branch saat ini
● git merge
Menggabungkan kedua branch menjadi satu branch, berdasarkan commit
terakhir dari suatu branch.
● git pull
mensinkronkan atau memperbarui repository lokal sesuai dengan
repository remote
● git push
update remote repository dengan commit yang sudah ada pada local.
● git stash
git stash dapat digunakan jika anda ingin berpindah branch tetapi
masih ada file yang belum di-commit karena belum selesai misalnya), anda
dapat menyimpan perubahan yang Anda buat dan membuat folder kerja Anda
bersih.
Git Flow adalah model percabangan untuk Git, dibuat oleh Vincent Driessen.
Model ini cukup menarik banyak perhatian karena sangat cocok untuk kolaborasi
dan scaling tim developer. Git Flow memiliki beberapa kelebihan :
1. Parallel Development
Salah satu kelebihan dari Git Flow adalah membuat pengembangan
paralel menjadi sangat mudah, dengan memisahkan pengembangan fitur
yang baru dari pekerjaan yang sudah selesai. Pengembangan baru (seperti
fitur dan perbaikan hotfixes) dilakukan di branch feature, dan hanya
digabungkan kembali ke branch master ketika developer puas bahwa kode
siap untuk dirilis. Ketika kita diminta untuk mengerjakan tugas yang lainnya
secara mendadak, yang perlu kita lakukan hanyalah melakukan perubahan
dan kemudian membuat branch feature baru untuk tugas baru tersebut.
Ketika tugas itu selesai, cukup periksa cabang fitur asli Anda dan Anda dapat
melanjutkan di mana Anda terakhir mengerjakannya.
2. Collaboration
Branch feature juga memudahkan dua atau lebih developer untuk
berkolaborasi pada fitur yang sama, karena setiap branch feature adalah
sandbox di mana satu-satunya perubahan adalah perubahan yang diperlukan
agar fitur baru berfungsi. Hal ini membuatnya lebih mudah untuk melihat dan
mengikuti apa yang dilakukan setiap kolaborator.
Dapat dilihat pada figure 7, master merupakan branch utama pada repository
tersebut. branch master biasanya merupakan versi release dari sebuah project.
Selanjutnya adalah branch hotfixes. Branch hotfixes digunakan untuk memperbaiki
bugs yang terdapat pada branch master.
fig 7.1 Diagram git
Ketika saatnya untuk membuat rilis, kita akan membuat satu branch baru
yaitu release branch dimana branch tersebut merupakan salah satu cabang dari
branch develop.
fig 7.3 Diagram git
Saat rilis selesai, cabang rilis digabungkan ke master dan ke develop juga,
untuk memastikan bahwa setiap perubahan yang dibuat di cabang rilis tidak hilang
secara tidak sengaja oleh pengembangan baru.
fig 7.4 Diagram git
Branch master hanya digunakan untuk melacak kode yang sudah dirilis.
Satu-satunya commit yang diperbolehkan untuk branch master adalah gabungan
dari branch release dan branch hotfix. Cabang hotfix digunakan untuk membuat
perbaikan darurat.
Cabang-cabang pada figure diatas adalah percabangan langsung dari release
tag di branch master, dan ketika selesai digabungkan kembali ke master dan
develop untuk memastikan bahwa perbaikan terbaru tidak hilang secara tidak
sengaja saat rilis reguler berikutnya terjadi.
Pull request / Merge request adalah fitur dari repository management yang
digunakan untuk menggabungkan dua branch menjadi satu. Namun dengan fitur ini,
kita bisa melakukan review terhadap branch yang akan digabung. Kita dapat
meng-assign orang untuk melakukan review dan berdiskusi. Reviewer dapat
menyetujui perubahan dan melakukan penggabungan ataupun menolak dan
meminta perubahan pada kode. Dalam memberikan komentar, komentar tidak
terbatas pada satu pull request saja, tapi juga bisa dilakukan pada setiap baris kode.
Kita juga dapat melihat perbedaan code kedua branch pada pull request. Lebih
lanjut lagi, kita juga bisa melakukan unit test dengan menggunakan fitur CI, sehingga
apabila kode belum lulus test, meskipun sudah disetujui oleh reviewer, kode tidak
dapat digabung karena masih memiliki test yang salah.
1. Design Thinking
Berdasarkan persona dibawah ini
Bahan Tayang
Penilaian
14 July 2021