โปรแกรมเมอร์เก่งๆ มีแนวทางพัฒนาตัวเองอย่างไรบ้าง [ถาม-ตอบ]

หน้าแรก ฟอรั่ม กระดานสนทนาทั่วไป โปรแกรมเมอร์เก่งๆ มีแนวทางพัฒนาตัวเองอย่างไรบ้าง [ถาม-ตอบ]

กระทู้นี้ประกอบด้วย 0 ข้อความตอบกลับ มี 1 เสียง และอัปเดตครั้งสุดท้ายโดย  admin 4 วัน, 14 ชั่วโมง มาแล้ว

  • ผู้เขียน
    ข้อความ
  • #196

    admin
    Keymaster

    A: มองหาจุดอ่อนของตัวเองทักษะด้านไหนที่ขาด ด้านไหนเก่งแล้ว ส่วนการพัฒนาตัวเองโดยการไปอ่านบทความคนเก่งๆๆ ในต่างประเทศทดลองทำให้เข้าใจ สุดท้ายควรมีความทะเยอะทะยาน


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


    C: อย่างแรกต้องพัฒนาภาษาอังกฤษก่อน ไม่งั้นไม่มีทางเก่ง เพราะความรู้ในไทยแคบมาก วิธีพัฒนาภาษาอังกฤษคือลงโปรแกรมดิกชันนารี เช่น lingoes


    D: โปรแกรมเมอร์เมืองไทยเหมือนต้องคำสาป คือไปถึงจุดนึงมักจะผันตัวเองไปเป็น SA กันเสียส่วนมาก สาเหตุหลักๆ เลยก็คือมันตันที่เพดานรายได้หารด้วยเวลา คือพองานใหญ่ขึ้น ต้นทุนเวลาในการเขียนโปรแกรมมันไม่คุ้มค่าต่อเวลาที่ตัวเองเสียไป งานเขียนโปรแกรมก็มักจะโยนให้เด็กๆเขียนแทน ดังนั้นจึงต้องควบคุมได้(คุยได้)ด้วย พวกที่จะเขียนโปรแกรมต่อหาเลี้ยงชีพเพราะใจรักน้อยมากๆ.
    ดังนั้น โปรแกรมเมอร์เก่งๆ จึงจะวัดกันที่ code สะอาด, มีคอมเมนต์, ส่งต่อได้, พัฒนาต่อยอดได้ (อย่าไปคิดว่านั่งเขียนคนเดียว แบบในหนังนะ มันไม่ใช่นะ!) แต่ที่สำคัญที่สุดคือ การคุยกับคนอื่นรู้เรื่อง ทำงานเป็นทีมได้
    .
    สำหรับ “การคุยกับคนอื่นรู้เรื่อง” นี่ไม่ใช่เรื่องง่ายนะ บอกเลยว่าน้อยคนจะทำได้ เพราะ บางคนก็ EGO สูงเกิน บางคนก็คุยได้แค่ระดับเพื่อนร่วมงาน (แต่คุยกับลูกค้าไม่ได้) บางคนคุยได้หมดแต่วางแผนงานหรือคุมงานไม่ได้ ดังนั้นใครที่ทำได้ก็จะได้รับบทบาทที่สูงขึ้นจนค่าแรงมันสูงกว่าการต้องลงมานั่งเขียนโค้ด ความเทพมันจึงอยู่ตรงนี้ (ผลงาน) พอมูลค่างานมันก็มากขึ้น ผลประโยชน์ก็เลยมากขึ้นตามไปด้วย จนผันตัวเองกลายเป็น SA ในที่สุด
    .
    บ้านเราเป็นประเทศปลายน้ำเทคโนโลยี และวงการมันแคบ ช่องทางการเป็นโปรแกรมเมอร์อาชีพต่อจึงไม่ค่อยหลากหลาย ถ้าถามว่าโปรแกรมเมอร์เก่งๆ พัฒนาตัวอย่างไร ก็ตอบว่าให้ดู SA เป็นแนวทางครับ 🙂


    E: ต้องเก่งเรื่องคน คือ ต่อให้เรา coding เก่งเทพยังไงก็แล้วแต่ มันก็มีเพดานเรื่องเวลา เปรียบเทียบเหมือนเราคนเดียวก็คงสร้างบ้านหรูๆได้สักหลัง แต่ถ้าจะสร้างตึกต้องใช้ทีม ฉะนั้นต้องแบ่งเวลามาพัฒนาคนในทีมด้วย อีกอย่างคือ จัดการความคาดหวังลูกค้าเก่ง คือ สามารถหาวิธีที่จะทำให้งานบรรลุวัตถุประสงค์ได้โดยใช้เวลาและต้นทุนน้อยที่สุด แล้วนำวิธีนั้นไปเสนอกับลูกค้า (มีลูกค้าไม่น้อยที่ไม่รู้ว่ามีวิธีอื่นด้วย) ถ้าเห็นตรงกัน ก็ปิดงานไวขึ้น บางทีอาจไม่จำเป็นทำครบทุกข้อด้วยซ้ำ coding มันต้องเป็นอยู่แล้ว แต่อาจไม่จำเป็นต้องเป็นเทพจุติขนาดนั้น มันก็มีแนวคิดเรื่อง clean code, TDD อยู่ หรือถ้าอยากเก่งจริงๆต้องลองทำงานหลายๆแบบจนมี code library ส่วนตัว พอเจองานใหม่ก็ “อ้อ เคยทำแล้ว” แล้วก็ copy & paste แป๊บเดียวเสร็จ


    F:
    1.สมัยอ่อนหัด เขียนเยอะๆ ไปหาดูโค้ดชาวบ้าน แล้วเอามาประยุกต์เป็นแนวทางของตัวเอง (อย่าไป copy ของเขามาทั้งหมด) การเขียนโปรแกรมมันควรออกมาจากความรู้ของเราถ่ายทอดลงไป ไม่ใช่ copy เขา วิธีการนี้ผมเรียก copy and improvment
    2.เขียนโค้ดให้สะอาด(มีบางท่านเม้นท์แล้ว) การเขียนโค้ดได้กับการเขียนโค้ดเป็นมันต่างกันนะครับ
    3.ตัวแปรควรจะต้องสื่อความหมาย และควรมี comment เอาไว้ว่าใช้ทำอะไร
    4.comment ควรจะทำเอาไว้เพื่ออธิบายความคิดเราว่าฟังก์ชั่นนี้ทำอะไร เพื่อป้องกันเราลิมและคนที่มาอ่านงานเราเยาจะได้เข้าใจ
    5.อะไรที่ใช้งานบ่อยแยกออกมาเป็น module ซะ

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


    G: เก่ง?

    เทียบกับอะไรครับ
    กับภาษาโปรแกรมที่ใช้ว่า เต็มร้อนรึยัง
    กับตัวเอง
    กับคนอื่น
    กับคนในองค์กร

    คือ ต้องมีแนวปฏืบัติ แล้วทำให้ทะลุแนวปฏิบัตินั้น ที่เพื่อนแนะมา ล้วนแค่แนวปฏิบัติ

    แล้วก็ดูว่า แนวฯของท่าน เมือเทียบกับองค์กรอื่นเป็นไง? benchmarking

    อีทีนี้ มองดูรอบๆ ‘วงการ’ นี้ว่ามี ‘มาตรฐาน’ ไหม เอาไป ทาบ กับ มาตรฐาน นั้นได้ไหม?

    อ้อ อย่าไปมองแค่มาตรฐานเดียวน่ะ

    อย่างนี้ พอไปได้ไหม?

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

    คุณต้องอ่อนน้อม นอบน้อมถ่อมตน คนอื่นเขาถึงจะให้ความรู้ความร่วมมือด้วยความยินดีเต็มใจไม่ปิดบัง

    สองย่อหน้าข้างบนนั่น ทำได้ เก่งสมใจปรารถนาดั่งใจหวัง แน่นวล

    ผมไม่ใช่คนอ่อนน้อมอะไรนัก


    H:

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


    I: อยู่ที่ว่าจะเอาความเก่งนั้นสร้างความมั่งคั่งให้ตนเองได้ เขียนเก่ง แต่สร้างความมั่งคั่งไม่ได้ ถือว่ายังไม่ประสบผลจากความเก่ง
    การสร้างผลิตภัณฑ์จากความเก่งนั้น ผลิตภัณฑ์นั้นต้องตอบสนองต่อความต้องการตลาด ตรงใจผู้ซืเอ ลอกเลียนแบบยาก โค๊ดซับซ้อนแกะยาก คนอื่นอ่านแล้วไม่เข้าใจอัลกอลิทึ่มซับซ้อน สำคัญ ต้องเป็นนักคิดและนักพัฒนา


    J: 1.อัลกอริธึมต้องดี….
    ถ้ารู้ตัวว่ายังไม่เก่งเรื่องนี้เท่าไหร่ ก็ฝึกเขียนออกมาเป็นโฟลวชาร์ตก่อน อดทนกับมัน อดทนเขียนมันออกมาเรื่อย ๆ เดี๋ยวก็เริ่มจับจังหวะการคิดแบบแตกการทำงานย่อย ๆ ออกมาได้เอง รวมถึงคิดออกมาเป็นระบบได้

    2.เบสิกแน่น ๆ….
    ใช้ tools ตัวไหน คำสั่งและวิธีการเขียนของตัวนั้นต้องแม่น อย่างน้อยจำคำสั่งที่เขียนบ่อย ๆ ได้สัก 20% ก็ยังดี
    สิ่งนี้จะช่วยให้เขียนได้ราบรื่นขึ้น
    เพราะเวลาที่ความคิดไหลลื่น ถ้าเราจำคำสั่งได้ เราจะสามารถเขียนโดยไม่สะดุดเลย ก็จะทำให้เราเขียนได้เร็วขึ้น เก่งขึ้น

    3.ครูพักลักจำ….
    โค้ดของคนอื่น วิธีคิดของคนอื่น เอามาศึกษาเยอะ ๆ ดูไปดูมา
    เดี๋ยวเราก็เกิดคำถามกับตัวเองนั่นแหละว่า… ทำไมเค้าใช้คำสั่งแบบนี้ ทำไมเค้าคิดแบบนี้… มันมีวิธีอื่นที่ดีกว่านี้มั้ย….
    มันเป็นทางลัดที่จะใช้พัฒนาตัวเราให้เก่งขึ้นได้อย่างรวดเร็ว
    ….


    K: 1. เขียนโค๊ดตาม pattern ที่เค้ามีอยู่เดิม เพื่อให้ maintain ได้ในภายหลัง ไม่ใช่แหวกแนวจน เค้าจะสรรเสริญเมื่อเราไม่อยู่
    2. การเขียนโค๊ด ก้อจะพยายามแตกงานออกก่อนครับ ว่า ต้องทำอะไรยังไงบ้าง .. ซึ่งในบางครั้งก้อรู้ ว่ามันมีจุดบอด หรือ บัค แต่นั่นไม่ใช่ปัญหาใหญ่ ไว้มาแก้ไข เมื่องานรันได้ ดีกว่า ติดแค่ที่บัค แต่ไม่ขยับทำไรต่อไม่ได้เลยยย
    3. ทำความเข้าใจ pattern ที่เค้ามีให้ได้ .. เขียนเป็น ขั้นตอน Flow chart ออกมา เช่น เราต้องทำโมดูลเพิ่ม ที่โปรเจคนี้ เราต้องทำอะไรยังไงบ้าง .. มีไฟล์ อะไร ยังไง ลิงค์กันแบบไหนบ้าง ..


    L: ฝึกเขียนโปรแกรมให้userใช้งานง่ายๆแบบ ลากวาง แสดงผลออกมาเป็นกราฟสวยๆ ใช ้tools อะไรก็ได้ ที่ถนัดๆ , ฝึกทำงานเป็นทีมประสานงานกันด้วยtoolsแบบเดียวกัน github

    คำถาม-คำตอบจาก กลุ่มสมาคมโปรแกรมเมอร์ไทย

คุณต้องเข้าสู่ระบบเพื่อตอบกลับกระทู้นี้