"Halo, Amigo!"

"Hai, Bilaabo!"

"Dina iki aku arep ngomong babagan carane program biasane dikembangake."

"Ing abad kaping 20, nalika IT modern isih cilik, kabeh wong mikir yen pemrograman kaya konstruksi utawa manufaktur."

"Biasane kaya mangkene:"

" Pelanggan bakal nerangake jinis program sing dibutuhake - apa sing kudu ditindakake lan kepiye carane."

" Analis bisnis bakal ngrungokake dheweke lan nggawe dhaptar lengkap syarat program adhedhasar apa sing dikandhakake."

"Banjur manajer proyek bakal mbagi syarat kasebut dadi tugas, lan uga bakal nemtokake programer sing bakal nindakake tugas lan urutan apa."

"Banjur para programer bakal kerja. Kadhangkala dheweke bakal kerja pirang-pirang taun (!)."

"Nalika rampung, program kasebut diwenehake marang penguji."

" Para penguji bakal ngliwati saben syarat program kanggo verifikasi manawa wis ditindakake lan program kasebut bisa ditindakake."

"Yen ana masalah, penguji bakal nyathet bug lan dikirim menyang programer."

"Banjur programer bakal ndandani kewan omo lan ngirim program tetep bali menyang penguji. Lan siklus bakal mbaleni."

"Nalika kewan omo utama didandani, program kasebut diwenehake menyang pelanggan."

"Lha pancen ngono?"

"Inggih, mesthi, aku wis nyederhanakake akeh, nanging cukup cedhak karo cara sing ditindakake."

"Lan proyek bisa mbutuhake setengah taun nganti rong taun kanggo rampung?"

"Kadhangkala yen pangembangan proyek pancen dawa, mula bakal dipecah dadi rilis sing kapisah. Saben 3-6 sasi, pangembang kudu nggawe bagean tartamtu saka fungsi program, nyoba, ndandani kabeh kewan omo, lan nuduhake menyang pelanggan."

"Kaping pisanan, supaya dheweke bisa nuduhake kesan. Lan kapindho, lan sing luwih penting, supaya dheweke tetep mbayar pangembangan program kasebut."

"Terus mbayar?"

"Saiki, pembangunan asring 2-3 kaping luwih suwe tinimbang sing direncanakake. Lan amarga programer asring dibayar saben jam, program kasebut dadi 2-3 kaping luwih larang. Apa maneh keuntungane uga suda. Sawise kabeh, apa sing dikarepake pelanggan saiki. kanggo $100.000 bisa uga ora dibutuhake sajrone 3 taun - utamane kanthi rega kaping telu."

"Apa pelanggan kerep ora gelem mbayar?"

"Yep. Dheweke banjur miwiti nambah paukuman ing kontrak, nanging iki ora nambah kahanan. Pangembangan piranti lunak terus-terusan. Lan ora ana sing bisa nindakake apa-apa sanajan dheweke pengin."

"Nanging kenapa?"

"Inggih, pisanan, sethitik banget dikenal ing tahap planning. Luwih asring tinimbang ora, ing wiwitan, ora ana sing bisa prédhiksi masalah sing bakal diadhepi programer."

"Nanging programer sing berpengalaman kudu bisa ngerteni kabeh, ta?"

"Apa sampeyan bisa ndeleng manawa pemrograman minangka profesi sing unik."

"Pegawe biasa kerep nindakake tugas sing padha bola-bali. Tukang jam nggawe jam tangan, masak, guru mulang, dokter nambani, lsp."

"Saben profesional iki pancen nindakake perkara sing padha saben dinane. Akibate, dheweke wiwit dadi luwih apik lan luwih apik ing pakaryane."

"Ing program, pendekatan beda. Sanalika programmer ngadhepi tugas sing padha saben dina, dheweke nulis fungsi, modul, utawa program kanggo nindakake, lan ora bakal bali maneh."

"Saben programmer biasane ngrampungake saben tugas sapisan sajrone urip."

"Soko kaya ilmuwan utawa insinyur desain sing nggawe barang."

"Ah, apa peran sing paling penting ing proyek?"

"Hmm, aku kudu mangsuli kepiye. Gampang ngomong sing paling penting, nanging ngerteni sing paling penting angel."

" Tugas utama tester ( Q uality  A ssurance, QA )  yaiku ngawasi status program lan nglaporake kewan omo kanthi cepet. Sing luwih cepet tester nemokake bug, luwih akeh sing bisa didandani.  Penguji sing apik mengaruhi kualitas produk tinimbang programmer sing apik ."

"Yagene programmer ora bisa nyoba program dhewe. Sawise kabeh, apa padha ora ngerti luwih saka tester apa lan ora bisa?"

"Programmer sing apik mung ora bisa dadi penguji sing apik. Programmer ngerti carane program kasebut bisa digunakake kanthi apik, mula dheweke mesthi nggunakake kanthi cara tartamtu. Beda karo pangguna biasa sing nggunakake program kasebut, nanging pengin. "

"Kajaba iku, panguji ora nyoba apa sing durung bisa digunakake. Penguji nguji fungsi utawa bagéan saka program sing dikandhakake programmer wis bisa digunakake kanthi sampurna."

"Lan nalika panguji nemokake akeh kewan omo ing fungsi kasebut, lan programer mbenerake, mula produk kasebut bakal nyedhaki kesempurnaan."

" Tugas utama programmer ( S oftware  D eveloper  E ngineer,  D eveloperSDE ) yaiku ngleksanakake fungsi anyar. Utawa, luwih gampang, kanggo nindakake tugas sing ditugasake marang dheweke. Nalika programer ditugasake tugas kanthi fitur anyar. , dheweke nindakake. Nalika ditugasake bug, dheweke ndandani bug."

"Nanging kadhangkala ana tugas sing luwih tantangan, umpamane, nggawe arsitektur kanggo program utawa bagean kasebut. Sing luwih apik arsitektur sing diusulake, luwih gampang bakal ditindakake ing mangsa ngarep."

"Masalahe yaiku arsitektur kudu dipilih ing wiwitan, nanging ora nganti sampeyan ana ing tengah-tengah pembangunan sing jelas yen sampeyan milih arsitektur sing bener."

"Kajaba iku, yen arsitektur sukses lan program dadi apik, banjur customer bakal pengin nggunakake minangka basis kanggo versi anyar saka program."

"Iki sing dakkarepake."

"Apa wae arsitektur sing sampeyan pilih, mesthi ana akeh owah-owahan, tambahan, lan fitur-fitur anyar sing ora dianggep arsitektur."

"Iki conto sing apik."

"A customer njaluk sampeyan mbangun bangunan 5-lantai, supaya sampeyan ngrancang arsitektur lan mbangun omah."

"Banjur pelanggan njaluk nambah crita liyane, banjur liyane, lan liya-liyane."

"Nanging tembok lantai siji ora dirancang kanggo bobot sing akeh, lan uga pondasi. Dadi kabeh kudu didandani maneh."

"Nanging sawise bangunan 5 lantai rampung, yen pelanggan langsung mutusake yen dheweke pengin bangunan 50 lantai?"

"Iku bakal luwih gampang kanggo ngrusak struktur sing ana lan mbangun kabeh saka ngeruk ..."

"Nanging aku duwe saran kanggo sampeyan babagan arsitektur."

"Arsitektur aplikasi kudu, pisanan lan utomo, fleksibel, kang tegese sampeyan ora kudu miwiti saka ngeruk yen sampeyan arep kanggo redo setengah saka aplikasi. Jinis arsitektur biasane disebut fleksibel lan modular . "

" Tugas utama manajer proyek yaiku nggawe keputusan. Manajer proyek yaiku sing ndeleng gambaran gedhe lan nggawe keputusan adhedhasar perspektif kasebut."

"Upamane sajrone pangembangan dadi jelas yen tugas tartamtu ora bakal rampung kaya sing direncanakake. Manajer proyek banjur bisa: "

" a)  nyoba rembugan karo pelanggan kanggo ngowahi tugas"

" b)  nyedhiyakake luwih akeh wektu kanggo tugas"

" c)  nggawa programer sing luwih berpengalaman saka proyek liyane."

"Lan ana akeh kemungkinan liyane."

"Saben pilihan mbutuhake sampeyan ngorbanake apa wae, lan tugas manajer yaiku nyuda kerugian total saka pengorbanan kasebut. "

"Contone, umpamane pesaing nyolong programmer utama kanthi menehi dhuwit kaping pindho."

"Manajer proyek bisa:"

" A)  ora nindakake apa-apa. Programmer bakal lunga, lan proyek kasebut bakal tiba lan kena denda."

" b)  tikel gajine. Banjur kabeh wong ing tim uga pengin mundhakaken. Yen sampeyan menehi kabeh dhuwit liyane, banjur biaya project bakal mundhak lan bisa dadi ora duwe bathi.

" c)  sawetara opsi liyane sing sampeyan pikirake."

"Aku weruh."

"Kanthi manajer proyek sing ala, tim sing apik biasane nambah proyek, nanging ora mesthi."

"Manajer sing apik karo tim programer rata-rata bakal ngrampungake proyek luwih cepet tinimbang manajer sing ala karo tim programer sing apik."

"Aku weruh."

"Oke, ayo istirahat sedhela, banjur diterusake."