English Language Learners Stack Exchange is a question and answer site for speakers of other languages learning English. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
10  
Tomorrow? Probably. Next month? Maybe. Next year? "..." ;-) – Damkerng T. 2 days ago
5  
Not addressed in the answers, but touched on in the comment by @DamkerngT.: tomorrow in this case means "the future" not "the day after today". – Harrison Paine yesterday
up vote 33 down vote accepted

It's a rephrasing of the old programmer's adage: "don't be clever"! Or Brian Kernighan's famous quote:

Everyone knows that debugging is twice as hard as writing a program in the first place. So if you are as clever as you can be when you write it, how will you ever debug it?

Basically it's saying that you shouldn't write clever and/or tricky code because debugging such code later will be very hard.

share|improve this answer
    
Yeah, I'm pretty sure this is the intent behind that blog title. The quote is from the days when computers were still not really fast enough, so programmers had a strong tendency to make their programs overly complex and unmaintainable in the name of efficiency. – doug65536 2 days ago
16  
@doug65536: They still do... ;-) – DevSolar yesterday
    
++bwk (not sure who it's pointing at now) @doug65536 Yes, we have a greater variety of excuses now. – Ed Plunkett yesterday
    
Or if you are being clever (and sometimes you have to be to get the job done), document just how your bit of cleverness works, so you'll understand it later when you have to debug it. And for @doug65536: in the world of non-trivial programs, faster computers mean you just get to solve bigger problems in the same time. – jamesqf yesterday
    
@jamesqf: Being clever and being dirty/hacky are two different things. Being hacky is doing something ugly to get the job done. Being clever is over-engineering something because you think it's cool/cute/neat. – slebetman yesterday

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 .

The code should be easy enough to understand even if viewed after a certain period of time

share|improve this answer

It's sounds like a play on the phrase "Don't put off until tomorrow what you can do today". It's attributed various people including Benjamin Franklin and Thomas Jefferson.

Essentially it means "don't procrastinate".

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.

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".

So, my interpretation of this title is:

Write clean code today because you may not have time to fix it tomorrow.

share|improve this answer
    
Estimates vary, but I've seen figures creeping toward 90% of a programmer's time spent debugging. (It would be interesting to know how Stack Overflow has skewed this metric...) Anything you can do to reduce that fraction is very likely to be a net win. On the other hand, writing code that you can't debug later is a huge time sink in terms of time spent fixing the inevitable problems. – Michael Kjörling 2 days ago
2  
The original phrase is important to understand the intent of the title, so glad someone included it. It's almost certainly unfamiliar to the OP. – JPhi1618 yesterday

Even for simple programs, I remember having hard times understanding some details a few months later. Because I don't not use explicit enough variables, because I did not comment lines that seemed simple back then.

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). Every program, no matter how small and big, is a project, and deserves some project plan, asking at minimum (quoting from the preceding link):

  • Why? - What is the problem or value proposition addressed by the project? Why is it being sponsored?
  • What? - What is the work that will be performed on the project? What are the major products/deliverables?
  • Who? - Who will be involved and what will be their responsibilities within the project? How will they be organized?
  • When? - What is the project timeline and when will particularly meaningful points, referred to as milestones, be complete?

Today and tomorrow should not be taken literally. You would be a different coder in a few month.

share|improve this answer

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.

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.

So use commenting to your code is very necessary to make it clear, what logic you were having in your mind 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.

share|improve this answer

The quote, you say, is:

don't code today what you can't debug tomorrow

It's not what you seem to have read it as, which would be more like:

no matter what you code today, you won't be able to debug it tomorrow

…which, as you point out, is nonsense.

The real quote is encouraging you not to write code that is difficult to understand. 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. 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. (In that sense, there's some hyperbole in there.)

share|improve this answer

When coding, remember some other poor soul may have to debug it, who hasn't been privy to your thought processes. And (as Laurent Duval points out) you probably won't remember either. So write clear comments which inform the reader (especially if the mechanics of what you are doing are at all obscure - e.g. subtle but rarely-used features of the programming language). A bug in the code is forgivable - it can, with some effort, be found and corrected. But a bug in the comments, or in the design documentation, will mislead people for ever. But find the right level. I once had to work on some code which resembled going into a forest where every tree had a label "This is a tree" - when what I wanted to know was "This is 'Kings Wood', producing oak for Naval shipbuilding".

share|improve this answer
    
While this is good programming advice, I'm not sure it helps explain the rhetorical features in play here very well. – Nathan Tuggy 10 hours ago

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.