สภาพแวดล้อมการพัฒนา Xcode ของ Apple กลายเป็นแหล่งความหงุดหงิดอย่างกว้างขวางในหมู่นักพัฒนา iOS โดยการอภิปรายในชุมชนเผยให้เห็นปัญหาที่ฝังรากลึกซึ่งไปไกลกว่าข้อบกพร่องของซอฟต์แวร์ทั่วไป ปัญหาเหล่านี้มีตั้งแต่ข้อผิดพลาดของคอมไพเลอร์ที่เข้าใจยากไปจนถึงระบบนิเวศแบบปิดของ Apple ที่บังคับให้นักพัฒนาต้องใช้เครื่องมือที่มีคุณภาพต่ำกว่ามาตรฐาน
ความล้มเหลวของคอมไพเลอร์ทำให้นักพัฒนาติดอยู่
หนึ่งในปัญหาที่น่าสะพรึงกลัวที่สุดที่รบกวน Xcode คือข้อผิดพลาดที่มีชื่อเสียงในทางที่ไม่ดี unable to type-check this expression in reasonable time ข้อความนี้ปรากฏขึ้นเมื่อคอมไพเลอร์ Swift ยอมแพ้ในการวิเคราะห์โค้ด ทำให้นักพัฒนาต้องค้นหาทั่วทั้งโค้ดเบสโดยไม่มีคำแนะนำที่มีความหมาย ข้อผิดพลาดนี้ไม่ให้ตำแหน่งหรือสาเหตุที่เฉพาะเจาะจง ทำให้สิ่งที่ควรจะเป็นเครื่องมือพัฒนาที่มีประโยชน์กลายเป็นเพียงโปรแกรมแก้ไขข้อความจนกว่าปัญหาลึกลับนี้จะได้รับการแก้ไข
ชุมชนได้ระบุว่านี่เป็นอาการของปัญหาใหญ่กว่าที่เครื่องมือพัฒนาของ Apple แสร้งทำเป็นว่าทุกอย่างทำงานได้ดีในขณะที่จริงๆ แล้วมันกำลังล้มเหลว ไม่เหมือนกับข้อผิดพลาดของคอมไพเลอร์แบบดั้งเดิมที่ชี้ไปที่ปัญหาเฉพาะ ความล้มเหลวเหล่านี้บังคับให้นักพัฒนาต้องเดาเอาเปลี่ยนเอาแบบเสียเวลา
ปัญหาหลักของ Xcode ที่นักพัฒนาระบุ
หมวดหมู่ปัญหา | ปัญหาเฉพาะ | ผลกระทบ |
---|---|---|
ข้อผิดพลาดของ Compiler | "Unable to type-check expression" โดยไม่มีตำแหน่งที่เฉพาะเจาะจง | การพัฒนาหยุดชะงักจนกว่าจะค้นพบปัญหาด้วยตนเอง |
ไฟล์โปรเจกต์ | ไฟล์ project.pbxproj ที่อ่านไม่ได้ทำให้เกิด merge conflicts | การทำงานร่วมกันในทีมกลายเป็นเรื่องยาก |
เครื่องมือ Debugging | กล่องโต้ตอบรหัสผ่านซ้อนทับกัน ปัญหาการเชื่อมต่อกับอุปกรณ์ iOS | การทดสอบและการ deployment ล่าช้า |
เครื่องมือทางเลือก | AppCode ถูกยกเลิก เอกสารเครื่องมือ CLI มีจำกัด | ไม่มีทางเลือกที่เหมาะสมแทน Xcode |
การรายงานบั๊ก | bug tracker ส่วนตัวป้องกันการทำงานร่วมกันของชุมชน | นักพัฒนาเสียเวลาค้นพบปัญหาที่รู้จักแล้วซ้ำ |
ไฟล์โปรเจกต์สร้างฝันร้ายในการรวมโค้ด
ระบบการกำหนดค่าโปรเจกต์ของ Xcode นำเสนออุปสรรคสำคัญอีกประการหนึ่งสำหรับทีมพัฒนา ไฟล์ project.pbxproj ซึ่งมีการตั้งค่าและการกำหนดค่าโปรเจกต์ทั้งหมด เป็นโค้ดที่อ่านไม่ออกหลายพันบรรทัดซึ่งกลายเป็นฝันร้ายในระหว่างการทำงานร่วมกันของทีม เมื่อเกิดความขัดแย้งในการรวมโค้ดในไฟล์นี้ นักพัฒนามักพบว่าตัวเองไม่สามารถเปิดโปรเจกต์ได้เลย
การตอบสนองของชุมชนคือการละทิ้งระบบของ Apple ทั้งหมด โดยนักพัฒนาหลายคนหันไปใช้เครื่องมือของบุคคลที่สามอย่าง xcodegen เพื่อจัดการไฟล์โปรเจกต์ในรูปแบบที่มนุษย์อ่านได้อย่าง YAML จากนั้นจึงสร้างไฟล์ Xcode ตามต้องการ
ระบบนิเวศการพัฒนาแบบปิดของ Apple ขัดขวางนวัตกรรม
บางทีแง่มุมที่น่ากังวลที่สุดที่เผยออกมาในการอภิปรายของชุมชนคือการควบคุมแบบผูกขาดของ Apple เหนือเครื่องมือพัฒนา iOS บริษัทรักษาระบบติดตามข้อบกพร่องแบบส่วนตัว ทำให้นักพัฒนาไม่สามารถค้นคว้าปัญหาที่ทราบแล้วหรือร่วมมือกันหาทางแก้ไขได้ ความไม่โปร่งใสนี้บังคับให้นักพัฒนาหลายพันคนต้องเสียเวลาค้นพบปัญหาเดิมๆ ซ้ำแล้วซ้ำเล่าอย่างอิสระ
ระบบติดตามข้อบกพร่องของ Apple เป็นแบบส่วนตัว คุณสามารถส่งรายงานข้อบกพร่องได้ แต่ตัวรายงานข้อบกพร่องเป็นเหมือนหลุมดำ ข้อมูลเข้าไปแต่ไม่ออกมา
การขาดทางเลือกที่เป็นไปได้ทำให้ปัญหาซับซ้อนยิ่งขึ้น AppCode ของ JetBrains ซึ่งเสนอประสบการณ์แบบ IntelliJ สำหรับการพัฒนา iOS ถูกยกเลิกเนื่องจากความยุ่งยากในการยังคงต้องใช้ Xcode สำหรับการคอมไพล์และการปรับใช้ สิ่งนี้ทำให้นักพัฒนาติดอยู่ในระบบนิเวศของ Apple โดยไม่มีทางหนี
ชุมชนแสวงหาวิธีแก้ปัญหาและทางเลือก
นักพัฒนาได้พบวิธีต่างๆ ในการรับมือกับข้อจำกัดของ Xcode แม้ว่าจะไม่มีวิธีใดให้การแก้ไขที่สมบูรณ์ บางคนใช้เครื่องมือภายนอกสำหรับการจัดการโปรเจกต์ ในขณะที่คนอื่นๆ ได้พัฒนาแนวทางการแก้ไขปัญหาแบบพิธีกรรมที่เกี่ยวข้องกับการล้างแคช การรีสตาร์ตแอปพลิเคชัน และการสร้างโปรเจกต์ใหม่ อย่างไรก็ตาม วิธีแก้ปัญหาเหล่านี้เน้นย้ำว่าสภาพแวดล้อมการพัฒนาขัดขวางประสิทธิภาพการทำงานมากกว่าที่จะเสริมสร้าง
ความแตกต่างกับแพลตฟอร์มอื่นๆ ชัดเจนมาก เครื่องมือพัฒนาของ Microsoft ได้รับคำชมจากชุมชนสำหรับความเปิดกว้าง ด้วยที่เก็บข้อมูลสาธารณะ ผู้ดูแลที่ตอบสนอง และกระบวนการพัฒนาที่โปร่งใส สิ่งนี้ทำให้แนวทางลับๆ ของ Apple ดูล้าสมัยและเป็นปฏิปักษ์ต่อนักพัฒนายิ่งขึ้น
วิธีแก้ปัญหาและโซลูชันของนักพัฒนา
- การจัดการโปรเจกต์: ใช้ xcodegen ในการจัดการโปรเจกต์ในรูปแบบ YAML
- สภาพแวดล้อมการพัฒนา: นักพัฒนาบางคนใช้ neovim ร่วมกับ xcode-build-server (แม้ว่าจะไม่เสถียร)
- ระบบอัตโนมัติสำหรับ Build: Fastlane ช่วยในการเขียนสคริปต์และกระบวนการ CI/CD
- พิธีกรรมแก้ไขปัญหา: ล้าง derived data → รีสตาร์ท Xcode → รีบูต Mac → ลองเวอร์ชัน beta → สร้างโปรเจกต์ใหม่
![]() |
---|
สถานีทำงานของนักพัฒนา iOS ที่แสดง Xcode และโค้ด Swift เพื่อแสดงให้เห็นถึงความท้าทายที่เผชิญในสภาพแวดล้อมการพัฒนา |
ต้นทุนของแนวทางของ Apple
การอภิปรายของชุมชนเผยให้เห็นว่าเครื่องมือพัฒนาที่ไม่ดีของ Apple อาจกำลังขัดขวางการเติบโตของนักพัฒนาใหม่ที่เรียนรู้การพัฒนา iOS เป็นประสบการณ์การเขียนโปรแกรมครั้งแรก ลักษณะที่คาดเดาไม่ได้ของปัญหาของ Xcode สอนให้นักพัฒนาพึ่งพาการแก้ไขปัญหาแบบงมงายมากกว่าทักษะการแก้ปัญหาอย่างเป็นระบบ
สำหรับนักพัฒนาที่มีประสบการณ์ ความหงุดหงิดเพิ่มขึ้นด้วยความเฉยเมยที่ชัดเจนของ Apple ต่อปัญหาเหล่านี้ ดูเหมือนว่าจุดสนใจของบริษัทจะอยู่ที่การรักษาการควบคุมเหนือไปป์ไลน์การพัฒนา iOS มากกว่าการให้เครื่องมือที่ดีที่สุดแก่นักพัฒนา แนวทางนี้ได้ผลเพราะตำแหน่งในตลาดสมาร์ทโฟนของ Apple แต่มาพร้อมกับต้นทุนของประสิทธิภาพการทำงานและความพึงพอใจของนักพัฒนา
ลักษณะที่แพร่หลายของข้อร้องเรียนเหล่านี้บ่งบอกว่าปัญหาของ Xcode ไม่ใช่เหตุการณ์ที่เกิดขึ้นแยกเดี่ยว แต่เป็นปัญหาการออกแบบและลำดับความสำคัญพื้นฐานที่สะท้อนความสัมพันธ์ที่กว้างขึ้นของ Apple กับชุมชนนักพัฒนา
อ้างอิง: Xcode is the Worst Piece of Professional Software I Have Ever Used