Categories
Informasi Ringan opini

Kuliah online, tiap hari Vicon itu nggak keren

Tiap hari Vicon itu nggak keren, tapi juga harus diingat, tiap kali pertemuan hanya memberikan tugas dan PPT saja itu jauh lebih tidak keren, karena inti dari perkuliahan daring sebenarnya adalah memberikan kebebasan pada siswa untuk belajar sesuai kecepatan dan kenyamanan masing-masing. Memberi kebebasan artinya tidak terlalu banyak mengekang pola belajar mahasiswa, tapi juga tidak berarti memaksa mahasiswa untuk selalu mencari bahan sendiri.

Sebelum melanjutkan, perlu diketahui moda perkuliahan daring terbagi menjadi 3, yaitu:

  1. Singkron (interaksi langsung): menggunakan telelpon dan video conference
  2. Asingkron (interaksi tidak langsung): menggunakan bahan ajar PPT, artikel, penugasan, dan lain sebagainya
  3. Semi-singkron: menggunakan forum, chat group, webinar, dan lain sebagainya

Harus diakui pertemuan daring singkron dengan menggunakan video conference (ViCon) seperti Google Meet, Zoom, atau Skype itu sangat membantu dalam komunikasi dua arah, karena bagaimanapun juga bentuk komunikasi paling efektif adalah komunikasi langsung 2 arah. Meski demikian, ViCon memiliki banyak keterbatasan dan membutuhkan banyak sumber daya (pulsa/paket data terutama), sehingga pemanfaatannya harus diatur sedemikian rupa.

Menurut perhitungan salah satu praktisi pendidikan daring di universitas negeri, jika seorang mahasiswa mengambil 7 mata kuliah dalam satu semester, dan semua dosennya menggunakan vicon untuk perkuliahan, maka pulsa yang dibutuhkan mahasiswa tiap bulan minimal 250.000. Kebutuhan pulsa tersebut belum termasuk untuk mengakses materi ajar yang lain.

Kesulitan lain ketika menggunakan ViCon untuk perkuliahan adalah, koneksi yang dibutuhkan untuk ViCon harus stabil dan cepat. Bagi siswa atau pengajar yang tempat domisilinya jauh dari pusat kota, sinyal koneksi yang digunakan untuk Internet biasanya sangat terbatas, yang mengakibatkan sesi ViCon terganggu dan materi yang disampaikan malah tidak dapat diterima dengan baik.

Salah satu alasan kenapa para pengajar latah menggunakan ViCon ketika tetiba KBM menggunakan metode daring adalah, agar pengajar bisa memastikan siswa tetap mengikuti kegiatan perkuliahan seperti biasa. Alasan ini jugalah yang akhirnya membuat pengajar banyak memberikan tugas daring kepada siswa. Mereka ingin memastikan siswa mereka agar tetap mempelajari materi yang diberikan. Sayangnya kedua jalan yang ditempuh (memperbanyak ViCon atau tugas) ini justru malah menambah beban di kedua belah pihak. Waktu yang digunakan untuk KBM dengan meperbanyak ViCon dan tugas ini seringkali malah lebih banyak menyita waktu dan tenaga dibandingkan perkuliahan konvensional.

Jika kita mengamati pola pengajaran online beberapa Massive online open course (MOOC) yang cukup terkenal seperti Udacity, Coursera, dan EdX, mereka bahkan sangat jarang sekali menggunakan moda ViCon untuk penyampaian materi. Moda singkron biasanya tetap disediakan oleh pengajar untuk siswa yang memerlukan konsultasi secara langsung. Adapun materi pengajaran, kebanyakan diberikan secara lengkap dan komprehensif melalui moda asingkron seperti lecture notes, video, dan penugasan berbasis proyek.

Dalam kapasitas saya sebagai pengajar yang juga terpaksa mendalami pengajaran daring, sepertinya tidak pas kalau saya menggurui. Namun di sini saya hanya sedikit sharing strategi perkuliahan daring saya sebagai alternatif saja.

  1. Materi diberikan dalam beberapa jenis pdf / artikel / ppt yang dilengkapi dengan video youtube penjelasan materi.
  2. Setiap topik terdapat evaluasi pilihan ganda sederhana, hanya menanyakan hal yang sudah ada pada materi saja, untuk memastikan mahasiswa memahami materi yang diberikan. Misalkan setelah mengajarkan input dengan perintah input dan print, maka yang ditanyakan adalah “Perintah apa yang digunakan untuk output pada Python”.
  3. Cukup 1 atau 2 tugas besar / proyek yang bersifat eksploratif yang waktu pengerjaannya cukup longgar (misalkan 1 bulan) untuk menguji kompetensi mahasiswa.
  4. Jika diperlukan, jadwalkan ViCon atau Webinar satu atau dua kali selama perkuliahan dengan waktu yang telah disepakati bersama antara siswa dan pengajar.

Pandemi Covid-19 ini memaksa kita yang sebelumnya jarang sekali atau bahkan mungkin tidak pernah menggunakan teknologi pembelajaran digital untuk tiba-tiba harus menggunakan semua teknologi tersebut. Kekurangan di sana-sini pasti banyak terjadi. Tantangan kita sebagai pengajar dan siswa adalah kembali lagi mengeksplore dan terus beradaptasi dengan metode pembelajaran daring ini. Ke depannya, bahkan ketika kita sudah tidak wajib menggunakan metode daring, skill yang kita kuasai selama mengembangkan media pembelajaran daring ini pasti akan sangat berguna untuk kegiatan belajar mengajar kita juga.

Disclaimer: Artikel ini murni pendapat saya pribadi, seorang dosen yang masih belajar cara mengatur perkuliahan daring (online) dengan baik.

Categories
Informasi Ringan opini Pemrograman random

Catatan Programmer: Konten adalah Raja

Konten adalah raja (Content is a king), ungkapan yang menunjukkan betapa pentingnya konten dalam sebuah media. Media apapun itu.

Salah satu request yang paling banyak diminta ke web developer adalah permintaan untuk membuat web konten. Berbeda dengan web aplikasi di mana tujuan utamanya adalah menerima berbagai macam input, melakukan pengolahan data, melakukan validasi proses, serta menampilkan laporan dalam bentuk yang mudah dipahami, tujuan utama dari web konten adalah menampilkan informasi penting agar lebih mudah diakses oleh pengunjung dan mudah dicari oleh calon pengunjung.

Konten, Raja yang Terlupakan

Berbicara tentang web konten sudah pasti yang terpenting adalah konten. Jadi kalau kita berharap ingin memiliki web sebagai media informasi, maka pertama kali yang harus dipersiapkan dan dimiliki adalah Informasi itu sendiri. Desain, SEO, dan teknologi perannya hanyalah sebagai pendukung saja. Tanpa seorang raja, apalah artinya sebuah kerajaan.

Sayangnya, percaya atau tidak, yang sering dilupakan ketika seorang customer memesan web konten pada programmer adalah kontennya itu sendiri. Atau mungkin lebih tepatnya, banyak customer yang menganggap konten itu urusan mudah sehingga diasumsikan ketika request untuk dibuatkan website otomatis web developer sudah otomatis bisa membuat konten yang sesuai dengan yang ada dalam kepalanya.

Kurang lebih ilustrasinya seperti ini:

  • Customer: Mas minta tolong dibuatkan web untuk instansi saya ya
  • Developer: Baik bisa bu, maaf ini instansinya di bidang apa ya?
  • C: Bergerak di bidang bantuan hukum untuk hewan peliharaan dan hewan-hewan terlantar mas.
  • D: Oke bu, kurang lebih berarti layoutnya seperti ini, dengan struktur menu dan kategorisasi seperti ini ya bu?
  • C: Oke saya setuju mas, kan kamu yang lebih berpengalaman.
  • D: Ini websitenya nanti isinya mau dinamis, bisa ditambah postingan sendiri atau cukup statis hanya menampilkan beberapa halaman saja bu?
  • C: Dinamis dong, itu anak buah saya sudah banyak yang saya tugaskan untuk nulis.
  • D: Baik bu, dengan struktur seperti ini saya perlu beberapa bahan untuk halaman depan, kemudian deskripsi kategorisasi, visi-misi, kontak, dan lebih bagusnya kalau ada foto pendukung dan juga beberapa artikel awal dulu. Biar isinya nggak dummy.
  • C: Ohhhh…. gitu ya, itu juga dari kita ya? Oke minggu depan saya kirim semuanya
  • # Dan 7,5 tahun kemudian baru bisa kirim logo instansinya saja.

Bisakah Konten juga Difasilitasi oleh Developer?

Jawaban pendeknya: BISA

Namun perlu diingat, untuk membuat konten, mengambil dan mengedit foto, mendesain logo, dan tentunya menulis konten memerlukan tenaga dan biaya tambahan. Jadi, jangan kaget kalau developer All in One, akan memberikan charge harga yang jauh lebih tinggi dibandingkan developer yang semata membuatkan web saja.

BTW, kalau yang diinginkan hanya membuat web konten sederhana, tanpa ada fitur integrasi data atau pengolahan proses yang rumit, kita tidak harus menguasai koding dengan bahasa pemrograman untuk membuatnya. Kita dapat memanfaatkan Content Management System (CMS) yang dilengkapi dengan Visual Builder Theme, sehingga proses developmentnya hanya perlu aksi drag & drop saja.

BTW lagi, saya pernah membuat artikel tentang penggunaan Visual Builder untuk pengembangan web di tulisan saya yang lain.

Kesimpulannya, jika kita dalam posisi customer yang minta untuk dibuatkan web, selalu ingat konten adalah raja, dan programmer bukan orang yang selalu bisa membuatkan konten untuk kita. Mempersiapkan konten kita sendiri adalah cara yang terbaik agar developer dapat bekerja optimal dengan hasil sesuai yang kita harapkan.

Sebaliknya dalam posisi kita sebagai developer/programmer, banyak customer yang masih belum sadar bahwa konten tidak serta merta disiapkan oleh developer. Sehingga persiapkan cara untuk berkomunikasi dengan customer agar mereka menyiapkan konten. Alternatif lain, siapkan paket web development plus content creation dalam pilihan biaya pengembangan web kita.

Categories
Informasi Ringan opini Pemrograman random

Catatan Programmer: Tolong Buatkan Aplikasi yang Sederhana

Salah satu tugas yang sangat berat untuk pemrogram (progammer) atau pengembang aplikasi adalah membuat aplikasi yang sederhana. Umumnya, untuk berjalan dengan baik, aplikasi memerlukan berbagai macam inputan dan pengolahan data. Kalau pengguna bisa dan mau capek mengikuti semua proses input dan alur program yang lain, kemungkinan kesalahan pada aplikasi bisa ditekan.

Realitanya, kebanyakan pengguna (termasuk saya) menginginkan proses yang efisien dan sesederhana mungkin. Kalau bisa proses manualnya dibuat seminimal mungkin tapi tetap memberikan hasil yang diharapkan secara valid. Tentu saja pengembang aplikasi harus bekerja lebih keras untuk mengikuti keinginan pengguna tersebut.

Terkadang pada sebuah perusahaan pengembang aplikasi bahkan memiliki personil khusus untuk membuat desain aplikasi yang mudah dan sederhana, istilah kerennya adalah UX (user experience) Designer. Tapi perjalanan tidak berhenti di situ, setelah UX Designer membuat rancangan yang ciamik, belum tentu pemrogram dapat mengimplementasikannya secara menyeluruh karena keterbatasan teknis.

Gambarannya seperti ini. Ketika bekerja dengan File Explorer, seringkali kita ingin menghapus beberapa berkas (file) sekaligus. Awalnya pemrogram hanya menyiapkan perintah untuk menghapus berkas satu persatu, sehingga jika pengguna ingin melakukan penghapusan beberapa juga harus dilakukan satu persatu. Demi memenuhi keinginan pengguna untuk menghapus beberapa file sekaligus, maka yang dilakukan pemrogram adalah:

  1. Menyiapkan antarmuka pemilihan banyak berkas
  2. Menyimpan identitas semua berkas yang terpilih pada variabel penampungan
  3. Membuat kondisi khusus perhitungan jumlah berkas terpilih dan total ukuran berkas jika ada lebih dari satu berkas yang dipilih
  4. Memberikan pilihan centang konfirmasi penghapusan untuk semua berkas terpilih yang hanya akan muncul ketika berkas yang dipilih lebih dari satu
  5. Baru terakhir menghapus semua berkas yang ada pada variabel penampungan

Jadi jangan heran ketika kita sebagai pengguna meminta aplikasi yang lebih sederhana malah proses pembuatan aplikasinya semakin lama. Jelas ada extra mile yang harus ditempuh oleh pengembang untuk membuat aplikasi yang sederhana. Semakin sederhana aplikasi, semakin banyak keruwetan proses yang harus disembunyikan dan diotomasi oleh pengembang.

Repotnya, ketika alasan “sederhana” ini malah digunakan oleh klien untuk meminta harga yang lebih murah. Seperti yang pernah saya pribadi alami beberapa tahun yang lalu,

  • Klien: Mas minta tolong dibuatkan aplikasi lomba & penjurian online yang sederhana aja, cuman peserta bisa upload dan juri bisa input nilai, udah gitu aja sederhana.
  • Aku: Oke, berarti website-nya sudah ada ya bu?
  • K: Belum, ya itu kan sekalian websitenya jadi satu aja biar nggak repot
  • A: terus file video ini kan besar, ini mau disimpan di mana? apakah peserta upload di youtube dulu tinggal input URL-nya?
  • K: oh ya jangan, repot itu nanti. Upload di aplikasinya aja, terus tersimpan di google drive kami. Nanti biar juri-nya lihat di google drive aja.
  • A: oke, semua jenis video bisa di-upload?
  • K: Jangan, hanya jenis MP4 aja. Bisa jadi cepet kan mas?
  • A: Baik ini kurang lebih biayanya 3 juta*, kalau pengen lebih cepet ada charge tambahan 1 juta, jadi total 4 juta.
  • K: lho kok mahal mas? kan cuman sederhana. Wong peserta cuman upload ke google drive, terus juri input nilai. Gitu aja kok.
  • A: itu kalau fiturnya seperti tadi memang sekitar segitu bu.
  • K: Kalau 700ribu aja bisa nggak? Kita maks budget-nya 1 juta udah all-in dengan hosting.
  • A: *tiba-tiba pengen izin ke kamar mandi terus nggak balik lagi*

NB: (1) saat itu belum ada google form (2) nominal harga hanya fiktif belaka, tapi nawarnya beneran kebangetan.

Categories
Pemrograman Software Development Tips

Kemanan Dasar untuk Web Developer

Saya bersyukur karena sewaktu di MA Qudsiyyah (setingkat SMA) sudah meluangkan uang untuk membeli buku keamanan terbitan Jasakom yang ditulis oleh St’o (saya lupa judulnya apa, bukunya juga udah lama ilang). Dari buku tersebut saya mengetahui beberapa hal penting tentang aspek keamanan aplikasi yang patut diperhatikan ketika mengembangkan sebuah aplikasi berbasis web (dan juga mobile). Meskipun saya bukanlah ahli keamanan jaringan dan komputer saya akan mencoba membagikan sedikit pengetahuan keamanan yang saya ingat dari buku tersebut. Berikut adalah beberapa poin keamanan (security) dasar yang harus diketahui oleh web developer atau programmer untuk memastikan aplikasi dan web yang dibuat bisa lebih aman dari serangan hacker (istilah yang lebih tepat adalah cracker, tapi saya akan tetap menggunakan istilah hacker karena lebih familiar).

1. Alasan kenapa sebuah web diserang

Poin pertama yang harus diketahui oleh web developer, alasan utama kenapa web kita diserang bukanlah karena kita memiliki musuh, bukan juga karena aplikasi / web kita sangat hebat sehingga membuat hacker penasaran. Alasan utama serangan ke web kita adalah karena ada celah keamanan pada web kita. Sekali lagi alasan utamanya adalah karena ada celah keamanan.

Hacker, terutama yang masih belajar (script kiddies) seringkali mencari target serangan dengan melakukan pengecekan ke semua alamat web yang bisa mereka temui. Pengecekan ini dilakukan secara masif dan otomatis dengan menggunakan program tertentu, dan tentu saja ketika website kita yang masih bolong-bolong masuk pada list pengecekan mereka, inilah saatnya musibah terjadi.

Hacker yang menyerang kita mungkin tidak mengenal kita dan bahkan mungkin tidak memahami konten apa yang ada pada web kita. Asalkan mereka menemukan celah keamanan di web kita, itu sudah menjadi alasan yang sangat bagus untuk menyerang web kita.

2. SQL Injection (serangan)

Salah satu serangan yang cukup simpel tapi sangat berbahaya adalah SQL Injection. Serangan ini pada dasarnya adalah memasukkan karakter tertentu pada form input yang dapat mengubah query SQL sekaligus menyisipkan query SQL baru sesuai dengan keinginan hacker.

Contoh: kita memiliki halaman login yang terdiri dari inputan username, password, dan tombol login. Di sisi server untuk memroses inputan dari form tersebut kita menggunakan query SQL sebagai berikut:

select * from userlogin where username = '<input_username>' and password = '<input_password>'

Query tersebut berarti kita mencari di tabel userlogin data yang username-nya sesuai dengan input_username dan passwordnya sesuai dengan input_password. Sekilas tidak ada yang salah dengan query tersebut sampai ada yang berbuat iseng dan memasukkan '; drop table userlogin; -- pada user_input dan whatever pada input_password, sehingga aplikasi kita akan menjalankan query seperti di bawah ini:

select * from userlogin where username = ''; drop table userlogin; -- ' and password = 'whatever'

Nah kali ini yang dilakukan query tersebut adalah mencari data user dengan username kosong (yang pastinya tidak akan ketemu) dan menghapus tabel login dari database. Musibah, terutama jika kita tidak memiliki backup data userlogin.

sql_injection-389427-1280715215

Query yang diinject pada contoh di atas hanya ilustrasi semata. Hacker yang asli bisa lebih kreatif dalam penggunaan SQL Injection ini. Bukan hanya sekedar menghapus tabel, tapi mungkin juga bisa mendapatkan akses admin pada aplikasi kita.

Kabar buruknya lagi, seorang hacker dapat mengecek apakah web kita memiliki celah keamanan SQL Injection dengan sangat mudah, yaitu cukup memasukkan karakter ” ‘ ” (petik satu) pada salah satu form, dan klik submit. Website yang memiliki celah SQL Injection akan menampilkan kesalahan (kode: 500), sedangkan website yang baik akan menampilkan pesan bahwa obyek yang dicari tidak ditemukan (kode: 401, 403, atau 404).

3. XSS dan Injection Lain

Ada beberapa jenis injection lain yang juga bisa dilakukan oleh hacker antara lain HTML Injection atau sering  disebut XSS (Cross-Site Scripting) dan File Injection. Jika pada serangan SQL Injection hacker akan memasukkan query SQL tambahan, maka pada XSS hacker akan menyisipkan kode HTML (sebagai percobaan) dan kode javascript (untuk serangan yang lebih serius).

xss-anatomy

Contoh XSS: pada form komentar, hacker akan mencoba memasukkan kode HTML <b>coba dulu</b> untuk mengecek apakah website kita akan memproses kode tersebut. Selanjutnya ketika web kita menampilkan teks coba dulu (dengan font bold), hacker akan mencoba tag lain yang lebih serius misalkan <script> alert("hai") </script> . Musibah kembali terjadi jika ternyata website kita menampilkan popup dengan tulisan “hai”, karena artinya hacker dapat memasukkan skrip javascript lain yang dapat berakibat fatal pada web kita seperti mencuri cookies atau melakukan otomatisasi pengiriman paket data.

Adapun file injection biasanya dilakukan pada website yang menggunakan PHP sebagai bahasa pemrogramannya.  Contohnya ketika kita membuat form upload tanpa filter jenis file, maka hacker akan mencoba mengupload file skrip kode PHP. Jika ternyata file tersebut dieksekusi oleh website kita, hacker akan kembali lagi mengupload skrpi kode PHP yang lebih berbahaya.

4. Form Spamming

Lagi-lagi form input atau parameter URL bisa menjadi sumber masalah, bahkan ketika kita sudah melakukan filtering pada inputan untuk mencegah injection. Potensi masalah lain yang terjadi dari form adalah spamming. Seperti yang dijelaskan sebelumnya, dalam melakukan aksinya hacker biasanya tidak melakukan secara manual, tapi menggunakan program dan skrip pemrograman. Ketika menemukan form yang tidak memiliki filter spam dan juga tidak memiliki captcha, hacker akan menggunakan program untuk mengirim komentar secara masal dan otomatis pada website kita. Tujuannya tentu saja spamming, atau lebih parah lagi DoS (Denial of Service) agar website kita overload dan tidak mampu bekerja lagi.

Perlu diingat bahwa form spamming ini tidak hanya dapat digunakan pada form komentar saja, tapi juga dapat digunakan pada form login. Hacker akan melakukan bruteforce attack pada halaman login yang tidak aman dengan mengirimkan kombinasi username & password secara otomatis dan berulang-ulang untuk mendapat hak akses. Sekali lagi kabar buruknya, membuat skrip untuk melakukan hal tersebut sangatlah mudah, tidak sampai 20 baris kalau kita menggunakan bahasa pemrograman seperti PHP atau Python.

5. Firewall, SSL, Honeypot tidak lagi berguna

Semua serangan yang saya jelaskan di atas adalah serangan melalui sisi aplikasi, serangan yang dilakukan melalui port HTTP, serangan yang tidak bisa ditangkal bahkan jika kita menginstall Firewall, SSL, Honeypot, dan berbagai macam software keamanan di sisi server. Bukan berarti semua tools tersebut sekarang sudah tidak berguna dan tidak diperlukan, tapi perangkat keamanan tersebut tidak dapat menangkal serangan yang diakibatkan dari aplikasi yang memiliki celah keamanan. Berbagai macam perangkat keamanan tetap wajib dipasang di sisi server untuk menangkal berbagai jenis serangan lain, hanya ketika aplikasi web memiliki celah yang cukup menyolok, kita tidak bisa mengandalkan semua perangkat keamanan sisi server tersebut.

Keamanan aplikasi web adalah murni tanggung jawab kita sebagai web developer. Meskipun kita memiliki server admin tingkat dewa yang bisa menaklukkan segala macam serangan, jika aplikasi yang kita buat memiliki celah yang cukup besar, kita tidak bisa menyalahkan server admin jika suatu saat web kita di-deface, di-lumpuhkan, atau bahkan mungkin diambil alih oleh hacker karena celah di sisi aplikasi. Dalam beberapa kasus bahkan kita tidak bisa menyalahkan hacker, karena seperti yang dijelaskan sebelumnya, alasan utama hacker menyerang web kita adalah karena ada celah keamanan.

Kabar baiknya untuk menutup celah keamanan yang sudah dijelaskan di atas bukan hal yang susah juga. Memang seringkali sedikit membosankan dan memerlukan kedisiplinan, tapi bukan hal yang susah untuk dilakukan. Terlebih lagi jika kita bisa mendapatkan bantuan dari pentester (penetration tester), menutup berbagai macam celah keamanan aplikasi web sangat mungkin dilakukan dengan hanya berbekal kemampuan dasar programming dan sedikit googling.

Sebagai penutup, sekali lagi saya tegaskan saya bukanlah ahli keamanan jaringan dan komputer. Saya hanya mencoba membagikan apa yang saya ingat dari buku Hacking yang saya baca ketika berada di bangku Madrasah Aliyah (MA). Meskipun saya yakin tulisan ini tidak komprehensif dan banyak poin penting yang terlewat, saya tetap berharap pengetahuan dasar ini dapat meningkatkan awareness para web developer untuk membuat aplikasi web yang lebih aman. Bagaimanapun juga keamanan bukan semata tentang pengetahuan, tapi lebih pada tentang kedisiplinan.

Categories
Pemrograman Perkuliahan Software Development

Manajemen Pengujian Perangkat Lunak

Berikut adalah slide yang saya presentasikan pada Kuliah Umum di Universitas Muria Kudus dengan topik Manajemen Pengujian Perangkat Lunak.

Beberapa poin penting pada materi:

  • Pengujian merupakan salah satu aspek terpenting dalam proses pengembangan perangkat lunak untuk memastikan pengguna dapat dan mau menggunakan aplikasi kita dengan baik.
  • Setiap membuat program, kita sudah melakukan pengujian sederhana dengan exploratory testing, namun hal tersebut masih belum cukup.
  • Sebelum bisa melakukan pengujian kita harus merencanakan test case terlebih dahulu untuk memastikan kita tidak melewatkan pengujian hal penting.
  • Test case dapat dirancang dengan menelurusi cara proses bisnis, mengumpulkan user story, menetapkan acceptance criteria, dan terakhir baru merancang test case.
  • Test case bersifat organik dan dapat berubah ketika diperlukan.
  • Setelah membuat test case, kita bisa melakukan pengujian secara manual. Namun sebaiknya kita melakukannya secara otomatis dengan bantuan perangkat pengujian.
  • Otamatisasi pengujian bertujuan agar konsistensi kualitas perangkat lunak selalu terjaga pada seluruh tahapan pengembangan.
  • Pengujian fungsional otomatis dapat menggunakan bantuan Selenium yang dapat membuka browser dan melakukan aksi-aksi secara otomatis.
  • Karena pengujian fungsional terlalu berat dan bersifat superfisial, kita perlu melakukan pengujian unit yang dapat dijalankan setiap waktu.
  • Contoh pengujian otomatis diberikan pada source code dengan menggunakan framework python django. Namun konsep pengujian otomatis dapat diterapkan di semua bahasa pemrograman mainstream (PHP, Javascript, Node.Js, Java-termasuk Android-, Ruby, C#, dan lain sebagainya)
  • Selain pengujian tersebut ada bentuk pengujian lain yang sebaiknya melibatkan pihak di luar pengembang utama, beberapa contohnya adalah: Pengujian performa, pengujian keamanan, dan pengujian Beta / User Acceptance Testing.
  • Pengujian performa bertujuan untuk memastikan aplikasi yang dibuat dapat berjalan baik sesuai dengan target jumlah pengguna.
  • Pengujian keamanan bertujuan untuk memastikan aplikasi tidak mudah ditembus oleh peretas.
  • Pengujian penerimaan pengguna oleh Beta tester bertujuan memastikan aplikasi yang kita buat benar-benar sesuai dengan yang diinginkan pengguna akhir.
Categories
Perkuliahan

Protected: Tugas Akhir Web Dasar

This content is password protected. To view it please enter your password below:

Categories
Informasi Ringan Tips Uncategorized

Pengembangan Web dengan Visual Builder

Sewaktu saya kuliah dulu, baru bisa bikin web dinamis dengan tampilan seadanya aja sudah senengnya minta ampun. Menjelang lulus, dengan sedikit polesan photoshop & CSS sederhana sudah mulai bisa jualan jasa pembuatan website (dinamis dan statis). Kalau sekarang, bayangan saya sih sepertinya tidak semudah itu, karena web sekarang dituntut selain harus dinamis, juga harus SEO friendly, responsive, mobile first, integrasi dengan media sosial, dan lain sebagainya.

Kabar baiknya, metode pengembangan web saat ini juga tidak harus serumit ketika saya kuliah dulu. Oke kita tetap bisa dan boleh saja mengembangkan web from scratch dengan menggunakan PHP, Python, Node.js dan semacamnya. Namun di sisi lain, ada alternatif yang jauh lebih mudah yaitu dengan menggunakan CMS + Visual Builder. Iya Visual Builder, artinya kita men-desain web secara visual dengan drag & drop layaknya menggunakan software grafis seperti Photoshop.

Secara garis besar ada 2 jenis visual builder yang dapat digunakan, yaitu visual builder yang berupa hosted solution dan yang berupa plugin/add-on untuk CMS.

Hosted Solution Website Builder

Saat ini ada beberapa vendor hosting yang menyediakan solusi pembuatan web berbasis visual builder, beberapa yang cukup terkenal antara lain adalah wix, weebly, dan envato sites. Sebenarnya model hosted solution ini tidak jauh berbeda dengan blogging engine provider seperti blogspot atau wordpress.com, di mana kita bisa mendaftar sebagai anggota kemudian memposting konten yang kita inginkan pada web tersebut.

Perbedaan mencolok antara website builder seperti wix dengan blogging provider seperti blogspot adalah, website builder menyediakan visual builder untuk memudahkan pengguna mendesain web mereka sendiri berbasis drag & drop. Sehingga langkah pembuatan web dengan menggunakan aplikasi tersebut adalah pertama sebagai pengguna kita dapat memilih template awal untuk garis besar desain, kemudian kita dapat menambahkan, menghapus, dan mengubah komponen yang ada sesuai dengan selera kita, dan yang terpenting semua itu dilakukan tanpa koding.

wix-editor

Kebanyakan website builder tersebut memang menyediakan skema gratisan untuk uji coba, namun tentu saja juga menyediakan skema pembayaran berkala untuk yang serius membuat web untuk keperluan bisnis. Skema pembayaran berkala tersebut mungkin tidak cocok untuk kita, sehingga kita memerlukan alternatif solusi lain.

Plugin/Add-on CMS

Hosted solution mungkin bukan skema yang tepat untuk beberapa pengguna yang menginginkan kontrol lebih. Untungnya, bagi penggunan CMS yang terkenal seperti Drupal, WordPress dan Joomla, sudah banyak yang membuat plugin untuk visual builder ini. Beberapa contoh plugin visual builder yang cukup terkenal adalah Divi dan Avada untuk WordPress, sedangkan untuk CMS lain saya nggak terlalu paham karena sudah lama tidak mengguanakan CMS selain WordPress. 🙂

Karena saya adalah developer web, saya pribadi lebih cocok menggunakan solusi ini, alasannya tentu saja kontrol yang lebih lengkap, karena source code-nya kita yang pegang sendiri. Kontrol yang dimaksudkan di sini adalah pilihan untuk menggunakan servis hosting di mana saja sesuai dengan budget, dan penambahan fitur yang diinginkan.

Kalau biasanya untuk membangun web kita harus bikin koding untuk tampilan frontend (HTML, CSS, JS) dan juga koding untuk bikin backend-nya (PHP, Python, dll), dengan menggunakan CMS kita cukup melakukan instalasi sederhana dan 5 menit kemudian web sudah jadi dengan fitur standard seperti login admin, manajemen posting, kategori, komentar, dan konfigurasi pengguna. Kemudian untuk desain, kita tinggal menambahkan theme / plugin visual builder tersebut, dan kita dapat men-desain web secara mudah. Dengan menggunakan cara ini, jika dibandingkan dengan pengembangan web konvensional (koding dari awal), kita bisa menghemat waktu sekitar 2 minggu hingga 1 bulan.

Satu lagi kelebihan model Plugin dibandingkan dengan hosted solution  yang menurut saya cukup berpengaruh adalah, banyak yang menyediakan skema pembelian plugin bersifat one time payment bukan monthly maupun early seperti pada hosted solution.

Kelebihan Visual Builder

Saya kira kalau kita membicarakan kelebihan Visual Builder, pastinya ada 3 keuntungan besar yang kita dapatkan yaitu:

  1. Menghemat waktu dan tenaga: Dengan Visual Builder, pengembang bisa lebih memfokuskan pada aspek kreativitas desain dan pengalaman pengguna (User Experience) dibandingkan memikirkan aspek teknis bagaimana koding untuk membuat tampilan yang diinginkan. Selain itu, pengalaman saya sendiri dengan menggunakan visual builder, kolaborasi dengan orang desain grafis pun jadi lebih mudah, karena gambaran porsi apa yang harus dikejakan lebih jelas dan hasilnya bisa segera diimplementasikan.
  2. Mendesain tampilan secara Visual: Desain UI adalah pekerjaan visual, namun ketika kita mengembangkan tampilan untuk aplikasi web dengan cara koding visualisasi desain jadi bersifat abstrak. Dengan menggunakan visual builder, hal ini tidak lagi terjadi, apa yang kita lihat adalah apa yang kita maksudkan.
  3. Penambahan fitur baru: Ini terutama jika kita menggunakan visual builder pada CMS yang cukup terkenal seperti WordPress. CMS opensource seperti wordpress, pastinya sudah didukung banyak sekali plugin yang dapat dipasang dengan mudah. Misalkan jika kita (atau klien) ingin menambahkan fitur baru seperti E-Commerce, Forum diskusi, atau Integrasi sosial media, semua fitur tersebut dapat ditambahkan semudah klik Add Plugins. Sedangkan jika mengembangkan website sendiri secara konvensional, entah perlu tambahan berapa bulan lagi untuk menambahkan semua fitur tersebut.

Kekurangan Visual Builder

Selain kelebihan yang ada tentu saja ada beberapa kekurangan yang patut dipertimbangkan antara lain:

  1. Berbayar: oke banyak CMS yang open source, tapi untuk plugin visual buildernya sejauh yang saya tahu belum ada yang gratis. Syukurlah, menurut saya harganya masih terjangkau, terutama jika dibandingkan dengan kemudahan yang ditawarkan.
  2. Performa menurun: konsekuensi selanjutnya jika kita menggunakan Visual Builder adalah penurunan performa. Kekurangan ini terjadi jika kita menggunakan solusi Plugin dan kemungkinan tidak akan terjadi jika kita menggunakan hosted solution. Selain itu, sejauh pengalaman saya penurunan performa yang terjadi masih tidak terlalu signifikan. Meski demikian, jika menggunakan plan hosting yang sangat-sangat minimalis, sebaiknya jangan menggunakan visual builder karena bisa jadi web anda nggak selesai-selesai loadingnya.
  3. Vendor oriented: ketika kita belajar menggunakan salah satu visual builder (let’s say Divi theme), teknik desain yang kita pelajari hanya dapat diimpelementasikan pada produk tersebut. Suatu saat ketika kita ingin menggunakan produk visual builder lain (let’s say Avada theme), maka kita harus belajar lagi cara menggunakannya.

Bagaimana dengan Web Programmer?

Tulisan ini bukan untuk menyurutkan semangat untuk belajar pemrograman web. Bagaimanapun juga masih banyak jenis aplikasi web yang tidak bisa hanya dibangun dengan hanya menggunakan CMS apalagi Visual Builder. Tujuan dari tulisan ini untuk mengingatkan web programmer untuk menambahkan satu set toolbox baru dalam genggamannya. Persaingan di bidang pengembangan web semakin ketat, sehingga kita harus memiliki berbagai macam teknik yang siap digunakan untuk memenuhi berbagai macam permintaan klien (salah satunya membuat web dengan cepat namun tetap berkualitas).

wordpress-development

Profesi web programmer tetap akan dibutuhkan hingga entah beberapa dekade ke depan untuk mengembangkan aplikasi berbasis web terutama untuk kebutuhan yang unik. Sebagai contoh, pengembangan sosial media yang unik seperti Pinterest atau Instagram, tidak akan mungkin dilakukan hanya dengan menggunakan CMS. Begitu juga aplikasi khusus suatu institusi tertentu seperti halnya SiAdin, juga tidak mungkin dibuat dengan visual builder. Namun untuk pengembangan website dengan kebutuhan umum seperti web profil, blog, e-commerce, dan semacamnya, perangkat semacam CMS dan visual builder ini sangat patut untuk dipertimbangkan (dan dipelajari).

Terakhir, bagaimanapun juga salah satu  “kutukan” untuk kita yang berkecimpung di dunia IT adalah, tidak akan pernah selesai belajar teknologi. Perangkat dan bahasa pemrograman terus berkembang dan kita harus terus mengikuti perkembangan tersebut. Namun sisi baiknya, perkembangan tersebut pada dasarnya adalah untuk semakin memudahkan pekerjaan dan pola hidup kita. Jadi jangan pernah takut dengan teknologi baru, dan selalu bersiap untuk mempelajarinya demi masa depan yang lebih baik.

Categories
Informasi Ringan Pemrograman Tips

Belajar Bertanya

Artikel ini sedikit banyak berhubungan dengan artikel saya sebelumnya yang berjudul Diskusi Beradab ala StackOverflow. Pada artikel tersebut saya menjelaskan aturan diskusi yang cukup ketat di StackOverflow, bahkan untuk sekedar bertanya seringkali kita harus memutar otak dulu untuk mendapatkan respon yang positif. Salah bertanya atau memberikan menjawab bisa berdampak pada downvote dan bahkan bann.

Salah satu kesalahan paling sering dilakukan pemula yang sedang belajar pemrograman adalah tidak bertanya secara benar, akibatnya susah untuk mendapatkan jawaban yang sesuai. Saya tidak terlalu paham di bidang lain, tapi dalam bidang pemrograman ketika kita mencoba bertanya dengan cara yang benar, akan jauh lebih mudah mendapatkan jawaban bahkan terkadang tanpa harus dijawab oleh orang lain.

Masalahnya, seringkali ketika programmer pemula bertanya seputar pemrograman, mereka memberikan pertanyaan yang salah dengan cara yang salah pula. Misalkan ketika sedang praktikum di lab, mahasiswa yang mendapatkan error ketika tahap kompilasi program, lalu dengan tergesa bertanya pada asisten atau dosen “Mas/pak punya saya error”. Uniknya ketika ditanya “Errornya apa?” banyak yang cuman melongo tidak tahu. Kalau saja pertanyaan model tersebut ditanyakan ke forum pemrograman, sudah hampir bisa dipastikan* akan di-buly berjamaah. Bertanya kesalahan program tanpa memberitahukan apa pesan errornya, sama dengan menyuruh orang lain untuk membaca dan merunut kodingan kita yang pastinya akan menghabiskan lebih banyak waktu.

Hikmah dari belajar bertanya dengan cara yang seusai sebenarnya adalah untuk men-trigger otak kita untuk mengeksplorasi lebih dalam permasalahan kita. Faktanya seringkali setelah melakukan eksplorasi lebih mendalam terhadap permasalahan, kita seringkali mendapatkan ilham alternatif solusi yang belum pernah terfikirkan sebelumnya. Secara pribadi saya sendiri beberapa kali akhirnya gagal bertanya di forum / stackoverflow karena ketika proses menyusun kalimat pertanyaan yang baik ternyata saya sudah mendapatkan jawabannya.

Keuntungan yang lain, ketika kita bertanya dengan cara yang baik dan benar adalah nantinya akan memudahkan para mastah-mastah lain untuk memahami permasalahan kita yang sebenarnya, sehingga mereka pun akan lebih mudah memberikan solusi. Lebih jauh lagi, kita akan lebih mudah mengingat permasalahan tersebut, sehingga ketika kita mendapatkan permasalahan yang sama, sedikit banyak kita mampu me-recall solusinya juga.

Terakhir, perlu diingat bahwa programmer bukanlah orang yang pelit, mereka hanya memiliki perasaan sentimentil yang cukup tinggi. Kebanyakan programmer akan merasa enggan meluangkan waktu untuk menjawab pertanyaan dari orang yang tidak mau meluangkan waktu untuk memahami pertanyaan mereka sendiri.

Header image created by Creativeart – Freepik.com

* kalau anda adalah cewek cantik & jomblo kemungkinan besar anda tidak akan di-buly di forum pemrograman.

Categories
Perkuliahan

Kuis Pemrograman Berbasis Web

Kuis Mata Kuliah Pemrograman Berbasis Web dosen Fahri Firdausillah.

NB: Kuis ini tidak wajib dikerjakan, bagi yang mengerjakan akan mendapatkan bonus nilai.

Buatlah sebuah aplikasi web Single Page Application (SPA) untuk mengakses (read & write) Fake REST API Typicode. Pilih salah satu resource dari post, comment, atau todo, kemudian buat aplikasi yang memiliki fitur sederhana sebagai berikut:

  • Menampilkan data dari resource yang dipilih beserta data user yang berelasi dengan resource tersebut.
  • Menambahkan data pada resource yang dipilih dengan  opsi user berupa dropdown
  • Mengedit data pada resource yang dipilih
  • Menghapus data dari resource yang dipilih
  • Menampilkan data milik user tertentu dari resource yang dipilih

Aplikasi yang dibuat menggunakan framework javasript seperti Angular, React, Vue, dan lain sebagainya. Syarat yang terpenting adalah SPA, yang ditandai dengan request asingkron ke server sehingga tidak memerlukan load / reload page. Selain itu, aplikasi yang dibuat juga harus menggunakan CSS framework seperti Bootstrap, Foundation, dan lain sebagainya.

Setelah aplikasi dibuat dipresentasikan face-to-face sebelum minggu terakhir perkuliahan.

Bonus nilai diberikan jika aplikasi berjalan, dipresentasikan dengan baik, dan dapat menjawab semua pertanyaan yang diberikan dengan tepat.

Categories
Informasi Ringan Inpirasi Software Development

Protected: Tanya Jawab Seputar PSI

This content is password protected. To view it please enter your password below: