14.1 Kode Itu Mudah, Software Itu Sulit
Bayangkan Anda punya ide untuk membuat aplikasi catatan harian. Anda duduk di depan laptop, membuka AI assistant, dan mengetik: “Buatkan saya aplikasi catatan harian dengan fitur tambah, edit, hapus, dan simpan ke database.” Dalam hitungan detik, AI mengeluarkan puluhan baris kode. Anda salin, jalankan, dan aplikasi itu bekerja. Catatan bisa ditambahkan, diedit, dan dihapus. Semua berfungsi.
Berikut contoh kode JavaScript sederhana yang mungkin dihasilkan AI untuk aplikasi catatan harian:
const express = require('express');
const app = express();
app.use(express.json());
let notes = [];
let id = 1;
app.post('/notes', (req, res) => {
const note = { id: id++, title: req.body.title, content: req.body.content };
notes.push(note);
res.status(201).json(note);
});
app.get('/notes', (req, res) => {
res.json(notes);
});
app.delete('/notes/:id', (req, res) => {
notes = notes.filter(n => n.id !== parseInt(req.params.id));
res.sendStatus(204);
});
app.listen(3000);
Kode di atas berfungsi untuk demo, tetapi tidak memiliki validasi input, error handling, autentikasi, batas ukuran data, atau penyimpanan persisten — semua aspek yang diperlukan agar software andal dipakai banyak orang.
Sekarang bayangkan Anda harus memberikan aplikasi itu ke seribu orang. Mereka memakainya setiap hari. Setiap orang punya kebiasaan berbeda. Ada yang menulis catatan panjang di malam hari, ada yang menulis tiga kata di pagi hari sambil terburu-buru. Ada yang sengaja mengetik karakter aneh untuk menguji apakah aplikasi akan error. Ada yang membuka aplikasi dari ponsel dengan layar kecil, ada yang dari komputer dengan resolusi tinggi. Ada yang menyimpan seribu catatan dalam seminggu, ada yang lupa password dan mencoba login berkali-kali.
Tiba-tiba, kode yang tadi terlihat sempurna mulai menunjukkan celah. Database lambat karena ukuran catatan membengkak. Tampilan berantakan di layar kecil. Fitur hapus menghilangkan catatan tanpa konfirmasi, dan beberapa orang kehilangan data penting. Anda mulai sadar: menulis kode itu mudah, tetapi membangun software yang benar-benar bisa dipakai banyak orang itu sulit.
Perbedaan ini sering tidak terlihat oleh programmer yang baru mulai. Mereka melihat AI bisa menulis kode dengan cepat, lalu menyimpulkan bahwa programming sudah menjadi keterampilan yang murah dan mudah didapat. Kesimpulan itu benar untuk satu hal: menghasilkan kode. Tapi software bukanlah kode. Software adalah kode yang berjalan di lingkungan nyata, digunakan oleh manusia nyata, dan harus bertahan dalam waktu yang lama.
Berikut diagram yang merangkum perbedaan mendasar antara sekadar menulis kode dan membangun software yang sesungguhnya.
Software yang baik harus andal. Artinya, ia tidak boleh tiba-tiba error saat pengguna melakukan hal yang tidak terduga. Ia harus bisa menangani beban yang meningkat tanpa melambat. Ia harus menjaga data pengguna tetap aman meskipun ada gangguan jaringan atau listrik padam. Semua ini tidak muncul dari satu prompt ke AI. Semua ini adalah hasil dari keputusan yang dibuat selama proses membangun software: bagaimana data disimpan, bagaimana error ditangani, bagaimana sistem diuji, bagaimana perubahan dikelola.
Software juga harus bisa dirawat. Kode yang ditulis hari ini harus bisa dimengerti oleh orang lain enam bulan kemudian. Fitur baru harus bisa ditambahkan tanpa merusak fitur lama. Perbaikan bug harus bisa dilakukan tanpa harus menulis ulang seluruh sistem. Ini membutuhkan disiplin, struktur, dan pemikiran jangka panjang yang tidak bisa dihasilkan oleh AI dalam satu sesi chat.
AI memang membuat produksi kode menjadi lebih cepat dan lebih murah. Tapi kecepatan dan kemurahan itu hanya berguna jika Anda tahu apa yang harus dibangun, bagaimana memastikan kualitasnya, dan bagaimana menjaganya tetap hidup dalam jangka panjang. Tanpa pemahaman itu, kode yang dihasilkan AI hanya akan menjadi tumpukan instruksi yang rapuh.
Inilah mengapa peran programmer saja tidak cukup. Menulis kode adalah keterampilan dasar yang semakin mudah diakses. Yang lebih berharga sekarang adalah kemampuan untuk membangun software yang benar, andal, dan bisa dirawat. Kemampuan untuk melihat bahwa kode hanyalah alat, sedangkan software adalah hasil kerja sistemik yang membutuhkan pertimbangan, pengujian, dan tanggung jawab.
Dari sinilah kita mulai melihat perbedaan antara sekadar menulis instruksi dan benar-benar membangun produk. Perbedaan itu akan kita bahas lebih lanjut di subbab berikutnya.