Haruskah seorang pengembang dipaksa untuk mengingat detail? [Tutup]

33

Banyak kali saya lupa hal-hal tentang aplikasi saya. Saya tidak menghafal nama tabel atau apa yang dilakukan kueri dan saya mencari untuk mendapatkan apa yang saya inginkan. Ketua tim saya mengatakan bahwa saya harus mengingat nama tabel yang saya gunakan.

Apakah pengembang harus menghafal nama tabel dalam database, nama kelas, dll? Dan jika jawabannya adalah "Ya, sepanjang waktu," apa yang harus saya lakukan untuk mengingat hal-hal itu?

Anyname Donotcare
sumber
27
Saya berharap saya bisa melupakan mereka.
JeffO
6
Katakan kepadanya bahwa ia harus menulis dengan tangan kiri (yang sangat mudah bagi sebagian orang dan cukup sulit bagi yang lain).
Pekerjaan
4
“Dipaksa untuk menghafal nama tabel” ??? WTF !? “Setiap orang harus mempelajari sepuluh ribu nama kolom ini di akhir minggu! Maka akan ada ujian; siapa pun yang tidak mendapatkan 100% akan dicekok paksa kaki pertama untuk kebanggaan pribadi saya dari singa gila !!! Bwahahahahaa !!!!! ”
Donal Fellows
4
Ketika saya masih mahasiswa co-op, saya bekerja dengan seorang pria yang menuntut hal itu dari saya, mengatakan kepada saya bahwa saya "membuang-buang waktu" ketika saya melihat ke atas, mengatakan, "Anda bilang Anda akan mempelajari ini!" ketika saya tidak bisa melafalkan nama tabel (dan isinya) dari memori, dan menggunakan kurangnya komitmen saya untuk menghafal nama tabel sebagai alasan untuk berhenti membimbing saya sama sekali. Saya menyimpannya dalam laporan koperasi saya.
user16764
2
Jangan menghafal, memoize.
tylermac

Jawaban:

63

Anda tidak perlu menghafal hal-hal ini secara eksplisit . Maksud saya duduk dan mempelajarinya seperti yang Anda lakukan daftar kata-kata untuk tes ejaan. Dalam contoh pertama nama harus mudah diingat dan dapat ditemukan sehingga Anda dapat menemukannya lagi tanpa terlalu banyak usaha.

Anda juga harus memiliki akses ke alat yang membantu Anda di sini dengan pelengkapan otomatis dan sejenisnya.

Dalam sistem besar lebih dari 100 tabel tidak mungkin Anda dapat benar-benar diharapkan untuk mengingat setiap nama tabel dan setiap nama kolom, namun, dengan nama yang mudah diingat, dapat ditemukan dan penggunaan biasa Anda harus menemukan diri Anda mengingat detail yang paling penting dan yang Anda gunakan setiap hari.

ChrisF
sumber
6
Setelah bekerja di aplikasi dengan tabel 4k, saya bisa membuktikan kegunaan saran ini. Penghafalan tidak membantu, konvensi proyek berhasil (terutama ketika mereka diberlakukan; dan jika tidak, Anda harus mengandalkan ingatan Anda).
Vineet Reynolds
1
Untuk membantu kemampuan menemukan, buat lembar contekan dan / atau diagram (model) dari hal-hal yang Anda butuhkan. Dengan begitu, Anda hanya perlu melihat kertas atau dokumen / gambar Anda dan dapat memindai nama tabel dan kolom yang Anda butuhkan.
Kissaki
34

Einstein berkata "jangan pernah menghafal apa yang bisa kamu cari [dalam buku]", dan aku sepenuhnya setuju.

Gunakan ingatan Anda untuk hal-hal abstrak (teknik dan prinsip pengembangan) bukan fakta yang dapat Anda temukan saat Anda membutuhkannya.

HappyCat
sumber
ya ... jangan menghafalnya, itu akan datang ketika Anda menggunakan informasi. Miliki dokumen referensi untuk hal ini setiap saat.
Newtopian
17

Memalukan untuk mengakui - Saya telah menggunakan C selama hampir 30 tahun sekarang, tetapi tidak pernah ingat bagaimana cara mendeklarasikan pointer fungsi - Saya selalu harus keluar K&R untuk memeriksa sintaksisnya.

Yang lebih memalukan, saya harus berpikir keras tentang cara kerja typedef - apakah itu:

 typedef foo int;

atau

 typedef int foo;

Ini adalah titik buta pribadi saya. Saya tidak akan khawatir jika Anda memiliki yang serupa.

Neil Butterworth
sumber
2
+1: Saya mulai pemrograman C pada tahun 1985, dan masih harus mencari cara untuk mendeklarasikan pointer fungsi. Saya menikam satu hari yang lalu dan itu berhasil, dan saya cukup senang dengan diri saya sendiri. (Saya ingat bagaimana cara mengetik ... :-)
Bob Murphy
2
Saya senang bahwa dalam bahasa saya bekerja dengan (C #) setara dengan pointer fungsi sebenarnya dapat diuraikan oleh manusia, bukan hanya kompiler.
svick
@ svick Oh, saya tidak punya masalah dengan membaca pointer fungsi, mengingat bagaimana cara menulisnya yang saya punya masalah.
Neil Butterworth
3
Saya sengaja tidak menghafal tabel prioritas C atau C ++. Saya punya mereka berguna untuk referensi instan jika saya membutuhkannya, dan saya benar-benar tidak ingin menulis kode yang akan membingungkan orang lain yang belum menghafalnya.
David Thornley
Kode yang tergantung pada aturan prioritas yang tidak jelas adalah kode yang buruk.
Gort the Robot
9

Komputer pandai mengingat sesuatu dengan tepat. Komputer juga pandai menemukan hal-hal yang sebelumnya mereka ingat.

Jadi keterampilan utamanya adalah menggunakan komputer sebagai perpanjangan memori Anda. Menulis kode bersih, dokumen, belajar menggunakan alat pencarian secara efektif, mengatur lingkungan pengembangan Anda sehingga mudah menemukan sesuatu, dll.

Efek samping yang bagus adalah Anda juga akan memudahkan orang lain membaca kode Anda.

tammmer
sumber
5

Memori itu penting

Memori yang kuat memang salah satu talenta teratas yang bisa dimiliki pengembang; sebenarnya siapa saja bisa memilikinya. Ini benar-benar hal yang istimewa dan saya iri dan mengagumi mereka yang diberkati. Ini pasti dapat membantu seseorang menjadi pengembang yang lebih kuat, pengacara, mekanik, atau (memasukkan pekerjaan pilihan di sini).

Berapa yang harus diminta?

Tapi saya tidak percaya itu adalah persyaratan yang adil untuk meminta menghafal semua hal. Saya percaya bahwa Anda akan mulai melakukan hal-hal ke memori sebagai bagian alami dari melakukan sesuatu. Inilah sebabnya mengapa membaca buku tentang bahasa dan menggunakannya dalam lingkungan produksi bukanlah hal yang sama. Ketika Anda bekerja setiap hari dengan sesuatu (beberapa orang akan menyebutnya "latihan"), Anda akan mulai membuat beberapa hal menjadi kebiasaan.

Seperti poster-poster lainnya, saya percaya menghafal bagian-bagian penting dari aplikasi memang membantu. Namun, saya tidak yakin berinvestasi dalam menghafal semuanya sepadan dengan investasi ketika Anda dapat memanfaatkan fitur seperti intellisense, yang semakin umum dalam alat modern.

Bagaimana Anda bisa meningkat?

Saya bukan ahli memori, tetapi beberapa percaya bahwa Anda memang dapat meningkatkan daya ingat melalui latihan mental seperti permainan otak (teka-teki silang, sudoku, teka-teki, dll.). Teorinya adalah bahwa otak Anda seperti otot dan jika Anda menggunakannya dengan cara yang berbeda dan melatihnya maka Anda dapat memperkuatnya.

Akan menarik untuk melihat studi tentang bagaimana hal-hal seperti melakukan permainan otak, pemrograman, dan kegiatan interaktif akan mempengaruhi otak dari waktu ke waktu. Bisakah hal-hal seperti itu membantu melawan timbulnya kehilangan ingatan yang disebabkan oleh usia atau demensia?

Bernard Dy
sumber
5

Di mana saya berasal, ada pepatah lama yang berbunyi seperti ini dalam bahasa Inggris: "Orang bodoh menghafal, orang pintar menulis". Pada dasarnya, tidak peduli seberapa baik ingatan Anda , Anda akan lupa . Anda hanya manusia. Dan ini, sebagai akibatnya, membuat mengandalkan ingatan manusia ... yah, tidak bisa diandalkan. Bahkan jika Anda berpikir Anda mengingat nama-nama tabel itu, dapatkah Anda 100% yakin? Anda hanya perlu beberapa detik untuk mencari nama tabel, tetapi Anda bisa membutuhkan berjam-jam, atau bahkan berhari-hari, untuk melacak bug yang disebabkan oleh kesalahan mengeja.

Sebagai kesimpulan, tidak, ini merupakan persyaratan konyol, terutama pada proyek-proyek besar, yang dapat memiliki ribuan tabel dan kelas.

Davor Ždralo
sumber
3

Jika itu adalah sesuatu yang sedang Anda kerjakan dan itu adalah tugas jangka panjang, maka ya, Anda harus bekerja menuju pembelajaran dan dapat mengingat berbagai nama tabel dan kolom, kelas, variabel, dan metode. Ini adalah sesuatu yang akan datang seiring waktu saat Anda bekerja dengan mereka. Anda tidak akan mempelajari semuanya dalam semalam, tetapi Anda harus berusaha untuk mengetahui sebanyak mungkin tentang sistem yang sedang Anda kerjakan. Juga, dalam sistem yang besar, tidak mungkin Anda dapat mengingat semuanya, tetapi tidak ada alasan untuk tidak belajar dan mengingat sebanyak yang Anda bisa.

Harus mencari segalanya setiap saat hanya merupakan hit bagi produktivitas - jika Anda mengerjakan tugas dan harus berhenti dan mencari hal-hal setiap beberapa menit, itu adalah pemusatan konsentrasi. Gunakan alat yang tepat untuk membantu Anda, dan pelajari / hafalkan apa yang Anda bisa. Ini akan sangat meningkatkan produktivitas Anda.

Thomas Owens
sumber
1
Saya sangat tidak setuju dengan mengingat detail. Anda harus mengingat konsep dan fungsi. Yaitu, ketahui apa yang dapat dilakukan sistem Anda, dan ketahui bagaimana cara mengetahui metode / variabel / nama kolom yang tepat.
edA-qa mort-ora-y
1
Saya tidak berharap Anda tahu segalanya, tetapi saya berharap siapa pun yang bekerja pada subsistem tertentu akan tahu bahwa subsistem luar dan dalam. Saya akan mempertimbangkan pengetahuan yang peduli tentang pekerjaan Anda.
Thomas Owens
3

Apakah ada gunanya menghafal nama kelas yang tepat? Saya kira tidak.

Apakah ada gunanya mengetahui istilah apa yang digunakan proyek Anda dalam nama kelas, sehingga Anda dapat mencarinya dengan lebih cepat? Pastinya.

Scott McIntyre
sumber
2

Saya tidak setuju bahwa Anda harus menghafal nama tabel, tetapi harus mudah ditebak. Agar mudah ditebak, konsistenlah. Dengan cara ini, Anda tidak akan bertanya pada diri sendiri "Hmm .. apakah tabel foo jamak atau tunggal? Apakah ID kunci utama atau RID atau FooRID?"

Earlz
sumber
2

Saya tidak tahu bagaimana Anda bisa query database kapan saja sama sekali tanpa mengenal nama tabel utama dan nama kolom kritis (tapi tentu saja tidak semuanya). Saya tahu orang-orang yang tahu hal-hal ini tanpa harus mencari tahu setiap kali menjadi lebih berharga bagi organisasi dan menjadi "pergi ke" orang ketika orang lain terjebak.

Saya menemukan bahwa seringkali ketika orang tidak mulai mempelajari hal ini, mereka membuat kesalahan dalam pertanyaan tanpa menyadarinya. Kesalahan Saya sering melihat langsung dalam ulasan kode karena saya mengerti struktur basis data kami dan bagaimana tabel-tabel itu saling berhubungan satu sama lain dan apa aturan bisnis yang penting tanpa harus mencarinya.

Secara pribadi saya menemukan bahwa orang-orang yang tidak repot-repot mempelajari struktur sering tinggal di tingkat pemula dalam menanyakan database tertentu. Mereka juga cenderung tidak selamat dari PHK. Saya pikir bos Anda mencoba melakukan Anda untuk membuat Anda membayar lebih banyak perhatian.

HLGEM
sumber
1

Lebih dari memori yang kuat, salah satu yang banyak membantu adalah desain berbasis domain dan mengikuti konvensi mudah seperti nama tabel dan nama kelas agar sama. Jika pemilik bisnis Anda berbicara kepada Anda tentang persyaratan, istilah khusus domain yang digunakan olehnya harus ada dalam kode. Dalam hal ini kita tidak harus mengingat pemetaan antara istilah bisnis dan nama dalam kode. Kebiasaan ini membutuhkan waktu untuk dipahami tetapi sangat berguna karena juga mengurangi kesalahan terjemahan antara pemilik bisnis dan pengembang.

Bersamaan dengan ini jika durasi proyek sangat lama, merasa nyaman dengan basis kode selama periode waktu tanpa sadar akan membantu memori.

Vinod R
sumber
permisi, bisakah kamu menjelaskan apa artinya domain driven design?
Anyname Donotcare
1
@just_name Saya mulai dengan martinfowler.com/bliki/EvansClassification.html
Vinod R