Ulah satuju pikeun ngembangkeun hiji hal nu teu ngarti

Ulah satuju pikeun ngembangkeun hiji hal nu teu ngarti

Saprak awal 2018, kuring geus nyekel posisi lead/boss/lead developer dina tim - sebut wae naon rék, tapi intina mah kuring sagemblengna tanggung jawab salah sahiji modul jeung sakabeh pamekar anu dianggo. di dinya. Posisi ieu masihan kuring sudut pandang anyar dina prosés pangwangunan, sabab kuring aub dina langkung seueur proyék sareng langkung aktip dina pembuatan kaputusan. Anyar-anyar ieu, hatur nuhun kana dua hal ieu, kuring ujug-ujug sadar sabaraha ukuran pamahaman mangaruhan kode sareng aplikasi.

Titik anu kuring hoyongkeun nyaéta yén kualitas kode (sareng produk ahir) raket patalina sareng kumaha sadar jalma anu ngarancang sareng nyerat kodeu ngeunaan naon anu aranjeunna lakukeun.

Anjeun tiasa mikir ayeuna, "Hatur nuhun, Cap. Tangtosna, langkung saé ngartos naon anu anjeun tulis sacara umum. Upami teu kitu, anjeun ogé tiasa nyéwa sakelompok monyét pikeun pencét konci sawenang-wenang sareng ngantepkeun éta." Sareng anjeun leres pisan. Sasuai, kuring nganggap yén anjeun sadar yén gaduh ide umum ngeunaan naon anu anjeun laksanakeun peryogi. Ieu bisa disebut enol tingkat pamahaman, sarta kami moal nganalisis eta di jéntré. Urang bakal ningali sacara rinci naon anu anjeun kedah ngartos sareng kumaha pangaruhna kana kaputusan anu anjeun lakukeun unggal dinten. Upami kuring terang hal-hal ieu sateuacanna, éta bakal nyalametkeun kuring seueur waktos sareng kode anu ditaroskeun.

Sanajan anjeun moal ningali hiji garis tunggal kode handap, Kuring masih yakin yén sagalana ceuk dieu téh tina pentingna hébat pikeun nulis kualitas luhur, kode ekspresif.

Tingkat kahiji pamahaman: Naha éta henteu jalan?

Pamekar biasana ngahontal tingkat ieu awal pisan dina karirna, sok sanaos tanpa bantosan ti batur - sahenteuna dina pangalaman kuring. Bayangkeun yén anjeun nampi laporan bug: sababaraha fungsi dina aplikasi henteu jalan, éta kedah dilereskeun. Kumaha anjeun bakal neruskeun?

Skéma standar sapertos kieu:

  1. Milarian potongan kode anu nyababkeun masalah (kumaha carana ngalakukeun ieu mangrupikeun topik anu misah, kuring nutupan éta dina buku kuring ngeunaan kode warisan)
  2. Jieun parobahan dina snippet ieu
  3. Pastikeun yén bug geus dibereskeun tur euweuh kasalahan regression geus lumangsung

Ayeuna hayu urang difokuskeun titik kadua - nyieun parobahan kode. Aya dua pendekatan kana prosés ieu. Kahiji nyaeta delve kana naon kahayang anu lumangsung dina kode ayeuna, ngaidentipikasi kasalahan sarta ngalereskeun eta. Kadua: move ku ngarasakeun - tambahkeun, sebutkeun, +1 kana pernyataan kondisional atanapi loop, tingali lamun fungsi jalan dina skenario nu dipikahoyong, lajeng cobaan hal sejenna, jeung saterusna ad infinitum.

Pendekatan kahiji leres. Salaku Steve McConnell ngécéskeun dina bukuna Code Complete (anu kuring kacida nyarankeun, saliwatan), unggal waktos urang ngarobah hal dina kode, urang kudu bisa ngaduga kalawan kapercayaan kumaha eta bakal mangaruhan aplikasi. Kuring ngutip tina mémori, tapi upami bugfix henteu jalan sakumaha anu anjeun ngarepkeun, anjeun kedah hariwang pisan sareng anjeun kedah naroskeun sadayana rencana aksi anjeun.

Pikeun nyimpulkeun naon anu parantos nyarios, pikeun ngalakukeun perbaikan bug anu saé anu henteu ngirangan kualitas kode, anjeun kedah ngartos sadayana struktur kode sareng sumber masalah khusus.

Tingkat kadua pamahaman: Naha éta jalan?

Tingkat ieu kahartos langkung kirang intuitif tibatan anu sateuacana. Kuring, bari masih pamekar novice, diajar eta berkat boss kuring, sarta salajengna sababaraha kali ngajelaskeun hakekat masalah ka pendatang.

Waktos ieu, bayangkeun anjeun nampi dua laporan bug sakaligus: anu kahiji ngeunaan skenario A, anu kadua ngeunaan skenario B. Dina duanana skenario, aya anu salah. Sasuai, Anjeun tackle bug munggaran munggaran. Ngagunakeun prinsip kami dikembangkeun pikeun Level XNUMX pamahaman, Anjeun ngagali jero kana kode relevan pikeun masalah, angka kaluar naha eta ngabalukarkeun aplikasi kalakuanana cara hancana dina Skenario A, sarta nyieun pangaluyuan lumrah nu ngahasilkeun hasil nu dipikahoyong. . Sagalana bade hébat.

Satuluyna anjeun ngaléngkah ka skenario B. Anjeun ngulang skenario dina usaha provoke kasalahan, tapi-reuwas! - ayeuna sagalana jalan sakumaha sakuduna. Pikeun mastikeun tatarucingan anjeun, anjeun ngabatalkeun parobahan anu anjeun lakukeun nalika ngerjakeun bug A, sareng bug B datang deui. Perbaikan bug anjeun ngarengsekeun duanana masalah. Untung!

Anjeun teu ngandelkeun ieu pisan. Anjeun geus datang nepi ka cara pikeun ngalereskeun kasalahan dina skenario A jeung boga pamanggih naha eta digawé pikeun skenario B. Dina tahap ieu, eta pisan pikabitaeun pikeun mikir yén duanana tugas geus hasil réngsé. Ieu rada logis: intina nyaéta ngaleungitkeun kasalahan, sanés? Tapi pagawéan henteu acan réngsé: anjeun masih kedah terang naha tindakan anjeun ngabenerkeun kasalahan dina skenario B. Naha? Kusabab éta tiasa dianggo dina prinsip anu salah, teras anjeun kedah milarian jalan kaluar anu sanés. Ieu sababaraha conto kasus sapertos kieu:

  • Kusabab solusina henteu disaluyukeun sareng kasalahan B, kalayan merhatikeun sadaya faktor, anjeun tiasa henteu sadar ngarusak fungsi C.
  • Aya kamungkinan yén aya ogé bug katilu anu nyumput di mana waé, aya hubunganana sareng fungsi anu sami, sareng perbaikan bug anjeun gumantung kana éta pikeun operasi sistem anu leres dina skenario B. Sagalana katingali saé ayeuna, tapi hiji dinten bug katilu ieu bakal ditingali sareng dibenerkeun. Lajeng dina skenario B kasalahan bakal lumangsung deui, tur éta alus lamun ngan aya.

Sadaya ieu nambihan huru-hara kana kode sareng bakal aya dina sirah anjeun - paling dipikaresep dina momen anu paling henteu pas. Anjeun kedah ngumpulkeun willpower anjeun pikeun maksakeun diri anjeun nyéépkeun waktos ngartos naha sadayana sigana tiasa dianggo, tapi éta patut.

Tingkat katilu pamahaman: Naha éta jalan?

Wawasan panganyarna kuring aya hubunganana sareng tingkat ieu, sareng éta sigana anu bakal masihan kuring kauntungan anu paling saé upami kuring parantos sumping kana ide ieu sateuacana.

Sangkan leuwih jelas, hayu urang nempo hiji conto: modul Anjeun kudu dijieun cocog jeung fungsi X. Anjeun teu utamana wawuh jeung fungsi X, tapi anjeun geus bébéja yén pikeun cocog jeung eta anjeun kudu make kerangka F. séjén modul nu ngahijikeun kalawan X gawéna persis kalayan anjeunna.

Kode anjeun teu acan aya dina kontak sareng kerangka F pisan saprak dinten mimiti hirupna, jadi palaksanaan eta moal jadi gampang. Ieu bakal boga konsekuensi serius pikeun sababaraha bagian modul. Nanging, anjeun ngalungkeun diri anjeun kana pamekaran: anjeun nyéépkeun sababaraha minggu pikeun nyerat kode, nguji, ngaluncurkeun versi pilot, nampi tanggapan, ngalereskeun kasalahan régrési, mendakan komplikasi anu teu disangka-sangka, henteu nyumponan wates waktu anu disepakati, nyerat sababaraha kode deui, nguji, nampi komunikasi tanggapan, ngabenerkeun kasalahan régrési - sadayana ieu pikeun ngalaksanakeun kerangka F.

Sarta di sawatara titik anjeun ujug-ujug sadar - atawa meureun ngadangu ti batur - yén meureun kerangka F moal masihan anjeun kasaluyuan jeung fitur X pisan. Meureun sakabeh waktu jeung usaha ieu nempatkeun dina sagemblengna salah mun éta.

Hal anu sami kajantenan sakali nalika damel dina proyék anu kuring tanggung jawab. Naha ieu kajadian? Kusabab kuring kungsi saeutik pamahaman naon fungsi X éta sarta kumaha patalina jeung kerangka F. Naon anu kudu dipigawé? Tanya jalma nu assigning tugas ngembangkeun jelas ngajelaskeun kumaha kursus dimaksudkeun tina aksi ngabalukarkeun hasil nu dipikahoyong, tinimbang saukur ngulang naon anu dipigawé pikeun modul séjén atawa nyokot kecap maranéhanana yén ieu téh naon fitur X perlu ngalakukeun.

Pangalaman proyék ieu ngajarkeun kuring pikeun nolak ngamimitian prosés pamekaran dugi ka urang gaduh pamahaman anu jelas ngeunaan naha urang dipenta pikeun ngalakukeun sababaraha hal. Nolak langsung. Nalika anjeun nampi tugas, dorongan anu munggaran nyaéta langsung nyandak éta supados henteu miceunan waktos. Tapi kawijakan "freeze proyék nepi ka urang meunang kana sagala rinci" bisa ngurangan waktu wasted ku pesenan gedena.

Malah lamun aranjeunna nyobian nempatkeun tekanan dina anjeun, maksa anjeun pikeun ngamimitian gawé, najan anjeun teu ngarti rationale pikeun ieu, nolak. Mimiti, terangkeun naha anjeun dipasihan tugas sapertos kitu, sareng mutuskeun naha ieu jalan anu leres pikeun tujuan éta. Kuring kedah diajar sadayana ieu ku cara anu sesah - mugi conto kuring bakal ngagampangkeun kahirupan pikeun anu maca ieu.

Tingkat kaopat pamahaman: ???

Aya salawasna leuwih diajar di programming, sarta kuring yakin Kuring geus ngan scratched beungeut topik pamahaman. Naon tingkat pamahaman séjén anu anjeun mendakan salami sababaraha taun damel sareng kode? Kaputusan naon anu anjeun lakukeun anu ngagaduhan dampak anu positif kana kualitas kode sareng aplikasi? Kaputusan naon anu salah sareng ngajarkeun anjeun pelajaran anu berharga? Bagikeun pangalaman anjeun dina komentar.

sumber: www.habr.com

Tambahkeun komentar