<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Decision Making &#8211; Few Steps &#8211; ก้าวสั้นๆ แต่ไปเรื่อยๆ</title>
	<atom:link href="https://myifew.com/tag/decision-making/feed/" rel="self" type="application/rss+xml" />
	<link>https://myifew.com</link>
	<description></description>
	<lastBuildDate>Tue, 28 Sep 2021 08:01:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://myifew.com/wp-content/uploads/2018/07/cropped-logo6-ts-32x32.png</url>
	<title>Decision Making &#8211; Few Steps &#8211; ก้าวสั้นๆ แต่ไปเรื่อยๆ</title>
	<link>https://myifew.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>ทำไมถึงควรทำ Architecture Decision Record</title>
		<link>https://myifew.com/6053/why-architecture-decision-record/</link>
					<comments>https://myifew.com/6053/why-architecture-decision-record/#respond</comments>
		
		<dc:creator><![CDATA[iFew]]></dc:creator>
		<pubDate>Tue, 28 Sep 2021 07:59:38 +0000</pubDate>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Architecture Decision Record]]></category>
		<category><![CDATA[Decision Making]]></category>
		<guid isPermaLink="false">https://myifew.com/?p=6053</guid>

					<description><![CDATA[ในโปรเจ็คที่มีขนาดใหญ่ มีคนเกี่ยวข้องเยอะ และมีผลกระทบเยอะในทุกการตัดสินใจ น่าจะเคยเจอการประชุมที่มีการถกเถียงกันเรื่องเหตุผลของผลลัพธ์ต่างๆ เช่น ทำงานไปเกือบเสร็จแล้ว แต่ลูกค้าหรือทีม Infrastructure ถามกลับว่า ทำไมเราตัดสินใจเลือก Architecture แบบนี้ หรือ Technology นี้? ตอนนั้นคิดอะไรอยู่? มีข้อจำกัดอะไร ถึงต้องเลือกแบบนี้?&#8230;]]></description>
										<content:encoded><![CDATA[
<p>ในโปรเจ็คที่มีขนาดใหญ่ มีคนเกี่ยวข้องเยอะ และมีผลกระทบเยอะในทุกการตัดสินใจ น่าจะเคยเจอการประชุมที่มีการถกเถียงกันเรื่องเหตุผลของผลลัพธ์ต่างๆ เช่น ทำงานไปเกือบเสร็จแล้ว แต่ลูกค้าหรือทีม Infrastructure ถามกลับว่า ทำไมเราตัดสินใจเลือก Architecture แบบนี้ หรือ Technology นี้? ตอนนั้นคิดอะไรอยู่? มีข้อจำกัดอะไร ถึงต้องเลือกแบบนี้?</p>



<p>สิ่งที่เราทำคือ ไปค้นหาหลักฐานการประชุม เช่น สมุดที่จดไว้ส่วนตัว หรือ Minute of Meeting ซึ่งในเอกสารเหล่านั้น มักเป็นการบันทึกเฉพาะผลลัพธ์ที่คุยกัน และน้อยคนมากที่จะจดละเอียดถึงเหตุผลของการตัดสินใจ</p>



<p>ดังนั้น เรามาทำความรู้จักกับ Architecture Decision Record (AR) กันดีกว่าครับ เพื่อใช้เป็นไกด์ไลน์บันทึกในการตัดสินใจเรื่องต่างๆ ที่มีประสิทธิภาพมาก</p>



<span id="more-6053"></span>



<h2 class="wp-block-heading">Architecture Decision Record (ADR) คืออะไร</h2>



<p><meta charset="utf-8"><meta charset="utf-8">โลกของธุรกิจมีความเปลี่ยนแปลงอยู่ตลอดเวลา ซอร์ฟแวร์เองก็ต้องพัฒนาปรับปรุงตามไปด้วย สิ่งที่เคยเหมาะสม ณ ​เวลาหนึ่ง แต่ปัจจุบันอาจจะไม่เหมาะสมแล้ว และทุกครั้งที่เปลี่ยนแปลงไป มันมีผลกระทบเสมอ</p>



<p>ADR เป็นเครื่องมือหนึ่ง ที่เป็นรูปแบบการบันทึกการตัดสินใจ เพื่อให้คนอ่านเข้าใจได้ว่า เพราะอะไร ทีมที่ทำงานถึงมีการตัดสินใจแบบนั้น เพื่อให้รู้ถึงแนวคิดในขณะนั้น </p>



<h2 class="wp-block-heading"><meta charset="utf-8">ประโยชน์ของ Architecture Decision Record</h2>



<p>ประโยชน์หลักๆ นอกเหนือจากการเป็นตัวบันทึกเพื่อติดตามการตัดสินใจในขณะนั้น ก็คือ ใช้ในการทบทวนเพื่อการพัฒนาปรับปรุง (improvement)</p>



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



<p>สรุปประโยชน์ คือ</p>



<ul class="wp-block-list"><li>เพื่อให้มีบันทึกดูย้อนหลังได้</li><li>เพื่อใช้ในการ Improvement</li><li>เพื่อ Transfer Knowledge</li><li>เพื่อเพิ่มทางเลือกที่ &#8220;จะใช้แบบเดิม ไม่เปลี่ยนแปลง&#8221;</li><li>ลดเวลาในการหาปัญหาที่มีในปัจจุบัน</li></ul>



<h2 class="wp-block-heading">การทำ Architecture Decision Record</h2>



<p>ด้วยคอนเซ็ปตามที่กล่าวมา ถ้าอยากเริ่มต้นทำ ADR ก็มี Template ให้หลากหลายรูปแบบ เช่น</p>



<ul class="wp-block-list"><li><a href="https://github.com/joelparkerhenderson/architecture-decision-record/blob/main/templates/decision-record-template-by-michael-nygard/index.md">ADR template by Michael Nygard</a>&nbsp;(มีรูปแบบที่ง่าย และเป็นที่นิยม)</li><li><a href="https://github.com/joelparkerhenderson/architecture-decision-record/blob/main/templates/decision-record-template-by-jeff-tyree-and-art-akerman/index.md">ADR template by Jeff Tyree and Art Akerman</a>&nbsp;(มีรายละเอียดหลายหัวข้อให้อธิบายมากขึ้น)</li><li><a href="https://github.com/joelparkerhenderson/architecture-decision-record/blob/main/templates/decision-record-template-for-alexandrian-pattern/index.md">ADR template for Alexandrian pattern</a>&nbsp;(มีรูปแบบที่ง่าย และเน้นอธิบายเรื่องของบริบท)</li><li><a href="https://github.com/joelparkerhenderson/architecture-decision-record/blob/main/templates/decision-record-template-for-business-case/index.md">ADR template for business case</a>&nbsp;(มีความเป็น Business เพราะมีการบันทึกเรื่อง Costs, SWOT, Opinions)</li><li><a href="https://github.com/joelparkerhenderson/architecture-decision-record/blob/main/templates/decision-record-template-madr/index.md">ADR template MADR</a>&nbsp;(มีรูปแบบที่ง่าย บันทึกข้อดีข้อไม่ด้อย และเป็นตัวอย่างที่ใช้ในรูปแบบ Markdown)</li><li><a href="https://github.com/joelparkerhenderson/architecture-decision-record/blob/main/templates/decision-record-template-using-planguage/index.md">ADR template using Planguage</a>&nbsp;(เขียนในรูปแบบ Planguage)</li></ul>



<p>รูปแบบที่นิยมที่สุด คือ <a style="font-size: revert; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;" href="https://github.com/joelparkerhenderson/architecture-decision-record/blob/main/templates/decision-record-template-by-michael-nygard/index.md">ADR template by Michael Nygard</a> หรือเราอาจจะเคยเห็นในชื่อ Lightweight Architecture Decision Records ที่ทาง <a href="https://www.thoughtworks.com/radar/techniques/lightweight-architecture-decision-records">ThoughtWorks Technology Radar</a> ได้นำเสนอไว้ โดยมีองค์ประกอบดังนี้</p>



<ul class="wp-block-list"><li><strong>Title</strong>: ชื่อหัวข้อ ควรกระชับ ว่าเป็นการตัดสินใจของเรื่องอะไร</li><li><strong>Status</strong>: สถานะของการตัดสินใจ เช่น proposed (นำเสนอ), accepted (ยอมรับ), rejected (ไม่ยอมรับ), deprecated (เลิกใช้), superseded (ถูกแทนที่), หรืออื่นๆ</li><li><strong>Context</strong>: เป็นการอธิบายบริบทในขณะนั้น ว่าอยู่ในสถานการณ์อะไร ที่ทำให้เกิดเรื่องที่จะต้องตัดสินใจ</li><li><strong>Decision</strong>: ผลการตัดสินใจ</li><li><strong>Consequences</strong>: ผลที่ตามมาจากการตัดสินใจ</li></ul>



<p>ซึ่ง อย่างที่เกริ่นไว้เบื้องต้น สามารถดัดแปลงใช้เป็นไกด์ไลน์ได้ ซึ่งบางทีเราอาจจะรู้สึกว่ามันน้อยไป หรือมากไป ก็เพิ่มในหัวข้อที่เราต้องการได้ โดยส่วนตัวผมแล้ว ผมชอบแบ่งอธิบายเป็นหัวข้อ ผมอาจจะแตก Context ออกไปเป็น ข้อจำกัดที่มี, เป้าหมายที่จะให้เกิด, ทางเลือกอื่นๆ ณ ขณะนั้น, เหตุผลที่เลือกตัดสินใจใช้หนทางนี้ เป็นต้น</p>



<h2 class="wp-block-heading">รายงาน ADR ควรถูกเก็บไว้ที่ไหน</h2>



<p>สามารถเก็บไว้ในเครื่องมือที่ทีมทำงานใช้งานร่วมกันได้เลย เช่น Google Drive, MS Team, Jira Confluence แต่ถ้าหลายๆ ท่านแนะนำ (และผมเห็นด้วยนะ) เก็บไว้ที่เดียวกับ Sourcecode นั่นแหละครับ เพราะมันเป็นเหมือนบันทึก Changelog ประเภทหนึ่ง ที่เมื่อเราต้องการจะพัฒนาระบบต่อ เราก็สามารถเข้ามาอ่านที่มาที่ไปและความเปลี่ยนแปลงได้จากใน Repo ของโค้ดเลย (เครื่องมือบางตัว มี Wiki และ Sourcecode อยู่ภายใต้ Project เดียวกัน ก็ไว้ใน Wiki ได้นะ สะดวกดีครับ แต่ลำบากตอนย้ายและตอนเปิดอ่านนะ)</p>



<h2 class="wp-block-heading">สรุป</h2>



<p>ใช้เถอะ</p>



<p>ปล. ใครสนใจรายละเอียดที่มากกว่านี้ มีตั้งแต่ขั้นตอนที่จะเริ่มคุยกัน ไปถึงจนบันทึกการตัดสนใจ รูปแบบการเขียนที่ดี การตั้งชื่อไฟล์  แนะนำไปอ่านที่นี่ได้ครับ <a rel="noreferrer noopener" style="font-size: revert; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Roboto, Oxygen-Sans, Ubuntu, Cantarell, &quot;Helvetica Neue&quot;, sans-serif;" href="https://github.com/joelparkerhenderson/architecture-decision-record" target="_blank">https://github.com/joelparkerhenderson/architecture-decision-record</a></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img fetchpriority="high" decoding="async" width="432" height="1200" src="https://myifew.com/wp-content/uploads/2021/09/6b4d58b6-architecture-decision-record_diagram-432x1200.png" alt="" class="wp-image-6056" srcset="https://myifew.com/wp-content/uploads/2021/09/6b4d58b6-architecture-decision-record_diagram-432x1200.png 432w, https://myifew.com/wp-content/uploads/2021/09/6b4d58b6-architecture-decision-record_diagram-252x700.png 252w, https://myifew.com/wp-content/uploads/2021/09/6b4d58b6-architecture-decision-record_diagram.png 553w" sizes="(max-width: 432px) 100vw, 432px" /><figcaption>ที่มา: <a href="https://engineering.atspotify.com/2020/04/14/when-should-i-write-an-architecture-decision-record/">https://engineering.atspotify.com/2020/04/14/when-should-i-write-an-architecture-decision-record/</a></figcaption></figure></div>



<h2 class="wp-block-heading">Reference</h2>



<ul class="wp-block-list"><li><a href="https://adr.github.io/" target="_blank" rel="noreferrer noopener">https://adr.github.io/</a></li><li><a href="https://github.com/joelparkerhenderson/architecture-decision-record" target="_blank" rel="noreferrer noopener">https://github.com/joelparkerhenderson/architecture-decision-record</a></li><li><a href="https://engineering.atspotify.com/2020/04/14/when-should-i-write-an-architecture-decision-record/" data-type="URL" data-id="https://engineering.atspotify.com/2020/04/14/when-should-i-write-an-architecture-decision-record/" target="_blank" rel="noreferrer noopener">When Should I Write an Architecture Decision Record</a></li></ul>
]]></content:encoded>
					
					<wfw:commentRss>https://myifew.com/6053/why-architecture-decision-record/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
