1 คะแนน โดย GN⁺ 2024-01-04 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • หากต้องการคำนวณรายการหักเงินเดือนด้วยตนเองในแคนาดาโดยไม่ใช้บริการเงินเดือนภายนอก จำเป็นต้องนำสูตร CPP, EI และภาษีเงินได้จาก Payroll Deductions Formulas ของ CRA ไปใช้งาน
  • ในปี 2024 มีการเพิ่ม second additional premiums เข้าไปใน Canada Pension Plan นอกเหนือจากเบี้ยประกันพื้นฐานและส่วนเพิ่มเดิม ทำให้ต้องเขียนสเปรดชีตเดิมใหม่ทั้งหมดตั้งแต่ต้น
  • เอกสารของ CRA กระจายทั้งตำแหน่งที่คำนวณค่าและตำแหน่งที่นำค่าไปใช้ไว้คนละส่วน จึงได้สร้าง แผนภาพการพึ่งพากันด้วย GraphViz เพื่อดูว่าต้องคำนวณอะไรบ้างก่อน
  • แผนภาพประกอบด้วย 79 โหนด ตั้งแต่ค่าป้อนเข้าอย่าง “Year's Annual Maximum Pensionable Earnings” $73,200 ในปี 2024 ไปจนถึง “Total payroll deductions”
  • แผนภาพบันทึกเฉพาะความสัมพันธ์การพึ่งพากันระหว่างค่าต่าง ๆ โดยไม่รวมตัวสูตร และตัดกรณีพนักงานค่าคอม ผู้เข้าร่วมหรือถอนตัวจาก CPP และผู้พำนักใน Quebec, Nova Scotia, Yukon, Ontario ออกจากขอบเขต

ความซับซ้อนของการคำนวณรายการหักเงินเดือนจาก CRA ด้วยตนเอง

  • Canada Revenue Agency เผยแพร่เอกสาร Payroll Deductions Formulas สำหรับการคำนวณรายการหักเงินเดือนเป็นประจำ และปัจจุบันออกมาถึงฉบับที่ 119 แล้ว
  • เอกสารนี้รวบรวมสูตรที่จำเป็นสำหรับการคำนวณรายการหักเงินเดือนที่ CRA จัดเก็บ
    • Canada Pension Plan
    • Employment Insurance
    • Income Tax
  • หากทำธุรกิจขนาดเล็กในแคนาดาและไม่ต้องการใช้ผู้ให้บริการเงินเดือนภายนอก ก็ต้อง นำสูตรเหล่านี้ไปทำในสเปรดชีตเอง
  • เช่นเดียวกับส่วนอื่น ๆ ของระบบภาษี การคำนวณรายการหักเงินเดือนก็ซับซ้อนขึ้นเรื่อย ๆ และในปี 2024 มีการเพิ่ม second additional premiums เข้าไปใน CPP จนจำเป็นต้องเขียนสเปรดชีตใหม่

ลำดับการคำนวณที่จัดระเบียบด้วย GraphViz

  • เอกสารของ CRA ทำให้ติดตามได้ยากว่าแต่ละค่าควรถูกคำนวณก่อนหลังอย่างไร
    • ค่าที่จำเป็นอาจถูกคำนวณก่อนหรือหลังจุดที่นำไปใช้ ทำให้ต้องเปิดย้อนเอกสารไปมาอยู่ตลอด
  • เพื่อจัดระเบียบเรื่องนี้ จึงได้สร้างแผนภาพการพึ่งพากันด้วย GraphViz
  • แผนภาพมีทั้งหมด 79 โหนด โดยลำดับตัวอย่างมีดังนี้
    • “Year's Annual Maximum Pensionable Earnings”: $73,200 สำหรับปีภาษี 2024
    • โหนดสุดท้าย: “Total payroll deductions”
  • ในแผนภาพไม่ได้ใส่ตัวสูตรเอง แต่บันทึกเพียงว่าค่าแต่ละค่าพึ่งพาค่าใดบ้าง
  • เพื่อให้ขอบเขตการคำนวณเรียบง่ายขึ้น จึงยกเว้นกรณีต่อไปนี้
    • พนักงานที่ได้รับค่าคอมมิชชัน
    • พนักงานที่เข้าร่วมหรือถอนตัวจาก Canada Pension Plan
    • ผู้พำนักใน Quebec, Nova Scotia, Yukon, Ontario
  • ภาพขนาดเต็มมีให้ที่ payroll.png และมีขนาด 5627x2033

1 ความคิดเห็น

 
GN⁺ 2024-01-04
ความคิดเห็นบน Hacker News
  • น่าเสียดายที่รัฐบาลไม่ได้จัดทำ สูตรสาธารณะ ในรูปแบบโค้ดให้ใช้
    เท่าที่รู้ วิธีจัดการอย่างน่าเชื่อถือมีเพียงการใช้เว็บฟอร์มที่ CRA จัดให้: https://www.canada.ca/en/revenue-agency/services/e-services/...
    ถ้าคำนวณด้วยมือจะทรมานและผิดพลาดได้ง่าย

    • เยอรมนีเผยแพร่ ผังงานมาตรฐาน สำหรับการคำนวณเงินเดือน พร้อมตัวแปรและสูตรที่ตั้งชื่อไว้ มานานแล้ว อย่างน้อยก็ตั้งแต่ทศวรรษ 1970: https://www.bundesfinanzministerium.de/Content/DE/Downloads/...
    • อยากให้มีอะไรคล้าย ๆ กันสำหรับการคำนวณสินเชื่อจำนองบ้านด้วย
      เช่น TD Canada ไม่ได้บอกทุกครั้งว่าในยอดผ่อนชำระนั้น ส่วนไหนถูกนำไปตัดเงินต้นบ้าง ผมคิดว่าคำนวณเองได้ถูกแล้ว แต่บ่อยครั้งยอดคงเหลือที่ธนาคารแสดงหลังชำระเงินต่างกันหลายสิบดอลลาร์
      ในแคนาดา การไม่มี API สำหรับดึงรายละเอียดบัญชีและใบแจ้งยอดก็เป็นเรื่องน่าหงุดหงิดเช่นกัน
    • ไม่เห็นด้วยเลยที่รัฐบาลควรออกสูตรสาธารณะในรูปแบบโค้ด
      การทำแบบนั้นเท่ากับมอบเครื่องมือให้รัฐบาลทำให้มันซับซ้อนได้มากที่สุดเท่าที่จะเป็นไปได้ ภาษีควรเรียบง่ายพอที่ผู้จ่ายภาษีจะเข้าใจได้อย่างสมบูรณ์
      การที่รัฐบาลล้มเหลวในการทำให้งบประมาณสมดุล ไม่ควรทำให้เรื่องพื้นฐานอย่างการหักเงินจากค่าจ้างกลายเป็นสิ่งที่จำเป็นต้องใช้ซอฟต์แวร์
      ถ้าการคำนวณด้วยมือทรมานและผิดพลาดบ่อย ปัญหาที่ใหญ่กว่าคือไม่มี กฎหมายที่บังคับให้รัฐบาลต้องทำให้มันคำนวณด้วยมือได้
    • ฝรั่งเศสถึงขั้นสร้าง DSL เฉพาะของตัวเอง สำหรับภาษี: https://github.com/MLanguage/mlang
    • กฎหมายทั้งหมดควรถูกแสดงเป็นโค้ด
      แบบนั้นจะเห็นได้อย่างรวดเร็วว่ามีกฎหมายที่ขัดแย้งกันหรือไม่สอดคล้องกันอยู่มากแค่ไหน
  • จากมุมมองของคนที่เคยทำงานเกี่ยวกับกฎหมายภาษีมาบ้าง ผมคิดว่า วงจรความซับซ้อนของภาษี โดยคร่าว ๆ เป็นแบบนี้
    กฎหมายภาษีถูกผ่านออกมา จากนั้นนักบัญชีและทนายภาษีที่เก่ง ๆ ก็หาวิธีลดภาษีอย่างถูกกฎหมาย แล้วหน่วยงานภาษีก็ออกข้อกำหนดเพื่อปิดช่องว่างเหล่านั้น
    เมื่อรัฐบาลเปลี่ยน ก็จะลดภาษีบางส่วนหรือเพิ่มการลดหย่อนเพื่อเรียกคะแนนเสียงและปรับทิศทางเศรษฐกิจ ส่วนรัฐบาลชุดถัดมาก็เลือกย้อนนโยบายของชุดก่อนหน้าบางส่วนด้วยเหตุผลทางการเมือง
    ถ้าเป็นภาษีระหว่างประเทศ ก็จะมีเทคนิคประหยัดภาษีที่ข้ามหลายเขตอำนาจศาล แรงจูงใจของแต่ละประเทศเพื่อดึงดูดบริษัทข้ามชาติ ความพยายามของ OECD ในการทำให้เป็นมาตรฐาน และสนธิสัญญาภาษีทวิภาคีเข้ามาเพิ่มอีก
    ตัวอย่าง: Double Irish With a Dutch Sandwich https://www.investopedia.com/terms/d/double-irish-with-a-dut...

    • ความซับซ้อนนี้ไม่ได้เกิดจากการพยายามปิดช่องโหว่ทางภาษี ส่วนใหญ่เกิดจากนักการเมืองชอบตั้งชื่อให้สิ่งต่าง ๆ
      แคนาดามีเครดิตภาษี “personal amount” มานานแล้ว แต่แทนที่จะพูดว่า “รายได้ $X แรกไม่ต้องเสียภาษี” กลับทำเป็นเครดิตภาษีแบบขอคืนไม่ได้ในจำนวนเท่ากับอัตราภาษีขั้นต่ำ × $X
      ต่อมาเมื่อกลายเป็นว่า “เพิ่ม personal amount โดยหลีกเลี่ยงไม่ให้เป็นการลดภาษีให้กลุ่มรายได้สูงสุด 1%” ตอนนี้จึงมี personal amount ที่เปลี่ยนไปตามรายได้
      “BC Tax Reduction” ของรัฐ BC ก็มีโครงสร้างที่ให้เครดิตภาษีเพิ่มเติมแก่ผู้มีรายได้ประมาณ $22k~$36k ทั้งสองอย่างจริง ๆ แล้วสามารถทำผ่านช่วงอัตราภาษีได้ แต่ผู้มีสิทธิเลือกตั้งตอบสนองต่อชื่อ “Tax Reduction” มากกว่าช่วงอัตราภาษีใหม่
    • ถ้าจบตั้งแต่ขั้นที่ 1 ด้วย อัตราภาษีเดียว ก็จะป้องกันปัญหาเหล่านี้ได้ แค่ใช้เหมือนกันกับทุกอย่าง
      ต้องยกเลิกข้อยกเว้นอย่างการให้สิทธิพิเศษรายได้จากการลงทุน สิทธิพิเศษอสังหาริมทรัพย์ สิทธิพิเศษบริษัท หรือสิทธิพิเศษสำหรับนางฟ้าสามขาที่อยู่ในพื้นที่น้ำท่วม
      แบบนั้นตลาดจะจัดสรรความพยายามของมนุษย์ไปยังงานที่มีคุณค่ามากที่สุดได้
      ผลิตภาพที่สูญเปล่าไปกับเรื่องนี้ช่างไร้เหตุผล มีคนหลายล้านทุ่มเทไปกับการสร้าง แก้ และบิดเกมปริศนาซับซ้อนนี้ ทั้งที่ไม่มีหลักฐานว่าความซับซ้อนนั้นเป็นประโยชน์
    • มีปัญหากับการเรียกข้อยกเว้นที่ระบุชัด รายการเฉพาะ การหักลดหย่อน และเครดิตภาษีว่าเป็น “ช่องโหว่
      รายการเหล่านี้มักถูกตั้งใจให้ใช้เพื่อหลีกเลี่ยงการถูกเก็บภาษีอยู่แล้ว กลุ่ม บุคคล และองค์กรต่าง ๆ ล็อบบี้รัฐบาลให้ใส่เรื่องที่ตนสนใจเป็นข้อยกเว้น การหักลดหย่อน หรือเครดิตภาษี
      การที่นักบัญชีหรือทนายภาษีนำสิ่งเหล่านี้มาใช้ได้อย่างถูกต้อง ไม่ใช่การ “เลี่ยงภาษีอย่างถูกกฎหมาย” แต่เป็นภาษีที่ตั้งแต่แรกก็ไม่ควรต้องจ่ายอยู่แล้ว
      หากจะเรียกการจ่ายเฉพาะภาษีที่ค้างชำระอย่างถูกต้องตามกฎหมายว่า “เลี่ยงภาษีผ่านช่องโหว่” ก็ต้องตั้งสมมติฐานว่ารายได้ทั้งหมดเป็นของรัฐบาล ซึ่งเป็นสมมติฐานที่ยอมรับไม่ได้
  • เคยบริหารบริษัทประมวลผลเงินเดือนขนาดเล็กในแคนาดา และสร้างทั้งหมดด้วย Rails
    ทุกครั้งที่กฎเปลี่ยน ก็จะสแครปเครื่องคิดเลขของ CRA เพื่อคำนวณหลายมณฑลและหลายช่วงเงินเดือน แล้วให้พิมพ์ผลลัพธ์ด้วย rspec
    จากนั้นก็ทดสอบได้ว่าเราได้สะท้อนกฎระเบียบอย่างถูกต้องหรือไม่ หรือพลาดกฎไหนไป หรือใส่ค่าผิดหรือเปล่า

  • เมื่อหลายปีก่อนเคยทำสิ่งคล้าย ๆ กันสำหรับ IRS: https://nampas.github.io/tax-map/

    • สงสัยว่ามีคำเรียกสำหรับ กราฟมีทิศทาง ที่จัดวางเป็นวงกลมหรือไม่
      และก็สงสัยด้วยว่าทุกเส้นเชื่อมเป็นทิศทางเดียวทั้งหมดหรือมีเส้นเชื่อมสองทิศทางด้วย หวังว่าจะไม่มีแบบสองทิศทางนะ
  • แผนภาพแบบนี้แหละคือเหตุผลที่มี ผู้ให้บริการประมวลผลเงินเดือน
    ดูบทความที่เกี่ยวข้องจาก Bits About Money ได้ที่ https://www.bitsaboutmoney.com/archive/payroll-providers-pow...

    • ถึงอย่างไรสุดท้ายมันก็เป็นคณิตศาสตร์ และรัฐบาลก็ตรวจสอบมาตรฐานว่าข้อมูลที่ผู้ให้บริการประมวลผลเงินเดือนยื่นนั้นถูกต้องหรือไม่
      ดังนั้นรัฐบาลก็ควรสามารถจัดทำ มาตรฐาน นั้นให้ได้
  • ขอปรบมือให้ผู้เขียน
    ถึงจุดนี้ CRA ควรเปิดเผย implementation อ้างอิง ของสูตรทั้งหมด เพื่อให้ธุรกิจขนาดเล็กนำไปใช้ได้

    • ถ้าเผยแพร่เป็นสเปรดชีต LibreOffice ให้ก็คงจะดีมาก
      ต่อให้ไม่เปิดเผยต่อสาธารณะ อย่างน้อยทำไว้ใช้ภายในก็น่าจะดี ถ้าพวกเขาต้องอ่านเอกสารเองโดยตรง เอกสารก็มีแนวโน้มจะถูกเขียนให้ดีขึ้นมาก
    • ทำไมพวกเขาต้องทำแบบนั้นด้วยล่ะ? ถ้าเปิดเผยทั้งหมด ทุกคนก็จะเจอบั๊กและปัญหา แล้ว CRA ก็ต้องจัดการ
      อาจเสียรายได้จากค่าปรับไปไม่น้อยด้วย
      สมัยมหาวิทยาลัย ผมเป็นผู้ดูแลหอพัก เลยได้ที่พักและอาหาร “ฟรี” ตอนอายุ 20 ยื่นภาษีแคนาดาครั้งแรก แล้วรายงานรายได้ขาดไปประมาณ $1,000 ในตอนนั้นผมเป็นพลเมืองสหรัฐฯ และเป็นการยื่นภาษีแคนาดาครั้งแรก
      ไม่กี่ปีต่อมาก็โดนค่าปรับประมาณ $5,500 ซึ่งเป็นเงินก้อนใหญ่มากสำหรับนักศึกษาที่ทำงานพาร์ตไทม์ ตอนนั้นถึงได้รู้ว่า BC สามารถคิดค่าปรับเท่ากับของ CRA ได้เลย
      มองย้อนกลับไป อาจจะดีกว่าถ้าไม่รับงานนั้นด้วยซ้ำ ช่วงเวลาที่เหลือที่อยู่ในแคนาดาผมจ้าง CPA ตลอด
      เทียบกันแล้ว IRS ดูอบอุ่นนุ่มนวลไปเลย อย่างน้อยถ้าทำผิดพลาด ค่าปรับก็จะสัมพันธ์กับจำนวนที่รายงานขาดไป ตราบใดที่คุณไม่ใช่อภิมหาเศรษฐี
    • CRA คงไม่ทำหรอก ไม่มีหน้าที่ต้องให้ คำตอบที่ชัดเจน
    • มีคนในคำตอบอื่นชี้ไปที่เว็บฟอร์มนี้: https://news.ycombinator.com/item?id=38843556
      ดูเหมือนจะไม่ใช่ชีตที่ดาวน์โหลดได้ แต่ก็ยังมีอะไรให้ใช้บ้าง
  • ในฝรั่งเศส กฎแบบนี้มีให้ในรูปแบบเว็บไซต์, API, แพ็กเกจ NPM และกฎดิบในภาษา https://publi.codes
    https://mon-entreprise.urssaf.fr/développeur

    • แคนาดาก็มีเวอร์ชันสำหรับจำลองคำนวณเหมือนกัน
      [https://www.canada.ca/en/revenue-agency/services/e-services/...](<https://canada.ca/en/revenue-agency/…;)
      หรือจะใช้เวอร์ชันของควิเบกก็มี
      [https://www.revenuquebec.ca/en/online-services/tools/webras/](<https://www.revenuquebec.ca/en/online-services/tools/webras/>;)
    • แพ็กเกจ NPM นั้นอยู่ที่นี่: https://www.npmjs.com/package/modele-social และ https://github.com/betagouv/mon-entreprise
      แนวคิดที่รัฐบาลสนับสนุนการเผยแพร่กฎประเภทนี้ในรูปแบบ ที่เครื่องอ่านได้ ถือว่ายอดเยี่ยมมาก
    • ดูเจ๋งดี แต่ก็สงสัยว่าถ้ามีบั๊กหรือเกิดการยึดแพ็กเกจไป จะมีความหมายอย่างไร
      ผู้ใช้ต้องตรวจคำนวณผลลัพธ์เองต่างหาก และมันเป็นแค่เครื่องมืออำนวยความสะดวก ไม่ใช่ มาตรฐานที่มีอำนาจอ้างอิง ใช่ไหม
    • ดูเหมือนของเล่นอยู่เหมือนกัน เว็บไซต์เวอร์ชันภาษาอังกฤษขึ้นคำเตือนแบบนี้
      “Calculations are indicative. They are not a substitute for actual statements from Urssaf, the tax authorities or any other organization.”
      [1] https://mycompanyinfrance.urssaf.fr/developer/iframe?module=...
  • บอกว่า “ไม่รวมผู้อยู่อาศัยในควิเบก โนวาสโกเชีย ยูคอน และออนแทรีโอ” นี่ก็คือ 75% ของแคนาดา แทบจะทั้งนั้น

    • ถ้าพูดอย่างเป็นธรรม โนวาสโกเชีย ยูคอน และออนแทรีโอ แค่เพิ่มโหนดอีกไม่กี่ตัวก็พอ
      แค่ผมอยู่ใน BC เลยไม่อยากไปใส่ใจถึงตรงนั้น
      ควิเบกเป็นคนละเรื่องกันเลย ที่นั่นการคำนวณหักเงินเดือนซับซ้อนกว่ามาก
    • ควิเบกแทบจะเหมือนเป็นอีกประเทศหนึ่งเลย
      มีกฎและข้อกำหนดด้าน HR แปลก ๆ จำนวนมากที่ใช้เฉพาะใน QC เท่านั้น
  • แม้จะอยู่ในสหรัฐฯ แต่พูดได้แน่นอนว่าสิ่งเหล่านี้เป็นเหตุผลประมาณครึ่งหนึ่งที่ทำให้ LLC ของผมไม่จ้างพนักงาน
    ต่อให้อยากจ้าง จริง ๆ ก็เท่ากับต้องจ้างนักบัญชีมาด้วย

    • ถ้าคำนึงถึงกระแสการทำงานทางไกล ต้องให้ความสำคัญมากกับความสัมพันธ์ระหว่างรัฐที่ต้องการจ้างพนักงานกับรัฐที่บริษัทตั้งอยู่
      บางรัฐน่าปวดหัวจริง ๆ เช่น NJ, CA, NY, OH
      ถ้าลงทะเบียนในรัฐใดรัฐหนึ่งแล้ว แม้พนักงานคนนั้นจะย้ายไปทำงานที่อื่นในภายหลัง บริษัทก็อาจยังถูกติดตามต่อไปจากเรื่องการไม่ปฏิบัติตามข้อกำหนดสารพัดที่รัฐนั้นรับรู้ไว้
      เช่น อาจโดนปรับหนักเพียงเพราะไม่ได้ยื่นแจ้งว่าบริษัทไม่มีพนักงานในรัฐนั้นแล้ว
      รัฐที่รับมือได้ค่อนข้างดีคือ ID, TN, TX
      โดยทั่วไป ด้วยเหตุผลเหล่านี้ จึงควรจ้างเฉพาะพนักงานในรัฐของตัวเอง ถ้าไม่จำเป็นจริง ๆ ก็คงไม่จ้าง
    • ถ้าคิดจะจ้างนักพัฒนาหรือคนที่เกี่ยวข้องกับงานวิจัย/ทดลอง ควรทำความเข้าใจ Section 174 ให้ดี
      เพราะต้องตัดจำหน่ายค่าใช้จ่ายนักพัฒนาเป็นเวลา 5 ปี ทำให้อาจได้รับใบเรียกเก็บภาษีก้อนใหญ่ ไม่ว่าจะเป็นพนักงานหรือผู้รับเหมาก็ตาม
      ถ้ายกเลิกได้ก็คงดี แต่ถ้าไม่ได้ ตามคำพูดของ Senator Wyden มันเป็นบทบัญญัติที่ “stupid” ทั้งที่ไม่มีใครคาดคิดว่าจะยังมีอยู่
      https://www.law.cornell.edu/uscode/text/26/174
      แก้ไข: คงไม่ถูกยกเลิก แต่สามารถออกกฎหมายให้ละเว้นได้จนถึงวันที่กำหนดบางวันในอนาคต พอถูกบันทึกไว้ในบัญชีแล้ว การเอากฎหมายภาษีออกทำได้ยากมากเพราะการจัดการทางบัญชี
    • อย่างที่ความเห็นอื่นว่า บริษัททำ payroll มีอยู่ด้วยเหตุผลของมัน และทุกวันนี้มีบริการจำนวนมากที่ช่วยให้การปฏิบัติตามข้อกำหนดง่ายขึ้นด้วย
      เช่น บริษัทขนาดเล็กถึงกลางจำนวนมากที่ผมรู้จักใช้ Gusto เพราะมันทำให้เพิ่มผู้รับเหมาหรือพนักงานได้ง่าย
      ไม่ได้ตั้งใจจะโปรโมต Gusto โดยเฉพาะ ถ้าค้นหาก็มีบริการคู่แข่งอีกมาก ไม่ได้ฟรี แต่ข้อดีคือเป็นโมเดล SaaS เริ่มจากค่าใช้จ่ายต่อพนักงาน และขยายไปพร้อมกับบริษัทได้
    • ถ้าปัญหาไม่ได้อยู่ที่ความซับซ้อนทางบัญชีจากค่าใช้จ่ายเพิ่มเติม แต่อยู่ที่การคำนวณเงินเดือน ก็สามารถจ้างงานในประเทศผ่าน remote.com หรือ deel.com ได้
      เฉพาะกรณีที่พนักงานเป็นแบบเงินเดือนประจำหรือทำงานในฐานะผู้รับเหมาอิสระเท่านั้น แต่ในกรณีนั้นก็ไม่ใช่พนักงานจริง ๆ
      Employer of Record จะรับประกันการปฏิบัติตามกฎหมายท้องถิ่น และเรียกเก็บเงินในลักษณะบวกค่าบริการเข้าไปกับต้นทุนรวมของพนักงาน
    • ถ้าเป็นปัญหาเรื่องการคำนวณและนำส่ง payroll ให้หน่วยงานรัฐบาลกลางและหน่วยงานของแต่ละรัฐ เรื่องนั้นไม่ควรเป็นอุปสรรคเลย
      มีบริษัทบริการ payroll นับไม่ถ้วนที่คำนวณและนำส่งให้ในราคา $30~$50 ต่อเดือนต่อพนักงาน 1 คน การทำ payroll ทั่วไปไม่จำเป็นต้องมีนักบัญชีเสมอไป
  • นี่แสดงให้เห็นว่า อัลกอริทึม แบบหนึ่งทำงานอย่างไร ไม่ว่าจะเป็นซอฟต์แวร์หรือไม่ก็ตาม
    เริ่มจากสิ่งที่พึงประสงค์หรือจำเป็น แล้วค่อย ๆ เพิ่มความซับซ้อนเข้าไปเรื่อย ๆ สุดท้ายก็ไปถึงความยุ่งเหยิงที่สร้างผลลัพธ์ตามอำเภอใจ ทำให้คนนอกแทบเป็นบ้า และถ้าอ่านเหมือนคาถาก็อาจอัญเชิญปีศาจชั้นต่ำออกมาได้ด้วย
    ทางแก้ที่นึกถึงได้แน่นอนคือการ refactor งานแบบที่นักการเมืองให้สัญญาตอนหาเสียง และ junior developer เรียกร้องเมื่อเจอ codebase ใหม่
    แต่ในความเป็นจริงแทบไม่เคยเกิดขึ้น เพราะไม่มีใครแยกได้ชัดเจนว่าฟีเจอร์และความซับซ้อนส่วนใดไม่จำเป็น และส่วนใดเป็นสิ่งที่ตั้งใจไว้
    ทางแก้ที่สองคือการนำไปทำให้สะอาดในกรอบที่เป็นทางการมากขึ้น เช่น ภาษาที่มี static type หรือ theorem prover แต่ถ้าตัวระบบเองมีความขัดแย้งอยู่แล้ว ความพยายามนี้ก็มักล้มเหลวเช่นกัน
    โชคดีที่ไม่มีใครสนใจ “edge case แปลก ๆ” และปล่อยไว้อย่างนั้นจนกว่าจะมีใครหอบเงินสักล้านดอลลาร์หนีไป

    • จริง ๆ แล้ว CRA และรัฐบาลกลางช่วงหลัง ๆ พยายามอย่างมากที่จะทำให้ภาษีแคนาดาเรียบง่ายขึ้น ทุกวันนี้ง่ายขึ้นมาก แน่นอนว่าฝั่ง payroll นี้เป็นข้อยกเว้น
      เมื่อ 10~15 ปีก่อน มีเครดิตภาษีพิเศษสารพัดกองพะเนินเพื่อซื้อเสียง
      ทุกวันนี้ ถ้าไม่มีเรื่องอย่างการทำธุรกิจส่วนตัวหรือการลงทุนต่างประเทศ และเป็นมนุษย์เงินเดือนทั่วไป การยื่นภาษีก็เป็นเรื่องเล็กน้อยและเกือบอัตโนมัติแล้ว
      ความซับซ้อนส่วนใหญ่ในกราฟข้างต้นน่าจะมาจากการที่แคนาดาเป็นประเทศ สหพันธรัฐ ที่เข้มแข็ง จึงมีอำนาจและข้อยกเว้นที่เกี่ยวข้องแตกต่างกันไปตามแต่ละมณฑล และยังมีระบบประกันการจ้างงานกับระบบบำนาญของรัฐบาลกลางเข้ามาเพิ่มอีก