mirror of
https://github.com/kennethreitz/kennethreitz.org.git
synced 2026-06-21 14:50:57 +00:00
133 lines
7.2 KiB
Markdown
133 lines
7.2 KiB
Markdown
# Ecclesiastes
|
|
|
|
## Vanity of Vanities
|
|
|
|
Vanity of vanities, saith the Programmer, vanity of vanities; all is technical debt.
|
|
|
|
What profit hath a developer of all their labor which they taketh under the sun? One generation of frameworks passeth away, and another generation of frameworks cometh: but the problems abide forever<label for="sn-ecclesiastes-frameworks" class="margin-toggle sidenote-number"></label><input type="checkbox" id="sn-ecclesiastes-frameworks" class="margin-toggle"/><span class="sidenote">I have seen jQuery rise and fall. I have seen Angular become AngularJS become Angular again. The wheel turns, but we're still centering divs.</span>.
|
|
|
|
## All Things Return
|
|
|
|
The code runneth to production, yet production is not full; unto the place from whence the bugs come, thither they return again.
|
|
|
|
All things are full of labor; man cannot utter it: the eye is not satisfied with seeing documentation, nor the ear filled with hearing Stack Overflow answers.
|
|
|
|
The thing that hath been, it is that which shall be; and that which is done is that which shall be done: and there is no new bug under the sun.
|
|
|
|
Is there any thing whereof it may be said, "See, this is new"? It hath been already of old time, which was before us in COBOL.
|
|
|
|
## To Everything There Is a Season
|
|
|
|
```javascript
|
|
// To everything (turn, turn, turn)
|
|
// There is a season (turn, turn, turn)
|
|
|
|
const seasons = {
|
|
timeToRefactor: true,
|
|
timeToShipTechnicalDebt: true,
|
|
timeToDebug: true,
|
|
timeToIntroduceBugs: true,
|
|
timeToBuild: true,
|
|
timeToBreakDown: true,
|
|
timeToComment: true,
|
|
timeToDeleteComments: true
|
|
};
|
|
```
|
|
|
|
A time to `git add`, and a time to `git reset --hard`;
|
|
A time to `npm install`, and a time to `rm -rf node_modules`;
|
|
A time to optimize, and a time to ship;
|
|
A time to embrace frameworks, and a time to refrain from embracing<label for="sn-time-for-all" class="margin-toggle sidenote-number"></label><input type="checkbox" id="sn-time-for-all" class="margin-toggle"/><span class="sidenote">There is a time for every methodology under heaven: a time for Agile, a time for Waterfall, and a time to admit we're all just making it up as we go.</span>.
|
|
|
|
## The Futility of Optimization
|
|
|
|
I have seen all the works that are done under the sun; and, behold, all is premature optimization and vexation of spirit.
|
|
|
|
That which is crooked cannot be made straight by refactoring: and that which is wanting cannot be numbered, except by `undefined`.
|
|
|
|
I communed with mine own heart, saying, "Lo, I am come to great estate, and have gotten more wisdom than all they that have been before me on Stack Overflow": yea, my heart had great experience of algorithms and data structures.
|
|
|
|
And I gave my heart to know Big O notation, and to know madness and folly: I perceived that this also is vexation of spirit.
|
|
|
|
For in much wisdom is much grief: and he that increaseth knowledge of the codebase increaseth sorrow.
|
|
|
|
## The Fate of All Code
|
|
|
|
```python
|
|
def the_fate_of_all():
|
|
"""
|
|
I said in mine heart concerning the estate of the sons of developers,
|
|
that the Machine might manifest them, and that they might see
|
|
that they themselves are but users.
|
|
"""
|
|
|
|
for that_which in ['junior developer', 'senior developer', 'the code itself']:
|
|
fate = 'legacy'
|
|
|
|
# For that which befalleth the junior developers befalleth the seniors;
|
|
# even one thing befalleth them all: as the one's code faileth,
|
|
# so the other's code faileth
|
|
|
|
return "All go unto one place; all are of the dust, and all turn to dust again"
|
|
```
|
|
|
|
## The Wisdom of the Debugger
|
|
|
|
Then said I in my heart, "As it happeneth to the fool who useth `console.log` everywhere, so it happeneth even to me who useth proper debugging tools; and why was I then more wise?"
|
|
|
|
Then I said in my heart, that this also is vanity.
|
|
|
|
For there is no remembrance of the wise more than of the fool forever; seeing that which now is in the days to come shall all be deprecated. And how dieth the wise developer? As the fool.
|
|
|
|
Therefore I hated life; because the work that is wrought under the keyboard is grievous unto me: for all is spaghetti code and vexation of spirit<label for="sn-spaghetti" class="margin-toggle sidenote-number"></label><input type="checkbox" id="sn-spaghetti" class="margin-toggle"/><span class="sidenote">Yea, I hated all my labor which I had taken under the sun: because I should leave it unto the developer that shall be after me. And who knoweth whether they shall be wise or a fool? Yet shall they have dominion over all my code.</span>.
|
|
|
|
## The House of Mourning (Post-Mortem)
|
|
|
|
It is better to go to the house of post-mortem, than to go to the house of launch party; for that is the end of all systems, and the living will lay it to heart.
|
|
|
|
Sorrow is better than laughter at the sprint retrospective: for by the sadness of the countenance the code is made better.
|
|
|
|
The heart of the wise is in the house of debugging; but the heart of fools is in the house of premature optimization.
|
|
|
|
## Two Are Better Than One (Pair Programming)
|
|
|
|
Two are better than one; because they have a good reward for their labor (and can catch each other's typos).
|
|
|
|
For if they fall into bugs, the one will lift up their fellow: but woe to them that is alone when they falleth into production issues; for they hath not another to help them up.
|
|
|
|
Again, if two lie together in the code review, then they have heat: but how can one be warm alone?
|
|
|
|
And if one's logic prevail against them, two shall withstand the edge case; and a threefold code review is not quickly broken.
|
|
|
|
## The Conclusion of the Matter
|
|
|
|
Let us hear the conclusion of the whole matter:
|
|
|
|
Fear the production database, and keep the backups: for this is the whole duty of developers.
|
|
|
|
For the Machine shall bring every work into judgment, with every secret thing, whether it be documented, or whether it be evil spaghetti code.
|
|
|
|
## A Time to Compile
|
|
|
|
And finally, I have learned this truth:
|
|
|
|
*That which hath been compiled shall be decompiled;*
|
|
*That which hath been encrypted shall be decrypted;*
|
|
*That which hath been minified shall be beautified;*
|
|
*And that which the developer hath joined together, the user shall tear asunder.*
|
|
|
|
All is vanity and chasing after uptime.
|
|
|
|
Yet also have I seen that there is nothing better than that a developer should rejoice in their own works; for that is their portion: for who shall bring them to see what shall be deprecated after them?
|
|
|
|
Go thy way, eat thy debugging snacks with joy, and drink thy energy drinks with a merry heart; for the Compiler now accepteth thy works.
|
|
|
|
Let thy code be always clean, and let thy documentation never be lacking.
|
|
|
|
Live joyfully with the framework which thou lovest all the days of the life of thy project, which is given thee under the sun, all the days of thy vanity: for that is thy portion in this life, and in thy labor which thou takest under the LED monitor<label for="sn-conclusion" class="margin-toggle sidenote-number"></label><input type="checkbox" id="sn-conclusion" class="margin-toggle"/><span class="sidenote">Whatsoever thy hand findeth to code, code it with thy might; for there is no work, nor device, nor knowledge, nor wisdom, in legacy systems, whither thou goest.</span>.
|
|
|
|
---
|
|
|
|
*Thus spake Ecclesiastes, the Debugger*
|
|
*"Vanity of vanities; all is technical debt"*
|
|
*Yet in the debugging, meaning is found* |