"Hai, Amigo!"

"Hai, Bilaabo!"

"Hari ini saya akan memberitahu anda tentang bagaimana program biasanya dibangunkan."

"Pada abad ke-20, ketika IT moden di peringkat awal, semua orang seolah-olah berfikir bahawa pengaturcaraan adalah seperti pembinaan atau pembuatan."

"Perkara biasanya berlaku seperti ini:"

" Pelanggan akan menerangkan jenis program yang dia perlukan — perkara yang patut dilakukan dan bagaimana ia harus melakukannya."

" Penganalisis perniagaan akan mendengarnya dan membuat senarai lengkap keperluan program berdasarkan apa yang dia katakan."

"Kemudian pengurus projek akan membahagikan keperluan ini kepada tugas, dan juga akan menentukan pengaturcara mana yang akan melakukan tugas apa dan dalam susunan apa."

"Kemudian pengaturcara akan mula bekerja. Kadang-kadang mereka akan bekerja beberapa tahun(!)."

"Apabila mereka selesai, program itu diberikan kepada penguji."

" Penguji akan meneliti setiap keperluan program untuk mengesahkan bahawa ia telah dilaksanakan dan program itu berfungsi seperti yang sepatutnya."

"Jika berlaku kesilapan, penguji akan mencatat pepijat dan menghantarnya kepada pengaturcara."

"Kemudian pengaturcara akan membetulkan pepijat dan menghantar semula atur cara tetap kepada penguji. Dan kitaran akan berulang."

"Apabila pepijat utama telah diperbaiki, program itu diberikan kepada pelanggan."

"Begitulah keadaannya?"

"Nah, sudah tentu, saya telah mempermudahkan banyak perkara, tetapi itu agak hampir dengan cara perkara itu dilakukan."

"Dan projek benar-benar boleh mengambil masa satu setengah tahun hingga dua tahun untuk disiapkan?"

"Kadangkala jika pembangunan projek itu benar-benar panjang, mereka akan memecahkannya kepada keluaran berasingan. Setiap 3-6 bulan, pembangun perlu mencipta bahagian tertentu fungsi program, mengujinya, membetulkan semua pepijatnya dan menunjukkannya kepada pelanggan."

"Pertama, supaya dia boleh berkongsi tanggapannya. Dan kedua, dan lebih penting lagi, supaya dia terus membayar untuk pembangunan program itu."

"Terus bayar?"

"Pada masa itu, pembangunan selalunya mengambil masa 2-3 kali lebih lama daripada yang dirancang. Dan kerana pengaturcara sering dibayar setiap jam, program itu menjadi 2-3 kali lebih mahal. Apatah lagi faedahnya juga berkurangan. Lagipun, apa yang pelanggan mahukan hari ini untuk $100,000 mungkin tidak diperlukan dalam 3 tahun — terutamanya pada harga tiga kali ganda."

"Adakah pelanggan sering enggan membayar?"

"Ya. Mereka kemudiannya mula menambah penalti pada kontrak, tetapi ini tidak memperbaiki keadaan. Pembangunan perisian berlarutan dan seterusnya. Dan tiada siapa boleh berbuat apa-apa mengenainya walaupun mereka mahu."

"Tapi kenapa?"

"Nah, pertama, terlalu sedikit yang diketahui semasa peringkat perancangan. Lebih kerap daripada tidak, pada mulanya, tiada siapa yang dapat meramalkan masalah yang akan dihadapi oleh pengaturcara."

"Tetapi pengaturcara yang berpengalaman sepatutnya dapat meramalkan segala-galanya, bukan?"

"Bolehkah anda melihat bahawa pengaturcaraan adalah satu profesion yang unik."

"Seorang pekerja biasa kerap melakukan kerja yang sama berulang kali. Pembuat jam membuat jam tangan, tukang masak memasak, guru mengajar, doktor merawat, dll."

"Setiap profesional ini pada asasnya melakukan perkara yang sama hari demi hari. Hasilnya, mereka mula menjadi lebih baik dan lebih baik dalam pekerjaan mereka."

"Dalam pengaturcaraan, pendekatannya berbeza. Sebaik sahaja pengaturcara menghadapi tugas yang sama setiap hari, dia menulis fungsi, modul atau program untuk melaksanakannya, dan tidak akan kembali kepadanya lagi."

"Setiap pengaturcara biasanya menyelesaikan setiap tugas sekali dalam seumur hidupnya."

"Sesuatu seperti saintis atau jurutera reka bentuk yang mencipta sesuatu."

"Ah. Nah, apakah peranan paling penting dalam projek?"

"Hmm, macam mana saya nak jawab tu. Senang nak sebut mana yang paling penting, tapi nak kenal pasti yang paling tak penting tu susah."

" Tugas utama penguji ( Q uality  A ssurance, QA )  ialah memantau status program dan melaporkan pepijat dengan segera. Semakin awal penguji menemui pepijat, semakin banyak yang boleh diperbaiki.  Penguji yang baik mempengaruhi kualiti produk lebih daripada pengaturcara yang baik melakukannya ."

"Mengapa pengaturcara tidak boleh menguji program mereka sendiri. Lagipun, bukankah mereka lebih tahu daripada penguji apa yang berfungsi dan tidak berfungsi?"

"Seorang pengaturcara yang baik tidak mampu untuk menjadi penguji yang baik. Seorang pengaturcara tahu bagaimana program itu berfungsi dengan baik, jadi dia sentiasa menggunakannya dalam cara tertentu. Berbanding dengan pengguna biasa yang menggunakan program ini walau bagaimanapun mereka mahu. "

"Selain itu, penguji tidak menguji perkara yang belum berfungsi lagi. Penguji menguji kefungsian atau bahagian program yang dikatakan pengaturcara sudah berfungsi hampir sempurna."

"Dan apabila penguji menemui banyak pepijat dalam fungsi itu, dan pengaturcara membetulkannya, maka produk itu sebenarnya semakin hampir kepada kesempurnaan."

" Tugas utama seorang pengaturcara ( S oftware  D eveloper  E ngineer,  D eveloperSDE ) adalah untuk melaksanakan fungsi baharu. Atau, secara lebih mudah, untuk melaksanakan tugas yang diberikan kepadanya. Apabila pengaturcara diberikan tugas dengan ciri baharu , mereka melaksanakannya. Apabila mereka diberikan pepijat, mereka membetulkan pepijat."

"Tetapi kadangkala terdapat tugas yang lebih mencabar, contohnya, menghasilkan seni bina untuk program atau sebahagian daripadanya. Lebih baik seni bina yang dicadangkan, lebih mudah untuk menyelesaikan sesuatu pada masa hadapan."

"Masalahnya ialah seni bina perlu dipilih pada awalnya, tetapi tidaklah sehingga anda berada di tengah-tengah pembangunan barulah jelas sama ada anda memilih seni bina yang betul."

"Selain itu, jika seni bina berjaya dan program itu ternyata hebat, maka pelanggan mungkin mahu menggunakannya sebagai asas untuk versi baharu program."

"Inilah yang saya maksudkan."

"Apa sahaja seni bina yang anda pilih, akan sentiasa ada banyak perubahan, penambahan dan ciri baharu yang seni bina tidak mengambil kira."

"Ini contoh yang baik."

"Seorang pelanggan meminta anda membina bangunan 5 tingkat, jadi anda mereka bentuk seni bina dan membina rumah itu."

"Kemudian pelanggan meminta untuk menambah cerita lain, dan kemudian yang lain, dan seterusnya."

"Tetapi dinding tingkat satu tidak direka untuk berat sebanyak itu, begitu juga dengan asasnya. Jadi semuanya perlu dibuat semula."

"Tetapi selepas bangunan 5 tingkat itu siap, bagaimana jika pelanggan segera memutuskan dia mahu bangunan 50 tingkat?"

"Adalah lebih mudah untuk merobohkan struktur sedia ada dan membina semula segala-galanya dari awal…"

"Tetapi saya ada satu nasihat untuk anda mengenai seni bina."

"Seni bina aplikasi mesti, pertama sekali, fleksibel, yang bermaksud anda tidak perlu bermula dari awal jika anda memutuskan untuk membuat semula separuh daripada aplikasi. Seni bina jenis ini biasanya dipanggil fleksibel dan modular . "

" Tugas utama pengurus projek ialah membuat keputusan. Pengurus projek adalah orang yang melihat gambaran besar dan membuat keputusan berdasarkan perspektif itu."

"Andaikan semasa pembangunan menjadi jelas bahawa tugas tertentu tidak akan diselesaikan seperti yang dirancang. Pengurus projek kemudiannya boleh:"

" a)  cuba berunding dengan pelanggan untuk mengubah suai tugas"

" b)  memperuntukkan lebih banyak masa untuk tugas itu "

" c)  membawa masuk pengaturcara yang lebih berpengalaman daripada projek lain."

"Dan terdapat banyak kemungkinan lain."

"Setiap pilihan memerlukan anda untuk mengorbankan sesuatu, dan tugas pengurus adalah untuk meminimumkan jumlah kerugian daripada pengorbanan ini. "

"Sebagai contoh, katakan pesaing mencuri pengaturcara utama dengan menawarkan wang dua kali ganda kepadanya."

"Pengurus projek boleh:"

" a)  tidak berbuat apa-apa. Pengaturcara akan pergi, dan projek itu mungkin akan ketinggalan dan dikenakan penalti."

" b)  dua kali ganda gajinya. Kemudian semua orang dalam pasukan juga akan mahukan kenaikan. Jika anda memberi mereka semua lebih banyak wang, maka kos projek akan meningkat dan ia mungkin menjadi tidak menguntungkan."

" c)  beberapa pilihan lain yang anda fikirkan."

"Saya faham."

"Dengan pengurus projek yang buruk, pasukan yang baik biasanya memanjangkan projek, tetapi tidak selalu."

"Pengurus yang baik dengan pasukan pengaturcara biasa akan hampir selalu menyiapkan projek dengan lebih cepat daripada pengurus yang buruk dengan pasukan pengaturcara yang cemerlang."

"Saya faham."

"Baiklah, mari kita berehat sebentar, dan kemudian kita sambung."