สวัสดีครับ
คำถามนี้ผมอยากถามมานานแล้ว แต่เรียบเรียงคำพูดไม่ได้ซะที ก็ถามมันแบบบ้านๆ นี่ล่ะครับ พอดีว่าผมสงสัยมานานแล้ว ว่าในบริษัทใหญ่ๆ นั้นเค้าแบ่งงานกันยังไงครับ
สมมติว่าพัฒนาแอพใดๆ สักตัวละกัน เอาเป็นว่าชื่อ App A
เจ้า App A นี่จะถูกแบ่งออกให้นักพัฒนาหลายๆ คนพัฒนากันอย่างไรครับ แบ่งตาม Procedure หรือ Module หรือ ? ฯลฯ แล้วจะรู้ได้ยังไงว่างานส่วนที่แบ่งไปนั้นทำงานถูกต้อง และทำงานสอดคล้องกับงานส่วนที่แบ่งให้คนอื่นๆ ทำ คือคำถามมันเยอะมากครับ ผมเรียบเรียงไม่ถูก
เพราะส่วนตัวเคยทำงานแบบ OPOE (One project One employee) เท่านั้นครับ คือเหมามันตั้งแต่ทำ UI ไล่ไปจนถึงเขียนโปรแกรมเลย
ขอบคุณล่วงหน้าครับ
เท่าที่ผมเคยทำนะครับ หัวหน้าจ
Thaina Mon, 15/08/2011 - 16:14
เท่าที่ผมเคยทำนะครับ
หัวหน้าจะแบ่งงาน(ทำเอนจิ้นเกม)ด้วยการที่ เขียนคลาส Core ขึ้นมาชุดนึง ว่าไม่ว่าเอนจิ้นอะไรก็จะมีแพทเทิร์นประมาณนี้
แล้วที่เหลือคนที่เอาไปทำ จะปรับระบบ Core ตัวนี้ ให้ทำงานที่เขาต้องการ
ก็แบ่งตามงานไปเลยแหละครับ เอนจิ้นเกมก็มี ทำกราฟฟิค ทำอนิเมชั่น ทำฟิสิกส์
แล้วก็จอยน์กันเองว่า ทำกราฟฟิค ยุ่งกับอนิเมชั่น จะส่งข้อมูลกันยังไง อนิเมชั่นกับฟิสิกส์ตีกัน จะต้องมีอีกระบบมาจัดการตรงกลาง ก็ต้องไปร่วมมือกันเอง
จุดสำคัญคือ ต้องมีการแลกเปลี่ยนโค้ดกันเป็นระยะๆ แล้วทำให้มันทำงานได้ แล้วก็โยนขึ้น SVN กลาง
หลังจากนั้น ไม่ว่าใครจะทำระบบอะไรเข้าไป ต้องไม่ทำให้โค้ดกลางนี่รันไม่ได้
แล้วก็ทำตามนี้ไปเรื่อยๆ พอระบบพื้นฐานเสถียรดีแล้ว อนิเมชั่นกับกราฟฟิคมีแพทเทิร์นที่ไม่ว่าจะใส่อะไรเพิ่มก็จะไม่ตีกันเละ คราวนี้ก็จะเขียนอะไรก็ได้ไม่ต้องมาตีกันอีก
คือประมาณว่า การเขียนโปรแกรม OOP มันจะมีแนวคิด Inheritance กับ Polymorphism อยู่แล้วครับ ว่าพอเขียนๆไป มันจะมี Pattern หลัก ที่ Module นี้ จะต้องทำแบบนี้แน่นอน เราก็เขียนไว้เป็น Base Class แล้วคลาสอื่นๆก็ Inherite เป็นแค่ Plugin แล้วเราก็จะกันชุดของคลาสไว้เป็น Module ได้เลย ว่าจากนี้จะไม่มีคนอื่นที่ต้องมายุ่งกับเราอีก
ตอนที่ผมทำงานอยู่ หัวหน้าจะเน้นให้ผมเขียน คำสั่งอะไรก็ตามแต่ที่คนอื่นจะมาเรียกใช้ก่อน คนอื่นจะไม่ยุ่งอะไรกับผมมากกว่านี้
แล้วผมก็เขียนส่วนที่ทำงาน ให้มันเรียกใช้ด้วยคำสั่งพวกนี้เท่านั้น
เป็นเทคนิคที่น่าสนใจทีเดียว
Invisible Force Fri, 19/08/2011 - 16:14
In reply to เท่าที่ผมเคยทำนะครับ หัวหน้าจ by Thaina
เป็นเทคนิคที่น่าสนใจทีเดียว
ถ้าทำหลายคนต่อหนึ่งโปรเจค
adente Mon, 15/08/2011 - 23:03
ถ้าทำหลายคนต่อหนึ่งโปรเจค ต้องหาซอฟแวร์มาดูแลเรื่อง source กลาง หมดปัญหาเรื่องการอัพเดทโค้ตซ้ำซ้อน
ส่วนเนื้องานก็จะมีเป็น standard ไปเลยว่าสิ่งที่ต้องทำเหมือนกันคืออะไร จัดระเบียบโค้ตอย่างไร
วิธีการเขียนการติดต่อกับคลาสเป็นอย่าไง ไม่ใช้ 10 คนก็ 10 สไตล์ มันจะมีปัญหาได้ตอนหลังพอโปรเจคมันเริ่มใหญ่ขึ้นเรื่อยๆนี้ยิ่งยุ่งยากเลย แล้วก็หน้าที่ต้องแบ่งกันดี ไม่ซ้อนทับกันและที่สำคัญ ประสานงานกันเยอะๆ เพราะบางทีหลายคนทำ ต่างคนต่างทำจะกลายเป็นประสานงาได้ครับ
ผมก็เป็นแนว OPOE
EThaiZone Wed, 17/08/2011 - 09:45
ผมก็เป็นแนว OPOE เหมิอนท่านแหละครับ เมื่อก่อนก็ไม่เข้าใจ แต่พอศึกษาการใช้พวก framework จะพบว่ามันทำมาเพื่องานแบบนี้เลย ไม่ว่าจะภาษาอะไร ลองหา framework ที่ใช้ในภาษานั้นมาศึกษาดูครับ
อย่างงานเขียนเว็บพวกเว็บแอพ โมเดล MVC (model-view-controller) ก็ช่วยให้งาน programming กับ web design ไม่ตีกัน เพราะเขียนโปรแกรมก็ไปยุ่งที่ M กับ C ส่วนงานดีไซน์ก็ไปยุ่ง V กับ C ดังนั้นทั้งคู่ก็มาต้องทำงานร่วมกันที่ตรง C และปรึกษากันแค่เรื่องข้อมูลที่ต้องใช้ร่วมกันส่งหากัน ที่เหลือก็งานใครงานมัน