Bagaimana saya bisa menilai apakah suatu proyek sangat kompleks atau jika saya lambat dalam mengambilnya?

16

Saya membuat sedikit kemajuan pada proyek besar. Sumbernya masif, banyak lapisan objek, kode makaroni, grafik berlian ganda dari banyak warisan, fitur setengah matang membeku ketika penulis asli pergi, dan tidak ada yang tahu mengapa banyak potongan itu dirancang dengan cara mereka.

Saya kira setiap programmer yang kompeten akan memiliki masalah mencari tahu semuanya dengan cukup baik untuk memperbaiki bug, menyelesaikan hal-hal setengah matang dan menambahkan fitur baru. Namun, saya menduga saya akan lebih lambat daripada programmer biasa.

Bagaimana saya menilai apakah sumbernya sangat buruk dan saya hanya melakukan sebaik yang bisa dilakukan orang lain, dibandingkan dengan sumbernya yang khas untuk proyek seperti ini dan saya hanya lamban atau kurang terampil?

Sayang
sumber
11
Memahami kode orang lain adalah tindakan empati. Lupakan seberapa cepat Anda melangkah dan lupakan betapa bodohnya orang-orang yang menulis kode itu. Mencari tahu adalah latihan dalam fleksibilitas. Anggaplah sumbernya luar biasa buruk, dan Anda terlalu banyak keterampilan, dan kembali bekerja dan berhenti bermain-main di forum-forum bodoh ini. Yang berlaku untuk saya juga ... Saya punya kode untuk bertengkar.
Dan Rosenstark
2
Terutama lupakan "sekelompok ..." ketika orang tersebut adalah bos, bos bos, bos bos, atau keponakan bos bos, dll!
DarenW
2
Ah, "kenapa" yang hilang. Ingatlah untuk meletakkannya di saat Anda menemukannya.
@ DarenW - ini kode spageti, bukan kode makaroni: D (Maaf, saya harus).
Jas
1
@Jas google untuk kode makaroni ... ada lebih banyak jenis pasta daripada hanya spaghetti ;-)
Jürgen A. Erhard

Jawaban:

6

Satu-satunya cara untuk memutuskan pertanyaan itu adalah untuk mendapatkan lebih banyak programmer untuk mengatasi masalah yang sama dan melihat apakah mereka lebih baik.

Ini tentu saja jarang praktis, tugas itu jatuh ke diri Anda yang baik dan memberikan Anda melakukan yang terbaik yang dapat Anda lakukan, meneliti di mana pengetahuan Anda mengecewakan Anda. Memisahkannya di mana kerumitan rubah Anda dan menjaga siapa pun yang peduli mendapat informasi tentang kemajuan Anda. Maka saya tidak akan khawatir dan terus melakukannya.

Orbling
sumber
16

Pertama-tama, saya tidak akan menghabiskan terlalu banyak waktu khawatir bahwa Anda mungkin "berpikiran lambat atau kurang terlatih." Beberapa proyek sulit untuk dipahami, dan proyek-proyek besar sering membutuhkan waktu cukup lama untuk mempercepatnya. Berpikir bahwa Anda "bodoh" atau tidak melakukan tugas itu tidak akan membantu Anda dengan cara apa pun.

Sepertinya Anda perlu bantuan dengan kode, jadi pertimbangkan sumber daya Anda. Apakah Anda memiliki akses ke coders asli? Jika tersedia, mereka dapat menjadi sumber informasi yang baik. Dokumentasi apa yang tersedia? Jika dokumentasi langka, cabut buku catatan dan mulailah membuat dokumentasi pribadi Anda sendiri.

Gagasan besar di sini adalah bahwa Anda harus mengharapkan proses ini memakan waktu, dan semakin sedikit waktu yang Anda habiskan untuk secara mental memukul diri sendiri, semakin banyak energi yang Anda miliki untuk menganalisis kode dan mencari tahu. Semoga berhasil!

Zeke
sumber
5
+1 Diperlukan waktu hingga 6 bulan untuk benar-benar mulai mengetahui beberapa sistem kompleks yang cukup untuk menjadi mahir di dalamnya. Sekalipun basis kode "baik", pengembang dan tim yang berbeda memiliki gaya yang berbeda, dan kadang-kadang hanya membutuhkan waktu untuk mendapatkan posisi Anda.
Ryan Hayes
3
@Ryan, dan 6 bulan setelah itu, Anda menjadi bagian dari masalah sendiri :)
Benjol
@Benjol Yap, saya pernah ke sana.
Ryan Hayes
FWIW, ketika saya sudah berada di kapal ini (beberapa kali!), Saya merasa lebih bermanfaat untuk sering istirahat daripada hanya duduk dan merendahkan kode. Ketika Anda beristirahat, bangun dan secara fisik menjauh dari komputer. Regangkan, lihat ke luar jendela, pikirkan apa yang baru saja Anda lihat, lalu kembali dan lihat lagi. YMMV, tetapi saya menemukan diri saya membuat kemajuan yang jauh lebih baik ketika saya melakukan itu. Semoga berhasil!
TMN
+1 untuk membuat dokumentasi pribadi Anda sendiri. Ketika saya melakukan pekerjaan ini, saya menemukan membuat banyak catatan (baik dalam kode, atau di atas kertas) dan menggambar banyak diagram (yang biasanya hanya berarti bagi saya pada saat itu) membantu. Nilai tambah tambahan untuk semua itu adalah penguatan konsep dalam pikiran Anda sendiri.
Andy Hunt
6

Pernah melihat kurva belajar. Curce pembelajaran

Teori mengatakan bahwa awalnya memang butuh waktu untuk melangkah. Caranya adalah dengan melewati step up point dengan cepat. Jika Anda macet secara teratur maka mintalah bantuan dari manajer Anda atau setidaknya beri tahu dia tentang masalah yang Anda hadapi. Selama Anda ok untuk jadwal tidak ada masalah.

Manoj R
sumber
2

Membedahnya, sepotong demi sepotong

Situasi Anda sangat umum, "memahami" membutuhkan waktu seperti yang telah disebutkan orang lain.

Apa yang saya temukan adalah bahwa jika Anda menanganinya "satu per satu" , terlepas dari seberapa kompleks proyek Anda akan mengetahuinya. Anda hanya harus logis tentang hal itu.

Mulai dengan mengucapkan tombol, gali kode sumber , masukkan breakpoint, lihat langkah demi langkah apa yang terjadi. Ada dua hal yang perlu Anda penuhi:

  • Ikhtisar tingkat tinggi.
  • Seluk beluk detail yang menerapkan fungsi yang diinginkan di atas.
  • begitu Anda memahami bagian-bagiannya, ulangi faktor itu.
Malam gelap
sumber
"Satu bagian pada satu waktu" mungkin bekerja pada proyek lain, tetapi ini memiliki begitu banyak kelas yang berasal dari yang lain, kelas teman, penunjuk ke jeroan masing-masing, ada beberapa bagian yang dapat dipahami secara mandiri.
DarenW
Saya yakin ini adalah labirin yang rumit (sesuatu yang telah "tumbuh" seiring waktu). Namun jika Anda mulai dengan satu fungsi, apakah Anda memberi tahu saya bahwa Anda tidak dapat melacaknya ujung ke ujung?
Darknight
Menelusuri aliran data, atau urutan peristiwa ketika misalnya pengguna mengklik tombol, ternyata tidak mungkin.
DarenW
1

Bagaimana dengan mengambil pandangan berbeda: Apa yang perlu Anda ketahui tentang kode ini dan apakah Anda memiliki cara untuk mengukurnya? Misalnya, jika Anda mencoba untuk memperbaiki bug, itu mungkin memerlukan jenis penyelaman yang berbeda daripada jika Anda mencoba untuk memindahkan kode dari satu bahasa ke bahasa lain, misalnya beralih dari VBScript ke C #. Jika Anda mencoba untuk mendapatkan semua persyaratan dari kode saat ini, itu mungkin memakan waktu cukup lama meskipun saya menduga kebanyakan orang akan memiliki masalah seperti itu.

JB King
sumber
Saya suka komentar ini. Seseorang harus memiliki tujuan spesifik dan bekerja untuk menyelesaikan tujuan (dan hanya itu). Jika tidak, Anda akan tersesat di dalamnya - Sangat mirip peta.
NoChance
1

Ketika belajar sesuatu yang baru, banyak siswa akan berpikir, “Sial, ini sulit bagi saya. Saya ingin tahu apakah saya bodoh. ”
Sebelum melangkah lebih jauh, yakinkan diri Anda bahwa Anda tidak bodoh dan bahwa ada beberapa hal yang sulit. ...

Tuan Aaron Hillegass dengan kata-kata yang cerdas.

Anda tidak bodoh, Anda tidak lambat, dan Anda tidak kekurangan keterampilan. Saya berada di kapal yang sama, saya telah masuk ke peran baru dan basis kode yang ada sangat besar dan menunjukkan tanda-tanda berulang kali dikembangkan, perlu waktu berminggu-minggu untuk sampai ke titik di mana saya merasa seperti mendapatkan dekat dengan kecepatan penuh. Bayangkan proyek itu seperti mempelajari seluruh bahasa baru, itu tidak terjadi dalam semalam, tetapi membutuhkan kesabaran.

Nicholas Smith
sumber