Forum: ell.stackexchange.com
Tags: <sentence-meaning>
Title: How to understand "don't code today what you can't debug tomorrow"?
Question: It's a title of a  blog . In my option, I absolutely can debug my code tomorrow which I wrote today. So how to understand that?

Answers:
sents: text: It's a rephrasing of the old programmer's adage: "don't be clever" !
text: Or Brian Kernighan's famous quote: Everyone knows that debugging is twice as hard as writing a program in the first place.
text: So if you are as clever as you can be when you write it, how will you ever debug it?
text: Basically it's saying that you shouldn't write clever and/or tricky code because debugging such code later will be very hard.
answer_details: author: ell.stackexchange.com/users/9627/slebetman
score: 50
sents: text: It sounds like the quote means or intends for the developer to write clean and simple code that may be easily understandable even after some period of time .
text: The code should be easy enough to understand even if viewed after a certain period of time
answer_details: author: ell.stackexchange.com/users/33732/Daim
score: 24
sents: text: It's sounds like a play on the phrase "Don't put off until tomorrow what you can do today".
text: It's attributed various people including Benjamin Franklin and Thomas Jefferson.
text: Essentially it means "don't procrastinate".
text: If I had to guess, this version is intended to encourage readers to write clean code, particularly if you don't have the time to debug it.
text: I think that "can't" in this case doesn't mean "if you don't have the ability", it means "if you don't have the time".
text: So, my interpretation of this title is: Write clean code today because you may not have time to fix it tomorrow.
answer_details: author: ell.stackexchange.com/users/16318/Catija
score: 10
sents: text: Even for simple programs, I remember having hard times understanding some details a few months later.
text: Because I don't not use explicit enough variables, because I did not comment lines that seemed simple back then.
text: Most often, because I started coding directly, without taking a little time with pencil and paper before to map ideas, to record limitations, to foresee dependencies, to check whether I did a similar program before (which I did forget).
text: Every program, no matter how small and big, is a project, and deserves some project plan , asking at minimum (quoting from the preceding link):
text: Why?
text: - What is the problem or value proposition addressed by the project?
text: Why is it being sponsored?
text: What?
text: - What is the work that will be performed on the project?
text: What are the major products/deliverables?
text: Who?
text: - Who will be involved and what will be their responsibilities within the project?
text: How will they be organized? When?
text: - What is the project timeline and when will particularly meaningful points, referred to as milestones, be complete?
text: Today and tomorrow should not be taken literally.
text: You would be a different coder in a few month.
answer_details: author: ell.stackexchange.com/users/24691/Laurent Duval
score: 3
sents: text: Since we're in English Language Learners StackExchange and not in Programmers StackExchange , Tomorrow means in the future in its figurative sense (weeks, months, years later), not literal (in 24 hours).
text: If you ever studied your first programming language at school (or at home)
text: several years ago, try to find where you stored your old school projects, and read them.
text: When you wrote them you knew exactly what you were doing right?
text: ( don't code today... )
text: Turns out you will probably struggle to understand your own code, and unless you were an experienced developer when you learned your first language (ahem), you had probably not left many hints for your future self to help him/
text: her understand what you were thinking back then ( ...what you can't debug tomorrow ).
text: In this sense, when you write code you have to keep in mind
text: someone else is going to read it.
text: And that someone else could be a "future you".
text: The "future you" could go from several days, to several weeks, to months or years later.
text: Ultimately the saying "don't code today what you can't debug tomorrow" or rephrased "aim to write readable and maintainable code in the long-term" is a general rule for developers.
text: You write code for your colleagues to read, and eventually your future replacement once you'll get promoted or move to work for another employer.
text: Seen from a different angle, if you don't write maintainable code, no-one can replace you and you won't get promoted.
answer_details: author: ell.stackexchange.com/users/31333/Hay
score: 3
sents: text: It's a phrase that needs to be understand in terms of maintenance, try to put yourself in to those person shoe who have to deal with the code/project of other person.
text: What I understand is if you can't understand your after some time then it will be very difficult for someone who is working/solving bug of yours.
text: So use commenting to your code is very necessary to make it clear, what logic you were having in your mind
text: just note it down, so after some in future if you are working on that same code or someone other then it can be easily have workaround with your project.
answer_details: author: ell.stackexchange.com/users/33733/JiteshNK
score: 1
sents: text: The quote, you say, is: don't code today what you can't debug tomorrow
text: It's not what you seem to have read it as, which would be more like: no matter what you code today
text: , you won't be able to debug it tomorrow …which, as you point out, is nonsense.
text: The real quote is encouraging you not to write code that is difficult to understand.
text: If you would struggle to understand it if you came back to it in a year, that's bad; if you would struggle to understand it if you came back to it in a month's time, that's a big problem.
text: If you wouldn't be able to understand it enough to debug it tomorrow , then something is terribly wrong and you should not have written it that way.
text: (In that sense, there's some hyperbole in there.)
answer_details: author: ell.stackexchange.com/users/626/Lightness Races in Orbit
score: 1
sents: text: It simply means write a simple code including comments which can be easily debugged in the absence of the developer who is the owner of the code or may be by the developer itself after a period of time.
answer_details: author: ell.stackexchange.com/users/33825/Hazell
score: 0

Summary of the answers:
Basically it's saying that you shouldn't write clever and/or tricky code because debugging such code later will be very hard. Write clean code today because you may not have time to fix it tomorrow.  
The quote basically encourages programmers to "not be too clever" when writing code, because the debugging part is harder than the coding itself. Therefore, if the code is too complex, debugging it will be a nightmare and it may even not be understandable after a period of time. It can also be perceived as a play on the phrase "Don't put off until tomorrow what you can do today", encouraging programmers not to procrastinate and to write code in a simple enough way that will not be too time-consuming to debug.