Files
www.aklabs.net/2026/01/25/Two-kinds-of-programmers/index.html

834 lines
38 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<meta
http-equiv="X-UA-Compatible"
content="ie=edge">
<meta
name="theme-color"
content="#fff"
id="theme-color">
<meta
name="description"
content="AKLabs">
<link
rel="icon"
href="/">
<title>There are two kinds of programmers</title>
<meta
property="og:title"
content="There are two kinds of programmers">
<meta
property="og:url"
content="https://aklabs.net/2026/01/25/Two-kinds-of-programmers/index.html">
<meta
property="og:img"
content="/images/akesterson.webp">
<meta
property="og:type"
content="article">
<meta
property="og:article:published_time"
content="2026-01-25">
<meta
property="og:article:modified_time"
content="2026-01-25">
<meta
property="og:article:author"
content="Andrew Kesterson">
<link rel="preload" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css" as="style" >
<link rel="preload" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css" as="style" >
<link rel="preload" href="/css/main.css" as="style" >
<link rel="modulepreload" href="//instant.page/5.1.0">
<link rel="stylesheet" href="/css/main.css">
<link rel="stylesheet" href="//at.alicdn.com/t/font_1946621_i1kgafibvw.css">
<link rel="stylesheet" href="//at.alicdn.com/t/font_1952792_89b4ac4k4up.css">
<link rel="stylesheet" href="/js/lib/lightbox/baguetteBox.min.css">
<script>
function loadScript(url, cb) {
var script = document.createElement('script');
script.src = url;
if (cb) script.onload = cb;
script.async = true;
document.body.appendChild(script);
}
function loadCSS(href, data, attr) {
var sheet = document.createElement('link');
sheet.ref = 'stylesheet';
sheet.href = href;
sheet.dataset[data] = attr;
document.head.appendChild(sheet);
}
function changeCSS(cssFile, data, attr) {
var oldlink = document.querySelector(data);
var newlink = document.createElement("link");
newlink.setAttribute("rel", "stylesheet");
newlink.setAttribute("href", cssFile);
newlink.dataset.prism = attr;
document.head.replaceChild(newlink, oldlink);
}
</script>
<script>
function prismThemeChange() {
if(document.getElementById('theme-color').dataset.mode === 'dark') {
if(document.querySelector('[data-prism]')) {
changeCSS('/js/lib/prism/prism-tomorrow.min.css', '[data-prism]', 'prism-tomorrow');
} else {
loadCSS('/js/lib/prism/prism-tomorrow.min.css', 'prism', 'prism-tomorrow');
}
} else {
if(document.querySelector('[data-prism]')) {
changeCSS('/js/lib/prism/prism-defauult.min.css', '[data-prism]', 'prism-defauult');
} else {
loadCSS('/js/lib/prism/prism-defauult.min.css', 'prism', 'prism-defauult');
}
}
}
prismThemeChange()
</script>
<link rel="stylesheet" href="/js/lib/prism/prism-line-numbers.min.css">
<script>
// control reverse button
var reverseDarkList = {
dark: 'light',
light: 'dark'
};
var themeColor = {
dark: '#1c1c1e',
light: '#fff'
}
// get the data of css prefers-color-scheme
var getCssMediaQuery = function() {
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
};
// reverse current darkmode setting function
var reverseDarkModeSetting = function() {
var setting = localStorage.getItem('user-color-scheme');
if(reverseDarkList[setting]) {
setting = reverseDarkList[setting];
} else if(setting === null) {
setting = reverseDarkList[getCssMediaQuery()];
} else {
return;
}
localStorage.setItem('user-color-scheme', setting);
return setting;
};
// apply current darkmode setting
</script>
<script>
var setDarkmode = function(mode) {
var setting = mode || localStorage.getItem('user-color-scheme');
if(setting === getCssMediaQuery()) {
document.documentElement.removeAttribute('data-user-color-scheme');
localStorage.removeItem('user-color-scheme');
document.getElementById('theme-color').content = themeColor[setting];
document.getElementById('theme-color').dataset.mode = setting;
prismThemeChange();
} else if(reverseDarkList[setting]) {
document.documentElement.setAttribute('data-user-color-scheme', setting);
document.getElementById('theme-color').content = themeColor[setting];
document.getElementById('theme-color').dataset.mode = setting;
prismThemeChange();
} else {
document.documentElement.removeAttribute('data-user-color-scheme');
localStorage.removeItem('user-color-scheme');
document.getElementById('theme-color').content = themeColor[getCssMediaQuery()];
document.getElementById('theme-color').dataset.mode = getCssMediaQuery();
prismThemeChange();
}
};
setDarkmode();
</script>
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.js" as="script">
<link rel="preload" href="/js/lib/lightbox/baguetteBox.min.css" as="style" >
<link rel="preload" href="/js/lib/lozad.min.js" as="script">
<meta name="generator" content="Hexo 6.0.0"><link rel="alternate" href="/atom.xml" title="AKLabs" type="application/atom+xml">
</head>
<body>
<div class="wrapper">
<nav class="navbar">
<div class="navbar-logo">
<a class="navbar-logo-main" href="/">
<span class="navbar-logo-dsc">AKLabs</span>
</a>
</div>
<div class="navbar-menu">
<a
href="/now"
class="navbar-menu-item">
~/.plan
</a>
<a
href="/archives"
class="navbar-menu-item">
Archive
</a>
<a
href="/categories"
class="navbar-menu-item">
Categories
</a>
<a
href="/about"
class="navbar-menu-item">
About
</a>
<a
href="/contact"
class="navbar-menu-item">
Contact
</a>
<button
class="navbar-menu-item darknavbar navbar-menu-btn"
aria-label="Toggle dark mode"
id="dark">
<i class="iconfont icon-weather"></i>
</button>
<button
class="navbar-menu-item searchnavbar navbar-menu-btn"
aria-label="Toggle search"
id="search">
<!-- <i
class="iconfont icon-search"
style="font-size: 1.2rem; font-weight: 400;">
</i> -->
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img"
class="iconify iconify--ion" width="28" height="28" preserveAspectRatio="xMidYMid meet" viewBox="0 0 512 512">
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
d="M256 80a176 176 0 1 0 176 176A176 176 0 0 0 256 80Z"></path>
<path fill="none" stroke="currentColor" stroke-miterlimit="10" stroke-width="28"
d="M232 160a72 72 0 1 0 72 72a72 72 0 0 0-72-72Z"></path>
<path fill="none" stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="28"
d="M283.64 283.64L336 336"></path>
</svg>
</button>
</div>
</nav>
<div
id="local-search"
style="display: none">
<input
class="navbar-menu-item"
id="search-input"
placeholder="请输入搜索内容..." />
<div id="search-content"></div>
</div>
<div class="section-wrap">
<div class="container">
<div class="columns">
<aside class="left-column">
<div class="card card-author">
<img
src="/images/akesterson.webp"
class="author-img"
width="88"
height="88"
alt="author avatar">
<p class="author-name">Andrew Kesterson</p>
<p class="author-description"><center><i>"Love God. Live Righteously. Die Well."</i> <br/> <br/> <a target="_blank" rel="noopener" href="https://github.com/akesterson">GitHub</a> || <a target="_blank" rel="noopener" href="https://www.linkedin.com/in/andrewkesterson/">LinkedIn</a> <br/> </center></p>
<div class="author-message">
<a
class="author-posts-count"
href="/archives">
<span>25</span>
<span>Posts</span>
</a>
<a
class="author-categories-count"
href="/categories">
<span>9</span>
<span>Categories</span>
</a>
<a
class="author-tags-count"
href="/tags">
<span>0</span>
<span>Tags</span>
</a>
</div>
</div>
<div class="sticky-tablet">
<article class="display-when-two-columns spacer">
<div class="card card-content toc-card">
<div class="toc-header">
<i
class="iconfont icon-menu"
style="padding-right: 2px;">
</i>TOC
</div>
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-First-Programmers-who-don%E2%80%99t-like-programming"><span class="toc-text">The First : Programmers who dont like programming?</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Second-Type-Programmers-as-Artists"><span class="toc-text">The Second Type: Programmers as Artists</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-two-types-have-never-gotten-along"><span class="toc-text">The two types have never gotten along</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Future"><span class="toc-text">The Future</span></a></li></ol>
</div>
</article>
<article class="card card-content categories-widget">
<div class="categories-card">
<div class="categories-header">
<i
class="iconfont icon-fenlei"
style="padding-right: 2px;">
</i>Categories
</div>
<div class="categories-list">
<a href="/categories/Books/">
<div class="categories-list-item">
Books
<span class="categories-list-item-badge">14</span>
</div>
</a>
<a href="/categories/Faith/">
<div class="categories-list-item">
Faith
<span class="categories-list-item-badge">6</span>
</div>
</a>
<a href="/categories/Outdoors/">
<div class="categories-list-item">
Outdoors
<span class="categories-list-item-badge">1</span>
</div>
</a>
<a href="/categories/Philosophy/">
<div class="categories-list-item">
Philosophy
<span class="categories-list-item-badge">3</span>
</div>
</a>
<a href="/categories/Leadership/">
<div class="categories-list-item">
Leadership
<span class="categories-list-item-badge">8</span>
</div>
</a>
<a href="/categories/History/">
<div class="categories-list-item">
History
<span class="categories-list-item-badge">1</span>
</div>
</a>
<a href="/categories/Liberal-Education/">
<div class="categories-list-item">
Liberal-Education
<span class="categories-list-item-badge">1</span>
</div>
</a>
<a href="/categories/Technology/">
<div class="categories-list-item">
Technology
<span class="categories-list-item-badge">8</span>
</div>
</a>
<a href="/categories/Current-Events/">
<div class="categories-list-item">
Current-Events
<span class="categories-list-item-badge">3</span>
</div>
</a>
</div>
</div>
</article>
<article class="card card-content tags-widget">
<div class="tags-card">
<div class="tags-header">
<i
class="iconfont icon-biaoqian"
style="padding-right: 2px;">
</i>hot tags
</div>
<div class="tags-list">
</div>
</div>
</article>
</div>
</aside>
<main class="main-column">
<article class="card card-content">
<header>
<h1 class="post-title">
There are two kinds of programmers
</h1>
</header>
<div class="post-meta post-show-meta">
<time datetime="2026-01-25T13:57:43.000Z">
<i
class="iconfont icon-calendar"
style="margin-right: 2px;">
</i>
<span>2026-01-25</span>
</time>
<span class="dot"></span>
<a
href="/categories/Philosophy/"
class="post-meta-link">
Philosophy
</a>
<a
href="/categories/Technology/"
class="post-meta-link">
Technology
</a>
<span class="dot"></span>
<span>2.8k words</span>
</div>
</header>
<div
id="section"
class="post-content">
<p>The “AI Revolution”, as many are calling it, is exposing something that I (and countless others) have been aware of for quite some time now. And that is that there are two kinds of programmers:</p>
<ul>
<li>Those who do not find joy in the act of programming a computer</li>
<li>Those who do</li>
</ul>
<p>This rift has been known by both types of programmers for a while, but because the industry was so desperate for individuals who could write code, we had to live with and tolerate each other. The AI Revolution is bringing us to an odd place where one type of programmer may be poised to push the others completely to the margins.</p>
<h2 id="The-First-Programmers-who-dont-like-programming"><a href="#The-First-Programmers-who-dont-like-programming" class="headerlink" title="The First : Programmers who dont like programming?"></a>The First : Programmers who dont like programming?</h2><center><i>
<blockquote>
"If it's not fun, why bother?" --Reggie Fils-Aime
</blockquote>
</i></center>
<br/>
<p>Let us first address why Im claiming that there are programmers who dont enjoy programming.</p>
<p>For the layman, this might seem crazy. Theyve probably never met a programmer who didnt vocalize enjoyment of their job; or at least they probably espoused a love of their chosen skill set, even if they bemoaned the state of their profession. And these individuals are in such high demand, and are so well paid, and the skill is frankly so difficult, why in the world would one choose to become a programmer if they didnt enjoy the act of programming?</p>
<center><img alt="Mr Krabs: Hello, I like money" src="/images/krabs-money.png"/></center>
<p>Because for these people, the attraction to programming is simple: it pays them a lot of money, and they like having money. Or, at least, they like having the ability to easily manage their addiction to food, clothing and shelter. But regardless of whether theyre greedy or pragmatic, they chose this professional field because it seemed like the most tolerable way for them to secure their financial stability. They view the act of programming in the same way that a factory worker might look at the machinery they operate or the widget they assemble: with a complete lack of passion.</p>
<p>Now, dont get me wrong, Im not hating on anyone for making pragmatic choices related to their finances, how they secure their future or the future of their family. I make these kinds of decisions all the time. Thats fine. These individuals probably grew up in the late 80s, early 90s, early 2000s, and got told that programming was a great way to make money. So they went to college, got a computer science (or some related) degree, and went into the industry.</p>
<p>I also wont make any claims about the talents of these people; they run the gamut. You will find people who are quite talented and can carry an entire project on their shoulders, and who have absolutely no talent and produce a net negative effect on the productivity of their teams. There are all kinds of people in all kinds of places and the “learn to code, get a good job” movement has exposed talent in places and people we might not have expected. And Im honestly glad about that - I get a real kick out of finding capability in unexpected places and watching people succeed in places where others think they shouldnt.</p>
<center><i>
<blockquote>
“Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something." --Robert Heinlein
</blockquote>
</i></center>
<br/>
<p>But the dark side of this has been that we have a bunch of people in the industry now who have no particular attachment to or real desire to engage in the activity of programming itself. They are only engaging in programming because that is the activity which the business requires them to engage in to pay their bills, and they have been trained to do so with reasonable levels of effectiveness. Now imagine that we have an industrial innovation which allows them to actually sidestep the entire process of programming, and have a machine perform that act for them?</p>
<p>The individuals in this scenario have no particular love for the act of programming itself. In fact, they often view the act of programming itself as an obstacle to their goal: their goal is to ship the product, to get it done. Programming is a step which they must cross in order to reach the other side. Now these individuals have access to tools that promise to allow them to complete their assigned business tasks in less time, and without actually having to perform the act of programming. For them, this is great. They love it! They widely adopt it. They become part of the endless march of “progress” in the “business” of software production.</p>
<h2 id="The-Second-Type-Programmers-as-Artists"><a href="#The-Second-Type-Programmers-as-Artists" class="headerlink" title="The Second Type: Programmers as Artists"></a>The Second Type: Programmers as Artists</h2><center><i>
<blockquote>
Thus spake the Master Programmer:
<p>“After three days without programming, life becomes meaningless.” </p>
<p>The Tao of Programming, Book 2, The Ancient Masters</p>
</blockquote>
</i></center>
<p>Let us now contrast that with the second type of programmer. These are programmers who program for one simple reason: because they find joy in the activity of discovering how to make the computer do things, using the languages and the rules that the computer imposes upon them. They enjoy meeting the computer on its own terms, understanding it, and making it do things, and continuing to refine those effects for no other purpose than the program itself.</p>
<p>For this kind of programmer, they program whether they are getting paid for it or not. They were likely programming long before they ever heard that they could get paid for it. Their first interactions with a computer likely happened at a young and impressionable age (though not always), and they have probably been engaging in some form of the act of programming ever since. </p>
<p>This second type looks a lot like the first type from the perspective of the casual observer. Both probably work in some kind of software engineering role in a professional capacity. Both probably engage in some amount of computer programming work outside of their professional job, in their spare time. But their motivations and mechanisms are very different. One does it because its an important part of remaining desirable in their field; one does it because they have a genuine hunger for and interest in the subject matter.</p>
<p>It is difficult to define, and has historically been a bit of a battleground, as to whether or not these individuals are more scientist or artist. Google “is programming an art or a science?” and the first page of results will highlight that this is neither an old, nor a settled, debate. And thats because the question of “is <em>programming</em> an art or a science?” attempts to answer the question for an entire field of practice - one which might be engaged in for various reasons, by various people, and various times, producing various outputs.</p>
<p><a target="_blank" rel="noopener" href="https://en.wikipedia.org/wiki/Donald_Knuth">Donald Knuth</a>, the famed computer scientist and mathematician who wrote the seminal <a target="_blank" rel="noopener" href="https://www-cs-faculty.stanford.edu/~knuth/taocp.html">Art of Computer Programming</a> books, mused thusly in his article <a target="_blank" rel="noopener" href="https://www.paulgraham.com/knuth.html?viewfullsite=1">Computer Programming as an Art</a>:</p>
<center><i>
<blockquote>
Our discussion indicates that computer programming is by now both a science and an art, and that the two aspects nicely complement each other. <br/><br/>
[...] When I speak about computer programming as an art, I am thinking primarily of it as an art form, in an aesthetic sense. <br/><br/>
[...] Some programs are elegant, some are exquisite, some are sparkling. My claim is that it is possible to write grand programs, noble programs, truly magnificent ones! <br/><br/>
[...] To summarize: We have seen that computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty. A programmer who subconsciously views himself as an artist will enjoy what he does and will do it better. Therefore we can be glad that people who lecture at computer conferences speak about the state of the Art.
</blockquote>
</i></center>
<br/>
<p>Knuths central thrust is that <em>a computer program itself can be a beautiful work of art</em>. And, thusly, a programmer thus engaged is most certainly engaged in the <em>art</em> of computer programming, and is therefore <em>an artist</em>. Obviously there is a science at work, but the science is being wielded by an artist, in the same way that there is a science to color and pigment and the texture of a canvas, but it is the hand of an artist wielding the brush that produces the work of art; simply working with paint and canvas does not mean you are an artist engaged in a form of art. The same might be said of a factory worker operating a machine that reproduces miniature resin copies of Michelangelos David.</p>
<p>Now I want to make clear that, just because one is engaged in an art form, does not mean that your work is superior to anothers. Just because a person is engaged in carving statues from granite, and they do it by hand, and they do it because they love it, does not mean that their work will be better than (or even as good as) the resin statues coming out of the factory machine being operated by the person who definitely would not call themselves an artist. The same is true of programming. There are programmers who engage in the <em>art</em> of computer programming, because they enjoy it, who have very little talent, and who struggle to produce anything that anyone else would consider art.</p>
<p>But this has absolutely no impact on whether or not that person is in fact <em>an artist</em> and is in fact engaged in <em>creating art</em> through the <em>art of computer programming</em>. This is one of the beauties of an artform vs a scientific discipline: beauty is in the eye of the beholder, and it doesnt matter at all if nobody else but you sees the beauty in it. In fact, if they fail to see the beauty in your artistic creation, then that is their loss and their tragedy, not yours; the beauty in the art exists, they just cant quite see it the way you do, and their life is a little bit more dark and drab because of it.</p>
<h2 id="The-two-types-have-never-gotten-along"><a href="#The-two-types-have-never-gotten-along" class="headerlink" title="The two types have never gotten along"></a>The two types have never gotten along</h2><center><i>
<blockquote>
A programmer from a very large computer company went to a software conference and then returned to report to his manager, saying: "What sort of programmers work for other companies? They behaved badly and were unconcerned with appearances. Their hair was long and unkempt and their clothes were wrinkled and old. They crashed our hospitality suite and they made rude noises during my presentation."
<p>The manager said: “I should have never sent you to the conference. Those programmers live beyond the physical world. They consider life absurd, an accidental coincidence. They come and go without knowing limitations. Without a care, they live only for their programs. Why should they bother with social conventions?</p>
<p>They are alive within the Tao.” </p>
<p>The Tao of Programming, 2.3</p>
</blockquote>
</i></center>
<br/>
<p>This is the part that I dont think anyone is really talking about, but we have to address the elephant in the room:</p>
<ul>
<li>Artistic programmers have always viewed non-artistic programmers with disdain, overtly or quietly</li>
<li>Non-artistic programmers have always found artistic programmers to be weirdos who are difficult to work with</li>
</ul>
<p>For the record, I consider myself an artistic programmer. I make no claims that I am a great artist. I am just raising the flag for “my side” in this argument, before going any further.</p>
<p>Go into any company, any technology group, and you will find a variety of subgroups. It may take a little bit of time to see it, but usually pretty quickly, you will divide the artistic programmers from the non-artistic ones. They work together because the business requires it, but they dont really respect each other. Individuals from one clique might respect an individual from the other clique, as a class, they dont get along. This has always created friction in business technology roles, to the point where some business have adopted unconscious (or conscious) hiring rules that favor one type or the other. When they talk about “culture fit” in their technology teams, this is usually a very large part of what they are talking about.</p>
<p>For the longest time, the artistic programmers held the upper hand in this situation, because frankly the field of computer programming was not sufficiently well understood to be engaged in without the hand of the artist. It was our domain, the science still being so mysterious that it was almost magic, and we were the wizards and priests. The non-artistic types were there to help us get things done, because the business wanted products, not art, and we didnt appreciate working that way, so they supplemented us with people who were fine doing it that way.</p>
<p>That dynamic is changing. The “AI Revolution” is tipping the balance of power away from the artists, towards the non-artistic programmers. The large language models are now - and if not now, then assuming a constant rate of change, very soon - capable of writing code that is “good enough” to allow the business to utilize the non-artistic programmer to achieve a business goal. There are plenty of non-artistic and artistic types who are, united by their desire to have good working software that does no harm to our society and which can be maintained into the future, united in their disapproving caution of this trend. They warn that the field will be damaged in that there will no longer be a transition pathway from junior to senior, that the products being built will be unmaintainable when the current crop of seniors retires (and even the current crop insists the code will not be maintainable), and a variety of other warnings.</p>
<p>But this is the reality we face in the modern computing industry: software is produced as a means to an end, that end being the production of profit through some product vehicle. The programmers only exist to create that product vehicle, or to deliver that product vehicle through other technological means, all of which are meant to extract profit from a customer. Everything else must take a back seat to that single goal, “the bottom line”. When profit is the bottom line, there is no room for artistry in production, unless <em>art itself is the product</em>. And ultimately, the modern computing industry is not interested in asking Michelangelo to carve David; they are interested in producing resin copies of David with minor variations.</p>
<p>And, frankly, a lot of us find that <em>downright offensive</em> not only on business grounds, but on <em>moral</em> grounds: we see it as a cheapening and devaluing of art itself, which seems like an attack on some kind of human building block that is difficult to express, in the way that art is always difficult to express.</p>
<h2 id="The-Future"><a href="#The-Future" class="headerlink" title="The Future"></a>The Future</h2><p>I cant see the future. I dont have a good answer to what is coming. All I wanted to do was point out the divide that lots of people are talking around, without actually talking about it. </p>
<p>I worry a little about the non-artistic programmer. Their rapid adoption of this tool that allows them to bypass the act of programming a computer is going to shoot them in the foot in short order: they will automate themselves (quite literally) out of a profession, and they will need to find other work. This kind of thing has happened many times throughout human history - we no longer employ people to shovel the shit out of city streets, or employ fleets of stable operators, for example - but we mustnt pretend that this revolution will not produce such a shift. Mainly, I worry that the current economic market has no viable alternative for many of these individuals, and they will simply become unemployed. Our current world economic situation is bad enough without suddenly making an even larger portion of the workforce redundant. Some great innovation is required to address the collapse this will induce, and I dont think weve figured it out yet.</p>
<p>Personally… I am not worried about the future of the Art of Computer Programming. Art survives with or without industry. The entire modern computing apparatus can collapse, the internet can dissolve, and the FAANG companies can burn to the ground. The Art of Computer Programming will persist. As long as there are hackers with access to any kind of circuitry, The Art of Computer Programming will survive, even if in obscurity, so long as technological humans exist. Because the Art of Computer Programming is the way that this particular class of artist chooses to express what is in their heart, which is where all art begins and, ultimately, ends. And if you dont understand that, well…</p>
<center><i>
<blockquote>
Thus spake the Master Programmer:<br/><br/>
<p>“Time for you to leave.”<br/><br>The Tao of Programming, Book 9</p>
</blockquote>
</i></center>
</div>
<div>
</div>
</article>
<div class="nav">
<div class="nav-item-next">
<a
href="/2026/01/23/News-2026-Week-3/"
class="nav-link">
<div>
<div class="nav-label">Next</div>
<div class="nav-title">News - 2026 - Week 3 </div>
</div>
<i class="iconfont icon-right nav-next-icon"></i>
</a>
</div>
</div>
<div
class="card card-content toc-card"
id="mobiletoc">
<div class="toc-header">
<i
class="iconfont icon-menu"
style="padding-right: 2px;">
</i>TOC
</div>
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-First-Programmers-who-don%E2%80%99t-like-programming"><span class="toc-text">The First : Programmers who dont like programming?</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Second-Type-Programmers-as-Artists"><span class="toc-text">The Second Type: Programmers as Artists</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-two-types-have-never-gotten-along"><span class="toc-text">The two types have never gotten along</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Future"><span class="toc-text">The Future</span></a></li></ol>
</div>
</main>
<aside class="right-column">
<div class="sticky-widescreen">
<article class="card card-content toc-card">
<div class="toc-header">
<i
class="iconfont icon-menu"
style="padding-right: 2px;">
</i>TOC
</div>
<ol class="toc"><li class="toc-item toc-level-2"><a class="toc-link" href="#The-First-Programmers-who-don%E2%80%99t-like-programming"><span class="toc-text">The First : Programmers who dont like programming?</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Second-Type-Programmers-as-Artists"><span class="toc-text">The Second Type: Programmers as Artists</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-two-types-have-never-gotten-along"><span class="toc-text">The two types have never gotten along</span></a></li><li class="toc-item toc-level-2"><a class="toc-link" href="#The-Future"><span class="toc-text">The Future</span></a></li></ol>
</article>
<article class="card card-content">
<div class="recent-posts-card">
<div class="recent-posts-header">
<i
class="iconfont icon-wenzhang_huaban"
style="padding-right: 2px;">
</i>Recent Posts
</div>
<div class="recent-posts-list">
<div class="recent-posts-item">
<div class="recent-posts-item-title">2026-01-25</div>
<a href="/2026/01/25/Two-kinds-of-programmers/"><div class="recent-posts-item-content">There are two kinds of programmers</div></a>
</div>
<div class="recent-posts-item">
<div class="recent-posts-item-title">2026-01-23</div>
<a href="/2026/01/23/News-2026-Week-3/"><div class="recent-posts-item-content">News - 2026 - Week 3</div></a>
</div>
<div class="recent-posts-item">
<div class="recent-posts-item-title">2026-01-19</div>
<a href="/2026/01/19/This-Old-Tool-cmdarg/"><div class="recent-posts-item-content">This Old Tool : cmdarg</div></a>
</div>
<div class="recent-posts-item">
<div class="recent-posts-item-title">2026-01-16</div>
<a href="/2026/01/16/News-2026-Week-2/"><div class="recent-posts-item-content">News-2026-Week-2</div></a>
</div>
</div>
</div>
</article>
</div>
</aside>
</div>
</div>
</div>
</div>
<footer class="footer">
<div class="footer-container">
<div>
<div class="footer-dsc">
<span>
Copyright ©
-
2026
</span>
&nbsp;
<a
href="mailto:andrew@aklabs.net"
class="footer-link">
Andrew Kesterson
</a>
<br/>
</div>
</div>
<div class="footer-dsc">
Powered by
<a
href="https://hexo.io/"
class="footer-link"
target="_blank"
rel="nofollow noopener noreferrer">
&nbsp;Hexo
</a>
<span>&nbsp;|&nbsp;</span>
Theme -
<a
href="https://github.com/theme-kaze"
class="footer-link"
target="_blank"
rel="nofollow noopener noreferrer">
&nbsp;Kaze
</a>
</div>
</footer>
<a
role="button"
id="scrollbutton"
class="basebutton"
aria-label="回到顶部">
<i class="iconfont icon-arrowleft button-icon"></i>
</a>
<a
role="button"
id="menubutton"
aria-label="menu button"
class="basebutton">
<i class="iconfont icon-menu button-icon"></i>
</a>
<a
role="button"
id="popbutton"
class="basebutton"
aria-label="控制中心">
<i class="iconfont icon-expand button-icon"></i>
</a>
<a
role="button"
id="darkbutton"
class="basebutton darkwidget"
aria-label="夜色模式">
<i class="iconfont icon-weather button-icon"></i>
</a>
<a
role="button"
id="searchbutton"
class="basebutton searchwidget"
aria-label="搜索">
<i class="iconfont icon-search button-icon"></i>
</a>
<script>
var addImgLayout = function () {
var img = document.querySelectorAll('.post-content img')
var i
for (i = 0; i < img.length; i++) {
var wrapper = document.createElement('a')
wrapper.setAttribute('href', img[i].getAttribute('data-src'))
wrapper.setAttribute('aria-label', 'illustration')
wrapper.style.cssText =
'width: 100%; display: flex; justify-content: center;'
if (img[i].alt) wrapper.dataset.caption = img[i].alt
wrapper.dataset.nolink = true
img[i].before(wrapper)
wrapper.append(img[i])
var divWrap = document.createElement('div')
divWrap.classList.add('gallery')
wrapper.before(divWrap)
divWrap.append(wrapper)
}
baguetteBox.run('.gallery')
}
</script>
<script>
loadScript(
"/js/lib/lightbox/baguetteBox.min.js",
addImgLayout
)
</script>
<script src="/js/main.js"></script>
<script>
var addLazyload = function () {
var observer = lozad('.lozad', {
load: function (el) {
el.srcset = el.getAttribute('data-src')
},
loaded: function (el) {
el.classList.add('loaded')
},
})
observer.observe()
}
</script>
<script>
loadScript('/js/lib/lozad.min.js', addLazyload)
</script>
<script src="//instant.page/5.1.0" type="module"
integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
<script>
var googleAnalytics = function () {
window.dataLayer = window.dataLayer || []
function gtag() {
dataLayer.push(arguments)
}
gtag('js', new Date())
gtag('config', 'G-S3YLF516N6')
}
</script>
<script>
loadScript(
'https://www.googletagmanager.com/gtag/js?id=' +
'G-S3YLF516N6',
googleAnalytics
)
</script>
</body>
</html>