5 Cara Fikir Pengaturcara

5 Programmer's Mindset

Berikut merupakan beberapa cara fikir seorang pengaturcara yang baik; berdasarkan pengalaman, pembacaan dan sumber-sumber yang saya dapatkan yang mungkin berguna untuk kita praktikkan. Saya sertakan beberapa sumber yang anda boleh dapatkan dengan lebih mendalam di bahagian akhir artikel.

Mentaliti Progressive Overload, Mula daripada kecil, dan KISS

Konsep ini saya ambil daripada konsep asal mengangkat beban di gimnasium, iaitu pendekatan progressive overload. Konsep progressive overload adalah dimana seseorang itu bermula mengangkat beban yang ringan, seterusnya beban ditambah dan ditambah yang akan melatih dan meningkatkan kekuatan dan daya tahan otot.

Konsep ini boleh diaplikasikan kepada seorang pengaturcara dalam fasa pembangunan kod. Hatta, dalam proses pembelajaran pun, kita semua bermula dengan "Hello World" dan bukan Object Oriented Programming! Kita semua bermula dengan asas, kemudian secara kumulatif kesukaran itu ditingkatkan dan ditingkatkan. Gunakan pendekatan Keep It Simple Stupid (KISS) sebelum menggubah kod kepada bentuk yang lebih sofistikated.

Mulakan dengan langkah kecil.

Memecahkan Masalah kepada Blok Kecil

80% kerja seorang pengaturcara adalah menyelesaikan masalah. Masalah boleh terjadi akibat daripada struktur kod, konsep fundamental, nyahpepijat dan lain-lain lagi. Dalam hal ini, ia tertakluk bagaimana seorang pengaturcara menghadapi masalah. Dengan cara yang betul, masalah boleh diselesaikan, walaupun mungkin bukan dalam jangka masa yang pantas sekalipun.

Kita boleh menyelesaikan masalah dengan cara memecahkannya kepada blok-blok yang lebih kecil. Umumnya, apabila kita menghadapi masalah, kita akan cenderung untuk berfikir lebih kehadapan dengan persoalan what if atau "Macam mana kalau...". Namun, praktis ini kurang baik kerana membuatkan kita menjadi seorang yang lewah fikir (over thinking) yang mana akhirnya tidak menyelesaikan masalah yang dihadapi.

Dengan memecahkan masalah menjadi lebih kecil, kita akan cuba mendalami setiap komponen masalah dengan lebih teliti dan sistematik. Teliti dengan makna kata, masalah mungkin berpunca daripada perkara fundamental seperti tidak membaca dokumentasi, tersilap pada konsep asas, atau perkara remeh yang kita tidak perasan. Sistematik pula adalah kita dapat mengesan satu persatu punca permasalahan tersebut dan merekod status masalah supaya tidak berlaku pengulangan masalah akibat daripada pendekatan yang tidak teratur dalam menyelesaikan masalah.

Penulis mencadangkan pembaca untuk cuba menggunakan Obsidian ataupun Notion untuk mengaplikasikan teknik ini.

Mencari Kebenaran Tunggal dan Mengesahkan Andaian

Salah satu proses pembelajaran adalah apabila kita yakin dengan kebenaran sesebuah fakta tersebut melalui bukti dan timbang tara dalam berfikir. Perkara ini normal, namun adakalanya sikap "yakin" ini terbawa-bawa kepada seorang pengaturcara apabila menghadapi pepijat dalam kod ataupun pandangan berbeza yang datang di kemudian hari. Ini tidak akan berlaku jika kita berada dalam skeptik yang terkawal dan tidak mudah-mudah menjadikan ia sebagai sebuah perkara tuntas.

Kita boleh skeptik dengan 2 cara iaitu dengan mengesahkan pengangan kita melalui bukti daripada sumber terpercaya yang menjadi kebenaran tunggal (iaitu dokumentasi) ataupun dengan cara mencabarnya dalam bentuk hipotesis. Hipotesis boleh kekal dalam bentuk hipotesis selagimana ia tidak disandarkan pada bukti, dan juga boleh runtuh jika dicabar dengan hipotesis yang lain yang disandarkan pada bukti. Dengan itu, kebenaran tadi tidak akan bersifat asbolut, terus disahkan, dan kita akan lebih fleksibel untuk menerima perkara baru.

Dalam aspek pengaturcaraan pula, kita boleh menggunakan testing sebagai alat untuk menguji kod yang telah ditulis supaya ia mengikut spesifikasi yang diharapkan (juga kebenaran tunggal). Disebabkan itu, pendekatan Test Driven Development (TDD) adalah sangat penting supaya kod yang kita hasilkan tidak tergelincir daripada objektif yang telah kita tetapkan lantas perasaan skeptik dalam diri kita dapat disucikan.

Alat adalah Alat, yang Penting Fungsinya

Masalah yang selalu terjadi terutamanya kepada pemula adalah, terlalu kerap berfikir dan bertanya "Mana yang lebih baik?"

Sehinggakan akhirnya tidak mula bertindak dan berbuat apa-apa. Ini barangkali disebabkan lewah fikir, terlalu risau dan takut mengambil risiko (walaupun risiko masih dalam kawalan). Walhal apa yang dibandingkan itu mempunyai objektif akhir yang sama, namun disebabkan terlalu membanding-banding, akhirnya masa terbuang begitu sahaja tanpa apa apa tindakan.

Umpama kita ingin bergerak ke suatu destinasi dan dihadapan kita terdapat 2 buah basikal, iaitu basikal merah dan biru. Kedua-duanya mempunyai objektif yang sama iaitu membawa kita ke titik destinasi. Basikal merah dan biru mungkin mempunyai sedikit perbezaan namun tidaklah terlalu ketara. Namun, jika kita terlalu runsing memikirkan basikal mana yang lebih baik, yang lebih mudah, yang lebih lancar, tidak akan membuatkan kita jatuh ketanah dan terluka, akhirnya sampai esok tidak akan sampai ke destinasi akhir! Seolah-olah kita takut untuk jatuh daripada basikal tersebut, walaupun hakikatnya kita belum pun mula mengayuh lagi.

Jika anda mengalami masalah ini, penulis cadangkan berfikir dengan cara - nothing to lose. Mulalah dengan mana-mana alat sekalipun. Kalaupun kita silap memilih alat, kita telah mempelajari sesuatu daripada kesilapan tersebut. Setelah membuat silap, kita bergerak dan cari solusi yang lain. Hidup ini memang begitu, tak semua yang kita harapkan menjadi, maka kita belajar.

Tetap Belajar

Dalam dunia teknologi yang bergerak semakin pantas, kita tidak ada pilihan lain untuk tetap belajar dan belajar. Semangat ini penting atas beberapa sebab yang saya rasakan amat mustahak untuk dinyatakan.

Pertama, tetap belajar mengasah skil menyelesaikan masalah. Semakin banyak kita belajar, semakin banyak kita buat silap, semakin tinggi daya dan kebolehan kita untuk menghasilkan jalan penyelesaian sama ada pendek atau panjang.

Kedua, tetap belajar menjadikan kita manusia yang tidak mudah selesa dengan sesuatu. Mempelajari sesuatu bermakna kita juga perlu menghadapi cabaran-cabaran yang baharu. Cabaran ini membuatkan kita tidak selesa namun dalam konotasi yang positif. Proses "tidak selesa" bermakna otak sedang mencerna sesuatu. Seperti kita melihat pupa rama-rama yang bersungguh-sunggu melepaskan diri daripada kongkongan pupa, yang akhirnya di akhir proses tersebut menjadikan ia seekor rama-rama yang indah, seperti itulah kita akan mencapai tahap "Ohh..." dimana kefahaman tercapai.

Akhir sekali, tetap belajar menjadikan kita lebih merendah diri dalam apa-apa bidang sekalipun. Biasa kita mendengar ungkapan "Semakin kita belajar, semakin banyak yang kita tidak tahu." (Dunning-Kruger Effect). Sikap rendah diri ini menyebabkan kita akan lebih laparkan ilmu pengetahuan dan terus menerus memperbaiki diri semasa ke semasa.

Kesimpulan

Cara fikir yang dinyatakan diatas tidak mampu dibentuk dalam masa sehari. Ia memerlukan proses, yang mungkin memakan masa berbulan mahupun bertahun. Namun penting untuk kita fikirkan dan tanam dalam diri supaya ia dapat membantu kita menjadi seorang pengaturcara yang lebih baik, suatu hari nanti.

Sumber

  1. The Pragmatic Programmer - Andrew Hunt & David Thomas

  2. 5 Ways First Principle Thinking Helps You Code Better - ArjanCodes Channel

  3. Obisidian