<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel>
        <title>Daniel Duan's Articles About Programming Language</title>
        <link>https://duan.ca/tag/programming-language/</link>
        <atom:link href="https://duan.ca/tag/programming-language/feed.xml" rel="self" type="application/rss+xml" />
            <item>
                <title>An Invisible Chasm</title>
                <description>&#60;p&#62;In the journey of growing software systems, there comes a point where certain engineering decision will create
a chasm so large that it&#39;s practically impossible to go back. The initial crossing of this chasm is so easy
that it often happens without anyone noticing. Nonetheless, it is a costly mistake.&#60;/p&#62;
&#60;p&#62;On one side of this chasm, any member of the engineering team can answer the question &#38;quot;how, exactly, is my
code being consumed in our engineering org?&#38;quot;. Here lies clarity. Your team fearlessly delete dead code. Legacy
logic has their days marked. Lacking documentation? Not ideal, but you can always find how an API gets used
in all scenarios easily.&#60;/p&#62;
&#60;p&#62;On the other side, no one has the answer. The corpses pile up. Deprecating things comes with uncertainty. You
warn your team &#38;quot;please carefully consider adding things here, because we&#39;ll keep it around forever&#38;quot;. Need to
respond to an incident? Better hope your monitoring system is good. Trying to trace the code path won&#39;t get
you answers in time. We&#39;ll leave that for the post-mortem.&#60;/p&#62;
&#60;p&#62;Tooling, yes, exactly what decision leads to the chasm depends on the state of tooling for your technology
stack. The programming languages, build system, repository setup, coding style guides, IDEs, linters, search
engine ... all factor into the final answer. A statically typed language compiler won&#39;t help you look up
users in a different micro-service. State-of-art symbol lookup may exist for a dynamically typed system
because some companies have thrown enormous amount of money to solve it. Maybe your kick-ass style guides
enforced by linters across multiple languages makes it possible to locate anything by text. You see, it is
a quantitative matter: it is always &#60;em&#62;possible&#60;/em&#62; to revert to the good old days. But it will be &#60;em&#62;expensive&#60;/em&#62; in
terms of dollars, and/or will power.&#60;/p&#62;
&#60;p&#62;When did you cross the chasm?&#60;/p&#62;
&#60;p&#62;Beware of the chasm.&#60;/p&#62;
</description>
                <pubDate>Thu, 17 Feb 2022 13:40:27 -0800</pubDate>
                <link>https://duan.ca/2022/02/17/invisible-chasm/</link>
                <guid isPermaLink="true">https://duan.ca/2022/02/17/invisible-chasm/</guid>
            </item>
    </channel>
</rss>