Seseorang pernah mengatakan bahwa saya terlihat seperti seorang engineer dan saya merasa
malu.
Tentu saja, hal ini terdengar bodoh sekarang. Namun, kala itu saya sedang kuliah dan belum
melihat seperti apa dunia nyata itu. Silicon Valley tidak berarti apa-apa selain sebuah tempat
nan jauh di sana.
Namun satu hal tentang saya yang Anda tidak ketahui saya dulu merupakan presiden klub IT di
SMP. Saya belajar HTML dan flash, menghabiskan waktu senggang saya bermain Sim City 3000,
dan menciptakan sebuah website tentang game tersebut. Saya selalu mempunyai sisi geek di
dalam diri saya.
Tidak lama bagi saya untuk kembali merangkul sisi tersebut. Film The Social Network rilis pada
tahun terakhir universitas saya. Setelah lulus, saya bergabung dengan ranah startup Singapura
yang masih muda sebagai seorang wartawan teknologi.
Saya seolah dikelilingi dengan tren bahwa semua orang harus belajar coding. Menjadi
programmer merupakan sesuatu yang keren, dan saya berbohong jika tidak pernah berkhayal
mengenai hal tersebut.
Keadaan telah berputar balik. Banyak teman kuliah saya di sekolah komunikasi akhirnya
bergabung dengan perusahaan internet atau menjadi bagian public relations untuk perusahaan
teknologi. Teknologi yang dibuat para geek yang dulu kami tertawakan sedang mengubah dunia
jurnalisme.
Dan gerakan belajar coding ini semakin meriah karena sangat mudah untuk mulai
mempelajarinya. Pada saat itu, gerakan open source telah berkembang sebegitu rupa hingga
siapapun dapat dengan mudah mencari bantuan, sumber daya, dan dokumentasi lewat Google.
Gerakan belajar coding ini telah berkembang menjadi sebuah industri, dan masih ada banyak
ruang di pasar, berhubung suplai engineer yang tidak banyak.
Dan sekarang kita ada di tahun 2015. Jika Anda ingin belajar programming sebagai sebuah
resolusi tahun baru, maka artikel ini cocok bagi Anda. Saya berbagi sejarah pribadi ini bukan
karena narsis (well, mungkin sedikit), namun untuk menggambarkan kenyataan yang ada:
Belajar coding mungkin akan sepenuhnya tidak berguna dalam membantu Anda mencapai
tujuan. Atau malah mungkin terbukti sangat diperlukan.
Anda mungkin seorang siswa yang hanya memikirkan pekerjaan sekolah atau kehidupan sosial
(dan ini bukan apa-apa dibandingkan memiliki sebuah pekerjaan full-time). Coding dapat
membuka lebih banyak jalan bagi Anda untuk, katakanlah, menjadi miliarder ketika Anda
berusia 25 tahun.
Atau mungkin Anda seorang profesional muda yang patah semangat dan sedang mencari sesuatu
yang berbeda. Anda sudah mengumpulkan cukup banyak tabungan untuk merambah hal lain.
Programming bisa saja menjadi tiket Anda menuju karir yang lebih menjanjikan.
Tentu saja, programming mungkin bukan untuk para CEO perusahaan besar dengan karyawan
dan keluarga untuk dinafkahi. Namun jika Anda seorang eksekutif muda yang ingin memulai
sebuah perusahaan teknologi dalam jangka waktu satu tahun, belajar programming akan sangat
berguna bagi Anda agar mampu bekerja dengan lancar dengan para developer atau menciptakan
produk sederhana sendiri.
Anda mungkin akan menemukan bahwa belajar coding merupakan sesuatu yang tidak
menyenangkan atau tidak ada gunanya. Itu hal yang biasa. Atau mungkin Anda ingin belajar
dengan alasan sederhana seperti ingin masuk ke dalam kelompok yang keren (banyak sekali
komedian yang mulai bergelut di bidang komedi karena hal itu), atau mungkin sekadar mencari
tahu apakah Anda akan tertarik dengan dunia coding. Atau Anda ingin meningkatkan situasi
finansial Anda.
Semua alasan di atas berlaku bagi saya:
TujuanHasil
Saya mengganggap diri saya keren, berdasarkan fakta bahwa saya
bisa menciptakan sebuah aplikasi menggunakan Ruby on Rails
dan memanfaatkan berbagai API, sambil tetap menjaga pekerjaan
Ya, saya ingin menjadi lebih
utama saya sebagai seorang penulis dan editor. Saya juga tetap
keren.
bertahan ketika banyak orang menyerah, namun saya membuat
banyak sekali pengorbanan. Terlepas dari itu, masih banyak level
kehebatan yang belum saya capai.
Saya ingin menantang diri
Saya merasa sangat tertantang.
sendiri secara intelektual.
Saya ingin mencari tahu
Mungkin tidak. Seperti karir lainnya, programming memerlukan
apakah mengembangkan
tugas tidak menyenangkan seperti pemindahan server, menangani
sebuah website dapat menjadi
penyusup, dan lain sebagainya.
karir alternatif.
Saya ingin menggabungkan
minat saya dalam teknologi Tercapai.
dan media.
Saya ingin menggunakan
Mungkin tercapai.
Menetapkan tujuan satu gunung demi gunung lainnya akan memberi Anda dorongan yang
dibutuhkan
Mari kita berbicara jujur, coding tidaklah menyenangkan. Tentu saja, menciptakan kode-kode
elegan dan memperbaiki bug terasa memuaskan, namun semuanya akan menjadi sia-sia jika
tidak ada produk akhir, seperti nasi kari tanpa kari.
Buat perjalanan programming Anda berkelanjutan dengan menatanya sebagai jajaran gunung
yang harus didaki. Kerjakan proyek demi proyek, masing-masing akan membuat Anda belajar
hal baru, memperbarui pengetahuan lama Anda, dan membawa Anda semakin dekat dengan
tujuan Anda. Berikut proyek-proyek yang saya kerjakan, dalam urutan kronologis:
Sebuah game teks. Lihat Learn Python the Hard Way.
Sebuah script Ruby yang menghitung tag dalam blog teknologi untuk melihat topik apa yang
populer.
Sebuah script Ruby yang mencari informasi di dalam website dan menyalin informasi tersebut
ke dalam database lain.
Tabel dan bagan yang dapat disortir. Saya menyambungkan sebuah aplikasi Ruby on Rails
dengan D3.js, sebuah library visualisasi berbasis javascript.
Aplikasi Rails yang menyambungkan WordPress dan API Google Analytics untuk menghasilkan
konten secara terprogram.
Aplikasi Rails yang diciptakan menggunakan API Buffer, ini memungkinkan saya untuk memposting ulang konten populer di media sosial.
Aplikasi Rails yang mengisi tautan dalam sebuah database.
Statsy, aplikasi Rails yang bertindak sebagai database fakta yang memiliki fungsi pencarian dan
sebuah pembuat bagan berbasis Google Charts.
Setiap proyek yang sukses menjadi lebih rumit. Saya mulai dengan menciptakan script, yang
merupakan program yang hidup di dalam lingkungan bahasa pemrograman desktop Anda. Lalu
saya belajar Rails, sebuah framework untuk menciptakan aplikasi web yang dibuat di atas bahasa
pemrograman Ruby. Perjalanan ini menjadi lebih menyenangkan saat saya coba mencari proyek
yang berarti untuk dikerjakan. Seperti yang ditulis oleh salah seorang programmer:
Programming seharusnya hanya diperkenalkan sebagai sebuah cara untuk menyelesaikan suatu
masalah nyata atau menyelesaikannya dengan cepat. Meretas sesuatu yang sudah kamu pahami.
Lalu ada tujuan dan motivasi untuk belajar. Maka programming menjadi lebih bermakna. Sangat
sedih [bagi saya] untuk mengetahui bahwa kontak pertama orang dengan dunia programming
adalah sebuah kelas tata bahasa yang membosankan dimana mereka harus duduk belajar, seperti
hal lainnya yang mereka lakukan di sekolah.
Gambaran yang saya jabarkan di awal menunjukkan bagaimana sulitnya memulai hingga berada
di posisi saya saat ini. Namun hal tersebut berlaku jika Anda memang ingin membangun sebuah
aplikasi web yang berfungsi. Bukit yang ada di awal tidak terlalu sulit untuk didaki mudah
mempelajari hal dasar berkat website seperti Codecademy. Khususnya Ruby memiliki banyak
sekali sumber untuk membantu Anda belajar.
Namun berdasarkan pengalaman saya, semua menjadi lebih sulit ketika Anda mencoba membuat
sebuah aplikasi web yang berjalan sepenuhnya. Mengapa? Karena banyak sekali hal yang harus
dipelajari. Kecuali Anda belajar Node.js, Anda tidak sedang belajar satu bahasa pemrograman,
namun dua: bahasa pemrograman server (hal-hal yang terjadi di dalam server) dan javascript
untuk sisi pengguna (sihir yang terjadi di dalam browser Anda)
Sebagai tambahan, Anda harus menggunakan bahasa markup seperti HTML dan CSS, yang
mengendalikan tampilan sebuah website dan bagaimana perasaan pengguna saat memakai
website tersebut, serta mendirikan dan menjaga agar server selalu berjalan (saya
merekomendasikan para pemula untuk menggunakan Heroku). Bukan hanya itu. Setiap bahasa
pemrograman memiliki banyak sekali library untuk dikuasai dan masing-masing API memiliki
dokumentasinya sendiri. Anda juga harus belajar bagaimana sebuah database bekerja. Dan
jangan sampai saya memulai tentang Git dan test-driven development.
Saya mengetahui perasaan itu. Saya juga kewalahan ketika saya benar-benar melihat tantangan
yang ada di hadapan saya. Namun hal itu tidak menghentikan saya. Triknya adalah dengan
memulai dari hal yang kecil, dan mengumpulkan kepercayaan diri untuk menangani proyek yang
lebih besar. Seiring berjalannya waktu, Anda akan belajar lebih cepat. Anda akan kaget seberapa
banyak yang bisa Anda serap.
Bagian yang paling membuat frustrasi dari programming adalah ketika aplikasi Anda ngadat dan
Anda kebingungan dalam mencari apa yang salah. Karena sebuah aplikasi sepenuhnya dibuat
dari bagian saling menyambung dalam kode open source yang diciptakan oleh orang lain,
sumber dari bug bisa terdapat di mana saja. Belajar melakukan debug secara produktif
merupakan keterampilan yang diremehkan.
Karena itulah penting bagi Anda untuk merayakan kemenangan kecil. Anggap versi pertama
aplikasi Anda sebagai penghargaan tertinggi sebuah jamuan bagi mental Anda. Untuk
mencapai kesana, Anda perlu mengumpulkan kemenangan-kemenangan kecil sepanjang
perjalanan untuk membantu Anda melewati momen terendah ketika Anda merasa ingin berhenti
belajar programming. Ingat perkataan saya, akan banyak sekali waktu dimana Anda merasa ingin
menyerah.
Jika hal tersebut terjadi, ambil istirahat mental. Kunjungi masalah tersebut nanti. Pikirkan secara
seksama kemungkinan sumber kesalahan. Minta bantuan orang lain. Dan ketika Anda telah
memperbaiki bug yang ada, adakan pesta kecil. Lalu ambil nafas panjang dan mulai lagi.
Belajar coding tidak harus merupakan sebuah aktivitas yang dilakukan sendirian.
Berkonsultasilah dengan teman-teman Anda yang penuh pengetahuan. Mereka akan mengajarkan
sesuatu yang tidak akan Anda temukan di Google. Bergabung dengan grup di kota Anda yang
relevan dengan apa yang sedang pelajari dan cari bantuan di sana. Stack Overflow adalah tempat
yang sangat bagus untuk bertanya, dan Anda akan menemukan bahwa banyak orang yang
mengalami hal serupa dan sudah menerima jawaban. Anda dapat berkonsultasi dengan para
programmer mumpuni dengan banderol harga di platform online seperti Airpair (saya belum
pernah mencoba ini).
Coding di dalam grup merupakan sesuatu yang menguntungkan. Jika tujuan Anda adalah
bergabung dalam tim pengembangan, anggap hal ini sebagai latihan untuk menjadi seorang
coder profesional. Setiap tim akan mengembangkan protocol, workflow, dan toolset masingmasing, yang biasanya ditentukan oleh programmer paling senior di dalam kumpulan tersebut.
Mulai dengan mengerjakan proyek sampingan bersama teman-teman. Jika Anda merupakan
bagian dari sebuah startup dengan tim pengembangan yang mempunyai kesabaran untuk
mengajar para pemula, tawarkan melakukan coding secara sukarela bagi mereka.
Atur ekspektasi
Tergantung pada tujuan Anda, mencapai posisi dimana Anda menjadi produktif berkat coding
akan membutuhkan waktu yang tidak sedikit. Jika Anda merupakan bagian dari sebuah startup
dan Anda ingin berkontribusi dengan melakukan coding front-end, belajar HTML, CSS, dan Git
sudah lebih dari cukup dan dapat dipelajari dalam hitungan minggu. Jika Anda seorang calon
entrepreneur yang ingin membangun sebuah aplikasi web, belajar ketrampilan yang dibutuhkan
dapat memakan waktu berbulan-bulan tergantung dari niat Anda untuk belajar. Jadi mungkin
Anda dapat melihat diri Anda sendiri menggali-gali dalam kegelapan sebelum akhirnya
menemukan jalan keluar.
Hanya dua buah pikiran lagi yang ingin saya bagikan: