3 poin oleh GN⁺ 2024-01-16 | 1 komentar | Bagikan ke WhatsApp
  • Kemampuan pemrograman sulit diperoleh dari buku pengantar 24 jam atau 21 hari; yang biasanya didapat dari pembelajaran singkat lebih dekat ke keakraban yang dangkal
  • Riset tentang keahlian di berbagai bidang seperti catur, komposisi musik, melukis, berenang, dan penelitian menunjukkan bahwa untuk mencapai tingkat tinggi dibutuhkan sekitar 10 tahun; kuncinya bukan pengulangan sederhana, melainkan latihan yang disengaja
  • Untuk menjadi programmer yang baik, Anda perlu menjaga rasa senang, membuat sesuatu sendiri, membaca kode orang lain, bekerja bersama orang yang lebih mahir, dan menerima umpan balik
  • Pendidikan universitas dan buku dapat melengkapi kualifikasi, struktur, dan kedalaman, tetapi tidak dapat menggantikan pengalaman memperbaiki kegagalan dalam proyek nyata hingga menjalani pemeliharaan
  • Bahasa pertama bisa dipilih berdasarkan teman dan komunitas, kesederhanaan, serta lingkungan eksekusi interaktif; yang penting adalah memilih satu dan mulai secara konsisten

Batas dari janji belajar pemrograman dalam waktu singkat

  • Di toko buku dan online ada banyak buku yang mengklaim dapat mengajarkan Java, C, SQL, Ruby, algoritme, dan sebagainya dalam beberapa hari atau beberapa jam
    • Dalam pencarian lanjutan Amazon, buku sejak tahun 2000 yang judulnya memuat teach yourself hours muncul sebanyak 512 buku, dan 9 dari 10 teratas adalah buku pemrograman
    • Hasilnya serupa meski teach yourself diganti dengan learn, atau hours diganti dengan days
  • Judul-judul seperti ini memberi kesan bahwa orang ingin belajar pemrograman dengan tergesa-gesa, atau bahwa pemrograman jauh lebih mudah dipelajari dibanding bidang lain
  • How to Design Programs karya Felleisen dkk. menyindir tren ini dengan gaya “pemrograman yang buruk itu mudah. Orang bodoh pun bisa mempelajarinya dalam 21 hari”

Apa yang sebenarnya bisa berarti dari “Teach Yourself C++ in 24 Hours”

  • Teach Yourself

    • Dalam 24 jam, tidak ada cukup waktu untuk menulis beberapa program yang bermakna, belajar dari keberhasilan dan kegagalan, bekerja bersama programmer berpengalaman, dan memahami seperti apa hidup di lingkungan C++
    • Jadi yang mungkin dicapai bukan pemahaman mendalam, melainkan lebih dekat ke keakraban sekilas
  • C++

    • Jika Anda sudah mengetahui bahasa lain, Anda bisa mempelajari sebagian sintaks C++ dalam 24 jam
    • Namun sulit untuk mempelajari C++ bagus untuk apa dan buruk untuk apa, serta bagaimana bahasa itu seharusnya dipakai dalam praktik
    • Seperti kata Alan Perlis, “bahasa yang tidak mengubah cara Anda berpikir tentang pemrograman tidak layak diketahui”
  • 24 Hours

    • Anda bisa mempelajari sedikit C++ atau JavaScript, Processing, dan sejenisnya untuk menghubungkannya dengan alat tertentu
    • Dalam kasus ini, yang dipelajari lebih dekat ke cara menjalankan tugas tertentu, bukan pemrograman itu sendiri

Keahlian membutuhkan waktu

  • Riset oleh Bloom, Bryan & Harter, Hayes, Simon & Chase, dan lainnya menunjukkan bahwa pembentukan keahlian di berbagai bidang membutuhkan sekitar 10 tahun
    • Contoh bidangnya mencakup catur, komposisi musik, telegrafi, melukis, piano, renang, tenis, serta penelitian neuropsikologi dan topologi
  • Kuncinya bukan pengulangan sederhana, melainkan latihan yang disengaja (deliberative practice)
    • Memilih tugas yang sedikit lebih sulit daripada kemampuan saat ini
    • Menganalisis hasil selama dan setelah pelaksanaan
    • Memperbaiki kesalahan lalu mengulanginya lagi
  • Mozart sudah menjadi anak ajaib musik pada usia 4 tahun, tetapi butuh 13 tahun lagi untuk menghasilkan musik bertaraf dunia
  • Beatles menjadi sorotan lewat acara Ed Sullivan pada 1964 dan lagu-lagu nomor satu, tetapi mereka sudah bermain di klub-klub kecil di Liverpool dan Hamburg sejak 1957, dan Sgt. Pepper’s, yang meraih sukses besar secara kritik, baru keluar pada 1967
  • Malcolm Gladwell memopulerkan ungkapan 10.000 jam, tetapi yang penting di sini bukan angka persisnya, melainkan latihan konsisten selama bertahun-tahun
  • Bagi K. Anders Ericsson, 10.000 jam adalah angka yang memberi gambaran bahwa bahkan orang berbakat pun membutuhkan bertahun-tahun dengan 10–20 jam per minggu untuk mencapai tingkat tertinggi
  • Satu angka tidak bisa menjadi jawaban untuk semuanya
    • Sulit mengatakan bahwa pemrograman, catur, dam, dan musik semuanya membutuhkan waktu yang persis sama
    • Sulit juga mengatakan bahwa semua orang belajar dengan kecepatan yang sama

Praktik untuk menjadi programmer

  • Anda harus merasakan minat pada pemrograman dan memulainya karena menyenangkan
    • Kesenangan itu harus cukup bertahan untuk menginvestasikan 10 tahun atau 10.000 jam
  • Anda harus memprogram sendiri
    • Pembelajaran terbaik adalah belajar melalui praktik
    • Pembelajaran yang efektif membutuhkan tugas yang jelas dengan tingkat kesulitan yang sesuai bagi individu, umpan balik yang berguna, serta kesempatan untuk mengulang dan memperbaiki kesalahan
  • Anda harus berbicara dengan programmer lain dan membaca program yang ditulis orang lain
    • Ini lebih penting daripada buku atau kurikulum apa pun
  • Jika mau, Anda bisa menghabiskan 4 tahun di universitas atau belajar lebih lanjut di program pascasarjana
    • Gelar dapat membuka akses ke pekerjaan yang mensyaratkan kualifikasi, dan dapat memberi pemahaman mendalam tentang bidang tersebut
    • Jika Anda tidak menikmati sekolah, dengan dedikasi Anda juga bisa memperoleh pengalaman serupa sendiri atau di lapangan
    • Belajar hanya dari buku tidaklah cukup
  • Anda harus mengerjakan proyek bersama dengan programmer lain
    • Dalam sebagian proyek, Anda bisa menjadi programmer terbaik dan menguji kepemimpinan serta visi Anda
    • Dalam proyek lain, Anda bisa menjadi orang yang paling kurang berpengalaman dan belajar apa yang dilakukan oleh orang mahir, serta apa yang enggan mereka lakukan
  • Anda harus menangani proyek lama setelah programmer lain pergi
    • Anda belajar apa yang diperlukan untuk memahami dan memperbaiki program yang ditulis orang lain
    • Anda juga akan memikirkan bagaimana merancang untuk orang yang kelak memeliharanya

Pengalaman luas dengan bahasa dan sistem

  • Anda harus mempelajari setidaknya enam bahasa pemrograman
    • Bahasa yang menekankan abstraksi kelas: Java, C++
    • Bahasa yang menekankan abstraksi fungsional: Lisp, ML, Haskell
    • Bahasa yang mendukung abstraksi sintaks: Lisp
    • Bahasa yang mendukung spesifikasi deklaratif: Prolog, C++ templates
    • Bahasa yang menekankan paralelisme: Clojure, Go
  • Ingat bahwa “computer science” mengandung kata computer
    • Anda perlu mengetahui waktu yang dibutuhkan untuk eksekusi instruksi, mengambil kata dari memori, cache miss, pembacaan sekuensial disk, disk seek, dan sebagainya
  • Terlibat dalam aktivitas standardisasi bahasa juga dapat membantu
    • Bisa berupa aktivitas besar seperti komite ANSI C++, atau sekadar menentukan apakah indentasi dalam gaya coding lokal memakai 2 spasi atau 4 spasi
    • Anda dapat belajar apa yang disukai orang lain dari suatu bahasa dan mengapa mereka merasakannya begitu kuat
  • Dalam aktivitas standardisasi, Anda juga membutuhkan kearifan untuk keluar secepat mungkin

Buku dan pendidikan saja tidak cukup

  • Meski Anda membaca banyak buku tentang pengasuhan anak, saat anak pertama lahir Anda bisa tetap merasa seperti pemula; saat anak kedua lahir, Anda cenderung mengandalkan pengalaman pribadi daripada kembali ke buku
  • No Silver Bullet karya Fred Brooks mengusulkan rencana tiga bagian untuk menemukan perancang perangkat lunak yang hebat
    • Mengidentifikasi perancang unggul sedini mungkin secara sistematis
    • Menugaskan mentor karier untuk bertanggung jawab atas perkembangan mereka dan mengelola berkas karier mereka
    • Memberi para perancang yang sedang berkembang kesempatan untuk saling berinteraksi dan saling merangsang
  • Alan Perlis berkata, “semua orang bisa belajar memahat, tetapi Michelangelo mungkin harus diajari cara untuk tidak memahat”
  • Programmer hebat mungkin memiliki karakteristik internal yang melampaui pelatihan, tetapi tidak ditegaskan apakah itu bawaan lahir atau dikembangkan melalui kerja keras
  • Buku Java, Ruby, JavaScript, dan PHP bisa berguna, tetapi tidak akan mengubah hidup atau seluruh keahlian Anda dalam 24 jam atau 21 hari
  • Bekerja keras untuk terus membaik selama 24 bulan merupakan titik awal yang bermakna

Gambaran waktu operasi komputer

  • Perkiraan waktu untuk berbagai operasi pada PC umum adalah sebagai berikut
    • Eksekusi instruksi biasa: 1 nanodetik
    • Mengambil dari memori cache L1: 0,5 nanodetik
    • Kegagalan prediksi cabang: 5 nanodetik
    • Mengambil dari memori cache L2: 7 nanodetik
    • Mengunci/melepas mutex: 25 nanodetik
    • Mengambil dari memori utama: 100 nanodetik
    • Mengirim 2KB melalui jaringan 1Gbps: 20.000 nanodetik
    • Membaca 1MB secara sekuensial dari memori: 250.000 nanodetik
    • Seek ke lokasi baru di disk: 8.000.000 nanodetik
    • Membaca 1MB secara sekuensial dari disk: 20.000.000 nanodetik
    • Perjalanan pulang-pergi paket antara AS dan Eropa: 150 milidetik, yaitu 150.000.000 nanodetik

Kriteria memilih bahasa pemrograman pertama

  • Tidak ada satu jawaban benar untuk bahasa pertama
  • Anda bisa memakai teman dan komunitas sebagai kriteria
    • Mirip dengan jawaban untuk memilih sistem operasi: pakailah yang dipakai teman-teman Anda
    • Keuntungan belajar dari teman dapat mengimbangi perbedaan pada sistem operasi atau bahasa itu sendiri
    • Pertimbangkan juga apakah bahasa yang dipilih memiliki komunitas, buku, situs web, dan forum online yang berkembang
  • Kesederhanaan itu penting
    • C++ dan Java dirancang agar programmer berpengalaman dapat melakukan pengembangan profesional dalam tim besar, dan memiliki bagian-bagian kompleks yang mempertimbangkan efisiensi eksekusi
    • Orang yang baru belajar tidak membutuhkan kompleksitas itu
  • Lingkungan eksekusi interaktif memudahkan pembelajaran
    • Ini seperti saat belajar piano: lebih mudah belajar ketika Anda mendengar suara segera setelah menekan tuts, dibanding model batch yang baru terdengar setelah seluruh lagu selesai
    • Dalam pemrograman pun, bahasa yang menyediakan mode interaktif lebih menguntungkan
  • Berdasarkan kriteria ini, Python atau Scheme direkomendasikan sebagai bahasa pertama
  • JavaScript bisa menjadi pilihan bukan karena bahasanya dirancang sempurna untuk pemula, melainkan karena ada banyak tutorial online
  • Pelajar berusia satu digit mungkin menyukai Alice, Squeak, Blockly, dan pelajar yang lebih tua juga dapat menikmatinya
  • Yang penting adalah memilih satu dan mulai

Buku dan materi yang direkomendasikan

1 komentar

 
GN⁺ 2024-01-16
Komentar Hacker News
  • Pada 1999, saya membeli "Sams Teach Yourself C++ in 24 Hours" di CompUSA, dan kasir yang melihatnya tertawa lalu memberi tahu saya tentang tulisan ini.
    Saat berusia 16 tahun, ketika sedang melihat-lihat buku pemrograman di Borders, seseorang menyodorkan "The C Programming Language" kepada saya, dan itu mengubah hidup saya.
    Sebagian besar karier saya terbentuk dari pertemuan tak sengaja di dunia nyata dengan developer atau orang-orang yang tertarik pada pemrograman.

    • Sebagian dari buku-buku seperti itu memang sangat buruk sampai menggelikan, tetapi pada masa itu satu buku terasa seperti kunci awal yang bisa membuat ide program aneh di kepala menjadi sesuatu yang benar-benar dibuat.
      Terakhir kali saya merasakan hal seperti itu adalah ketika keluar dari Microcenter membawa MacBook baru dan iPod Touch, merasa siap membuat Angry Birds berikutnya.
    • Buku yang mengubah hidup saya adalah manual BASIC yang disertakan bersama C64.
      Sekitar 8 tahun kemudian, ketika saya membeli Turbo Pascal, semua materi yang dibutuhkan sudah tersedia sehingga saya bisa mempelajarinya dengan cepat; dan ketika mulai memakai Linux pada 1995, hanya dengan halaman man dan dokumen info saya bisa mempelajari hampir semua yang diperlukan untuk menulis program di sistem itu.
      Saya juga masih ingat membaca manual EGCS dari awal sampai akhir pada akhir 90-an.
      Saya rindu masa ketika software menyediakan semua informasi yang dibutuhkan bersamanya, dan sayang sekali sekarang harus mengorek Google untuk mencari halaman produk atau manual.
      Rasanya sekitar 5 tahun lagi, karena informasi terkait hanya diposting di Discord dan tidak terindeks, kita bahkan akan merindukan pencarian Google yang dulu dipakai sebagai pengganti manual.
      Pada awal 2000-an, saya juga belajar pemrograman socket di Linux dan FreeBSD hanya dari halaman man; ketika kemudian membaca buku Stevens, saya bisa membacanya dengan sangat cepat karena sudah punya bekal dari halaman man dan pengalaman menulis beberapa program.
    • Titik awal saya adalah "Visual Basic Professional 3.0 Programming by Thomas W. Torgerson" yang saya beli di Barnes and Nobles pada 1997.
      Saya ingin belajar membuat punter/prog dengan mengunduh Visual Basic 3.0 dari AOL sebagai 100 lampiran email.
      Saya menyalin kode dari buku itu untuk memutar file suara saat program mulai, dan benar-benar takjub ketika itu ternyata berjalan.
      Setelah itu, bisa membangun karier di pengembangan software adalah kehormatan besar.
    • Jangan menertawakan anak perempuan kecil yang ada di rak buku pemrograman.
      Pada tahun 90-an, cukup sering yang didapat bukan nasihat, melainkan reaksi tidak percaya.
    • Saya akan tetap berpendapat sampai akhir bahwa "The C Programming Language" adalah buku bahasa pemrograman terbaik yang pernah saya baca.
      Setiap developer sebaiknya membaca dan mempelajari C dan K&R setidaknya sekali, meskipun kemudian segera melupakan C.
  • Tulisan ini punya makna khusus bagi saya karena pertama kali membacanya saat remaja, ketika baru mulai belajar coding.
    Saat membacanya lagi, saya terkejut melihat Malcolm Gladwell disebut, karena seingat saya Outliers baru menjadi topik hangat jauh setelah itu.
    Baru setelah melihat penyebutan Ratatouille saya menyadari bahwa tulisan ini diperbarui setelah diposting pada 1998; versi aslinya masih ada di arsip dan jauh lebih pendek: https://web.archive.org/web/19980206223800/https://norvig.co...
    Patut dihormati bahwa Peter Norvig terus memperbaiki tulisannya sendiri selama bertahun-tahun.

    • Mungkin karena saya ditugaskan membacanya saat SMA, sampai sekarang saya tetap tidak terlalu menyukai Gladwell.
      Ia terlalu sering dikutip, dan aturan 10.000 jam sekarang terasa seperti sekadar meme.
    • Saya teringat diri saya 10 tahun lalu, membaca tulisan ini di lab komputer perpustakaan kampus.
      Sekarang saya memang belajar pemrograman secara otodidak, tetapi perjalanannya jauh lebih sulit dan berliku daripada yang saya bayangkan saat itu.
    • Sebelum "Outliers" pun sudah ada "The Tipping Point" dan "Blink".
  • Saya juga termasuk orang yang belajar dari buku, tetapi sikap seperti itu sering kali lebih cocok untuk bidang non-komputasi yang perubahannya lambat, seperti matematika dan fisika.
    Contoh buruk baru-baru ini adalah buku Quantum Programming dari O'Reilly, yang tidak membahas sirkuit kuantum dengan cukup rinci sampai saya benar-benar memahami apa yang saya lakukan.
    Namun, bisa jadi itu karena komputasi kuantum sendiri memang penuh gembar-gembor; Nielsen/Chuang yang sedang saya baca sekarang sangat teoretis, tetapi penjelasannya sangat jelas, jadi mungkin nanti saya akan kembali ke sana.
    Buku hanyalah alat belajar, dan proyek hobi justru bisa menjadi alat belajar yang lebih efektif karena juga membangun pengalaman.
    Meski begitu, pengetahuan adalah kekuatan, dan buku sangat baik untuk membantu menentukan arah yang benar, dengan asumsi kita menemukan buku yang sesuai kebutuhan.
    Saya tahu ada orang yang sama sekali tidak mau membuka buku jika tidak yakin bisa membacanya sampai selesai; menurut saya sikap seperti itu tidak masuk akal.
    Saya baru saja memesan buku Generative Deep Learning dari O'Reilly, dan jika saya bisa mengambil beberapa bagian saja yang berguna untuk karier, itu sudah cukup menguntungkan.
    Setidaknya buku itu akan terlihat bagus di rak.

    • Prinsip dasar tidak berubah.
      Setiap minggu ada framework frontend baru, tetapi pada akhirnya semuanya menghasilkan HTML.
  • Ini adalah thread-thread dari rentang 16 tahun
    Repost setelah kira-kira setahun tidak masalah, dan tautan ke thread lama ditujukan untuk pembaca yang ingin tahu lebih jauh
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=33287618 - Oktober 2022, 112 komentar
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=27411276 - Juni 2021, 115 komentar
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=20543495 - Juli 2019, 87 komentar
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=16574248 - Maret 2018, 51 komentar
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=9395284 - April 2015, 61 komentar
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=5519158 - April 2013, 86 komentar
    Teach Yourself Programming in Ten Years by Peter Norvig (2001) - https://news.ycombinator.com/item?id=3439772 - Januari 2012, 29 komentar
    Teach Yourself Programming in 10 Years. - https://news.ycombinator.com/item?id=1060176 - Januari 2010, 32 komentar
    Teach Yourself Programming in Ten Years - https://news.ycombinator.com/item?id=191235 - Mei 2008, 19 komentar
    Norvig: Teach Yourself Programming in Ten Years - https://news.ycombinator.com/item?id=43243 - Agustus 2007, 7 komentar

    • Saya penasaran apakah orang-orang yang berkomentar pada 2007–2013 bisa berbagi apa yang mereka pelajari selama 10 tahun terakhir
    • Akan bagus kalau ada cara untuk memberi tahu tentang thread lama sebelum seseorang memposting
    • Saya tidak yakin apakah ini kritik bahwa repost-nya terlalu banyak, atau maksudnya duplikasi sehat sekitar setahun sekali
  • Menarik bahwa tautan Amazon.com lama di halaman itu masih mengembalikan hasil yang relevan, meski memakai parameter kueri yang cukup rumit
    Ini contoh bagus dari “Cool URIs don't change”
    [0] http://www.amazon.com/gp/search/ref=sr_adv_b/?search-alias=s...
    [1] https://www.w3.org/Provider/Style/URI

    • Menariknya, tautan Amazon itu mengembalikan error bagi saya
  • Saya bertemu cukup banyak orang yang bertanya bagaimana mereka bisa mendapatkan pekerjaan sebagai programmer di kantor atau di tempat lain.
    Ketika saya menceritakan jalur saya—mulai belajar sejak kecil, menjadikannya hobi besar, lalu mengambil gelar ilmu komputer dan magang—mereka terkejut dan kecewa karena tidak ada jalan cepat.
    Atau mungkin ada jalan cepat? Saya penasaran apakah ada orang yang berhasil menyelesaikan bootcamp dari 0 ke 1.

    • Saya lulusan bootcamp dan sudah 8 tahun bekerja sebagai programmer profesional.
      Di SMA dan kuliah saya sempat mengambil beberapa kelas pemrograman untuk bersenang-senang, tetapi pengetahuan saya sangat terbatas.
      Bootcamp itu benar-benar sesuai namanya; jam dasarnya 09.00–17.00, tetapi banyak orang datang pukul 07.00 pagi dan pulang pukul 22.00 malam.
      Kami juga datang di akhir pekan, dan kadang hanya libur pada hari Minggu.
      Saya sengaja memilih bootcamp di kota lain agar kehidupan sosial tidak mengganggu.
      Fokusnya Ruby dan JavaScript, dan beberapa bulan setelah lulus saya mendapat pekerjaan sebagai intern C#/.NET.
      Saya memilih posisi intern karena tampaknya sulit meyakinkan orang untuk langsung memberi posisi junior developer, dan dalam 2 minggu saya dipromosikan menjadi junior developer.
      Sekolah itu kemudian diakuisisi Kaplan lalu menghilang.
    • Orang-orang yang berhasil lewat bootcamp hanyalah mereka yang memang sudah sangat pintar, atau yang berasal dari latar belakang teknologi/matematika tingkat lanjut.
    • Saya berhenti dari jurusan ilmu komputer setelah 3 bulan, dan sebelumnya tidak pernah memprogram.
      Saya belajar sendiri dasar-dasar JavaScript selama 8 bulan di ruang bawah tanah rumah ibu saya dan berhasil mendapatkan pekerjaan.
      Setelah itu saya mencurahkan sangat banyak waktu untuk pemrograman, dan sampai sekarang totalnya sudah puluhan ribu jam.
      Saya pernah menangani compiler, grafika 3D, semikonduktor, dan game engine.
      Pengalaman saya sepertinya mendukung kedua sisi.
      Sekitar 2012, dengan pengalaman sedikit pun relatif mudah masuk ke industri, tetapi setelah itu butuh usaha luar biasa untuk menjadi engineer yang baik, yang ingin direkrut orang-orang karena punya proyek menarik.
    • Saya pernah merekrut lulusan bootcamp, meski tidak pernah menjalaninya sendiri.
      Dari data yang terbatas, sama seperti developer berpendidikan tradisional, hasilnya untung-untungan.
      Hasil terbaik adalah ketika orang dengan pelatihan klasik seperti fisika, kimia, atau teknik ingin berganti karier; mereka mendekati junior level tinggi dengan kurva belajar cepat.
      Jika ingin menempatkan karyawan baru yang termotivasi di area software yang pemrograman murninya tidak terlalu penting, mereka bisa menjadi rekrutan yang bagus.
      Simpangan bakunya besar, tetapi saya tidak yakin apakah lebih besar daripada lulusan program 2 tahun.
    • Saya mengikuti program lulusan di sebuah perusahaan konsultan yang melatih kami selama 3 bulan lalu mempekerjakan kami dengan kontrak 2 tahun.
      Di universitas saya belajar humaniora dan belum pernah coding.
      Dua tahun pertama benar-benar berat, dan karena tidak punya dasar, rasanya seperti terus berenang melawan arus.
      Baru menjelang akhir program 2 tahun itu saya merasa bisa menghasilkan nilai secara mandiri.
      Pengetahuan saya cukup berorientasi terapan, dan karena kurang dasar ilmu komputer, kadang menjadi lebih sulit karena harus mempelajari hal-hal fundamental di sela-sela pekerjaan.
      Namun peran saya sekarang adalah data engineer, jadi bidang ilmu komputer tradisional seperti struktur data dan algoritma relatif tidak terlalu dituntut.
  • Intinya adalah latihan yang disengaja.
    Bukan sekadar mengulang, melainkan menantang diri dengan tugas yang sedikit lebih sulit daripada kemampuan saat ini, mencoba, menganalisis selama dan setelah pengerjaan, memperbaiki kesalahan, lalu mengulanginya lagi.
    Untuk terus belajar, kita harus menantang diri sendiri dan keluar dari zona nyaman.

    • Saya penasaran bagaimana alat AI seperti GitHub Copilot akan mengubah kebiasaan belajar orang.
      Setelah memakainya beberapa bulan, suatu saat saya tidak sengaja logout, dan saya justru merasa sedikit kerepotan mencari dokumentasi resmi itu bernilai.
      Pada minggu pertama saya terkejut karena merasa jauh lebih lamban.
      Mengambil langkah tambahan untuk belajar dari sumber primer, dan sesekali menghargai ketidaknyamanan, penting untuk berkembang sebagai programmer.
    • Sebagai software developer yang juga punya pengalaman sebagai tutor/asisten dosen, saya khawatir apakah generasi developer berikutnya benar-benar bisa coding.
      Terutama jika tugas tingkat tahun pertama–kedua diselesaikan hanya dengan Copilot, mereka bisa saja mengotomatisasi kegunaan diri mereka sendiri hingga hilang.
      Di sisi lain, kita sudah mengatakan hal serupa tentang “anak-anak iPad”.
      iPad juga punya file system, dan aplikasi-aplikasinya terus bertambah fitur dalam cara yang disetujui Apple, jadi menurut saya itu bukan pendekatan buruk terhadap laptop.
      Saya juga memakai Copilot, tetapi terutama sebagai autocomplete pintar untuk menyiapkan variabel atau pekerjaan repetitif kecil.
      Fungsinya menghemat waktu yang seharusnya dipakai untuk mengontekstualisasikan pemecahan masalah dan berinteraksi dengan rekan tim, bukan benda yang menggantikan engineer.
    • Itu benar, tetapi jika diungkapkan lebih baik, intinya adalah membuatnya sebagai hobi.
      Keahlian datang dari pengalaman, dan pengalaman hanya terkumpul jika kita terus kembali.
      Ada orang yang bisa memaksa diri terus menderita tanpa henti, tetapi bagi kebanyakan orang, lebih bijak memulai dengan menemukan bagian dari software yang sungguh bisa dicintai lalu menumbuhkannya.
    • Kita harus menyukai tantangan.
      Saya pernah melihat orang-orang yang jelas lebih pintar daripada saya di bidang coding keluar karena terlalu pintar.
      Alasannya karena mereka merasa itu tidak lagi menantang, atau bosan dengan tantangan yang keliru seperti “menunggu orang lain menyusul”.
      Biasanya mereka adalah orang-orang yang mengerjakan teknologi mutakhir yang beberapa tahun kemudian menjadi standar.
      Jika pesona adalah motivasinya, mungkin kita boleh bersyukur karena tidak terlalu pintar.
    • Dalam teori pendidikan, ini disebut zona perkembangan proksimal.
  • Meski ditandai sebagai tulisan tahun 1998, karena ada penyebutan seperti Clojure dan Go, tampaknya tulisan ini telah diperbarui setelahnya.

    • Di bagian bawah halaman tertulis Peter Norvig (Copyright 2001—2014).
  • Tulisan yang bagus
    Dengan patokan 8 jam sehari, 40 jam seminggu, butuh 250 minggu untuk mencapai 10 ribu jam
    Bahkan jika memprogram hampir tanpa libur, itu sekitar 5 tahun, dan secara realistis lebih mendekati 10 tahun untuk mencapai target

    • Secara realistis, semuanya bergantung pada seberapa besar kamu menikmati pemrograman
      Jika banyak memprogram, 3 ribu jam setahun pun bisa dicapai dengan mudah
      Saya memprogram 12 jam sehari pada sebagian besar hari, 6–7 hari seminggu pada sebagian besar minggu
      Pada hari ketika motivasi sangat kuat, saya juga bisa 18 jam
      Saya sudah melakukan ini hampir 10 tahun, sesekali beristirahat sekitar sebulan dan menguranginya menjadi 3–4 hari seminggu dengan jam kerja panjang
      Dengan perhitungan konservatif pun kira-kira 3500 jam per tahun
      Alasan saya bekerja sebanyak ini adalah karena saya benar-benar mencintai pemrograman, dan selain berselancar pagi, tidak ada hal lain yang lebih ingin saya lakukan
    • Heuristik 10 ribu jam tidak terlalu akurat, hanya terkenal saja
      Meski begitu, sekitar 10 tahun karier profesional untuk menjadi developer yang solid tampaknya secara umum masuk akal
      Saya belum pernah melihat orang yang benar-benar mencapai level itu hanya dalam 5 tahun
      Orang yang sudah terobsesi sejak remaja kadang bisa memangkas beberapa tahun, tetapi pada titik tertentu periode itu juga mulai tumpang tindih
      Tentu ada juga pepatah lama bahwa masalahnya adalah “mengulang pengalaman 1 tahun sebanyak 10 kali”
      Saya juga banyak melihat developer dengan pengalaman lebih dari 10 tahun yang tetap tidak solid
    • Bukankah 40 jam seminggu selama 5 tahun pada dasarnya sudah menjadi pekerjaan software?
      Kelihatannya cukup masuk ke peran junior lalu bekerja selama 5 tahun sambil naik level
    • Ini sama saja di profesi mana pun
      Intuisi terbangun dengan mengerjakan tugas yang makin sulit
      Pada suatu titik, kamu bisa menghubungkan dan menerapkan hal yang kamu ketahui di satu bidang ke bidang lain, dan saat itulah kreativitas mulai bekerja
  • Saya tidak bisa menemukan sumber video yang saya lihat 5–6 tahun lalu, tetapi intinya mengatakan bahwa seiring bertambahnya jumlah programmer, mayoritas memiliki pengalaman kurang dari 5 tahun
    Dalam konteks IT dan web yang makin besar keterlibatannya dalam hidup, itu masuk akal
    [0] https://youtu.be/ecIWPzGEbFc?si=A4qBR2YdX-0CV2bM ditemukan berkat komentar wild_egg
    Setelah 20 tahun melakukannya, sekarang ada cukup banyak informasi yang tidak perlu lagi saya ketahui, dan bagi orang dengan pengalaman kurang dari 5 tahun mungkin banyak juga informasi yang sama sekali tidak mereka perlukan
    Di sisi lain, pengalaman tetaplah pengalaman, dan mengetahui bagaimana sesuatu dibangun serta alasan keberadaannya selalu membantu
    Ada juga banyak programmer yang pengalamannya lebih sedikit daripada saya tetapi bisa melakukan banyak hal yang bahkan tidak bisa saya bayangkan
    Sejujurnya, bidang yang memiliki Turing completeness ini memang cukup luas

    • Saya sudah memprogram selama 40 tahun, 33 tahun di antaranya sebagai pekerjaan, tetapi satu-satunya hal yang terpikir oleh saya sebagai pembelajaran yang sia-sia hanyalah scrum
      Saya tidak pernah menghafal sintaks secara khusus, dan selalu memprogram dengan halaman man dan manual terbuka
      Namun setiap bahasa dan teknologi yang saya pelajari mengajarkan sesuatu yang berguna tentang masalah mendasar dalam komputasi dan sistem
      Cara menangani masalah memakai pakaian yang berbeda-beda, tetapi masalahnya sendiri tetap sama
      Tidak ada jalan pintas, dan saya tahu pasti bahwa sebagai programmer, diri saya sekarang beberapa orde besaran lebih mampu daripada diri saya pada tahun ke-5
      Alasan saya lebih menantikan belajar hal baru dan mengerjakan hal baru daripada sebelumnya adalah karena hal-hal itu akan membuka lebih banyak bagian dari teknologi ini
      Yang saya khawatirkan hanyalah suatu hari tubuh dan pikiran saya tidak lagi sanggup mengikuti, bukan karena hal untuk dipelajari akan habis atau saya akan disalip oleh orang-orang muda
    • Itu sepertinya berasal dari ceramah Bob Martin, "The Future of Programming"
      https://youtu.be/ecIWPzGEbFc?si=A4qBR2YdX-0CV2bM
    • Karena bidang ini masih muda, ia berkembang cepat, dan wajar jika banyak informasi sementara menumpuk
      Rasanya masih seperti era para alkemis
      Suatu hari para ahli kimia akan muncul, mensistematisasi pengamatan yang tambal-sulam, dan membuang banyak hal
      Sampai saat itu… Newton juga seorang alkemis, tetapi ia tetap memberi kontribusi yang cukup besar