- Tingkat penyelesaian UI tidak meningkat tepat setelah implementasi, melainkan lewat proses berulang untuk terus mengkliknya secara nyata; tulisan ini mengibaratkannya dengan pengampelasan dalam pekerjaan kayu
- Transisi halaman dan navigasi harus diperiksa lewat berbagai jalur masuk, seperti klik, tombol kembali browser, “Back” lewat klik kanan, tombol kembali di dalam aplikasi, dan pintasan keyboard
- Saat
labeldaninput type="radio"disejajarkan dengan flexbox lalu diberigap, area di antara tombol radio dan label ternyata menjadi dead zone yang tidak bisa diklik - Solusinya adalah menghapus
gapdan memberi padding padalabel; jarak visual tetap terjaga sambil memperluas area yang bisa diklik - Jika cacat interaksi kecil menumpuk, pengalaman pengguna akan terganggu; karena itu UI perlu digunakan berulang-ulang dan dipoles sampai tidak ada lagi “serpihan” yang terasa
Menemukan bagian kasar UI lewat klik berulang
- Pekerjaan UI lebih mirip proses berulang: setelah membuat sesuatu, banyak mengkliknya, memperbaikinya, lalu mengklik lagi
- Untuk transisi halaman, memeriksa satu alur saja tidak cukup; perlu kembali dengan berbagai cara dan meninjaunya
- Setelah klik, gunakan tombol kembali browser
- Setelah klik, gunakan “Back” dari menu konteks klik kanan
- Gunakan navigasi kembali di dalam aplikasi
- Gunakan pintasan keyboard untuk kembali
- Proses ini mirip QA yang “mengklik untuk mencoba merusaknya”, tetapi lebih dekat dengan sensasi dalam pekerjaan kayu saat mengampelas sambil mencari bagian kasar dan serpihan
- UI perangkat lunak bisa memiliki terlalu banyak state dan variabel, sehingga kita memolesnya lewat penggunaan berulang sampai tidak ada lagi “serpihan” yang terasa
Dead zone klik yang dibuat oleh gap flexbox
- Dalam daftar opsi radio,
<label>dan<input type="radio">yang terhubung ditempatkan pada baris yang sama - CSS-nya berupa struktur sederhana yang menerapkan
display: flex,flex-direction: row,align-items: center, dangap: .5rempada container - Saat mengklik berulang-ulang, ditemukan dead spot: jika ruang di antara tombol radio dan label ditekan, kontrol tidak ikut berubah
- Penyebabnya adalah
gappada flexboxgapmemang memudahkan pembuatan jarak visual- tetapi tidak termasuk dalam area klik label atau elemen input, sehingga menjadi ruang kosong dalam interaksi
- Solusinya adalah menghapus
gapdan memberi padding padalabel- Jarak tetap terjaga
- Area label yang bisa diklik menjadi lebih luas, sehingga dead zone menghilang
- Satu cacat kecil mungkin terlihat sepele, tetapi jika “serpihan kecil” seperti ini bertambah banyak, pengalaman UI bisa menjadi menyakitkan
1 komentar
Pendapat Hacker News
Jika pengembang juga merupakan pengguna yang sering memakai langsung produk yang sedang dibuat, mereka punya keunggulan besar dalam menemukan masalah-masalah kecil seperti ini
Karena sebelum pengguna tersandung, pengembang bisa menemukan sendiri gangguan kecil itu, dan juga berada tepat di posisi untuk segera memperbaikinya
Jadi tampaknya tim kecil dengan rasa kepemilikan yang kuat memang efektif. Jika ada rasa memiliki terhadap produk, ketidaknyamanan kecil yang dialami pengguna pun terasa seperti urusan sendiri, dan membuat UX sehalus mungkin menjadi soal harga diri
Kecuali untuk kasus yang sulit dipakai secara internal seperti produk enterprise, meski rasa kepemilikan langsungnya lebih lemah, tetap muncul kepentingan terhadap keberhasilan produk
Saya penasaran UI mana yang paling dipoles
Kalau sekelas FAANG, uangnya banyak, jadi UI/UX-nya mungkin cukup bagus, tetapi orang yang pernah memakai Amazon.com atau AWS, GCP, Azure akan merasa berbeda
Secara pribadi, saya menganggap mcmaster.com sebagai UI/UX yang paling dipoles. Hal yang dibutuhkan bisa ditemukan dalam hitungan menit
Sebaliknya, di situs toko besar seperti Home Depot atau Lowe’s, mencari sekrup atau kayu dengan ukuran yang tepat bisa memakan 10–15 menit, dan di mobile lebih parah lagi
Sangat sederhana dan praktis sampai sulit dipercaya, tetapi tetap cukup powerful. Komponen bisa dipersempit bertahap atau dicari, perbandingan harga dilakukan otomatis, dan kategori harga/kualitas juga dikelompokkan dengan berguna
Setelah menemukan nomor komponen, kita bisa melihat kompatibilitas tahun/model pabrikan, deskripsi singkat, foto, dan apakah dikirim dari gudang yang sama dengan komponen lain di keranjang. Semua ini berjalan tanpa friksi di satu halaman, sangat cepat di platform apa pun
Responsnya sangat cepat dan selama menggunakannya saya tidak pernah melihat bug. Itu menaikkan standar saya tentang sejauh mana web app bisa dibuat
Mereka bahkan pernah punya periode khusus untuk hanya memperbaiki masalah usability
https://linear.app/changelog/2022-12-01-polishing-season-202...
https://web.archive.org/web/20231003205004/https://linear.ap...
Terutama foto profil sementara yang paling menyebalkan. Sejak hampir setahun lalu tidak berfungsi dengan benar, dan tidak kembali ke foto semula
Sepertinya tidak ada siapa pun di sana yang memolesnya
https://littlebigdetails.com persis tempat seperti itu
Solusi dasar untuk masalah spesifik ini adalah menaruh elemen input di dalam label
Saya sempat penasaran alasannya, dan mungkin karena penerapan tema menjadi lebih sederhana saat menyesuaikan posisi/padding label atau elemen input
[1] https://getbootstrap.com/docs/5.3/forms/checks-radios/
for/idtetap diperlukan: https://www.tpgi.com/should-form-labels-be-wrapped-or-separa...Radio atau checkbox seharusnya tidak hanya bisa ditoggle dengan menekan kotak dan padding, tetapi juga dengan menekan seluruh label teks
Flexbox terasa agak berlebihan. Meski memakai sintaks yang tidak bersarang, elemen-elemen itu akan tersusun inline, dan menurut saya cukup tambahkan padding dengan cara yang sama
Untuk memitigasinya,
Fooperlu dibungkus dengan elemen terpisahHal seperti ini sudah terlalu menghilang dari Agile
Engineer seharusnya punya waktu untuk memoles produk, tetapi kenyataannya tidak ada. Kalau QA tidak membuat tiket untuk masalah jarak/spasi, itu tidak akan pernah diperbaiki
Pelanggan mungkin menyadari hal-hal seperti ini, tetapi mereka mau melaporkannya saja sudah keajaiban, laporan itu akhirnya menjadi tiket juga keajaiban, dan ada orang yang memberi prioritas lalu memperbaikinya juga keajaiban lagi
Pada praktiknya, kebanyakan issue board perusahaan terlalu tidak transparan dari sudut pandang pelanggan, jadi kalau menemukan masalah kecil atau bug, menyebalkan karena harus bolak-balik 50 jam untuk membuktikan bahwa itu bug dan memasukkan tiket ke pelacak
Apakah maksudnya model waterfall secara eksplisit memberi waktu untuk menguji dan memoles UI?
Ini biasanya proses yang harus diprioritaskan oleh product manager dan ditangani bersama engineer atau desainer UX yang kompeten. Kalau mau, prioritas itu bisa dimasukkan ke metodologi pengembangan apa pun, jadi Agile tidak relevan di sini
Saya sudah melaporkannya beberapa kali selama 3 tahun terakhir, karena mengedit teks saat menulis menjadi sangat sulit dan menyebalkan
Sebagai web developer, saya penasaran bagaimana hal seperti ini bisa rusak sejak awal. Entah tingkat ketidakmampuan seperti apa yang dibutuhkan untuk merusak sesuatu yang secara default sudah bekerja. Perbaikannya seharusnya tidak mungkin memakan waktu lebih dari 30 menit dan akan membuat pengalaman pengguna semua orang 1000 kali lebih baik, tetapi 3 tahun setelah dilaporkan masih tetap sama
Di Teams juga saya melaporkan bug bahwa tombol HOME/END tidak bisa dipakai di kolom input nomor telepon melalui Microsoft Premiere Support, dan jawabannya adalah “bekerja sesuai desain”
Tidak heran pelanggan tidak lagi melaporkan bug seperti ini. Karena karyawan/developer maupun perusahaannya toh tidak peduli
Saya lead developer sebuah produk, dan ada banyak masalah kecil di sana-sini. Punya tanggung jawab atas sesuatu tetapi tidak punya wewenang untuk memperbaikinya jelas tidak terasa menyenangkan
Dari sudut pandang bisnis, logikanya adalah kalau tidak berdampak pada pendapatan atau brand, kenapa harus menghabiskan waktu dan uang untuk memperbaikinya. Dalam jangka panjang memang akan memengaruhi brand, tetapi kebanyakan orang akan pindah peran atau perusahaan dalam 5 tahun, jadi mereka tidak peduli
Kalau sampai mendapat balasan saja itu sudah termasuk kasus yang lumayan
Jelas ada proses yang tidak memenuhi kebutuhan pelanggan, jadi perbaiki saja bersama tim
Kalau ada ritual Scrum, hal itu bisa diangkat saat retrospektif, tetapi sebenarnya bisa kapan saja. Retrospektif hanyalah forum untuk secara sengaja meninjau beberapa minggu terakhir, dan hal yang disadari di tengah jalan seharusnya dicoba diselesaikan di tengah jalan juga
Orang yang punya kepekaan untuk melihat dan memperbaiki masalah UX kecil benar-benar penting
Dalam desain UX, hal seperti ini sering dianalogikan sebagai luka sayatan kertas pada pengguna. Tidak fatal, tetapi mengikis kepuasan pengguna
Menambahkan untuk penulis, radio button itu tidak mengikuti konvensi bahwa status terpilih memakai titik, bukan tanda centang. Pengguna bisa salah paham pada pandangan pertama bahwa beberapa opsi bisa dipilih sekaligus, atau tidak perlu memilih apa pun
Kemungkinan besar itu efek samping dari fitur yang menutup dialog saat area luar diklik
Kalau ada “Papercuts” di sisi negatif, di sisi positif ada Juice, yang juga baru-baru ini dibahas di HN
Tulisan ini menunjukkan dengan baik kenapa saya tidak suka pemrograman UI
Hal-hal yang tidak bisa diprediksi dan bisa meleset secara sepele melebihi batas kesabaran saya. Saya cukup menikmati memikirkan cara sesuatu bisa gagal dan menulis pengujian untuknya, tetapi mengklik secara asal untuk melihat apakah sesuatu rusak terasa mengalihkan perhatian dan menyebalkan
Saya penasaran apakah implementasi UI memang secara inheren serumit ini, atau kita belum menemukan model pemrograman yang tepat. Kadang saya bertanya-tanya apakah berharap sesuatu terlihat dan bekerja sesuai niat sejak awal itu unreasonable?
Memoles UI hanya perlu dilakukan saat komponen pertama kali dibuat. Sesekali komponen mungkin perlu digabungkan dengan cara lain, atau perlu implementasi sekali pakai
Jujur saja, kalau tahu apa yang dilakukan, itu tidak memakan waktu selama itu. Design engineer yang baik adalah spesialis untuk peran seperti ini
Terlalu banyak kebebasan, dan elemen dasar seperti form seharusnya bekerja dengan baik hanya dengan nilai default
Cara mengekspresikan UI dengan baik melalui kode sudah ada. Masalahnya adalah permainan zero-sum dari sisi bisnis. UI lintas platform biayanya terlalu mahal kalau tidak dibuat dengan stack UI paling tidak enak dilihat, yaitu HTML/CSS/JS
Tetapi platform web, meski lumayan untuk dokumen, tidak memiliki tingkat abstraksi yang tepat untuk aplikasi. Karena itu UI web ditemukan ulang setiap tahun dengan abstraksi baru yang bocor
Mengejar ketertinggalan saja sudah terlalu banyak pekerjaan
Hal serupa juga terjadi di area lain. Kalau tidak ada cara mudah untuk mengirim request atau memasukkan parameter ke query, orang-orang, meski berusaha berhati-hati, akan terdorong secara alami untuk menciptakan berbagai cara setengah matang
Platform web memang mutakhir di sisi grafis, tetapi benar-benar buruk sebagai UI. Namun tidak ada yang mau mengakui dan mengubahnya. Orang hanya percaya pada bagian depannya, sementara legacy dan kompleksitas browser menghalangi perubahan. Kalau dibuat sebagai library, karena bukan “standar”, tidak ada yang peduli
Di sisi lain, ada UI yang memakai kotak persegi untuk radio button
Ada tombol yang disorot tetapi tidak aktif saat menekan tombol Enter
Ada juga tiga menu yang tersembunyi di balik simbol yang berbeda-beda (elipsis, hamburger, kebab)
Variasi kualitasnya besar. Orang-orang yang memoles UI benar-benar patut diapresiasi
Bahkan Apple pun melakukan ini :(
Saya tidak paham kenapa cara memasukkan elemen input ke dalam label tidak populer
Dengan begitu masalahnya hilang sepenuhnya, dan tidak perlu membuat
idunik untuk dipakai diforHanya saja masih diketahui ada beberapa teknologi bantu yang belum bisa menafsirkan pola standar valid yang baru, jadi menjaga standar Zaman Perunggu menjadi praktik terbaik [1]
Framework lain sepertinya juga mirip. Kalau kedua field input itu dibungkus dengan elemen
label, HTML-nya tidak lagi validUntuk radio button ini bukan masalah, tetapi sebagian orang tampaknya pernah mengalaminya lalu melakukan itu “demi memastikan”. Mirip seperti menaruh titik koma di akhir baris JavaScript. Hampir tidak pernah diperlukan, tetapi karena tidak tahu persis kapan diperlukan, akhirnya dipasang di mana-mana
Untuk kasus penggunaan umum checkbox/radio button, sintaksnya juga jauh lebih rapi
Bungkus elemen input dengan label, dan kalau ingin memberi gaya pada teks, masukkan teks ke dalam
span. Anda bisa membuatlabelmenjadidisplay:flexdan mengatur posisi teks dengan cara itu jugaDi bug bash kami memakai cara ini, dan hasil tiketnya jauh lebih banyak daripada orang yang membuat kombinasi test case sebagai matriks produk Kartesius multidimensi
Mengetahui test case seperti itu sebagai titik awal memang bagus, tetapi untuk menemukan masalah kecil, pengujian acak dengan cepat melampaui pengujian yang terencana
Pengujian terencana biasanya berhenti di happy path atau error yang sudah diperkirakan. Cara memoles seperti ini menemukan bug di sudut-sudut jauh lebih cepat
Selalu saja menemukan masalah atau perbaikan kecil. Hal-hal yang kemungkinan besar tidak akan banyak muncul dari pengujian terencana
Saya sudah hampir 4 tahun memoles situs web pribadi saya (https://dustinbrett.com), dan rasanya ini bisa terus berlanjut tanpa akhir
Untungnya saya menikmati mengerjakannya
Saya harap semuanya :-)
Saat melihat “OS desktop di atas halaman web”, kebanyakan terasa setengah jadi dan sejujurnya sudah terlalu umum, tetapi yang ini sebaliknya: sangat solid dan dipoles dengan baik
Benar-benar dibuat dengan baik dan menginspirasi. Memikirkan bagaimana semua itu diimplementasikan juga cukup menyenangkan
Ternyata itu keinginan untuk memakai OS berbasis jendela di ponsel
Kalau harus mencari satu yang kurang, itu adalah tidak bisa memakai mouse4/mouse5 di explorer. “Pemolesan” memang bisa terus berlanjut selamanya