นักพัฒนาซอฟต์แวร์ควรถูกบังคับให้จำรายละเอียดหรือไม่? [ปิด]


33

หลายครั้งที่ฉันลืมสิ่งต่าง ๆ เกี่ยวกับแอปพลิเคชันของฉัน ฉันจำชื่อตารางไม่ได้หรือมีการสืบค้นอะไรและฉันค้นหาเพื่อให้ได้สิ่งที่ต้องการ หัวหน้าทีมของฉันบอกฉันว่าฉันควรจะจดจำชื่อตารางที่ฉันใช้

นักพัฒนาจำเป็นต้องจดจำชื่อตารางในฐานข้อมูลชื่อคลาส ฯลฯ หรือไม่? และถ้าคำตอบคือ "ใช่ตลอดเวลา" ฉันควรทำอย่างไรเพื่อจำสิ่งเหล่านั้น


27
ฉันหวังว่าฉันจะลืมพวกเขาได้
JeffO

6
บอกเขาว่าเขาควรเขียนด้วยมือซ้าย (ซึ่งง่ายสำหรับบางคนและยากสำหรับผู้อื่น)
งาน

4
“ ถูกบังคับให้จำชื่อตาราง” ??? WTF !? “ ทุกคนจะต้องเรียนรู้ชื่อคอลัมน์หมื่นเหล่านี้ภายในสิ้นสัปดาห์! จากนั้นจะมีการทดสอบ ใครก็ตามที่ไม่ได้รับ 100% จะได้รับแรงเลี้ยงเท้าก่อนเพื่อความภาคภูมิใจส่วนตัวของฉันของสิงโตที่บ้าคลั่ง !!! Bwahahahahaa !!!!!”
Donal Fellows

4
เมื่อฉันเป็นนักเรียนสหกิจศึกษาฉันทำงานกับผู้ชายที่ต้องการสิ่งนั้นจากฉันบอกฉันว่า "เสียเวลา" เมื่อฉันมองสิ่งต่าง ๆ พูดว่า "คุณบอกว่าคุณกำลังเรียนอยู่นี้!" เมื่อฉันไม่สามารถท่องชื่อตาราง (และเนื้อหาของพวกเขา) จากหน่วยความจำและใช้การขาดความมุ่งมั่นของฉันที่จะจำชื่อตารางเป็นข้ออ้างที่จะหยุดให้คำปรึกษาฉันทั้งหมด ฉันช่วยชีวิตเขาไว้ในรายงานแบบร่วมมือของฉัน
user16764

2
อย่าท่องจำจดจำ
tylermac

คำตอบ:


63

คุณไม่จำเป็นต้องจดจำสิ่งเหล่านี้อย่างชัดเจน โดยที่ฉันหมายถึงนั่งลงและเรียนรู้พวกเขาในขณะที่คุณต้องการรายการคำสำหรับการทดสอบการสะกดคำ ในตัวอย่างแรกชื่อควรจดจำและค้นพบได้เพื่อให้คุณสามารถค้นหาได้อีกครั้งโดยไม่ต้องใช้ความพยายามมากเกินไป

คุณควรมีสิทธิ์เข้าถึงเครื่องมือที่ช่วยให้คุณทำงานอัตโนมัติและอื่น ๆ ที่นี่

ในระบบที่มีขนาดใหญ่กว่า 100 ตารางไม่มีทางที่คุณจะสามารถจดจำชื่อตารางและชื่อคอลัมน์ทุกชื่อได้อย่างไรก็ตามด้วยชื่อที่น่าจดจำและค้นพบได้และการใช้เป็นประจำคุณควรพบว่าตัวเองจดจำรายละเอียดที่สำคัญที่สุด วัน.


6
เมื่อทำงานในแอปที่มีตารางขนาด 4k ฉันสามารถยืนยันประโยชน์ของคำแนะนำนี้ได้ การท่องจำไม่ได้ช่วยโครงการการประชุมทำ (โดยเฉพาะเมื่อมีการบังคับใช้และถ้าไม่คุณต้องพึ่งพาหน่วยความจำของคุณ)
Vineet Reynolds

1
เพื่อช่วยให้ค้นพบได้ให้สร้างชีตชีตและ / หรือ (โมเดล) ไดอะแกรมของสิ่งที่คุณต้องการ ด้วยวิธีนี้คุณจะต้องดูที่กระดาษหรือเอกสาร / ภาพของคุณและสามารถสแกนหาชื่อตารางและคอลัมน์ที่คุณต้องการ
Kissaki

34

ไอน์สไตน์กล่าวว่า "อย่าจดจำสิ่งที่คุณมองหา [ในหนังสือ]" และฉันก็เห็นด้วยอย่างยิ่ง

ใช้หน่วยความจำของคุณสำหรับสิ่งที่เป็นนามธรรม (เทคนิคการพัฒนาและหลักการ) ไม่ใช่ข้อเท็จจริงที่คุณสามารถหาได้เมื่อคุณต้องการ


ใช่ ... อย่าจดจำมันมันจะมาเมื่อคุณใช้ข้อมูล มีเอกสารอ้างอิงสำหรับเอกสารฉบับนี้ตลอดเวลา
Newtopian

17

น่าอายที่จะยอมรับ - ฉันใช้ C มาเกือบ 30 ปีแล้ว แต่ไม่สามารถจำได้ว่าจะประกาศตัวชี้ฟังก์ชันได้อย่างไรฉันต้องออก K&R เพื่อตรวจสอบไวยากรณ์

น่าอายยิ่งกว่านั้นฉันต้องคิดอย่างหนักเกี่ยวกับการทำงานของ typedef -:

 typedef foo int;

หรือ

 typedef int foo;

นี่คือจุดบอดส่วนตัวของฉัน ฉันจะไม่กังวลถ้าคุณมีคนที่คล้ายกัน


2
+1: ฉันเริ่มเขียนโปรแกรม C ในปี 1985 และยังต้องค้นหาวิธีประกาศตัวชี้ฟังก์ชัน ฉันไปแทงวันหนึ่งและทำงานได้และฉันก็ค่อนข้างพอใจกับตัวเอง (ฉันจำได้ว่าจะทำอย่างไรพิมพ์ดีด ... :-)
Bob Murphy

2
ฉันมีความสุขที่ในภาษาที่ฉันทำงานด้วย (C #) เทียบเท่ากับตัวชี้ฟังก์ชั่นที่เป็นจริงโดยมนุษย์ในการแยกวิเคราะห์ไม่เพียง แต่คอมไพเลอร์
svick

@svick โอ้ฉันไม่มีปัญหาในการอ่านตัวชี้ฟังก์ชั่นมันจำได้ว่าจะเขียนพวกเขาว่าฉันมีปัญหา
Neil Butterworth

3
ฉันจงใจไม่จดจำตารางลำดับความสำคัญของ C หรือ C ++ ฉันได้มันมีประโยชน์สำหรับการอ้างอิงทันทีหากฉันต้องการพวกเขาและฉันไม่ต้องการเขียนโค้ดที่จะทำให้คนอื่นสับสนซึ่งไม่ได้จดจำพวกเขา
David Thornley

รหัสที่ขึ้นอยู่กับกฎการมาก่อนไม่ชัดเจนคือรหัสที่ไม่ดี
Gort the Robot

9

คอมพิวเตอร์จดจำสิ่งต่างๆได้ดี คอมพิวเตอร์ยังสามารถค้นหาสิ่งต่าง ๆ ได้ดี

ดังนั้นทักษะหลักคือการใช้คอมพิวเตอร์เป็นส่วนเสริมในหน่วยความจำของคุณ เขียนโค้ดที่สะอาดสิ่งเอกสารเรียนรู้การใช้เครื่องมือค้นหาอย่างมีประสิทธิภาพตั้งค่าสภาพแวดล้อมการพัฒนาของคุณเพื่อให้ง่ายต่อการค้นหาสิ่งต่าง ๆ เป็นต้น

ผลข้างเคียงที่ดีคือคุณจะทำให้คนอื่นอ่านโค้ดของคุณได้ง่ายขึ้น


5

หน่วยความจำมีความสำคัญ

ความทรงจำที่แข็งแกร่งนั้นเป็นหนึ่งในพรสวรรค์ที่นักพัฒนาสามารถมีได้ จริง ๆ แล้วทุกคนสามารถมี มันเป็นสิ่งที่พิเศษจริงๆและฉันอิจฉาและชื่นชมผู้ที่ได้รับมัน มันสามารถช่วยให้คน ๆ นั้นเป็นนักพัฒนาที่แข็งแกร่ง, ทนายความ, ช่างหรือ (แทรกงานที่ต้องการ)

ควรจะต้องใช้เท่าไหร่?

แต่ฉันไม่เชื่อว่ามันเป็นข้อกำหนดที่ยุติธรรมที่ต้องมีการท่องจำทุกสิ่ง ฉันเชื่อว่าคุณจะเริ่มทำสิ่งต่าง ๆ เพื่อจดจำเป็นส่วนหนึ่งของการทำสิ่งต่าง ๆ นี่คือเหตุผลที่การอ่านหนังสือเกี่ยวกับภาษาและการใช้ในสภาพแวดล้อมการผลิตไม่เหมือนกัน ขณะที่คุณทำงานทุกวันกับบางสิ่ง (บางคนเรียกสิ่งนี้ว่า "การฝึกฝน") คุณจะเริ่มทำสิ่งที่สองตามธรรมชาติ

เช่นเดียวกับโปสเตอร์อื่น ๆ ฉันเชื่อว่าการจดจำส่วนสำคัญของแอปพลิเคชันจะช่วยได้ อย่างไรก็ตามฉันไม่แน่ใจว่าการลงทุนในการจดจำทั้งหมดนั้นคุ้มค่ากับการลงทุนเมื่อคุณสามารถใช้ประโยชน์จากฟีเจอร์ต่างๆเช่น Intellisense ซึ่งเป็นเรื่องธรรมดามากขึ้นในเครื่องมือที่ทันสมัย

คุณจะปรับปรุงได้อย่างไร

ฉันไม่ใช่ผู้เชี่ยวชาญเกี่ยวกับความจำ แต่บางคนเชื่อว่าคุณสามารถปรับปรุงความจำผ่านการออกกำลังกายทางจิตใจเช่นเกมสมอง (ปริศนาอักษรไขว้, ซูโดกุ, ปริศนาเป็นต้น) ทฤษฏีคือสมองของคุณเป็นเหมือนกล้ามเนื้อและถ้าคุณใช้มันในวิธีที่ต่างกันและออกกำลังกายคุณก็สามารถสร้างความแข็งแกร่งได้

มันน่าสนใจที่จะเห็นการศึกษาว่าสิ่งต่าง ๆ เช่นการทำเกมสมองการเขียนโปรแกรมและกิจกรรมแบบโต้ตอบจะส่งผลกระทบต่อสมองเมื่อเวลาผ่านไป สิ่งต่าง ๆ เหล่านี้จะช่วยต่อสู้กับอาการสูญเสียความจำที่เกิดขึ้นตามอายุหรือภาวะสมองเสื่อมได้หรือไม่?


5

ฉันมาจากที่ไหนมีคำพูดเก่า ๆ ที่พูดอะไรบางอย่างในภาษาอังกฤษ: "คนโง่จดจำคนฉลาดเขียนลงไป" โดยทั่วไปไม่มีเยื่อวิธีการที่ดีความจำของคุณคือคุณจะลืม คุณเป็นมนุษย์เท่านั้น และสิ่งนี้เองทำให้การพึ่งพาหน่วยความจำของมนุษย์ ... เป็นเรื่องที่ไม่น่าเชื่อถือ แม้ว่าคุณคิดว่าคุณจำชื่อตารางเหล่านั้นได้คุณจะมั่นใจได้ 100% คุณต้องการเพียงไม่กี่วินาทีในการค้นหาชื่อตาราง แต่คุณอาจต้องใช้เวลาหลายชั่วโมงหรือหลายวันในการติดตามข้อบกพร่องที่เกิดจากการสะกดคำผิด

โดยสรุปแล้วมันเป็นข้อกำหนดที่ไร้สาระโดยเฉพาะอย่างยิ่งในโครงการขนาดใหญ่ซึ่งสามารถมีตารางและคลาสได้นับพัน


3

ถ้ามันอยู่ในสิ่งที่คุณกำลังทำอยู่และมันเป็นงานระยะยาวใช่แล้วคุณควรทำงานเพื่อการเรียนรู้และจำชื่อตารางและคอลัมน์คลาสตัวแปรและวิธีการต่าง ๆ ได้ นี่คือสิ่งที่จะเกิดขึ้นเมื่อคุณทำงานกับพวกเขา คุณจะไม่เรียนรู้พวกมันตลอดชั่วข้ามคืน แต่คุณควรพยายามรู้มากเกี่ยวกับระบบที่คุณกำลังทำอยู่เท่าที่จะทำได้ นอกจากนี้ในระบบขนาดใหญ่ไม่มีทางที่คุณจะสามารถจดจำทุกสิ่งได้ แต่ไม่มีเหตุผลที่จะไม่เรียนรู้และจดจำมากที่สุด

การต้องมองทุกอย่างตลอดเวลาเป็นเพียงความนิยมในการเพิ่มผลผลิต - ถ้าคุณกำลังทำงานและต้องหยุดและค้นหาทุก ๆ นาทีนั่นคือความเข้มข้น ใช้เครื่องมือที่เหมาะสมเพื่อช่วยเหลือคุณและเรียนรู้ / จดจำสิ่งที่คุณทำได้ มันจะช่วยเพิ่มผลผลิตของคุณอย่างมาก


1
ฉันไม่เห็นด้วยอย่างยิ่งกับรายละเอียดการจดจำ คุณควรจำแนวคิดและฟังก์ชั่น นั่นคือรู้ว่าระบบของคุณสามารถทำอะไรได้บ้างและรู้วิธีค้นหาชื่อเมธอด / ตัวแปร / คอลัมน์ที่แน่นอน
edA-qa mort-ora-y

1
ฉันจะไม่คาดหวังให้คุณรู้ทุกอย่าง แต่ฉันคาดหวังว่าทุกคนที่ทำงานกับระบบย่อยเฉพาะจะรู้ว่าระบบย่อยทั้งภายในและภายนอก ฉันจะพิจารณาความรู้ที่ใส่ใจเกี่ยวกับงานของคุณ
โธมัสโอเวนส์

3

มีจุดใดในการจำชื่อคลาสที่แน่นอน? ฉันไม่คิดอย่างนั้น

มีจุดใดบ้างที่จะทราบว่าชนิดของคำศัพท์ที่โครงการของคุณใช้ในชื่อชั้นเรียนเพื่อให้คุณสามารถค้นหาได้เร็วขึ้น อย่างแน่นอน.


2

ฉันไม่เห็นด้วยที่คุณควรจดจำชื่อตาราง แต่ควรเดาได้ง่าย เพื่อให้ง่ายต่อการคาดเดาให้สอดคล้อง ด้วยวิธีนี้คุณจะไม่ถามตัวคุณเองว่า "อืมม.. เป็นพหูพจน์ตารางหรือเอกพจน์หรือไม่ ID คีย์หลักหรือ RID หรือ FooRID"


2

ฉันไม่รู้ว่าคุณสามารถสืบค้นฐานข้อมูลได้ตลอดเวลาโดยไม่ต้องรู้จักชื่อตารางหลักและชื่อคอลัมน์สำคัญ (แต่ไม่ใช่ทุกอย่างแน่นอน) ฉันรู้ว่าคนที่รู้เรื่องนี้โดยไม่ต้องคิดออกในแต่ละครั้งมีค่ามากขึ้นสำหรับองค์กรและกลายเป็น "ไป" คนเมื่อคนอื่นติดอยู่

ฉันพบว่าบ่อยครั้งที่ผู้คนไม่เริ่มเรียนรู้สิ่งนี้พวกเขาทำผิดพลาดในการค้นหาโดยที่ไม่ทราบ ข้อผิดพลาดฉันมักจะสังเกตเห็นรหัสทันทีเพราะฉันเข้าใจโครงสร้างฐานข้อมูลของเราและความสัมพันธ์ระหว่างตารางและกฎทางธุรกิจที่สำคัญโดยไม่ต้องค้นหา

โดยส่วนตัวแล้วฉันพบว่าคนที่ไม่สนใจเรียนรู้โครงสร้างมักจะอยู่ในระดับเริ่มต้นในการสืบค้นฐานข้อมูลนั้น พวกเขายังมีแนวโน้มที่จะไม่รอดชีวิตจากการปลดพนักงาน ฉันคิดว่าเจ้านายของคุณกำลังพยายามทำให้คุณโปรดปรานเพื่อให้คุณได้รับความสนใจมากขึ้น


1

มากกว่าหน่วยความจำที่แข็งแกร่งสิ่งที่ช่วยได้มากคือการออกแบบโดยใช้โดเมนและทำตามแบบแผนง่ายๆเช่นชื่อตารางและชื่อคลาสให้เหมือนกัน หากเจ้าของธุรกิจของคุณพูดกับคุณเกี่ยวกับข้อกำหนดข้อกำหนดเฉพาะของโดเมนที่ใช้โดยเขา / เธอควรจะอยู่ในรหัส ในกรณีนี้เราไม่จำเป็นต้องจำการแมประหว่างข้อกำหนดทางธุรกิจและชื่อในรหัส นิสัยนี้ใช้เวลาสักครู่ แต่ก็มีประโยชน์มากเพราะช่วยลดข้อผิดพลาดในการแปลระหว่างเจ้าของธุรกิจและผู้พัฒนา

พร้อมกับสิ่งนี้หากระยะเวลาของโครงการยาวมากการใช้โค้ดฐานในช่วงเวลาหนึ่งจะช่วยให้หน่วยความจำโดยไม่รู้ตัว


ขอโทษด้วยฉันช่วยอธิบายความหมายของdomain driven designอะไรได้บ้าง
Anyname Donotcare

1
@just_name ฉันเริ่มต้นด้วยmartinfowler.com/bliki/EvansClassification.html
Vinod R
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.