Habitability (ความน่าอยู่อาศัย)
อีก แนวคิดหนึ่งที่มาจากโลกของสิ่งปลูกสร้างและมีความสอดคล้องกับแวดวงการพัฒนาซอฟต์แวร์คือ habitability ผมรู้จักคำนี้ครั้งแรกจาก Frank Buschmann เขาอธิบายว่าสถาปนิกมีความรับผิดชอบในการทำให้แน่ใจว่าสภาพแวดล้อมที่พวกเขาสร้างขึ้นเป็นที่ที่น่าทำงานด้วย ถ้าสถาปัตยกรรมคือโครงของระบบ ซึ่งอธิบายว่าสิ่งที่เปลี่ยนแปลงยากประกอบกันอย่างไร ก็ยังมีบางครั้งที่จำเป็นต้องมีข้อจำกัดเกิดขึ้นด้วย แต่ถ้าทำผิดพลาด การทำงานในระบบก็จะกลายเป็นเรื่องเจ็บปวดและเสี่ยงต่อข้อผิดพลาด
อย่างที่ Richard Gabriel ผู้เขียน Patterns of Software , 6 อธิบายไว้:
Habitability is the characteristic of source code that enables programmers coming to the code later in its life to understand its construction and intentions and to change it comfortably and confidently.
ระบบนิเวศการพัฒนาซอฟต์แวร์สมัยใหม่ประกอบด้วยมากกว่าแค่โค้ด มันขยายออกไปถึงเทคโนโลยีที่เราใช้และวิธีการทำงานที่เรานำมาใช้ด้วย ผมเห็นนักพัฒนาบ่นด่าเทคโนโลยีที่พวกเขาถูกสั่งให้ใช้อยู่บ่อยครั้งเกินไป มักจะเป็นเทคโนโลยีที่ถูกเลือกโดยคนที่ไม่เคยต้องใช้มันเองเลย ยิ่งคุณทำให้วิวัฒนาการของสถาปัตยกรรมและการเลือกเครื่องมือและเทคโนโลยีที่คุณใช้เป็นกระบวนการที่ทุกคนมีส่วนร่วมมากเท่าไร ก็ยิ่งง่ายขึ้นเท่านั้นที่ผลลัพธ์สุดท้ายจะเป็นสภาพแวดล้อมที่น่าอยู่อาศัย ซึ่งคนที่สร้างระบบรู้สึกมีความสุขและมีประสิทธิผลในการทำงาน
ถ้าเราต้องการมั่นใจว่าระบบที่เราสร้างขึ้นน่าอยู่อาศัยสำหรับนักพัฒนาของเรา สถาปนิกและผู้ตัดสินใจคนอื่นๆ ต้องเข้าใจผลกระทบของการตัดสินใจของพวกเขา อย่างน้อยที่สุดก็หมายถึงการใช้เวลาร่วมกับทีม และในอุดมคติคือการเขียนโค้ดร่วมกับทีมจริงๆ สำหรับคนที่ทำ pair programming การที่สถาปนิกจะเข้าร่วมทีมชั่วคราวในฐานะสมาชิกคนหนึ่งของคู่ก็เป็นเรื่องง่าย การเข้าร่วมกิจกรรม ensemble programming ก็อาจให้ประโยชน์ที่สำคัญได้เช่นกัน แม้ว่าสถาปนิกที่เข้าร่วมกิจกรรมกลุ่มแบบนี้จะต้องตระหนักว่าการมีตัวตนของพวกเขาอาจเปลี่ยนพลวัตของกลุ่มได้อย่างไร
ในอุดมคติ คุณควรทำงานในงานปกติเพื่อให้เข้าใจจริงๆ ว่างาน "ปกติ" เป็นแบบไหน ผมไม่สามารถเน้นย้ำได้มากพอว่าสำคัญแค่ไหนที่สถาปนิกจะใช้เวลาจริงๆ กับทีมที่กำลังสร้างระบบ! วิธีนี้ได้ผลมากกว่าการโทรคุยหรือแค่ดูโค้ดของพวกเขาอย่างมาก ส่วนความถี่ที่คุณควรทำแบบนี้ก็ขึ้นอยู่กับขนาดของทีมที่คุณทำงานด้วยเป็นอย่างมาก แต่กุญแจสำคัญคือมันควรเป็นกิจกรรมประจำ ถ้าคุณทำงานกับสี่ทีม ตัวอย่างเช่น อาจจะลองใช้เวลาครึ่งวันกับแต่ละทีมทุกสี่สัปดาห์ ทำงานร่วมกับพวกเขาในงานส่งมอบ เพื่อสร้างความตระหนักรู้และการสื่อสารที่ดีขึ้นกับทีมที่คุณทำงานด้วย