เงื่อนไขตั้งต้นที่จำเป็นสำหรับแนวทางตลาดสด

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

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

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

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

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

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

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

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

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

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

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

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

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

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