Anda di halaman 1dari 54

LAPORAN MAGANG

Dipersiapkan oleh :
Marcelino / 170709201

Program Studi Informatika


Fakultas Teknologi Industri
Universitas Atma Jaya Yogyakarta
2021
HALAMAN PENGESAHAN
Laporan Magang

Laporan ini telah diperiksa dan disetujui

Pada tanggal : 27 Juni 2021

Oleh :

Dosen Pembimbing, Pembimbing Lapangan,

Eduard Rusdianto, ST., MT. Ira Anggraini Siregar

2
KATA PENGANTAR

Puji syukur penulis haturkan kehadirat Tuhan Yang Maha Esa atas segala
berkat, rahmat dan karunia-Nya, penulis dapat menyelesaikan laporan magang ini.
Penyusunan laporan ini bertujuan untuk memenuhi persyaratan dalam menempuh
Mata Kuliah Magang bagi Mahasiswa Program Studi Informatika, Fakultas
Teknologi Industri, Universitas Atma Jaya Yogyakarta. Laporan ini berisi
dokumentasi pengetahuan, pengalaman, hingga hambatan yang penulis dapatkan
selama melaksanakan magang.
Dalam proses pelaksanaan magang, penulis tidak lepas dari bantuan
berbagai pihak yang senantiasa mendukung dan memotivasi penulis untuk bisa
menyelesaikan magang. Oleh sebab itu penulis memberikan ucapan terima kasih
kepada :
1. Orang tua yang selalu memberikan dukungan.
2. Bapak Eduard Rusdianto, ST., MT. selaku dosen pembimbing magang
yang telah membimbing penulis selama magang dan penulisan laporan ini.
3. Para Trainer Refactory selaku pembimbing lapangan yang telah
membimbing penulis selama pelaksanaan magang.
4. Teman-teman kos TB 5 4C dan kontrakan light speed yang telah
memberikan dukungan dan semangat.
Penulis menyadari bahwa pelaksanaan magang dan penyusunan laporan ini
masih jauh dari sempurna. Oleh karena itu, kritik dan saran yang membangun
sangat diharapkan. Penulis berharap laporan ini akan memberikan manfaat kepada
pembaca.
Yogyakarta, 22 Juni 2021

Penulis,

3
Marcelino

4
DAFTAR ISI

HALAMAN JUDUL i

HALAMAN PENGESAHAN ii

KATA PENGANTAR iii

DAFTAR ISI iv

DAFTAR GAMBAR v

BAB I PENDAHULUAN 1

1.1. Sekilas Perusahaan 1

1.2. Sejarah Perusahaan 1

1.3. Visi, Misi dan Tujuan Perusahaan 2

1.4. Struktur Organisasi 3

1.5. Deskripsi Tugas Struktur Organisasi 3

1.6. Departemen TI dalam Perusahaan 6

BAB II PELAKSANAAN MAGANG 8

2.1. Penjelasan Logbook 8

2.2. Hasil Pekerjaan Secara Umum 41

2.3. Bukti Hasil Pekerjaan 41

BAB III HASIL PEMBELAJARAN 45

3.1. Manfaat Magang 45

3.2. Penerapan Ilmu dalam Magang 45

BAB IV KESIMPULAN 47

DAFTAR GAMBAR

5
Gambar 1.1. Bagan Struktur Organisasi 3
Gambar 1.2. Bagan Enginner 4
Gambar 1.3. Bagan R&D 4
Gambar 1.4. Bagan Trainer 5
Gambar 1.5. Bagan Devisi BisDev 5
Gambar 1.6. Bagan Head of Finance 6

Gambar 2.1.1. Fundamental Courses 8


Gambar 2.1.2. Penyelesaian Course Text Editor 9
Gambar 2.1.3. Penyelesaian Course Markdown 9
Gambar 2.1.4. Penyelesaian Course Terminal 10
Gambar 2.1.5. Penyelesaian Course Git 11
Gambar 2.1.6. Penyelesaian Course GitHub 11
Gambar 2.1.7. Course Javascript 13
Gambar 2.1.8. Soal Backend logic 14
Gambar 2.1.9. Penyelesaian Course PHP Basic 15
Gambar 2.1.10. Penyelesaian Course Laravel for Beginner 16
Gambar 2.1.11. ERD untuk SPK pemilihan pegawai terbaik 22
Gambar 2.1.12. URL dan Token pada email 25
Gambar 2.1.13. Form login 27
Gambar 2.1.14. Table List Employees 28
Gambar 2.1.15. Form penambahan pegawai baru 28
Gambar 2.1.16. Fitur Logout 30
Gambar 2.1.17. Form edit employee 31
Gambar 2.1.18. Delete Modal employee 31
Gambar 2.1.19. Form list criterion 32
Gambar 2.1.20. Edit modal criteria 33
Gambar 2.1.21. List data ranking pegawai 33
Gambar 2.1.22. Search data pegawai dengan input nama “ki” 34
Gambar 2.1.23. Tampilan fitur pagination pada manage employee 35

6
Gambar 2.1.24. Date picker untuk memilih bulan dan tahun 36
Gambar 2.1.25. Menampilkan data rankings pegawai pada bulan juni tahun 2021.
37
Gambar 2.1.26. Bar chart rankings pegawai 37
Gambar 2.1.27. Line chart penilaian pegawai Mark Zuckerberg 38
Gambar 2.1.28. Bar chart rankings pegawai pada bulan april 2021 39
Gambar 2.1.29. Line chart penilaian pegawai Steve Wozniak pada tahun 2021 39
Gambar 2.1.30. Form penilaian pegawai pada manage rankings 40

Gambar 2.3.1. Test backend logic 1 42


Gambar 2.3.2. Test backend logic 2 42
Gambar 2.3.3. Dokumentasi REST API untuk Skill Test RSP Backend 43
Gambar 2.3.4. Sistem Pendukung Keputusan (SPK) dalam pemilihan pegawai
terbaik menggunakan metode Simple Additive Weighting. 44

BAB I
PENDAHULUAN

1.1. Sekilas Perusahaan


Refactory adalah perusahaan edukasi dan teknologi yang
menyediakan layanan lengkap berupa course maupun custom
training yang materinya dapat disesuaikan dengan kebutuhan teknologi
dan bisnis perusahaan client. Refactory dapat memperkuat tim engineer
client dalam bisnis di jaman modern ini yang dimana membutuhkan
keterampilan pengembangan terbaik untuk meningkat skala produk
dengan cara mempersiapkan course dan juga dapat menyediakan tim yang
menangani kebutuhan digital client.
Refactory dapat mewujudkan software impian client, karena
Refactory merupakan perusahaan One-Stop Information Technology
Solution untuk proyek client. Refactory memberikan layanan untuk

7
membantu di setiap tahap mulai dari menyusun ide, melalui desain dan
pengembangan aplikasi baik mobile, web dan desktop, hingga peluncuran
produk. Refactory mempunyai empat layanan, yaitu Join Development
(Project On Demand), DevOps Service by SL, Online Bootcamp/Custom
Training Onsite, dan Refactory Course.

1.2. Sejarah Perusahaan


Refactory adalah sebuah perusahaan yang bergerak di bidang
Information Technology (IT) dimana bidang ini tidak bisa dihindari dalam
kehidupan manusia modern saat ini. Refactory didirikan pada akhir tahun
2016 di Surabaya, Indonesia, sebagai program bootcamp, di tengah
kebutuhan yang besar akan programmer yang tidak diimbangi dengan
supply yang cukup. Refactory muncul sebagai solusi untuk kesenjangan
besar antara pemrogram, permintaan dan penawaran.
Metode pembelajaran Refactory yang menuntut mahasiswa untuk
terlibat dalam proyek nyata, otomatis menjadikan Refactory juga berperan
sebagai agen software. Mahasiswa, atau bisa disebut junior programmer,
akan bekerja sama dengan programmer senior di Refactory untuk
mengerjakan proyek nyata. Cara ini nantinya akan membekali mahasiswa
dengan pengalaman nyata dalam dunia pengembangan perangkat lunak.
Selain itu Refactory juga sangat dipercaya untuk mengerjakan proyek-
proyek besar maupun kecil baik dari perusahaan dalam maupun luar
negeri.

1.3. Visi, Misi dan Tujuan Perusahaan


1.3.1. Visi
Kebutuhan akan engineer & pendidik berbakat, yang dapat
memberikan layanan & dukungan yang unggul, merupakan suatu
keharusan untuk berkontribusi pada transformasi digital dan
membawa dampak positif bagi masyarakat.
1.3.2. Misi

8
1. Mendukung perusahaan dalam membuat atau
meningkatkan platform digital untuk melayani bisnis
mereka.
2. Mendukung perusahaan dalam pelatihan teknis agar
karyawan dapat melakukan tugasnya dengan lebih baik.
3. Mendidik dan melatih programmer dan pembuat kode yang
lebih berkualitas untuk mengisi kesenjangan antara
penawaran dan permintaan pasar.
1.3.3. Tujuan Perusahaan
1. Dengan tim software engineer yang berbakat dan
berpengalaman dalam bidang keahlian yang mencakup end
to end software development, mulai dari Frontend, Backend
hingga DevOps. Refactory berkomitmen untuk memberikan
kualitas terbaik dan teknologi terkini kepada klien di setiap
proyek.
2. Memberdayakan dan mengembangkan orang yang belum
atau kurang memahami agar lebih memahami, sehingga
mendapatkan pekerjaan sesuai skillnya.

1.4. Struktur Organisasi


Struktur organisasi Refactory dapat dilihat pada gambar 1.1 berikut
ini :

9
Gambar 1.1. Bagan Struktur Organisasi

1.5. Deskripsi Tugas Struktur Organisasi


1. Engineer bertugas dalam pengembangan aplikasi yang dapat
dilihat pada gambar 1.2 berikut :

Gambar 1.2. Bagan Enginner

2. R & D bertugas dalam pengembangan platform, contohnya


course.refactory.id dan refactory.id, berikut bagan dari R & D yang
dapat dilihat pada gambar 1.3 :

10
Gambar 1.3. Bagan R&D

3. Trainer bertugas dalam pengembangan SDM dan pembuatan


online course, berikut bagan dari devisi Trainer yang dapat dilihat
pada gambar di bawah ini :

Gambar 1.4. Bagan Trainer

4. Devisi BisDev bertugas dalam pengembangan bisnis,


pengembangan aplikasi dan course, berikut bagan dari devisi
BisDev yang dapat dilihat pada gambar di bawah ini :

11
Gambar 1.5. Bagan Devisi BisDev

5. Head of Finance bertanggung jawab atas kesehatan keuangan


perusahaan. Berikut bagan dari devisi Head of Finance yang dapat
dilihat pada gambar di bawah ini :

Gambar 1.6. Bagan Head of Finance

1.6. Departemen TI dalam Perusahaan


a. Pengembangan Aplikasi
Refactory merupakan perusahaan One-Stop IT Solution
untuk proyek client, karena Refactory dapat mengerjakan proyek-
proyek besar maupun kecil baik dari perusahaan dalam maupun

12
luar negeri dengan membantu di setiap tahap mulai dari menyusun
ide, melalui desain dan pengembangan aplikasi seluler, situs web
dan aplikasi desktop, hingga peluncuran produk. Refactory
berkomitmen untuk memberikan kualitas terbaik dan teknologi
terkini kepada klien di setiap proyek dengan pembuatan kode yang
lebih berkualitas untuk mengisi kesenjangan antara penawaran dan
permintaan pasar.
b. Pengembangan SDM
Salah satu layanan dari Refactory yaitu Refactory Course
merupakan layanan yang bertujuan untuk pengembangan SDM.
Refactory Course dirancang untuk memudahkan setiap orang
mampu meningkatkan keahlian dalam software engineering tanpa
dibatasi oleh kesulitan akses, kesulitan waktu, batasan keahlian,
ataupun usia.
Dengan pembelajaran berdasarkan pengalaman nyata
pengerjaan project, bagi pelajar/mahasiswa, Refactory Course akan
melengkapi keahlian yang sudah diperoleh dalam studi sehingga
dapat membuka kesempatan tak terbatas pada karir software
engineering. Bagi karyawan atau tenaga profesional, Refactory
Course dapat meningkatkan keahlian software engineer dalam
menunjang menyelesaikan tugas pekerjaannya tanpa khawatir
dengan keterbatasan waktu. Masyarakat secara luas juga dapat
memanfaatkan pembelajaran untuk meningkatkan keahlian
sehingga mampu berkarya dan mendapat keuntungan karir tanpa
khawatir mahalnya belajar.

13
BAB II
PELAKSANAAN MAGANG

2.1. Penjelasan Logbook


Senin, 1 Febuari 2021
Saya mendapatkan tugas oleh salah satu trainer Refactory untuk
menyelesaikan Fundamental Courses yang dapat dilihat pada gambar
2.1.1 dan membuat halaman web yang berisi CV saya sendiri
menggunakan github.io. Setelah itu, saya menyelesaikan Fundamental
Course tentang text editor yang dapat dilihat pada gambar 2.1.2 dan
menyelesaikan course markdown yang dapat dilihat pada gambar 2.1.3
serta menyelesaikan course terminal yang dapat dilihat pada gambar 2.1.4.

Gambar 2.1.1. Fundamental Courses

14
Gambar 2.1.2. Penyelesaian Course Text Editor

Gambar 2.1.3. Penyelesaian Course Markdown

15
Gambar 2.1.4. Penyelesaian Course Terminal

Selasa, 2 Febuari 2021


Saya menyelesaikan Fundamental Course pada website
https://enroll.refactory.id/ tentang Git yang dapat dilihat pada gambar 2.1.5
dan Github yang dapat dilihat pada gambar 2.1.6.

16
Gambar 2.1.5. Penyelesaian Course Git

Gambar 2.1.6. Penyelesaian Course GitHub

17
Rabu, 3 Febuari 2021
Saya diminta untuk membuat halaman web sederhana
menggunakan HTML, CSS, dan Javascript yang berisi CV di github.io
dengan memanfaatkan fitur github pages. Hasil dari halaman web yang
telah saya buat terdapat pada link https://marcelino666.github.io/.

Kamis, 4 Febuari 2021


Dikarenakan telah menyelesaikan tugas minggu ini, sehingga untuk
sementara saya diperbolehkan mempelajari online course apapun yang
terdapat pada Refactory Course dan disarankan untuk mempelajari tentang
Javascript. Maka dari itu, saya mempelajari dan menyelesaikan course
tentang Javascript.

Jumat, 5 Febuari 2021


Saya telah menyelesaikan course Javascript pada website
Refactory Course yang dapat dilihat pada gambar 2.1.7, dimana materi
yang telah saya selesaikan yaitu tentang introduksi Javascript, variables,
data types, manipulasi array, manipulasi object, operators, control flow
statement, perulangan, functions, error handling, logging, dan
asynchrounous.

18
Gambar 2.1.7. Course Javascript

Senin, 8 Febuari 2021


Saya diberikan tugas berupa soal backend logic menggunakan
bahasa pemprograman PHP (Personal Home Page : Hypertext
Preprocessor) yang dapat dilihat pada gambar 2.1.8. Kemudian, sebelum
mengerjakan soal tersebut, saya mencoba untuk mempelajari bahasa
pemprograman PHP terlebih dahulu.

19
Gambar 2.1.8. Soal Backend logic

Selasa, 9 Febuari 2021


Saya berhasil menyelesaikan soal backend logic. Hasilnya terdapat
pada link berikut https://github.com/Marcelino666/be_logic_1 dan
https://github.com/Marcelino666/be_logic_2. Setelah itu, saya diberikan
tugas untuk fokus mempelajari bagian backend dan menyelesaikan course
tentang bahasa pemprograman PHP serta framework Laravel yang terdapat
pada Refactory Course.

20
Rabu, 10 Febuari 2021
Saya menyelesaikan course PHP Basic yang dapat dilihat pada
gambar 2.1.9. Materi yang ada pada course ini yaitu pengenalan bahasa
pemprograman PHP, instalasi, PHP dasar, variables, data types, operators,
control flow, perulangan, function, manipulasi, exception, dan debugging.

Gambar 2.1.9. Penyelesaian Course PHP Basic

Kamis, 11 Febuari 2021


Saya menyelesaikan course Laravel for Beginner pada Refactory
Course yang dapat dilihat pada gambar 2.1.10. Materi yang terdapat pada
course ini yaitu installation, pengenalan Laravel, routing, controller,
database & migrations, dan eloquent ORM basic.

21
Gambar 2.1.10. Penyelesaian Course Laravel for Beginner

Senin, 15 Febuari 2021


Saya diperbolehkan untuk mempelajari apa saja yang terdapat pada
Refactory Course dikarenakan saya masih menunggu tugas selanjutnya
dari trainer Refactory. Akhirnya saya memilih untuk mempelajari GitHub
CLI pada Refactory Course.

Selasa, 16 Febuari 2021


Saya diberikan tugas hingga tanggal 5 maret 2021 untuk mencoba
mengerjakan Skill Test RSP (Refactory Strategic Partnership) Backend
yang terdapat pada link berikut ini https://gist.github.com/cahyo-
refactory/ef222c1abe9f64e810facd42b6b8de0f. Kemudian, sebelum

22
mengerjakan tugas tersebut, saya mencoba mempelajari mengenai
Application Programming Interface (API) dan Representational State
Transfer (REST) API terlebih dahulu melalui media internet.

Rabu, 17 Febuari 2021


Saya mempelajari cara membuat REST API dan menentukan
framework yang akan saya gunakan untuk membuat tugas pada Skill Test
RSP Backend. Framework yang saya pilih untuk mengerjakan Skill Test
RSP Backend yaitu Laravel.

Kamis, 18 Febuari 2021


Saya melanjutkan membuat tugas Skill Test RSP Backend. Hal
yang saya lakukan terlebih dahulu yaitu membuat database dengan
menggunakan Database Management System (DBMS) MySQL. Setelah
itu, saya mencoba membuat migrations serta seeders pada Laravel yang
sesuai dengan Entity Relationship Diagram (ERD) pada link berikut ini
https://dbdiagram.io/d/5fd31eb39a6c525a03baabc9.

Jumat, 19 Febuari 2021


Saya membuat models untuk booking, room dan user. Kemudian,
setelah membuat models, saya membuat controller untuk user guest
register, dimana data yang dibutuhkan untuk registrasi yaitu email,
password dan photo profile. Untuk penyimpanan photo profile, datanya
disimpan pada penyimpanan lokal.

Senin, 22 Febuari 2021


Saya mencoba menggunakan Dropbox sebagai pihak ketiga untuk
menyimpan photo profile maupun image lainnya, sehingga data untuk
image tidak lagi disimpan pada penyimpanan lokal. Oleh sebab itu, hari ini
saya mempelajari cara penggunaan API Dropbox dan mencoba terapkan
kepada sistem.

23
Selasa, 23 Febuari 2021
Saya membuat user controller yang berisikan show all, show by id,
update by id dan delete by id terhadap user data. Setelah itu, saya juga
membuat room controller yang berisikan store data baru, show all, show
by id, update by id dan delete by id terhadap data ruangan.

Rabu, 24 Febuari 2021


Saya membuat fitur login untuk user, dimana pada saat user login
dibutuhkan email dan password. Jika berhasil melakukan login, data dari
email dan password user ini akan generate menjadi sebuah token dengan
bantuan dari library JSON Web Token. Setelah itu saya juga membuat fitur
logout untuk user, dimana fitur logout ini membutuhkan token dari user
yang sedang login dengan token yang bertipe bearer token. Setelah
melakukan logout, token ini akan menjadi kadaluarsa, sehingga token ini
tidak dapat digunakan lagi.

Kamis, 25 Febuari 2021


Saya membuat booking controller yang berisikan show all, show
by id, store, update by id dan delete by id terhadap data pemesanan
ruangan. Setelah itu saya juga membuat fitur untuk check in dan check out,
dimana fitur ini terdapat pada controller check in dan check out.
Kemudian, tidak lupa juga saya menerapkan middleware terhadap seluruh
fitur yang membutuhkan autentikasi dan autorisasi, dimana middleware
yang saya terapkan ini membutuhkan token yang masih aktif.

Jumat, 26 Febuari 2021


Saya membuat fitur pengiriman email. Pada saat percobaan
menggunakan pihak ketiga untuk mengirim email, saya mencoba
menggunakan Mailtrap dan Mailgun, tetapi saya sedikit mendapati
masalah sehingga akhirnya saya menggunakan Gmail API sebagai pihak

24
ketiga untuk pengiriman email. Fitur pengiriman email ini saya terapkan
ketika user telah melakukan booking room.

Senin, 1 Maret 2021


Saya mencoba menerapkan fitur pengiriman email ketika tanggal
booking sama dengan tanggal saat ini dan pada saat user melakukan check
in. Untuk pengiriman email ketika tanggal booking sama dengan tanggal
saat ini, saya memanfaatkan fitur dari Laravel yaitu Task Scheduling.
Dengan fitur ini saya melakukan penjadwalan untuk melakukan
pengecekan jika ada tanggal booking sama dengan tanggal saat ini, maka
email akan dikirimkan kepada user yang telah melakukan pemesanan
ruangan.

Selasa, 2 Maret 2021


Saya melakukan revisi terhadap code REST API yang saya tulis
sebelumnya. Setelah itu, saya mempelajari dan mencoba membuat Graph
QL untuk melanjutkan tugas Skill Test RSP Backend.

Rabu, 3 Maret 2021


Saya melakukan revisi lagi terhadap code REST API yang saya
tulis sebelumnya dan setelah itu, saya deploy code REST API ini di
Heroku. Berikut link untuk menjalankan backend dari REST API yang
sudah saya deploy pada Heroku, http://powerful-cove-
21525.herokuapp.com/.

Kamis, 4 Maret 2021


Saya membuat dokumentasi terhadap backend dari REST API
yang telah saya buat sebelumnya menggunakan Postman. Hasil dari
dokumentasi tersebut terdapat pada link berikut
https://documenter.getpostman.com/view/9145498/Tz5iA17W. Untuk

25
hasil dari code REST API Skill Test RSP Backend, saya simpan pada link
berikut https://github.com/Marcelino666/Rest-API-RSP.

Jumat, 5 Maret 2021


Saya mencoba mempelajari dan membuat Graph QL untuk tugas
Skill Test RSP Backend. Dikarenakan untuk tugas Skill Test RSP Backend
pada hari ini merupakan deadline, maka untuk code Graph QL yang saya
kerjakan masih belum selesai.

Senin, 8 Maret 2021


Saya diminta untuk breakdown Sistem Pedukung Keputusan
(SPK). Kemudian, saya mempelajari tentang Sistem Pendukung
Keputusan.

Selasa, 9 Maret 2021


Saya diberikan tugas baru untuk membuat Sistem Pendukung
Keputusan (SPK) dalam pemilihan pegawai terbaik. Kemudian, saya
mencoba untuk mempelajari SPK dalam pemilihan pegawai terbaik yang
sudah pernah dibuat orang lain sebelumnya.

Rabu, 10 Maret 2021


Saya diminta untuk menentukan bahasa pemprograman dan
framework untuk sisi backend dalam membangun Sistem Pendukung
Keputusan (SPK) dalam pemilihan pegawai terbaik. Saya tertarik untuk
menggunakan Javascript sebagai bahasa pemprograman dan menggunakan
Express JS sebagai framework yang akan saya gunakan. Setelah itu saya
memilih untuk menggunakan metode Simple Additive Weighting terhadap
Sistem Pendukung Keputusan dalam pemilihan pegawai terbaik ini.

Jumat, 12 Maret 2021

26
Saya mempelajari tentang Node JS Basic dan penggunaan
framework Express JS melalui media internet. Untuk mempelajari Node JS
Basic, saya juga mempelajari beberapa materi melalui course yang
terdapat pada Refactory Course.

Senin, 15 Maret 2021


Saya menentukan parameter terhadap kasus pemilihan pegawai
terbaik menggunakan metode Simple Additive Weighting dan mempelajari
Node JS Basic serta penggunaan framework Express JS. Jadi untuk
parameter yang akan saya gunakan dalam proses pemilihan keputusan
sebagai berikut :
1. Kriteria dan bobotnya masing-masing yaitu Kedisiplinan (20),
Kerjasama (15), Inisiatif (15), Tanggung Jawab (20), Kinerja (20),
dan Prestasi (10). Dimana total bobot dari seluruh kriteria ini
adalah 100.
2. Nilai kriteria pembobotan untuk alternatif dan bilangan fuzzy yang
akan digunakan nantinya sebagai berikut :
- Nilai : 0 – 40, bilangan fuzzy : Rendah (R), Nilai bobot : 2
- Nilai : 41 - 60, bilangan fuzzy : Cukup (C), Nilai bobot : 3
- Nilai : 61 – 80, bilangan fuzzy : Tinggi (T), Nilai bobot : 4
- Nilai : 81 – 100, bilangan fuzzy : Sangat Tinggi (ST), Nilai
bobot : 5
3. Data yang akan dinormalisasikan nantinya menggunakan rumus
benefit terhadap setiap atribut.

Selasa, 16 Maret 2021


Saya membuat ERD untuk aplikasi pemilihan pegawai terbaik dan
melakukan konsultasi bersama salah satu trainer Refactory. Hasil ERD
setelah melakukan konsultasi dapat dilihat pada gambar 2.1.11, dimana
pada ERD yang ini terdapat table employee_rankin, employees, users, dan

27
criteria. Setelah melakukan konsultasi, saya melanjutkan mempelajari
Node JS dan Express JS.

Gambar 2.1.11. ERD untuk SPK pemilihan pegawai terbaik

Rabu, 17 Maret 2021


Saya mempelajari penggunaan library Sequelize dan saya mencoba
membuat migrations menggunakan library ini. Migrations yang saya buat
berdasarkan ERD yang telah dibuat sebelumnya yaitu untuk table users,
criteria, employees, dan employee_ranking.

Kamis, 18 Maret 2021


Saya melanjutkan membuat migrations dan mencoba membuat
seeder untuk keempat data table sebelumnya. Untuk data dummy pada
kolom password di table users, saya menggunakan library bcrypt untuk
hashing password.

28
Jumat, 19 Maret 2021
Saya membuat models untuk criterion, employee_ranking,
employee, dan user dengan bantuan library Sequelize Command Line
Interface (CLI). Dalam pembuatan models, library ini akan generate
sebuah index.js pada folder models, index.js ini berfungsi untuk
mengekspor module dari seluruh models yang dibuat pada folder models.

Senin, 22 Maret 2021


Saya membuat employee controller yang berisikan get all data, get
data by id, add new employee, delete by id, dan edit employee by id. Pada
controller ini, saya menggunakan sebuah library untuk membantu dalam
melakukan validasi terhadap beberapa tipe data seperti array, number,
string, dan sebagainya. Library yang saya gunakan yaitu Lodash.

Selasa, 23 Maret 2021


Saya melanjutkan membuat employee controller dan membuat
criterion controller yang berisikan get all data, get data by id, dan edit
data by id.

Rabu, 24 Maret 2021


Saya melanjutkan membuat criterion controller dan membuat fitur
login pada auth controller. Untuk fitur login, saya menggunakan bantuan
library JSON Web Token.

Kamis, 25 Maret 2021


Saya melanjutkan membuat fitur login dan membuat fitur logout
pada auth controller. Fitur logout ini membutuhkan header authorization,
yang dimana header authorization ini berisikan JSON Web Token.

29
Jumat, 26 Maret 2021
Saya melanjutkan membuat fitur login dan logout. Saya juga
memperbaiki bug pada fitur login dan logout yang telah saya bikin
sebelumnya.

Senin, 29 Maret 2021


Saya membuat fitur untuk forget password dan reset password
pada auth controller. Fitur ini membutuhkan request body berupa email
yang nantinya digunakan untuk mengirimkan sebuah URL (Uniform
Resource Locator) yang diikuti token, dimana URL ini digunakan pada
saat melakukan reset password. Contoh dari URL yang diikuti token untuk
dikirimkan kepada email user yang ingin reset password atau forget
password dapat dilihat pada gambar 2.1.12. Pada pengiriman email ini,
saya menggunakan pihak ketiga dan library dari Mailgun. Kemudian,
token yang berada setelah URL merupakan token yang telah dihasilkan
dari email yang telah masukan oleh user sebelumnya menggunakan
bantuan library JSON Web Token. Token ini akan disimpan ke dalam data
user yang bersangkutan setelah menjalankan fitur forget password. Maka
dari itu, untuk menyimpan token tersebut, saya melakukan penambahan
kolom ‘resetLink’ terhadap users table. Pada fitur reset password,
program membutuhkan request body berupa password baru, setelah itu
program akan melakukan pengecekan terhadap token yang diterima dari
URL, jika token sama dengan token yang berada pada kolom ‘resetLink’
pada user yang bersangkutan, maka pergantian password diterima.

30
Gambar 2.1.12. URL dan Token pada email

Selasa, 30 Maret 2021


Saya melakukan revisi terhadap criterion controller dan membuat
employeeRanking controller yang berisikan get all data dan get data by id.
Untuk revisi criterion controller, pada edit data by id, data yang dapat
diubah hanya bobot kriteria saja.

Rabu, 31 Maret 2021


Saya menerapkan metode Simple Additive Weighting pada fungsi
add new ranking (fungsi post ranking) di employeeRanking controller.
Pada fungsi post ranking ini membutuhkan request body berupa
pegawai_id, nilai_kedisiplinan, nilai_kerjasama, nilai_inisiatif,
nilai_kinerja, nilai_tanggungJawab, dan nilai_prestasi.

Kamis, 1 April 2021


Saya melanjutkan penerapan metode Simple Additive Weighting
pada fungsi add new ranking. Pada fungsi ini, untuk mendapatkan nilai
normalisasi pada setiap kriteria, saya menerapkan beberapa kondisi, dan
dari kondisi ini akan menentukan nilai untuk pembagian terhadap nilai
maksimum kriteria. Hasil dari normalisasi ini dikali dengan bobot dari
kriteria yang berada pada table criteria, sehingga menghasilkan nilai akhir
pada setiap kriteria.

31
Senin, 5 April 2021
Saya mempelajari framework Nuxt JS sebagai frontend untuk
aplikasi pemilihan pegawai terbaik. Setelah itu, saya melakukan instalisasi
framework ini pada penyimpanan lokal saya.

Selasa, 6 April 2021


Saya melakukan templating dan routing terhadap frontend dengan
bantuan Bootstrap dan JQuery. Setelah itu saya membuat page untuk
melakukan login. Proses login ini nantinya membutuhkan username dan
password.

Rabu, 7 April 2021


Saya membuat authentication (fitur login) pada frontend dengan
menggunakan package Auth Module. Di dalam package ini juga terdapat
package Axios, dimana package ini berfungsi untuk melakukan HTTP
request. Pada saat melakukan HTTP request, saya mendapatkan masalah
terhadap Cross-Origin Resource Sharing (CORS). Maka dari itu, saya
melakukan revisi terhadap backend yang telah saya buat. Untuk fitur login
pada frontend ini, terdapat form yang berisikan field username, field
password, dan tombol untuk login yang dapat dilihat pada gambar 2.1.13.

32
Gambar 2.1.13. Form login

Kamis, 8 April 2021


Saya membuat halaman untuk menampilkan seluruh data pegawai.
Komponen yang saya gunakan untuk membuat table dari data pegawai
menggunakan Bootstrap Vue. Untuk header dari table yang akan saya
tampilkan berupa ID dari pegawai, Nama Pegawai (berisikan nama dari
pegawai dan NIK dari pegawai) dan Actions (berisikan edit dan delete).
Hasil dari table yang saya buat dapat dilihat pada gambar 2.1.14. Setelah
membuat halaman untuk menampilkan seluruh data pegawai, saya
melakukan konfigurasi terhadap pengiriman API token user yang sedang
login untuk mengatasi middleware dalam pengaksesan backend API.

33
Gambar 2.1.14. Table List Employees

Jumat, 9 April 2021


Saya membuat form untuk penambahan data pegawai baru. Untuk
penambahan data pegawai baru membutuhkan data berupa nama pegawai
dan NIK pegawai. Hasil dari form yang telah saya buat dapat dilihat pada
gambar 2.1.15.

Gambar 2.1.15. Form penambahan pegawai baru

34
Senin, 12 April 2021
Saya membuat validasi terhadap fields yang berada pada form
penambahan data pegawai baru. Untuk mendapatkan JSON yang berupa
pesan error validasi dari backend, saya melakukan revisi terhadap code
backend, dimana untuk pesan error validator yang saya gunakan berasal
dari library Sequelize.

Selasa, 13 April 2021


Saya melakukan revisi terhadap fitur authentication dan
authorization pada code backend, dimana saya menambahkan kolom baru
terhadap users table, yaitu kolom api_token. Kolom ini berfungsi untuk
menyimpan API token user yang telah melakukan login dan pada saat user
melakukan logout nantinya, API token yang di simpan sebelumnya akan
dihapus.

Rabu, 14 April 2021


Saya melakukan revisi terhadap fitur authentication dan
authorization pada code backend, dimana pada sisi Nuxt JS untuk package
Auth Module membutuhkan sebuah endpoint dalam menerima data user
sekarang (user yang sedang aktif). Maka dari itu, di sisi backend, saya
membuat fitur untuk mendapatkan data user yang sedang aktif setelah
melakukan login pada auth controller.

Kamis, 15 April 2021


Saya membuat fitur logout pada sisi frontend, untuk fitur ini saya
menggunakan package Auth Module dan menargetkan endpoint logout
yang telah saya bikin pada sisi backend sebelumnya. Saya juga merevisi
code pada backend untuk mensinkronkan dengan sisi frontend. Fitur
logout ini akan tampil setelah user mengklik icon avatar pada pojok kanan
atas program. Hasil setelah diklik akan menampilkan tombol logout yang
dapat dilihat pada gambar 2.1.16.

35
Gambar 2.1.16. Fitur Logout

Jumat, 16 April 2021


Saya memperbaiki bug terhadap token authentikasi pada sisi
frontend, dimana setelah melakukan logout kemudian pada saat melakukan
login lagi atau melakukan reload page maka token user tidak ditemukan,
maka dari itu saya melakukan revisi terhadap code frontend dan backend.

Senin, 19 April 2021


Saya membuat page baru yang berisikan form edit dan delete
modal untuk manage employees, dimana form dan modal ini akan
dijalankan setelah user melakukan klik terhadap button edit maupun delete
pada kolom actions. Pada form edit yang dapat dilihat pada gambar 2.1.17,
terdapat input fields untuk Nama Pegawai dan NIK serta tombol save
untuk menyimpan data pegawai dan tombol back untuk membatalkan edit
pegawai. Pada delete modal yang dilihat pada gambar 2.1.18, terdapat
tombol close untuk membatalkan modal dan tombol delete untuk
menghapus data pegawai.

36
Gambar 2.1.17. Form edit employee

Gambar 2.1.18. Delete Modal employee

37
Selasa, 20 April 2021
Saya membuat halaman untuk menampilkan seluruh data kriteria
dan menerapkan form edit di dalam modal, sehingga tidak perlu lagi
membuat page baru untuk menampung form edit data criteria. Pada
halaman manage criterion yang telah saya buat dapat dilihat pada gambar
2.1.19, dimana terdapat table data kriteria yang berupa ID, Nama Kriteria,
Sifat Kriteria, dan Actions. Pada form edit modal yang telah saya buat
yang dapat dilihat pada gambar 2.1.20, dimana terdapat field untuk
mengedit nilai bobot kriteria dan tombol close untuk menutup form modal
serta tombol update untuk menyimpan hasil perubahan bobot kriteria.

Gambar 2.1.19. Form list criterion

38
Gambar 2.1.20. Edit modal criteria

Rabu, 21 April 2021


Saya membuat halaman untuk menampilkan seluruh data ranking
pegawai yang dapat dilihat pada gambar 2.1.21. Pada header table data
ranking pegawai ini, saya membuat fitur untuk melakukan sorting
terhadap kolom yang dipilih. Pada table ini, data default yang diterima
dari backend juga sudah diurutkan berdasarkan kolom total.

Gambar 2.1.21. List data ranking pegawai

39
Kamis, 22 April 2021
Saya membuat fitur search pada manage employees. Fitur search
ini mencari data pegawai berdasarkan nama dari pegawai yang ingin
dicari.

Jumat, 23 April 2021


Saya melanjutkan membuat fitur search pada manage employees.
Pada fitur ini, saya melakukan revisi terhadap sisi backend, dimana saat
menerima data nama yang ingin dicari, program akan mencarikan nama
pegawai yang sesuai dengan yang dimasukan, disini saya menggunakan
logika query pencarian dengan bantuan library Sequelize dimana data
akan dicari berdasarkan kolom nama_pegawai yang sama dengan `%$
{search}%`. Hasil dari fitur search yang saya buat dapat dilihat pada
gambar 2.1.22, dimana pada gambar tersebut user melakukan pencarian
data pegawai dengan memasukkan kata ‘ki’ pada search field.

40
Gambar 2.1.22. Search data pegawai dengan input nama “ki”

Senin, 26 April 2021


Saya membuat fitur pagination terhadap data di halaman manage
employee. Pagination data pegawai disini akan menampilkan 10 row data
perhalamannya.

Selasa, 27 April 2021


Saya melanjutkan membuat pagination terhadap data di halaman
manage employee. Pada pagination di sisi frontend, saya menggunakan
Bootstrap Vue, dimana pagination dalam Bootstrap Vue ini membutuhkan
data berupa current page, total (banyak row yang akan ditampilkan), dan
per-page (batas row yang akan ditampilkan perhalaman). Maka dari itu,
untuk menyinkronkan antara sisi frontend dan backend, saya juga
melakukan revisi terhadap code di sisi backend. Fitur pagination ini

41
terdapat di pojok kanan bawah halaman manage employee yang dapat
dilihat pada gambar 2.1.23.

Gambar 2.1.23. Tampilan fitur pagination pada manage employee

Rabu, 28 April 2021


Saya menerapkan pagination terhadap halaman manage rankings.
Setelah itu saya mencoba menambahkan fitur untuk menampilkan data
rankings berdasarkan bulan dan tahun. Pada sisi frontend saya
menggunakan date picker dari bootstrap vue dan pada sisi backend akan
menerima inputan dari date picker yang berupa type data string. Data
string ini diubah menjadi type data date dan data date ini akan menjadi
filter untuk menampilkan data yang ingin ditampilkan.

Kamis, 29 April 2021


Saya melanjutkan membuat fitur untuk menampilkan data rankings
pegawai berdasarkan bulan dan tahun pada halaman manage rankings.
Maka dari itu, saya melakukan beberapa revisi pada sisi backend dan hasil
dari fitur yang telah saya buat yaitu date picker yang dapat dilihat pada
gambar 2.1.24, dimana user memilih bulan juni tahun 2021 dan hasil dari
pilihan ini akan menampilkan data rankings pegawai pada bulan juni tahun
2021 yang dapat dilihat pada gambar 2.1.25.

42
Gambar 2.1.24. Date picker untuk memilih bulan dan tahun

Gambar 2.1.25. Menampilkan data rankings pegawai pada bulan juni


tahun 2021.

Jumat, 30 April 2021

43
Saya membuat bar chart rankings pegawai di halaman graph
rankings. Untuk membuat chart pada sisi frontend, saya menggunakan
library Chart JS dan Vue-chartjs. Bar chart yang telah saya buat dapat
dilihat pada gambar 2.1.26, bar chart tersebut terdiri dari labels yang
berupa nama dari pegawai dan dataset yang berupa total dari hasil
penilaian pegawai.

Gambar 2.1.26. Bar chart rankings pegawai

Senin, 3 Mei 2021


Saya membuat line chart terhadap data pegawai. Untuk line chart
yang dapat dilihat pada gambar 2.1.27, terdapat labels yang berupa nama
bulan dari januari hingga desember dan terdapat datasets yang berupa total
dari hasil penilaian pegawai.

Gambar 2.1.27. Line chart penilaian pegawai Mark Zuckerberg

Selasa, 4 Mei 2021

44
Saya menerapkan fitur untuk menampilkan data berdasarkan bulan
dan tahun terhadap chart pada graph rankings pegawai serta fitur untuk
menampilkan data berdasarkan tahun pada graph penilaian pegawai.
Dalam menerapkan fitur ini, saya juga melakukan revisi di sisi backend
dengan membuat sebuah table untuk graph penilaian pegawai yang
berisikan bulan dan total penilaian. Hasil dari penerapan fitur
menampilkan data berdasarkan bulan dan tahun terhadap chart pada graph
rankings pegawai, dapat dilihat pada gambar 2.1.28, dimana pada chart
tersebut menampilkan data rankings pegawai pada bulan april dan tahun
2021. Selajutnya, hasil dari fitur menampilkan data berdasarkan tahun
pada graph penilaian pegawai dapat dilihat pada gambar 2.1.29, dimana
pada data chart dan table yang ditampilkan berdasarkan tahun 2021 untuk
pegawai Steve Wozniak.

45
Gambar 2.1.28. Bar chart rankings pegawai pada bulan april 2021

Gambar 2.1.29. Line chart penilaian pegawai Steve Wozniak pada tahun
2021

46
Rabu, 5 Mei 2021
Saya memperbaiki bug terhadap bar chart dan line chart yang
telah saya bikin sebelumnya, jadi pada saat mendapatkan data baru dari
sisi backend dan menyimpan data tersebut pada state di sisi frontend.
Chart tidak responsif terhadap data baru yang diterima, maka dari itu saya
memperbaiki chart tersebut pada sisi re-render data.

Kamis, 6 Mei 2021


Saya membuat halaman penambahan data rankings yang berisikan
form penilaian terhadap pegawai pada manage rankings. Form yang telah
saya buat dapat dilihat pada gambar 2.1.30, dimana form ini terdapat input
fields berupa ID pegawai, Nilai Kedisiplinan, Nilai Kerjasama, Nilai
Inisiatif, Nilai Kinerja, Nilai Tanggung Jawab, dan Nilai Prestasi.

Gambar 2.1.30. Form penilaian pegawai pada manage rankings

Jumat, 7 Mei 2021


Saya memperbaiki beberapa bug terhadap table rankings pegawai
yang tidak responsif setelah perpindahan page (pagination). Setelah itu
saya membuat fitur untuk menampilkan seluruh data pada table rankings

47
pegawai, dimana data yang akan ditampilkan tidak lagi hanya 10 row saja,
tetapi semua data yang ingin ditampilkan pada bulan dan tahun tertentu.

2.2. Hasil Pekerjaan Secara Umum

Hasil dari pekerjaan saya secara umum terdapat 3 fase yakni fase
pertama membuat test backend logic yang dimana terdapat 2 soal backend
logic menggunakan bahasa pemprograman PHP. Fase kedua, mengerjakan
task REST API untuk Skill Test RSP Backend dimana saya membuat
backend untuk aplikasi pendaftaran ruangan meeting dan membuat
dokumentasi dari REST API dari backend tersebut. Fase ketiga saya
membuat Sistem Pendukung Keputusan (SPK) dalam pemilihan pegawai
terbaik menggunakan metode Simple Additive Weighting, sistem ini
dibangun berbasis website.

2.3. Bukti Hasil Pekerjaan


1. Fase pertama, yaitu membuat test backend logic 1 dan 2. Hasil dari
test backend logic 1, dapat dilihat pada gambar 2.3.1, dimana pada
gambar tersebut terdapat acuan nomor 9123456 sebagai input dan
output yang dihasilkan menjadi 9000000, 100000, 20000, 3000,
400, 50, dan 6. Hasil dari test backend logic 2, dapat dilihat pada
gambar 2.3.2, dimana pada gambar tersebut menampilkan output
pola yang berupa 17 kolom kali 17 baris.

48
Gambar 2.3.1. Test backend logic 1

Gambar 2.3.2. Test backend logic 2

49
2. Fase kedua, yaitu membuat aplikasi pendaftaran ruangan meeting
untuk Skill Test RSP Backend dan membuat dokumentasi dari
REST API tersebut. Hasil dari dokumentasi yang telah saya buat
dapat dilihat pada gambar 2.3.3, dimana dokumentasi ini dibuat
menggunakan bantuan Postman.

Gambar 2.3.3. Dokumentasi REST API untuk Skill Test RSP


Backend

3. Fase ketiga, yaitu membuat Sistem Pendukung Keputusan (SPK)


dalam pemilihan pegawai terbaik menggunakan metode Simple
Additive Weighting. Hasil dari sistem yang saya buat dapat dilihat
pada gambar 2.3.4, dimana sistem ini saya bangun berbasis website
dan menggunakan framework Express JS untuk sisi backend serta
framework Nuxt JS untuk sisi frontend.

50
Gambar 2.3.4. Sistem Pendukung Keputusan (SPK) dalam
pemilihan pegawai terbaik menggunakan metode Simple Additive
Weighting.

51
BAB III
HASIL PEMBELAJARAN

3.1. Manfaat Magang


Manfaat yang saya dapatkan pada saat pelaksanaan magang begitu
banyak. Dalam pelaksanaanya, saya dapat meningkatkan kemampuan
coding saya, dimana beberapa kali saya mendapat tugas yang
mengharuskan untuk mempelajari framework yang sebelumnya tidak
pernah saya dapatkan saat kuliah, dengan begitu saya mempelajari
beberapa framework baru seperti Laravel, Express JS dan Nuxt JS.
Manfaat lainnya saat pelaksanaan magang ini tentunya dapat
meningkatkan wawasan mengenai bahasa pemrograman PHP dan
Javascript. Selama magang, saya juga belajar mengenai alur kerja dalam
pembuatan sebuah aplikasi yang baik dan benar, sehingga saya dapat
memahami bagaimana proses kerja seorang Fullstack Web Developer.
Saya juga belajar untuk selalu disiplin terhadap tugas yang diberikan,
sehingga pada saat menghadiri screen planning yang diadakan setiap
minggu, saya selalu dapat memberikan progress dari tugas yang diberikan.
Kemampuan komunikasi saya juga meningkat karena selama magang saya
melakukan presentasi progress setiap minggunya, dan saya selalu
melakukan konsultasi berkala dengan trainer untuk bertanya terkait solusi
dari projek yang sedang saya kerjakan dan juga membangun relasi dengan
para trainer lainnya.

3.2. Penerapan Ilmu dalam Magang


Penerapan ilmu semasa kuliah selama pelaksanaan magang sangat
banyak membantu saya terutama pada saat pembuatan aplikasi web,
dimana sebagian besar projek yang saya buat selama magang yaitu
pengembangan aplikasi web, sehingga ilmu semasa kuliah seperti Basis

52
Data dan Pengembangan Aplikasi Web sangat membantu dalam
management database dan membangun sebuah aplikasi web. Selain
penerapan hardskill yang berupa pengetahuan teknis mengenai
pengembangan web, saya juga menerapkan softskill yang berupa
kemampuan komunikasi.

53
BAB IV
KESIMPULAN

Selama magang ini, saya sudah mendapatkan banyak manfaat, mulai dari
pengalaman bekerja langsung di perusahaan, mendapatkan banyak relasi, dan juga
mendapatkan banyak ilmu. Saya juga menjadi lebih memahami bahasa
pemrograman PHP dan Javascript, juga menjadi tahu beberapa framework baru
untuk pengembangan aplikasi web. Saya juga terlatih untuk lebih disiplin waktu,
karena selama magang saya selalu mengerjakan tugas sesuai deadline yang sudah
ditentukan dan selalu menghadiri screen planning setiap minggu. Saya juga dapat
meningkatkan kemampuan presentasi dan komunikasi, karena saat screen
planning, saya selalu memberikan report terkait perkembangan project yang saya
kerjakan, saya juga membangun relasi dan selalu melakukan konsultasi berkala
terkait solusi dari projek yang sedang dikerjakan bersama para trainer.

Pada kegiatan magang ini, penerapan ilmu semasa kuliah juga sangat
membantu saya dalam proses pembuatan aplikasi web, karena sebagian besar
projek yang saya dapatkan ialah pengembangan aplikasi web. Ilmu semasa kuliah
yang saya dapatkan seperti Basis Data dan Pengembangan Aplikasi Web sangat
membantu dalam magang saya, seperti pada kegiatan management database dan
membangun aplikasi web. Dalam pelaksanaanya saya berhasil menyelesaikan
pekerjaan yang secara umum terdapat 3 fase yakni fase pertama membuat test
backend logic dimana terdapat 2 soal backend logic menggunakan bahasa
pemprograman PHP. Fase kedua mengerjakan task REST API untuk Skill Test
RSP Backend, dimana saya membuat backend untuk aplikasi pendaftaran ruangan
meeting dan membuat dokumentasi dari REST API dari backend tersebut. Fase
ketiga membuat Sistem Pendukung Keputusan (SPK) dalam pemilihan pegawai
terbaik menggunakan metode Simple Additive Weighting, sistem ini dibangun
berbasis website.

54

Anda mungkin juga menyukai