Blink Tag html - http://www.blinkingtextlive.com

Monday, March 1, 2010

Bagaimana Menjadi Seorang Pengaturcara Yang Baik

Ini adalah artikel yang aku rasa baik untuk dikongsi bersama.

Bagaimana untuk menjadi seorang pengaturcara yang baik

Kemungkinan saya adalah penulis yang kurang baik, tetapi sekurang-kurangnya saya telah mencuba untuk menulis. Saya mendapat ilham untuk menulis untuk beberapa sebab yang saya tidak dapat jelaskan. Di hadapan laptop buruk saya dan berbekalkan perisian HTML, saya mula menulis. Mungkin saya menulis untuk meluahkan segala yang terpendam dalam diri ,pengalaman yang saya rasa patut berkongsi dengan semua. Dunia pengaturcaraan yang telah merubah diri saya dan prinsip yang saya pegang untuk sekian lama.

Kali ini saya terasa saya akan menulis bagaimana untuk menjadi seorang pengaturcara.
Saya mula belajar pengaturcaraan apabila masuk ke universiti (Universiti Teknologi Malaysia, 1996). Pada ketika itu (1997), saya tidak suka apa yang saya lihat dalam dunia pengaturcaraan, C,C++ dan Assembly language terlampau memeningkan, disamping itu hasil output yang hanya keluar di paparan DOS terlampau mudah sehingga saya tidak berminat untuk melihat hasil output saya. Jadi, bagi kebanyakan subjek pengaturcaraan, saya hanya akan meniru dan mengubah kedudukan fungsi ke atas dan ke bawah dengan anggapan pensyarah tidak akan perasan kesamaan aturcara saya dengan rakan-rakan saya. Saya tahu apa yang saya buat tidak bagus dari segi etika kehidupan. Namun, hidup tetap berjalan dengan baik bagi diri saya. Pada tahun itu juga, saya baru mengenal dunia Internet dan satu perkataan yang saya tahu dari rakan-rakan saya. Rakan-rakan saya mula heboh apabila masuk ke makmal menceritakan keseronokan bermain Hotmail. Pada fikiran saya, hotmail itu satu permainan Internet yang menarik dan saya pun memberanikan diri untuk bertanya kepada rakan-rakan yang sudah sampai tahap yang tinggi dalam permainan 'Hotmail'. Pendaftaran pertama akaun Hotmail saya dengan id armrun@hotmail.com (sekarang saya tidak lagi menggunakan akaun tersebut).

Itulah detik pertama saya mulakan minat saya terhadap internet, IRC (Internet Relay Chat), nuke, eggdrop, bnc, linux, web dan seterusnya terhasilnya diri saya sekarang sehingga menghasilkan 'bebelan' pertama saya dalam dunia internet. Minat dalam dunia pengaturcaraan bukan bermula secara tiba-tiba, saya mula terlibat dalam rekaan halaman web dan mula berminat dengannya, tiada pengaturcaraan pada waktu itu. Terdengar dari beberapa orang rakan bahawa Perl skrip boleh digunakan untuk membuat satu yang dinamik seperti buku tetamu dan forum (Ultraboard
2000) . Saya masih ingat lagi mengedit dan mengubah beberapa skrip Perl yang banyak dan memeningkan, cuba anda bayangkan mempunyai 100 fail yang mempunyai 1000 baris untuk mengubah, dimanakah ayat 'Welcome' kepada 'Selamat Datang' (ayat ini ditambah untuk kesedapan pembaca . Ini menyebabkan saya tidak tergerak lagi untuk melibatkan diri dalam pengaturcaraan, walaupun mungkin ada pengaturcara C/C++ dan Java tidak menganggap pengaturcaraan web adalah bukan pengaturcaraan, percayalah bahawa pengaturcaraan web sama mencabar dan menarik seperti pengaturcaran desktop, kernel dan lain-lain (masukkan lain-lain kepada pengaturcaraan yang
anda rasakan mencabar). Minat saya bermula dalam bidang pengaturcaraan apabila saya terlibat dalam tesis kursus Kejuruteraan Elektrik (Telekomunikasi) bertajuk Digital Signature Standard untuk membuat satu perisian yang menggunakan satu algoritma yang bernama Digital Signature Algorithm dan bahasa C sebagai bahasa
pengaturcaraan. Hati saya berbelah bahagi, buku yang pertama saya beli untuk membuat rujukan adalah Applied Cryptography (Bruce Schneir) keluaran John Wiley & Son, Inc yang saya akui tidak pernah habis membacanya, dan mungkin rakan-rakan yang lain lebih banyak meminjamnya untuk membuat rujukan berbanding dengan saya ( buku itu sekarang ada di sebelah saya dengan sebahagian dari hujungnya dimakan lipas . Semester pertama saya berjaya menghabiskan tesis saya dengan teori pengaturcaraan dan teori 'encryption' bagi Digital Signature Standard, tiada pengaturcaraan, walaupun kesimpulan dalam tesis tersebut saya akan menggunakan Borland C++ sebagai Integrated Development Environment (IDE) saya. Tiada bayangan saya akan mulakan pengaturcaraan, tiada rakan-rakan yang berminat dalam pengaturcaraan untuk saya bincang dan pada semester yang seterusnya saya masih dalam dunia khayalan saya iaitu internet. Dalam IRC saya berbincang (mungkin lebih kepada berbual kosong) tentang satu bahasa pengaturcaraan web iaitu PHP (http://www.php.net) , rakan saya mengenalkan kepada saya bagaimana menggunakan include() untuk menghasilkan halaman web yang mudah dan saya merasakan inilah bahasa yang saya cari, hanya memerlukan include() dan hasilnya lebih cantik dari penggunaan banyak scanf dan printf yang hanya menghasilkan tulisan dalam skrin hitam.

Pada semester tersebut (1999/2000) , saya terus terbayang satu sistem pembelajaran maya, dimana semua pelajar, pensyarah, pengurus sebuah universiti boleh menggunakan sistem ini untuk berurusan. Saya terus berjumpa dengan penasihat tesis saya lalu mencadangkan apa yang berlegar dalam pemikiran saya. Beliau membenarkan saya menggantikan projek saya dengan projek Digital Signature Standard yang beliau rasa lagi mudah dari apa yang berlegar dalam pemikiran saya. Saya rasa ini kerana bahasa 'jargon' yang saya guna iaitu Linux, PHP dan MySQL masih baru maka (baru == susah) (saya masih rasa bersyukur kerana pensyarah ini membenarkan saya merealisasikan apa yang belegar pemikiran saya). Projek itu berjalan dengan baik, dengan internet dan rakan-rakan didalamnya membantu saya dengan baik. Pada semester itu saya berjaya menolong 2 orang rakan saya membuat tesis yang hampir sama tajuk dengan saya dan saya letakkannya di bawah Rangkakerja(Framework) Fakulti Maya saya dan mereka berjaya menamatkan kursus mereka. Saya masih mempunyai
beberapa subjek untuk dihabiskan kerana kegagalan untuk meluluskan diri dalam beberapa subjek yang saya kurang berminat walaupun bukan subjek pengaturcaraan (baiklah saya mengaku, saya tidak suka semua subjek yang ada pada penghujung
kursus saya ;P). Sebelum saya menamatkan pengajian, saya telah berjaya menghasilkan 4 lagi tesis dan kesemuanya menggunakan bahasa pengaturcaraan PHP.

Semua perkara yang saya tulis di atas mungkin tidak ada kena mengena dengan apa yang saya akan simpulkan di bawah dan antara sebab terhasilnya artikel a.k.a bebelan saya, tetapi saya bertangunggjawab untuk menunjukkan saya berhak untuk menulis apa yang saya simpulkan di bawah. Saya akan menulis kesimpulan tentang apa yang telah saya belajar dari pengaturcaraan dan apakah sikap yang perlu ada dalam diri setiap pengaturcara.


i. Buat kajian sebelum bertanya

Dari apa yang saya dapat dari pengguna-pengguna baru di internet, mereka sentiasa bertanya benda-benda yang terlampau asas dalam forum. Contohnya: Macam mana nak belajar PHP ? Apa itu Linux ? dan saya rasa ini adalah satu sikap yang kurang
baik. Mungkin kerana anda merasakan soalan tersebut patut dijawab kerana anda baru dalam dunia pengaturcaraan, cuba bayangkan jika ada 1000 orang bertanyakan soalan yang sama dan pengaturcara yang lain perlu menulis jawapan yang sama untuk kali ke 1000 ? Bukan mereka sombong atau sibuk, tetapi prosedur yang saya rasa patut sebelum anda mulakan pertanyaan dalam forum, mailing list dan IRC
adalah:

a. Gunakan enjin carian (ini akan diterangkan dengan lebih lanjut dalam kesimpulan
ketiga)

b. Catatkan apa yang patut dari hasil carian anda.

c. Cuba sedaya upaya dalam kemampuan anda untuk mula mengaturcara

d. Lakukan kesilapan

e. Mulakan bertanya di forum, senarai e-mel (mailing list) terhadap kesilapan
anda.

Mungkin anda pernah bertanyakan soalan asas terus kepada forum dan berjaya untuk menjawab soalan yang dikehendaki, tetapi percayalah, pengaturcara lain akan lebih menghargai anda jika anda mengikut prosedur di atas. Jadi kata kunci sebelum bertanyakan soalan adalah lakukan kesilapan, dan inilah yang diperlukan oleh orang lain untuk mula merasakan soalan anda wajar untuk dijawab.

ii. Banyakkan membaca sama ada buku, artikel atau tutorial di internet

Kesimpulan kedua walaupun hampir sama dengan kesimpulan pertama, tetapi kata kunci untuk kesimpulan kedua adalah membaca. Membaca adalah kunci segala ilmu. Banyakkan membaca, buku, artikel, autobiografi, komen dan perbincangan, kerana untuk masuk ke dalam kandang kambing, anda perlu mengembik dan kandang kerbau anda perlu menguak jadi jika anda membaca anda akan dapat merasakan

a. Anda adalah sebahagian dari pengaturcara, walaupun anda bukan pengaturcara.
b. Pengetahuan dari segi pembacaan anda akan membolehkan anda berfikir lebih
dinamik
c. Segala pembacaan yang pada permulaan tidak logik, akan menjadi semakin logik
apabila tahap pengaturcaraan anda meningkat.

Perlu diingatkan bahawa konsep pembacaan di atas adalah berlegar kepada dunia
pengaturcaraan. Namun, konsep ini boleh diguna pakai untuk perkara yang lain, memasak, menanam pokok dan belajar. Dari segi pengalaman saya, jika anda rasa terlampau banyak membaca, bagi diri anda 'time out' dari semua ini, bersukan, makan, menonton tv mungkin selepas itu anda akan rasa lebih segar untuk meneruskan pembacaan. Beberapa pelajaran yang saya dapat dari pengaturcara yang baik, mereka akan membaca setiap bulan satu buku sama ada sedar atau tidak sedar, dan untuk yang lebih teratur, mereka telah menyusun apakah buku yang sepatutnya mereka baca setiap bulan dalam tahun itu. Mungkin anda terfikir, mereka kaya, boleh beli buku sesuka hati, namun kita ada alternatif lain seperti perpustakaan, pinjaman dari rakan-rakan dan 'photostat' (saya tidak cadangkan konsep photostat kepada anda semua, kerana penghargaan kepada penulis terhadap titik peluh mereka dan saya rasa tiada penulis yang menjadi 'superkaya' kerana menjadi seorang penulis, jadi hargailah mereka dengan membeli yang asli tetapi siapalah saya untuk menasihat anda .


iii. Men'google'kan diri anda

Katakanlah saya fanatik, tetapi dalam dunia internet sekarang 'google' adalah
segalanya. Google (http://www.google.com)
adalah gerbang kepada sumber dalam internet, google lah bla bla bla (masukkan segala yang sepatutnya untuk orang yang mengkagumi sesuatu) . Jadi antara kunci dari kesimpulan pertama ialah carian, cari sebelum tanya. Mungkin apa yang anda ingin tanya, ada orang lain pernah bertanya soalan yang sama seperti anda. Bukan semua pengaturcara, tiba-tiba menjadi superbagus, jadi apa yang berlegar dalam fikiran anda, mungkin berlegar dalam fikiran mereka pada awal-awal pembelajaran. Newsgroup, halaman web, artikel, tutorial , kemusykilan mungkin ada di satu sudut gelap di internet yang tidak sabar untuk ditemui, maka carilah sebelum memulakan pertanyaan.

iv. Sanggup menerima konsep yang baru dalam dunia pengaturcaraan (think out
of the box)

Untuk menjadi pengaturcara yang baik, setelah anda mencapai tahap yang membolehkan anda nampak apa hasil aturcara anda. Ini mungkin menyebabkan anda rasa selamat, tidak ingin mengubah prinsip anda, anda adalah betul dan anda tidak perlukan
pendapat orang lain. Nasihat saya kepada anda, cuba buat satu benda baru setiap hari, satu benda yang anda rasa tidak boleh dilakukan. Buat sesuatu yang diluar pemikiran anda yang sebenarnya, jika sebelum ini anda menggunakan gelung while, apa kata hari ini menggunakan gelung for sebagai pertukaran dan esok mungkin anda boleh menggunakan while bersama for dan keesokan harinya anda cuba lagi benda yang anda rasa anda tidak patut cuba , tetapi nasihat ini bukanlah kepada kod anda yang stabil, tetapi apa yang dikatakan dalam dunia perisian iaitu Kajian dan Pembangunan. Kaji, bangunkan, sehingga anda rasa keserasian terhadap kod anda, mungkin anda dapat merasakan anda dan komputer bercakap bahasa yang sama. Pada tahap ini, anda sepatutnya boleh digelar superpengaturcara , walaupun begitu, anda boleh jumpa banyak superpengaturcara disekeliling anda, jadi sentiasa buat kajian dan pembangunan untuk menjadi salah satu yang terbaik.

v. Reinvent the Wheel , bagus atau tidak ?

Kesimpulan ini mungkin berbeza bagi setiap pengaturcara, tetapi apa yang saya rasakan mungkin tidak sama bagi setiap pengaturcara. Kesimpulan ini juga dibuat dengan anggapan pengaturcara menggunakan konsep open source (http://www.opensource.org) untuk membuat pengaturcaraan. Di samping membaca buku, artikel dan tutorial, pembacaan aturcara orang lain adalah salah satu sifat yang baik untuk setiap pengaturcara dan bagi saya jika anda rasakan kod pengaturcara tersebut kurang baik, berikan maklum balas kepada pengaturcara tersebut dan jika lagi baik, berikan 'patch' kepada mereka. Gunakanlah perpustakaan kod sumber (source code,library) , rangkakerja yang anda rasa boleh digunakanlah untuk projek anda. Jika ada kod yang anda rasa kurang bagus, betulkan, berikan maklum balas kepada pengurus kod atau rangkakerja tersebut. Dengan sikap ini anda sudah menjimatkan
berjam-jam masa anda untuk membangunkan kod atau rangkakerja tersebut dari sifar. Jadi, kesimpulannya adalah, pilih satu rangkakerja atau perpustakaan kod yang anda rasakan serasi, gunakan dalam projek anda, jika ada kelemahan, berikan maklumbalas kepada pengurus tersebut dan anda akan menjimatkan masa mereka serta masa anda sekali. Situasi menang-menang di atas akan menjadikan dunia ini lebih baik.

vi. Jika anda rasa anda sudah pandai, percayalah ada orang yang lagi pandai dari anda.

Pernahkan anda rasa, pada suatu ketika, anda adalah yang terbaik, anda telah berjaya mengatasi segala-galanya, anda boleh bercakap dengan komputer dengan bahasa yang sama anda adalah superpengaturcara. Sifat seperti ini sepatutnya
dibuang dalam diri anda dan sifat ini sebenarnya didapati apabila anda duduk dalam kepompong dan tidak mahu bercampur dengan orang, mungkin takut ada orang yang lagi baik dari anda. Sifat yang patut ditanam ialah, percaya ada yang lagi bijak dari anda dan anda perlu berusaha untuk mencapai satu tahap yang lebih baik setiap hari.

vii. Saya ada satu epal, anda ada satu epal, kita tukar epal, anda ada satu dan saya tetap ada satu

Jika anda ada satu ilmu dan saya ada satu ilmu, kemudian kita tukar ilmu tersebut, anda ada dua ilmu dan saya ada dua ilmu. Pertukaran ilmu atau mengajar ilmu kepada orang lain adalah satu sifat yang baik patut ada dalam diri setiap pengaturcara. Jika anda rasakan mereka lemah, ajarkan mereka, jika anda rasa diri mereka lebih
baik dari anda, belajar daripada mereka. Walau bagaimanapun situasi yang berlaku, anda tetap keuntungan dalam setiap situasi. Bagi orang yang beragama Islam pula, agama juga menggalakkan kita mengajar ilmu yang baik kepada orang lain dan pahalanya akan bercambah setiap hari sehingga hari kiamat.

viii. Dokumenkan diri anda dan kod anda - blog dan todo

Mendokumenkan diri anda bermakna, tulislah apa yang berlaku dalam dunia pengaturcaraan anda. Simpan apa sumber artikel yang anda rasa perlu untuk rujukan. Buatlah satu 'knowledge base' anda sendiri, tuliskan apa yang anda patut buat esok dan matlamat diri anda pada hari esok. Saya mendapati 'trend' baru yang dikenali sebagai blog (web log) semakin popular untuk mendokumenkan diri. Kebanyakan pengaturcara yang baik saya dapati mempunyai satu blog sendiri. Kod yang anda
buat juga perlukan dokumentasi, tulis apa yang anda buat dalam kod untuk memudahkan orang lain atau anda membacanya dikemudian hari. Sifat ini akan memudahkan diri anda dan orang lain untuk membuat rujukan serta yang penting, tidak akan membuat kesilapan yang sama seperti anda.

ix. Sistematik membawa kedamaian

Penstrukturan diri dan juga kod anda adalah penting. Susun pustaka kod anda dalam satu folder, dan grafik dalam satu folder, modul dalam satu folder yang lain. Ini akan memudahkan anda dan orang lain faham apakah kandungan kod anda.
Sifat sistematik ini mendatangkan kesan yang baik untuk jangka panjang.

x. Mudahkan aturcara anda

Kod yang mudah kadangkala mendatangkan hasil yang sama dengan kod yang panjang dan tidak difahami. Kod yang mudah juga mempunyai kurang pepijat (bug) dari kod yang kompleks. Cuba biasakan diri anda untuk menghasilkan kod yang mudah, jadikan fungsi mempunyai satu tugas yang khas dan kecil. Dalam konsep pengaturcaraan ini dinamakan modular dan semakin modular aturcara yang anda buat, semakin mudah untuk membuat perubahan jika ada satu perkara yang ingin ditambah atau dibuang.

xi. Komunitikan diri anda

Katak dibawah tempurung akan merasakan diri adalah yang terbaik. Komuniti atau kumpulan bukanlah satu geng yang berlawan dari sifat negatif, tapi sudut positif. Apabila anda bergaul dengan satu komuniti, anda akan dapat belajar perkara yang baru, walaupun mereka anda rasakan tidak sebaik anda, tetapi anda akan dapat belajar satu sifat yang baik yang anda sendiri tidak pernah terfikir sebelum ini. Mungkin anda sebelum ini tidak pernah mendokumenkan kod anda, dan anda
lihat orang lain dalam komuniti atau kumpulan mendokumenkan kod mereka, menyebabkan anda terpengaruh untuk membuat seperti mereka.


xii. Merendah diri dan tidak sombong

Ular menyusur akar tidak akan hilang bisanya. Kata bidalan ini boleh menjadi rujukan kepada pengaturcara yang merasakan diri mereka sudah mencapai tahap yang tinggi. Jika anda rasa sudah bagus, ajarkan ilmu anda kepada orang dengan gaya yang tidak menunjuk-nunjuk. Jadi lebih sensitif kepada situasi, cuba rasakan diri anda ketika anda mula belajar dulu, tiada orang yang memberikan petunjuk kepada anda, cuba jadikan perasaan mereka yang baru belajar tidak seperti anda. Sifat ini jika dikekalkan menyebabkan anda dihormati oleh orang lain.


xiii. Fokus

Jack of all trade, Master of none. Mungkin anda sebelum ini pernah belajar C/C++ dan Java, kemudian anda belajar Perl dan baru-baru ini anda baru belajar C#. Resume anda penuh dengan bahasa pengaturcaraan yang ada di dunia ini, tetapi anda tidak boleh menjadi pengaturcara yang baik dalam semua bahasa tersebut. Kebiasaan syarikat mencari orang yang pakar dalam satu bahasa lebih banyak dari mereka yang mengetahui banyak bahasa. Dengan memfokuskan diri anda dalam satu
atau dua bahasa pengaturcaraan adalah lebih baik daripada anda cuba mengetahui sedikit dalam semua bahasa pengaturcaraan. Konsep fokus ini juga menjadikan anda lebih cepat mengetahui satu bahasa, tetapi fokus ini bukan bermaksud jangan membaca yang luar dari bahasa pengaturcaraan anda, tetapi lebih fokuskan diri anda kepada satu bahasa.

xiv. Yakin kepada diri (sentiasa terbuka kepada komen)

Anda masih menanamkan sifat orang putih adalah yang terbaik dan sampai bila-bila anda tidak akan melawan mereka. Kesimpulan ini bukanlah menanamkan sifat membenci orang-orang barat, tetapi lebih kepada konsep yakin kepada diri sendiri. Kajilah sifat baik mereka, belajar dari yang terbaik untuk menjadikan anda lebih baik. Yakin kepada diri sendiri bukan bermaksud degil tetapi sepatutnya merasakan diri tidak lemah. Tiada perkataan tidak boleh patut ditanamkan dalam diri seorang yang ingin menjadi seorang pengaturcara yang baik.


xv. Hendak seribu daya, taknak seribu dalih.

Anda sibuk, anda tidak ada masa untuk memperbaiki diri dan bermacam-macam alasan lagi untuk mengelakkan diri anda dari berubah kepada yang lebih baik. Cuba cari satu masa yang sesuai, ambil 5 minit untuk membaca semula kod anda, ambil 5 minit untuk mendokumenkan diri anda. Jika anda dapat ambil masa 10 minit dalam satu hari, cuba kira berapa masa yang anda dapat ambil dalam sebulan? 10 x 30 = 300 minit, hampir 5 jam dalam sebulan anda dapat masa untuk membaca dan mendokumenkan kod anda. Kemudian cuba tambah lagi masa tersebut untuk bulan yang seterusnya, dan apa yang anda dapat selepas itu adalah semua sifat terbaik bagi seorang pengaturcara.

Apa yang saya simpulkan di atas adalah berdasarkan pengalaman saya dan ketika saya menulis artikel saya ini, saya masih dalam proses belajar dan memperbaiki diri saya. Saya harap kesimpulan untuk menjadi pengaturcara yang baik ini dapat dimanfaatkan oleh orang yang baru atau mungkin sudah lama dalam dunia pengaturcaraan.
Apa yang baik adalah datang dari Allah, dan yang buruk semua datang dari diri saya. Segala komen dan pembetulan bolehlah dihantar kepada saya di sameon@nospam.php.net.my (buangkan nospam. dari alamat emel tersebut).



Rujukan:

http://ww.php.net - Halaman web rasmi PHP
http://www.utm.my - Halaman web rasmi Universiti Teknologi Malaysia
http://www.mysql.com - Halam web pengkalan data MySQL
http://www.linux.com - Halam web Sistem Operasi Linux
http://www.perl.org - Halaman web Perl
http://www.opensource.org - Halaman web open source
http://www.php.net.my - Halaman web untuk komuniti PHP Malaysia

Lesen:
Artikel ini diletakkan dibawah GNU Free Documentation License (GFDL) . Untuk keterangan lanjut anda boleh lawat http://www.gnu.org/copyleft/.

Copyright (C) 2003 Ahmad Amran .


Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being 'Bagaimana untuk menjadi seorang pengaturcara yang baik', with the Front-Cover Texts being no Front-Cover Texts, and with the Back-Cover Texts being no Back-Cover Texts. A copy of the license is included in the section entitled GNU Free Documentation License.

No comments: