โปรแกรมเมอร์ที่เก่งจำเป็นต้องจำ code ให้ได้เยอะๆรึป่าวครับ เวลาผมเขียน program จะต้องคอยดู document ไปด้วยตลอดเพราะจำ code ไม่ค่อยได้ ใครมีเทคนิคในการจำ code ก็ช่วยแนะนำทีนะครับ
ทำไปเรื่อยๆเลยครับ เดียวจะจำได้เอง code นั้นเป็นแค่เครื่องมือ สิ่งที่จะทำให้โปรแกรมเมอร์จะเก่งหรือจะเทพหรือไม่ อยู่ที่โลจิค, อังกอลิทึม, แนวคิด, จินตนาการ และประสบการณ์ครับ สำหรับผม coding ง่ายๆแต่ อังกอลิทึมขั้นเทพที่อัดอยู่ภายในโค้ต ย่อมมีประสิทธิภาพมากกว่า coding แบบบ้าสาระพัดเทคนิคแต่อังกอลิทึมพื้นๆแน่นอน
"โปรแกรมเมอร์ที่เก่งจำเป็นต้องจำ code ให้ได้เยอะๆรึป่าวครับ"
คิดว่าน่าจะอยู่ที่การจินตนาการกับวิธีการทำและคิดมากกว่านะครับ ส่วนถ้าเปรียบเทียบความเก่งของโปรแกรมเมอร์สองคนที่เขียนออกมาได้ผลลัพธ์เหมือนกัน ผมให้คนที่เขียนสั้นกว่า เป็นคนที่เก่งกว่าครับ
ถ้าเขียนสั้นกว่าแต่มี Bug ผมว่าก็ไม่เก่งกว่านะครับ
โค้ดที่สั้นกว่า อาจจะเสียประสิทธิภาพมากกว่าก็ได้นะครับ ตามหลักการของโครงสร้างข้อมูล ประสิทธิภาพเป็นสิ่งที่สำคัญที่สุดอ่ะครับ ในบางกรณีการเขียนโค้ดที่ยาวๆถึกๆก็รักษาประสิทธิภาพที่ดีกว่านะครับ
อย่างนั้นต้องเล่น Code Golf
lewcpe.com, @wasonliw
Good Code Ruined?
หมายความว่าคนธรรมดาจะอ่านมันไม่รู้เรื่องสินะ - -"
Jusci - Google Plus - Twitter
ส่วนหนึ่งก็จริง แต่ถ้าเน้น Performance แบบเม็ดๆ จริง ต้องอย่าลืมว่าหลายภาษา เช่นพวก interpreter อย่าง php python พวกนี้ต้องศึกษาว่าลักษณะโค้ดที่ถูกต้องเป็นยังไง เพราะแต่ละภาษาการแปล opcode มันก็ส่งผล บางคนอยากให้โครตสั้น แต่ต้องมาเพิ่มภาระการแปล opcode ผมว่ามันก็แปร่งๆ อยู่น้า
ตอบคำถามกระทู้ ผมว่าการจำภาษาได้มันผลพลอยได้ครับ เพราะใช้บ่อยๆ สมัยก่อนผมหนังสืออยู่หน้าตักแล้วพลิกๆ พิมพ์แบบนั้น แต่สมัยนี้ก็ไม่ต่างกัน เพียงแต่ใช้ search จาก doc ที่โหลดมาแทน และลดเวลาการทำงานลงอีกด้วยพวก auto complete
แต่ถ้าว่าอะไรเป็นตัวชี้ที่ว่าเก่งไม่เก่ง ผมว่าฟังค์ชั่นโปรแกรมหนึ่งก็เหมือนเครื่องมือตัวหนึ่ง ต้องเลือกใช้ให้เหมาะสม ใช้อะไรถึงเหมาะกับงานที่ว่า ไม่งั้นก็เหมือนเพิ่มภาระการทำงาน จนเป็นขี้ช้างจับตั๊กแตนไป นอกนั้นก็เหมือนความเห็นท่านอื่นครับ ^^
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
ผมเดาศัพท์เวลาจะเรียก Method น่ะ นอกนั้นผมก็มั่วเรื่อยๆ ส่วนหนังสือเดี๋ยวนี้ไม่อ่านแล้วครับ ถ้ามันติดตรงไหนก็ search หาเอาครับ
สำหรับผมคิดว่า "โปรแกรมเมอร์ที่เก่ง ตอบโจทย์ความต้องการของผู้ใช้ได้"
ผมว่าอยู่ที่จินตนาการในการ solve ปัญหาเหมือนกันคับ คือยังไงความรู้พื้นฐานนี่มี เกลือนกลาดตามเวป ตามหนังสือ หาได้ง่ายๆ อย่าง search ใครๆก็รู้จัก BFS, DFS แล้วทำไมมันยังจะมีพวก search engine อย่าง google bing aol อีก
แสดงพวกนี้ต้องมีอะไรที่เหนือชั้นกว่าในการ search ที่มีอยู่ในตำราทั่วๆไป
"ผมว่าอยู่ที่จินตนาการในการ solve ปัญหาเหมือนกันคับ" ชอบคำนี้มากมาย โปรแกรมเมอร์ที่ดีต้องจิ๊นให้เก่ง LOL
ส่วนผม "โปรแกรมเมอร์ที่เก่ง ต้องพูดจาให้คนอื่นรู้เรื่อง" เพราะพอพูดกันไม่รู้เรื่อง เลยไม่ได้ทำงานมาทำน่ะสิ ...
แซว เอาฮา แต่ based from true story นะครับ
Ton-Or
"โปรแกรมเมอร์ที่เก่ง ต้องพูดจาให้คนอื่นรู้เรื่อง"
กำลังจะตอบประโยคนี้เลย ฮ่า ๆ ๆ
+1 ผมเองก็พยายามพูดให้รู้เรื่องอยู่เหมือนกันครับ - -"
ถ้ามีเวที ผมเชื่อว่าโปรแกรมเมอร์ทุกคนจะพูดได้ดีครับ
บางทีนั่งคิดคนเดียวนานๆ เลยทําให้การพูดด้อยลงครับ ผมรู้สึกอย่างงั้น
ก็มีส่วนแต่ผมว่าไม่ใช่ ทั้งหมดที่ทำให้พูดกับคนทั่วไปไม่รู้เรื่อง หรือง่ายๆ พูดกับนายจ้าง/คนมาจ้างไม่รู้เรื่องนั่นหล่ะ คือการที่เราเชี่ยวชาญ อะไรไปเยอะๆ ทำให้ติดคำพูดเฉพาะกลุ่ม มากขึ้นเรื่อยๆ ทำให้ละเลยหรือลืมคำพูดพื้นฐานที่คนทั่วไปใช้กันไปน่ะครับ
เช่น มีคนมาจ้างเขียน program นึง เอาเป็น program stock สินค้าธรรมดาๆ นี่หล่ะ เขาถามว่าทำได้ไหมราคาเท่าไหร่ นานไหม ยกตัวอย่างเพื่อนผมแล้วกัน หลังได้ยินคำถาม กว่ามันจะตอบ มันหยุดคิดไปสักพัก เหมือนคิดอะไรในหัว แล้วคำพูดที่ออกมาประโยคแรกคือ "ต้องการใช้ ภาษาอะไรครับ java, C, .net หรือ VB หรือจะเป็น php จะทำเป็นแบบ online ด้วยไหม สินค้าเป็นแบบ static หรือ make by order"
ความเห็นผมคือ ประโยคด้านบนมันเป็น ข้อมูลที่ พูดออกไปยาวๆ แต่ลูกค้าจับอะไรไม่ได้เลย เพราะไม่รู้จัก จับได้แค่ว่า "ทำ online หรือไม่ online" ผมเลยต้องตอบให้ใหม่ว่า "ทำได้ครับ ส่วนอื่นๆ ต้องรบกวนพี่อธิบายงานที่พี่ทำอยู่คร่าวๆ ก่อนครับว่าทำเกี่ยวกับสินค้าแบบไหน ประเภทไหน บลาๆ ..."
ราวๆ นี้
เป็นเรื่องจริงครับ ฮ่าๆ
ผมว่ามันเป็นทักษะพื้นฐานที่มนุษย์ทุกผู้ควรจะมีนะครับ ^^ ไม่ใช่แค่โปรแกรมเมอร์อย่างเดียวนะ
คนพูดไม่รู้เรื่องใครเขาอยากจะคบด้วยล่ะ ?
ลองไปดู the social network คับ
แฟนพันธุ์แท้สตีฟจ็อบส์ | MacThai.com
คุณพูดภาษาไทยเก่ง คุณต้องจำทุกประโยครึเปล่าครับ
เวลาคุณสั่งก๋วยเตี๋ยวกิน คุณสั่งด้วยความเข้าใจในภาษา หรือสั่งด้วยการท่องจำครับ ????
ภาษา Program คือภาษาที่คุณใช้ติดต่อกับคอมพิวเตอร์ สั่งให้มันทำอะไร เหมือนที่คุณพูดภาษาไทยนั่นแหละครับ
คุณสั่งก๋วยเตี๋ยว คุณพูดได้กี่แบบ 1.เส้นเล็กชาม 2.เล็กน้ำชาม 3.เส้นเล็กน้ำชามนึง 4.เส้นเล็กน้ำหนึ่งชาม 5..6..7..8..9..10.........
การเขียนโปรแกรมก็เช่นกัน ถ้าคุณเข้าใจในตัวภาษาโปรแกรม สิ่งเดียวที่คุณต้องการ แต่คุณสามารถพูดกับคอมพิวเตอร์ ด้วยถ้อยคำที่ต่างกันได้
สรุปแล้ว การเข้าใจในตัวภาษา คุณจะสร้างได้ทุกสิ่ง ที่คุณจะจินตนาการได้ คุณจะเขียนโค้ดได้ทุกรูปแบบ แม้แต่โค้ดที่ไม่เคยเกิดมาบนโลกใบนี้เลยก็ตาม
ไม่ใช่ท่องจำ
เพราะถ้าท่องจำ คุณรู้ไหม หลายสิบปีที่ผ่านมา ถ้าพวกโปรแกรมเมอร์ทั้งหมดท่องจำ คุณจะไม่เห็นอะไรใหม่ๆ ในโลกใบนี้เลย
ถ้าเรื่องจำ code หมายถึงชื่อ function , method , variable เรื่องจำ code นั่นจำเป็นบ้างไม่จำเป็นบ้างครับ ขอแค่จำพื้นฐานของภาษานั่นให้ได้ก็พอครับ เพราะการเขียนโปรแกรมสมัยนี้ยังไงก็ต้องเอา class หรือ library ของคนอื่นมาเสริม ยังไงก็ต้องดู document อยู่ดี
เทคนิคการจำ code ก็คงต้องลงมือปฏิับัติเขียนบ่อยๆ แก้ปัญหาบ่อยๆ และก็คิดว่าใช่ต้องใช่แน่ๆ มันเป็นอะไรที่พูดยากต้องให้เธอแก้...ประมาณว่ารู้คำศัพท์พื้นๆของภาษานั้นๆ + คำศัพท์คอมฯ+ศัพท์ภาษาอังกฤษบ้าง + ความเกี่ยวของงาน แล้วพอเดาได้เลย เขาต้องใช้ชื่อฟังก์ชันประมาณนี้แน่ๆ ก็สามารถเปิด document ได้เร็วแล้วสุดท้ายก็จะจำได้เร็วด้วย
เรื่องจำ code ได้หรือไม่ อันนี้เป็น skill ของแต่ละปัจเจกบุคคล แต่ก็แนนอนว่า"จำได้" ย่อมดีกว่า "จำไม่ได้" มันจะได้เปรียบกันในเรื่อง "เวลา" แต่ก็เป็นคนละเรื่องเดียวกันกับ "คุณภาพ"
ความจริงที่โหดร้ายคือ โปรแกรมเมอร์ก็เปรียบเหมือนกับกรรมกร แค่ทำงานให้ตรงตามแบบ และตามสั่ง ในเวลาที่กำหนด ที่สำคัญเขียนให้มี bug น้อยๆ ก็พอแล้วครับ
ขอบคุณทุกความเห็นนะครับ ผมจะพยายามฝึกฝนต่อไปครับ
อัลกอริทึมที่ดี ต้องเขียนอยู่บนหน้าต่างหอพัก
John Nash?
มาเอาความรู้คับ อิอิ
โปรแกรมเมอร์เก่งๆ ต้องสามารถออกแบบขั้นตอนของโปรแกรมให้แก้ไขปัญหาที่สนใจได้ครับ ส่วนเรื่องเดาคำสั่งหรือ method ทำให้ต้องคอยดูเอกสารเรื่อยๆ นั้นเป็นเพราะว่าคุณไม่ได้เตรียมตัวศึกษาเครื่องมือของคุณเลย หรืออาจแค่ดูผ่านๆ แล้วลงมือเลยนั่นเอง โดยส่วนตัวผมก็ใช้หลายภาษา ที่นิยมกันในประเทศไทย หลายครั้งที่จำสับสนในเรื่องของคำสั่ง ครับ
ทำความเข้าใจในสิ่งที่ต้องใช้หลักๆให้มากๆครับ รายละเอียดเล็กน้อยผมใช้ google เอา อย่าใช้คำว่าจำเลย ผมเบื่อการจำมากตั้งแต่สมัยเรียนแล้ว
โลกนี้มีอะไรน่าจำมากกว่า code เยอะนะครับ เขียนโปรแกรมให้เก่งพอประมาณพอ ไม่ต้องเก่งมากหรอก
เห็นด้วยครับ
ผมคิดว่าการทำงานไม่ว่าจะเป็นเรื่องใด ควรต้องทุ่มเทเรื่องๆนั้นไปจนสุดทางนะครับ และก็ไม่ได้หมายความว่า เราจะต้องละทิ้งเรื่องอื่นๆที่น่าสนใจไปด้วย
ยกเว้นคุณคิดจะทำเล่นๆ และยอมรับว่าตัวเองจะหยุดแค่ "มือสมัครเล่น"
+1 อย่าทุ่มเทกับเรื่องใดเรื่องหนึ่งจนลืมมองด้านอื่นของชีวิตครับ
อืมครับ
+1
วงการโปรแกรมเมอร์เป็นวงการเดียว(ที่นึกออก)ที่ต้องใช้ความรู้ในด้านอื่นๆค่อนข้างมาก นึกเล่นๆว่าถ้าเราเป็นโปรแกรมเมอร์ระดับเทพที่ต้องเขียนโปรแกรมบัญชี ถ้าเราไม่มีความรู้ด้านบัญชีเลย ยังไงก็เขียนไม่ได้ครับ
บางปัญหาเราอาจจะแก้ได้ง่ายนิดเดียวถ้ามีความรู้เฉพาะทางในด้านนั้นๆเยอะ แต่ถ้าเรารู้น้อยเขียนโค้ดเก่งอย่างเดียว เราอาจจะต้องเขียนอ้อมโลกเพื่อให้ได้ผลลัพท์แบบเดียวกัน
สรุปแล้ว วงการนี้ผมคิดว่ารู้กว้างดีกว่ารู้ลึกครับ แต่ถ้าได้ทั้งกว้างและลึกมันก็จะดีมากๆ (และคงเหนื่อยมากๆด้วย)
จินตนาการ สำคัญกว่า การเรียนรู้
^^
และจินตนาการนั้นต้องอยู่บนฐานของความเป็นจริง ไม่ใช่การเพ้อเจ้อ ไม่ใช่การท่องจำคำพูดของผู้อื่นมากล่าว
เหนือสิ่งอื่นใดคือการลงมือทำให้สัมฤทธิ์ผล
เพราะคนในโลกไม่ได้รู้จักเราว่าคิดอะไร แต่รู้จักเราจากสิ่งที่เราทำ
จริงๆ แล้วประโยคนี้ ต้องพูดว่า "จินตนาการสำคัญกว่าความรู้" ครับ Imagination is more important than knowledge.
เป็นคำกล่าวของไอน์สไตน์ และผมเป็นคนนึงที่เห็นด้วยเป็นอย่างยิ่งกับประโยคนี้ (หลังจากที่คิดอยู่นานว่า จริงเหรอ?)
ยกตัวอย่างง่ายๆ การที่คุณเขียน PHP ได้ มันคือความรู้ แต่จินตนาการทำให้คนเอา PHP มาทำเป็น facebook
ผมลองตั้งคำถามว่า "แล้วถ้าไม่มีความรู้จะทำอะไรได้?" คำตอบก็คือ "ถ้าคุณจินตนาการได้แล้ว มันจะผลักดันให้คุณไปแสวงหาความรู้เองนั่นแหละ" (หรือจ้างคนที่มีความรู้ทำแทน ถ้ามีทุน)
คล้ายๆกับ ถามว่า ความรัก...คืออะไร อิอิ มันมีหลายนิยามครับแล้วแต่คนมอง
สำหรับผมแล้ว โปรแกรมเมอร์ที่เก่ง คือ เขียนโปรแกรมแล้วหาเงินเข้ากระเป๋าได้มหาศาล นั้นล่ะเก่งที่สุดแล้วครับ ดูที่ผล อย่างเดียววิธีการเนี่ยมันเรื่องรอง
ความขยันครับ
ลอจิคดี มีหลักการ พื้นฐานแน่น มีความคิด และ ... มี Ego ที่ดี (คือมีตัวตนของตัวเอง ไม่เกี่ยวกับการยึดติดนะครับ) แค่นี้พอแล้วล่ะครับ
http://stevenbenner.com/2010/08/will-the-really-real-programmers-please-stand-up/
ผมเห็นด้วยกับบทความข้างบนนี้น่ะครับ ถ้าเป็นเมื่อก่อนก็คงจำเป็นจะต้องจำให้ได้เยอะๆ แหละครับ เพราะหา reference ยาก ตัวช่วยก็ไม่ค่อยมี แต่ปัจจุบันผมว่าไม่ต้องแล้วล่ะ
เหมืิอนกันเหะ ผมเป็นเวปดีไซน์ เวลาจะพิมพ์ CSS ที ก็แค่เคาะคีย์บอร์ดแค่ตัวอักษรตัวสองตัว แล้วก็ไล่หาเอา เวลาลืมโค๊ดก็เสริชหาที... แต่ผลงานก็ออกมาทีนะครับ
โปรแกรมเมอร์ที่เก่ง... ไม่จำเป็นต้องจำโค้ดได้มาก... ไม่จำเป็นต้องเขียนได้หลายภาษา... แต่... 1. ต้องมีศิลป์ - เข้าใจความรู้สึกของผู้อื่น(เจ้านาย,ลูกค้า) ว่าแท้จริงแล้ว ต้องการอะไรจากโปรแกรม 2. ต้องมีจิตวิญญาณความเป็นหมอ - นอกจากเข้าใจความรูสึกของผู้อื่น (ผู้ป่วย) ต้องรู้ว่าผู้ป่วยเป็นโรคอะไร แล้วจัดยาให้ถูกกับโรค (Solution) 3. และที่สำคัญ ต้องขยัน - เทคโนโลยี เปลี่ยนเร็ว อย่าขี้เกียจในการติดตามข่าวสาร - นอนดึก อย่าตื่นสาย - 1 สัปดาห์ 7 วัน วางแผนไว้ 1 วันสำหรับสร้างจินตนาการ
http://janawat.wordpress.com
เก่งไม่เก่งไม่รู้แหละ การเขียนส่วนใหญ่อะไรไม่ได้ใช้บ่อย หรือพวกเครื่องมือ OO ที่สืบทอดอิมพลีเมนต์กันยุ่งเหยิงนี่ปวดกระบาลจริงๆ นานๆ ใช้ทีนี่ต้องปิดเอกสาร
แต่ผมคิดว่าคนเก่งๆ เขารู้ว่าเครื่องมือแต่ละอย่างทำงานอย่างไร เพื่อหลีกเลี่ยงปัญหาที่อาจเกิด หรือสามารถแก้ปัญหาที่เกินขึ้นได้
เมื่อก่อนคิดว่าตัวเองเก่งนะ ตอนเริ่มเขียนใหม่ๆ ผ่านไปสาม-หกเดือน กลับมาอ่านโค้ดตัวเอง อ่านไม่ออกTT กว่าจะอ่านออก คิดว่ากูนี่เทพจริงๆ คิดได้ไง^^
ถ้ากลับมาอ่านโค้ดตัวเองไม่ออกภายหลัง ควรปรับปรุงโค้ดตัวเองอย่างยิ่งครับ เพราะคนอื่นก็คงอ่านไม่ออกเหมือนกัน อาจจะตั้งชื่อตัวแปรให้สื่อความหมายขึ้น ทำโค้ดให้อ่านง่ายขึ้น และใส่คอมเม้นท์อธิบายว่าทำงานอะไร เพื่ออะไร
ทำไปเรื่อยๆเลยครับ เดียวจะจำได้เอง code นั้นเป็นแค่เครื่องมือ สิ่งที่จะทำให้โปรแกรมเมอร์จะเก่งหรือจะเทพหรือไม่ อยู่ที่โลจิค, อังกอลิทึม, แนวคิด, จินตนาการ และประสบการณ์ครับ
สำหรับผม coding ง่ายๆแต่ อังกอลิทึมขั้นเทพที่อัดอยู่ภายในโค้ต ย่อมมีประสิทธิภาพมากกว่า coding แบบบ้าสาระพัดเทคนิคแต่อังกอลิทึมพื้นๆแน่นอน
"โปรแกรมเมอร์ที่เก่งจำเป็นต้องจำ code ให้ได้เยอะๆรึป่าวครับ"
คิดว่าน่าจะอยู่ที่การจินตนาการกับวิธีการทำและคิดมากกว่านะครับ ส่วนถ้าเปรียบเทียบความเก่งของโปรแกรมเมอร์สองคนที่เขียนออกมาได้ผลลัพธ์เหมือนกัน ผมให้คนที่เขียนสั้นกว่า เป็นคนที่เก่งกว่าครับ
ถ้าเขียนสั้นกว่าแต่มี Bug ผมว่าก็ไม่เก่งกว่านะครับ
โค้ดที่สั้นกว่า อาจจะเสียประสิทธิภาพมากกว่าก็ได้นะครับ ตามหลักการของโครงสร้างข้อมูล ประสิทธิภาพเป็นสิ่งที่สำคัญที่สุดอ่ะครับ ในบางกรณีการเขียนโค้ดที่ยาวๆถึกๆก็รักษาประสิทธิภาพที่ดีกว่านะครับ
อย่างนั้นต้องเล่น Code Golf
lewcpe.com, @wasonliw
หมายความว่าคนธรรมดาจะอ่านมันไม่รู้เรื่องสินะ - -"
Jusci - Google Plus - Twitter
ส่วนหนึ่งก็จริง แต่ถ้าเน้น Performance แบบเม็ดๆ จริง
ต้องอย่าลืมว่าหลายภาษา เช่นพวก interpreter
อย่าง php python พวกนี้ต้องศึกษาว่าลักษณะโค้ดที่ถูกต้องเป็นยังไง
เพราะแต่ละภาษาการแปล opcode มันก็ส่งผล
บางคนอยากให้โครตสั้น แต่ต้องมาเพิ่มภาระการแปล opcode
ผมว่ามันก็แปร่งๆ อยู่น้า
ตอบคำถามกระทู้ ผมว่าการจำภาษาได้มันผลพลอยได้ครับ เพราะใช้บ่อยๆ
สมัยก่อนผมหนังสืออยู่หน้าตักแล้วพลิกๆ พิมพ์แบบนั้น แต่สมัยนี้ก็ไม่ต่างกัน
เพียงแต่ใช้ search จาก doc ที่โหลดมาแทน
และลดเวลาการทำงานลงอีกด้วยพวก auto complete
แต่ถ้าว่าอะไรเป็นตัวชี้ที่ว่าเก่งไม่เก่ง ผมว่าฟังค์ชั่นโปรแกรมหนึ่งก็เหมือนเครื่องมือตัวหนึ่ง
ต้องเลือกใช้ให้เหมาะสม ใช้อะไรถึงเหมาะกับงานที่ว่า ไม่งั้นก็เหมือนเพิ่มภาระการทำงาน
จนเป็นขี้ช้างจับตั๊กแตนไป นอกนั้นก็เหมือนความเห็นท่านอื่นครับ ^^
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
ผมเดาศัพท์เวลาจะเรียก Method น่ะ นอกนั้นผมก็มั่วเรื่อยๆ
ส่วนหนังสือเดี๋ยวนี้ไม่อ่านแล้วครับ ถ้ามันติดตรงไหนก็ search หาเอาครับ
สำหรับผมคิดว่า
"โปรแกรมเมอร์ที่เก่ง ตอบโจทย์ความต้องการของผู้ใช้ได้"
ผมว่าอยู่ที่จินตนาการในการ solve ปัญหาเหมือนกันคับ
คือยังไงความรู้พื้นฐานนี่มี เกลือนกลาดตามเวป ตามหนังสือ หาได้ง่ายๆ
อย่าง search ใครๆก็รู้จัก BFS, DFS
แล้วทำไมมันยังจะมีพวก search engine อย่าง google bing aol อีก
แสดงพวกนี้ต้องมีอะไรที่เหนือชั้นกว่าในการ search ที่มีอยู่ในตำราทั่วๆไป
"ผมว่าอยู่ที่จินตนาการในการ solve ปัญหาเหมือนกันคับ"
ชอบคำนี้มากมาย โปรแกรมเมอร์ที่ดีต้องจิ๊นให้เก่ง LOL
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
ส่วนผม "โปรแกรมเมอร์ที่เก่ง ต้องพูดจาให้คนอื่นรู้เรื่อง"
เพราะพอพูดกันไม่รู้เรื่อง เลยไม่ได้ทำงานมาทำน่ะสิ
...
แซว เอาฮา แต่ based from true story นะครับ
Ton-Or
"โปรแกรมเมอร์ที่เก่ง ต้องพูดจาให้คนอื่นรู้เรื่อง"
กำลังจะตอบประโยคนี้เลย ฮ่า ๆ ๆ
+1 ผมเองก็พยายามพูดให้รู้เรื่องอยู่เหมือนกันครับ - -"
ถ้ามีเวที ผมเชื่อว่าโปรแกรมเมอร์ทุกคนจะพูดได้ดีครับ
บางทีนั่งคิดคนเดียวนานๆ เลยทําให้การพูดด้อยลงครับ ผมรู้สึกอย่างงั้น
ก็มีส่วนแต่ผมว่าไม่ใช่ ทั้งหมดที่ทำให้พูดกับคนทั่วไปไม่รู้เรื่อง
หรือง่ายๆ พูดกับนายจ้าง/คนมาจ้างไม่รู้เรื่องนั่นหล่ะ
คือการที่เราเชี่ยวชาญ อะไรไปเยอะๆ ทำให้ติดคำพูดเฉพาะกลุ่ม มากขึ้นเรื่อยๆ
ทำให้ละเลยหรือลืมคำพูดพื้นฐานที่คนทั่วไปใช้กันไปน่ะครับ
เช่น มีคนมาจ้างเขียน program นึง เอาเป็น program stock สินค้าธรรมดาๆ นี่หล่ะ
เขาถามว่าทำได้ไหมราคาเท่าไหร่ นานไหม
ยกตัวอย่างเพื่อนผมแล้วกัน
หลังได้ยินคำถาม กว่ามันจะตอบ มันหยุดคิดไปสักพัก เหมือนคิดอะไรในหัว แล้วคำพูดที่ออกมาประโยคแรกคือ
"ต้องการใช้ ภาษาอะไรครับ java, C, .net หรือ VB หรือจะเป็น php จะทำเป็นแบบ online ด้วยไหม สินค้าเป็นแบบ static หรือ make by order"
ความเห็นผมคือ ประโยคด้านบนมันเป็น ข้อมูลที่ พูดออกไปยาวๆ แต่ลูกค้าจับอะไรไม่ได้เลย เพราะไม่รู้จัก จับได้แค่ว่า "ทำ online หรือไม่ online"
ผมเลยต้องตอบให้ใหม่ว่า
"ทำได้ครับ ส่วนอื่นๆ ต้องรบกวนพี่อธิบายงานที่พี่ทำอยู่คร่าวๆ ก่อนครับว่าทำเกี่ยวกับสินค้าแบบไหน ประเภทไหน บลาๆ ..."
ราวๆ นี้
Ton-Or
เป็นเรื่องจริงครับ ฮ่าๆ
ผมว่ามันเป็นทักษะพื้นฐานที่มนุษย์ทุกผู้ควรจะมีนะครับ ^^ ไม่ใช่แค่โปรแกรมเมอร์อย่างเดียวนะ
คนพูดไม่รู้เรื่องใครเขาอยากจะคบด้วยล่ะ ?
ลองไปดู the social network คับ
แฟนพันธุ์แท้สตีฟจ็อบส์ | MacThai.com
คุณพูดภาษาไทยเก่ง คุณต้องจำทุกประโยครึเปล่าครับ
เวลาคุณสั่งก๋วยเตี๋ยวกิน คุณสั่งด้วยความเข้าใจในภาษา หรือสั่งด้วยการท่องจำครับ ????
ภาษา Program คือภาษาที่คุณใช้ติดต่อกับคอมพิวเตอร์ สั่งให้มันทำอะไร
เหมือนที่คุณพูดภาษาไทยนั่นแหละครับ
คุณสั่งก๋วยเตี๋ยว คุณพูดได้กี่แบบ
1.เส้นเล็กชาม
2.เล็กน้ำชาม
3.เส้นเล็กน้ำชามนึง
4.เส้นเล็กน้ำหนึ่งชาม
5..6..7..8..9..10.........
การเขียนโปรแกรมก็เช่นกัน ถ้าคุณเข้าใจในตัวภาษาโปรแกรม
สิ่งเดียวที่คุณต้องการ แต่คุณสามารถพูดกับคอมพิวเตอร์ ด้วยถ้อยคำที่ต่างกันได้
สรุปแล้ว การเข้าใจในตัวภาษา คุณจะสร้างได้ทุกสิ่ง ที่คุณจะจินตนาการได้
คุณจะเขียนโค้ดได้ทุกรูปแบบ แม้แต่โค้ดที่ไม่เคยเกิดมาบนโลกใบนี้เลยก็ตาม
ไม่ใช่ท่องจำ
เพราะถ้าท่องจำ คุณรู้ไหม หลายสิบปีที่ผ่านมา ถ้าพวกโปรแกรมเมอร์ทั้งหมดท่องจำ
คุณจะไม่เห็นอะไรใหม่ๆ ในโลกใบนี้เลย
ถ้าเรื่องจำ code หมายถึงชื่อ function , method , variable
เรื่องจำ code นั่นจำเป็นบ้างไม่จำเป็นบ้างครับ ขอแค่จำพื้นฐานของภาษานั่นให้ได้ก็พอครับ
เพราะการเขียนโปรแกรมสมัยนี้ยังไงก็ต้องเอา class หรือ library ของคนอื่นมาเสริม ยังไงก็ต้องดู document อยู่ดี
เทคนิคการจำ code ก็คงต้องลงมือปฏิับัติเขียนบ่อยๆ แก้ปัญหาบ่อยๆ และก็คิดว่าใช่ต้องใช่แน่ๆ มันเป็นอะไรที่พูดยากต้องให้เธอแก้...ประมาณว่ารู้คำศัพท์พื้นๆของภาษานั้นๆ + คำศัพท์คอมฯ+ศัพท์ภาษาอังกฤษบ้าง + ความเกี่ยวของงาน แล้วพอเดาได้เลย เขาต้องใช้ชื่อฟังก์ชันประมาณนี้แน่ๆ ก็สามารถเปิด document ได้เร็วแล้วสุดท้ายก็จะจำได้เร็วด้วย
เรื่องจำ code ได้หรือไม่ อันนี้เป็น skill ของแต่ละปัจเจกบุคคล
แต่ก็แนนอนว่า"จำได้" ย่อมดีกว่า "จำไม่ได้"
มันจะได้เปรียบกันในเรื่อง "เวลา" แต่ก็เป็นคนละเรื่องเดียวกันกับ "คุณภาพ"
ความจริงที่โหดร้ายคือ โปรแกรมเมอร์ก็เปรียบเหมือนกับกรรมกร
แค่ทำงานให้ตรงตามแบบ และตามสั่ง ในเวลาที่กำหนด
ที่สำคัญเขียนให้มี bug น้อยๆ ก็พอแล้วครับ
ขอบคุณทุกความเห็นนะครับ ผมจะพยายามฝึกฝนต่อไปครับ
อัลกอริทึมที่ดี ต้องเขียนอยู่บนหน้าต่างหอพัก
John Nash?
มาเอาความรู้คับ อิอิ
โปรแกรมเมอร์เก่งๆ ต้องสามารถออกแบบขั้นตอนของโปรแกรมให้แก้ไขปัญหาที่สนใจได้ครับ ส่วนเรื่องเดาคำสั่งหรือ method ทำให้ต้องคอยดูเอกสารเรื่อยๆ นั้นเป็นเพราะว่าคุณไม่ได้เตรียมตัวศึกษาเครื่องมือของคุณเลย หรืออาจแค่ดูผ่านๆ แล้วลงมือเลยนั่นเอง โดยส่วนตัวผมก็ใช้หลายภาษา ที่นิยมกันในประเทศไทย หลายครั้งที่จำสับสนในเรื่องของคำสั่ง ครับ
ทำความเข้าใจในสิ่งที่ต้องใช้หลักๆให้มากๆครับ รายละเอียดเล็กน้อยผมใช้ google เอา อย่าใช้คำว่าจำเลย ผมเบื่อการจำมากตั้งแต่สมัยเรียนแล้ว
โลกนี้มีอะไรน่าจำมากกว่า code เยอะนะครับ เขียนโปรแกรมให้เก่งพอประมาณพอ ไม่ต้องเก่งมากหรอก
เห็นด้วยครับ
ผมคิดว่าการทำงานไม่ว่าจะเป็นเรื่องใด ควรต้องทุ่มเทเรื่องๆนั้นไปจนสุดทางนะครับ
และก็ไม่ได้หมายความว่า เราจะต้องละทิ้งเรื่องอื่นๆที่น่าสนใจไปด้วย
ยกเว้นคุณคิดจะทำเล่นๆ และยอมรับว่าตัวเองจะหยุดแค่ "มือสมัครเล่น"
+1 อย่าทุ่มเทกับเรื่องใดเรื่องหนึ่งจนลืมมองด้านอื่นของชีวิตครับ
อืมครับ
+1
วงการโปรแกรมเมอร์เป็นวงการเดียว(ที่นึกออก)ที่ต้องใช้ความรู้ในด้านอื่นๆค่อนข้างมาก นึกเล่นๆว่าถ้าเราเป็นโปรแกรมเมอร์ระดับเทพที่ต้องเขียนโปรแกรมบัญชี ถ้าเราไม่มีความรู้ด้านบัญชีเลย ยังไงก็เขียนไม่ได้ครับ
บางปัญหาเราอาจจะแก้ได้ง่ายนิดเดียวถ้ามีความรู้เฉพาะทางในด้านนั้นๆเยอะ แต่ถ้าเรารู้น้อยเขียนโค้ดเก่งอย่างเดียว เราอาจจะต้องเขียนอ้อมโลกเพื่อให้ได้ผลลัพท์แบบเดียวกัน
สรุปแล้ว วงการนี้ผมคิดว่ารู้กว้างดีกว่ารู้ลึกครับ แต่ถ้าได้ทั้งกว้างและลึกมันก็จะดีมากๆ (และคงเหนื่อยมากๆด้วย)
เห็นด้วยครับ
จินตนาการ สำคัญกว่า การเรียนรู้
^^
และจินตนาการนั้นต้องอยู่บนฐานของความเป็นจริง
ไม่ใช่การเพ้อเจ้อ ไม่ใช่การท่องจำคำพูดของผู้อื่นมากล่าว
เหนือสิ่งอื่นใดคือการลงมือทำให้สัมฤทธิ์ผล
เพราะคนในโลกไม่ได้รู้จักเราว่าคิดอะไร แต่รู้จักเราจากสิ่งที่เราทำ
จริงๆ แล้วประโยคนี้ ต้องพูดว่า "จินตนาการสำคัญกว่าความรู้" ครับ
Imagination is more important than knowledge.
เป็นคำกล่าวของไอน์สไตน์ และผมเป็นคนนึงที่เห็นด้วยเป็นอย่างยิ่งกับประโยคนี้
(หลังจากที่คิดอยู่นานว่า จริงเหรอ?)
ยกตัวอย่างง่ายๆ
การที่คุณเขียน PHP ได้ มันคือความรู้
แต่จินตนาการทำให้คนเอา PHP มาทำเป็น facebook
ผมลองตั้งคำถามว่า "แล้วถ้าไม่มีความรู้จะทำอะไรได้?"
คำตอบก็คือ "ถ้าคุณจินตนาการได้แล้ว มันจะผลักดันให้คุณไปแสวงหาความรู้เองนั่นแหละ"
(หรือจ้างคนที่มีความรู้ทำแทน ถ้ามีทุน)
คล้ายๆกับ ถามว่า ความรัก...คืออะไร อิอิ มันมีหลายนิยามครับแล้วแต่คนมอง
สำหรับผมแล้ว โปรแกรมเมอร์ที่เก่ง คือ เขียนโปรแกรมแล้วหาเงินเข้ากระเป๋าได้มหาศาล นั้นล่ะเก่งที่สุดแล้วครับ ดูที่ผล อย่างเดียววิธีการเนี่ยมันเรื่องรอง
ความขยันครับ
ลอจิคดี มีหลักการ พื้นฐานแน่น มีความคิด และ ... มี Ego ที่ดี (คือมีตัวตนของตัวเอง ไม่เกี่ยวกับการยึดติดนะครับ) แค่นี้พอแล้วล่ะครับ
http://stevenbenner.com/2010/08/will-the-really-real-programmers-please-stand-up/
ผมเห็นด้วยกับบทความข้างบนนี้น่ะครับ
ถ้าเป็นเมื่อก่อนก็คงจำเป็นจะต้องจำให้ได้เยอะๆ แหละครับ
เพราะหา reference ยาก ตัวช่วยก็ไม่ค่อยมี
แต่ปัจจุบันผมว่าไม่ต้องแล้วล่ะ
เหมืิอนกันเหะ ผมเป็นเวปดีไซน์ เวลาจะพิมพ์ CSS ที ก็แค่เคาะคีย์บอร์ดแค่ตัวอักษรตัวสองตัว แล้วก็ไล่หาเอา เวลาลืมโค๊ดก็เสริชหาที... แต่ผลงานก็ออกมาทีนะครับ
โปรแกรมเมอร์ที่เก่ง... ไม่จำเป็นต้องจำโค้ดได้มาก... ไม่จำเป็นต้องเขียนได้หลายภาษา...
แต่...
1. ต้องมีศิลป์
- เข้าใจความรู้สึกของผู้อื่น(เจ้านาย,ลูกค้า) ว่าแท้จริงแล้ว ต้องการอะไรจากโปรแกรม
2. ต้องมีจิตวิญญาณความเป็นหมอ
- นอกจากเข้าใจความรูสึกของผู้อื่น (ผู้ป่วย) ต้องรู้ว่าผู้ป่วยเป็นโรคอะไร แล้วจัดยาให้ถูกกับโรค (Solution)
3. และที่สำคัญ ต้องขยัน
- เทคโนโลยี เปลี่ยนเร็ว อย่าขี้เกียจในการติดตามข่าวสาร
- นอนดึก อย่าตื่นสาย
- 1 สัปดาห์ 7 วัน วางแผนไว้ 1 วันสำหรับสร้างจินตนาการ
http://janawat.wordpress.com
เก่งไม่เก่งไม่รู้แหละ การเขียนส่วนใหญ่อะไรไม่ได้ใช้บ่อย หรือพวกเครื่องมือ OO ที่สืบทอดอิมพลีเมนต์กันยุ่งเหยิงนี่ปวดกระบาลจริงๆ นานๆ ใช้ทีนี่ต้องปิดเอกสาร
แต่ผมคิดว่าคนเก่งๆ เขารู้ว่าเครื่องมือแต่ละอย่างทำงานอย่างไร เพื่อหลีกเลี่ยงปัญหาที่อาจเกิด หรือสามารถแก้ปัญหาที่เกินขึ้นได้
เมื่อก่อนคิดว่าตัวเองเก่งนะ ตอนเริ่มเขียนใหม่ๆ ผ่านไปสาม-หกเดือน กลับมาอ่านโค้ดตัวเอง อ่านไม่ออกTT กว่าจะอ่านออก คิดว่ากูนี่เทพจริงๆ คิดได้ไง^^
ถ้ากลับมาอ่านโค้ดตัวเองไม่ออกภายหลัง ควรปรับปรุงโค้ดตัวเองอย่างยิ่งครับ เพราะคนอื่นก็คงอ่านไม่ออกเหมือนกัน อาจจะตั้งชื่อตัวแปรให้สื่อความหมายขึ้น ทำโค้ดให้อ่านง่ายขึ้น และใส่คอมเม้นท์อธิบายว่าทำงานอะไร เพื่ออะไร
Jusci - Google Plus - Twitter