Suddenly a clever idea strikes you. Hmmm... it just might work. You realize deep down it's not the right way to do it. Maybe it means adding some temporal/implicit dependencies. ("as long as no one starts calling foo() before initBar(), everything should keep working.")
Maybe it means throwing in a magic string that will only work until January 3 next year. ("No problem, I'll just come back to this code after the deadline. We shouldn't be too busy then.")
Maybe it means breaking the design and making the code untestable. ("Well, it would be nice to have automated tests around this, but it seems to be working. Hopefully no one makes any changes to this code before the deadline.")
Maybe it means living with intermittent bugs. ("Hmmm. The system only times out 8% of the time. We need to figure out why before we go into production, but that should be good enough for testing.")
Maybe it means removing one bug and introducing another one. ("Well, at least we can submit the page now. Hopefully none of the users double-clicks the submit button until I've had a chance to revisit the code after the deadline. I'll fix it later.")
That's the magic word. Later. It makes a great warning signal that you may be heading down a dangerous path. When you catch yourself thinking "I'll fix it later", stop for a minute. You're feeling that little twang of guilt for a reason (even if it's masked by the little ego boost you get from coming up with such a clever workaround). Think about the real consequences of this decision. Will you really get back to it later? What will happen if you don't? What are the risks you're introducing? Ask another developer for an opinion. Ask the customer for an opinion (if you can phrase it in customer language). Think a little longer about other solutions.
There are several popular variants of "I'll fix it later":
- I'll fix that bug later.
- I'll verify with the customer that I've built what they actually need later.
- I'll write unit tests later.
- I'll remove the fragility from the unit tests later.
- I'll make the unit tests readable later.
- I'll make the unit tests fast later.
- I'll integration test later.
- I'll usability test later.
- I'll remove that copy/paste duplication later.
- I'll bounce my idea/design/code off another developer later.
- I'll remove that workaround/hot fix/complete hack later.
- I'll make the code readable/maintainable later.
- I'll worry about performance/reliability later.
"Later equals Never."
Why is this? There are a few reasons that I've noticed:
- When you cut corners in order to deliver on time, you're giving management and your customer a false sense of how fast you can reliably deliver. Agile teams use the term 'velocity' to describe the estimated amount of customer value they can deliver per iteration. If there is still work left to be done, you are effectively lying to your customer about how fast you can deliver value. Since your customer thinks you can deliver more than you really can, you will be overloaded with work again next time. You will start accumulating technical debt. There is no easy cure for technical debt (the most common cure being a complete re-write), so prevention is the best medicine. The best way to prevent technical debt from accumulating is to establish realistic expectations about how fast you can effectively work.
- When you skimp on automated tests, and even when you write tests but don't ensure they are readable, atomic, and easily-maintained unit tests, you limit your ability to effectively refactor. When you can't easily refactor, it begins to get hard to write readable, atomic, and easily-maintained unit tests. Not only that -- because it's harder to evolve your design, you will face a stronger temptation to fix bugs with workarounds and hacks that will come back to bite you later. You will spend more time debugging and bug fixing, leaving you less time to write tests and refactor. It's a downward spiral that results in reduced velocity.
- unit tested
- verified by customer & customer tests
- usability tested
- integrated
- integration tested
- documented
- performance tested
- peer reviewed (via pair programming or some other mechanism)
- refactored, readable, duplication-free
- bug-free
Do you have any other "I'll fix it later" variants to add to my list? Stories about how planning on fixing something later came back to haunt you, or how adhering to a definition of done saved a lot of potential pain? When is it ok to "fix it later"? Where's the fine line between LeBlanc's Law and YAGNI? Please share your thoughts in the comments section!
87 comments:
Good article Ryan. Very true. I think Dave should check for "prior art" on Leblanc's Law though.
Sweet article dude :) Thanks for attributing me btw. I'm actually using this in a discussion about the merits of refactoring. This article is really well thought out, and helps make the point for continual refactoring quite nicely.
I think the whole "later == never" thing started as an admission of my own tendency to procrastinate - but it does seem to have an amazingly broad applicability. A practice I now try is to have a list of "must do" items right under my monitor, and I don't consider the task done until they're all checked off. Things like "fix that kludge you put in BlahClass, ensure code coverage is high, test on Linux, etc".
Oh and "later equals never" comes up with 3 google hits, one of which actually talks about this exact form of procrastination. But I think I started quoting it first :)
Agile Guru R.P. Cooper hits the nail on the head once again.
Where I am, later == never because there is zero time or business justification to fix a problem that is visible only to developers. Once a hack is in it's done until something breaks "later". No matter that it will take ten times as long to correct it then. The project schedule will never and could never contain line items for "fixing the code". No one (except the developers (well only one, me) cares. So at the time it's broke, it's "now or never" not "now or later".
Great post! I posted some comments on my blog at Pure Danger Tech.
It depends upon your goals. If you want to remain a programmer, then follow this advice. If you want to make money then you _should_ give your employer a dishonest exaggeration of the speed at which you can get things done. Then he'll give you a raise, assign you new development, and turn your buggy monstrosities over to the "slower" programmers for maintenance. Then, before it all catches up with you, move into management. Tell people, "I got the code out the door while the window of opportunity was still open."
Please create a printer stylesheet or an easy way to print. I use firefox and can't print your article.
Thanks for the suggestion, Stucco. I'm running into some kinks trying to create a print stylesheet that works with my blogger template, but I'll put more time into it later this evening.
Horror stories that come back to bite?
How about three that collide?
Mine: writing C code for the first time, needed a library up ASAP, didn't know which flag to set on file create, so passed a "-1" to it and set all flags.
Including global write and setuid.
Bad, but not yet a disaster.
Second person: has lots of permission problems with a system, so he says "the app needs to run as root".
Worse, but not yet a disaster.
Third person: we need to be able to access this from anywhere on the internet, so lets NFS export world mount world write.
Now we have: NFS world mount world write, process creating files as root, with other write and setuid set. Result: owned box. All three were a Temporary fix, we'll come back to fix this before it goes into production.
The attitude that "we will fix it later" is why I no longer work for someone else as a developer.
After retiring from 20 years of service in the military, I searched for a job where "doing it right the first time was a priority." Everyone said that it was, but I found that it was never the case.
Deadlines would loom, and my part of the project was done correctly and Unit tested and worked, so I would be assigned to help other younger programmers meet their deadlines. Their solutions were usually a "quick fix to get it out the door."
When the deadline was met, the younger programmers usually went on to other projects, while I was again assigned to fix the parts of the project that didn't work.
I got tired of fixing other people's code, so I now develop my own software, for my own purposes. It is speced out, tests are written before the code, the code is Unit Tested and when implemented, it works first time every time. In the military, I also learned the concept that it should be fully documented, so if something happens to me, someone else can take up the torch and run with it.
And did I say that I don't have to fix someone elses code :)
Thanks, all, for sharing your comments and stories!
P.S. Stucco (and anyone else wondering): I've managed to wrestle my blogger template into a print style. You should now be able to print articles from On Agile pretty cleanly.
Cheers!
But Ryan, you just made yourself a liar...
You said you'd fix the stylesheet "later"... and then you did!
:)
Great article, BTW.
Thanks Travis!
I guess the important thing is I designated a specific later ("later this evening"), not just the nebulous catch-all "later".
Very pertinent advice, thank you! I think it extends to everything and not only development! We run a fairly complex IP PBX, which I reconfigure to cater for various connection options, such as softphones. I test from my side and ask the user to test from their side as soon as they are set up. Frequently, they don't, I don't hear from them until weeks later and then they find it doesn't work! In one laughable case, the user phoned me, by an alternate means, to say his softphone wasn't working, so I made a connection and he answered with the silence of surprise, which all goes to show ....! (I have a saying too: The client is not usually right; but he or she has rights! And one of those is to be kept accurately informed of progress, problems and limitations.)
Have you tried using a reminder service like backpackit to help with this? I haven't yet, but I imagine it'd be a little harder to ignore those e-mails than the stack of "we should really do this" cards on the wall.
Well, what can I say... there are 1,129 "todo" items in the 5500 classes of the project I am currently working on, and there are probably even more things left for "later"
Do it later could well be agile tool for disciplined programmer with less worry of endangering the health of the code base.
Funny - this article is over 4 years old, but nothing seems to have changed.
Loved the post and scawa's comment.
Thank you for your article, quite effective information.
Really trustworthy blog. Please keep updating with great posts like this one. I have booked marked your site and am about to email it to a few friends of mine that I know would enjoy reading..
Wonԁеrful, what a blog it is! Thiѕ webѕitе pгoνides helpful data
tо us, κeep іt up.
Stop by my webpage ; party themes birthday
Remarkable issues here. I am very satisfied to look your post.
Thanks so much and I am having a look ahead to touch you.
Will you kindly drop me a mail?
Here is my site ; porn caught on camera
I'm not sure where you are getting your information, but great topic. I needs to spend some time learning much more or understanding more. Thanks for magnificent info I was looking for this information for my mission.
Feel free to visit my blog New Bubble Shooter
I absolutely love your website.. Very nice colors & theme.
Did you build this amazing site yourself? Please reply back
as I'm wanting to create my very own site and would love to find out where you got this from or what the theme is named. Cheers!
My web page buy Youtube views cheap
Despite the fact that planning a event, make sure you take your partner's tastes into account. There are tons of places online that will help you in this regard. (Just don't forget to take some Tylenol for the migraine headache that might result.
my webpage :: 1st Birthday Party Ideas
my web page: 5th Birthday Party Ideas
For those who are unaware, Vistaprint is a website that has been
around for years, and it offers a variety of personalized products that can be used for businesses, gifts,
weddings, and more. (Here's the key difference. Out of town guests will feel especially welcome if you give them special attention at the reception.
Here is my weblog wedding website advertising
" A good tip is to weblog about things related to your industry with out giving away something which you could be making cash from. Keep on experimenting but learn form the past mistakes and do not try to implement those in the future plans. Relate to them and they will always come back.
My web blog - Internet Marketing Coach
Well with the internet the world has suddenly become the customer base
of many businesses, especially Facebook.
Buy facebook fans are actually referred to now as Facebook,
but often are used interchangeably. It gives you info such as fan interaction and visitor
demographics but it is limited and can't provide info on sources of traffic, keyword data and other sophisticated data.
my web page http://socialbears.com/google-plus-one/
There are features that allow you to keep track of vendors that you like and keep notes
so you know why they are listed. Instead of sending your scanned invitation, it would
be great if you create your own wedding website and invite your friends and relatives.
If you don't have time, think about hiring someone for Best wedding website.
Feel free to surf to my website: wedding website amanda isgate and brandon hicks
my website - free wedding website advertising
With the increasing fan base your product
sale will also considerably increase and your marketing objectives will
be easily achieved. If it is a new product, a gift, the introduction of a new group or even the details
of the products and services, Facebook provides an easy field of advertising.
There are many ways of doing this and this article take
a look at some of them.
Feel free to surf to my blog - Buy Facebook Fans Cheap
My webpage :: get facebook fans
Will they be fed, watered, and cared for properly.
The truth is this isn't aversion education. Dog obedience training is a bit more than trained responses.
Here is my homepage ... dog training and boarding colorado
Later on, among the continued practice ending up will continue to be auxiliary accustomed burning the various chords.
-- Chord Symbol: Dm. Once you know these
scales, in all twelve keys, then you have
a very solid foundation on which to learn how to play piano chords.
Here is my homepage - piano chords and scales made easy
And that is the first rule of keywords - Relevance.
Robert Riohe is a well-known author, he has been writing different blogs on different topics like health,nutrition,supplements etc.
There are many blog plug-ins such as Caffeinated Content for Wordpress that pulls.
Also visit my web blog - Internet Marketing Techniques
- Set thoroughly cooked chicken aside. The diet program is generally known as the caveman diet or perhaps the Paleolithic Diet.
Nuts(non processed) - Nuts are cholesterol free and eating one ounce per day reduces the risk of heart disease
and type 2 diabetes.
Feel free to surf to my page: Paleo Diet And Alcoholism
Also see my site > the paleo diet and weight loss
Despite the fact that planning a event, make sure you take your
partner's tastes into account. There are judges, judging on originality, easy to understand what is going funny and timing for each commercial bank. This is done with several teams of children can see and hunt for something, we tell them.
my web-site - 13Th Birthday Party Ideas
Will they be fed, watered, and cared for properly.
Citrus juices help in decreasing the chance of bacteria
to remain in your dog. 435-896-1737 Annabella, Utah Trainers: Chris and
Julie Holt.
Look at my website; dog training and boarding atlanta
Then, cells that destroy bacteria and cell debris wipe out
the yeast. Implementing these changes in your life, will be effective remedies against recurrent yeast infections, when undertaken with a holistic yeast infection treatment program that will
kill the yeast infection from the inside out. ** Burning Sensation While Urination.
Feel free to surf to my web-site; vaginal yeast infection and antibiotics
This is because they have a high number of satisfied clients who have purchased likes and fans in bulk and are reaping the
immense benefits. For those who do not have much experience, there are many sites that offer a free book on how to better
sell their products through Facebook fans, so do not wait, build your site and buy
some fans now. There are many ways of doing this
and this article take a look at some of them.
My blog post; stickzeit.blogspot.com
my website: increase facebook fans
Okay, I'll admit I'm a little biased since I am the author of this article.
We paid a great idea for this site and made up to look like
the airlines pass. A big bowl of pretzels, vegetables with dip, crackers and slices of meat and cheese cut into
shapes using airplane cookie cutter.
Feel free to visit my blog; 18th birthday party ideas
Oils, beverages and Paleo sweets should also be used in moderate quantities and also
keep in mind that Paleo diet food list does not contain in it all processed foods made out of dairy products,
powdered milk, ice creams, cereal grains and legumes and should be avoided.
The fact is, most grains are quite high in glycemic index, meaning that they make your blood sugar go
up rapidly, and send you crashing down soon thereafter.
- Vegetables are low in sodium less water retention.
My homepage - paleo diet and cholesterol
Also see my web page > paleo diet and weight loss
I'm not sure why but this blog is loading incredibly slow for me. Is anyone else having this problem or is it a problem on my end? I'll chесκ
back later and sеe if thе prοblem stіll existѕ.
Heге iѕ my weblog link building service
In the world of social networking, numbers say a lot about one's business. A lot of organizations do not recognize Facebook, so it could be a enormous benefit to you if you construct a sizable fan-page and have thousands of followers. One of the most riveting prospects of the position is, for individuals, groups, companies and businesses to create their own pages to elevate and support their products, brands and services.
Here is my webpage - Http://Socialbears.Com/Facebook-Fans/
Chords introduce harmony into music and it is the effects created by chords that
produce the inspiration behind so much music and make it so satisfying both to listen to and to play.
-- Notes: Bb D F. Best Regards.
Also visit my weblog free piano chords and lyrics
My site > piano chords amazing love
It was developed by Walter L. By meat I mean red meat, white meat and seafood.
The Paleo Gluten Free Diet has many health claims.
Take a look at my page ... paleo diet and weight loss
There are also many reputed facebook fan page design and fan providers who sell their products for a price.
They are designed to suit the individual needs of
businesses that wish to either use sponsorship ads, advertising programs, business events,
Facebook widgets for business websites, Facebook Like for corporate
blogs, forums etc. The first step in this regard is to make a fan page.
my site - http://www.gazedd.co.uk/
So you are looking to rid your girl of these unwanted stalkers when you are drawn to Willow Creek's Black Mirror Castle. You make different challenges like scavenger hunts, food challenges, mazes and races. Spice things up by including these Halloween-themes recipes:.
My blog post :: google images
In that case, this kind of question should not be taken from any show telecasted in specific country.
* Team answer sheets - Basically a grid lined A4 type sheet with answer write in numbered boxes and a
line on top for the team name. Theme Format: It is almost like standard format of the pub quiz.
my blog post; good pub quiz names
Even just 15 minutes a day keeps your piano playing ability
in tune. So you want to learn how to play the piano.
When you're acquainted with these core 7 keys you can start to learn about the black keys (flats and sharps).
Look into my weblog: Christian Piano Chords And Lyrics
If all players are wrong the murderer gets away and everyone loses.
At the end of the party all of the papers write down who they think was the prohibition
agent. Spice things up by including these Halloween-themes recipes:.
Also visit my webpage new york auto insurance quotes
This is usually considered a fun and effective learning method in general.
Instead, focus on a single thing or just a couple of things, and try not to move forward until you have reached those goals.
Piano players that struggle are the ones that don't play with passion and feeling.
Also visit my blog; piano chords and tabs
Also, we need to determine the rounds of the quiz according to it.
Anna had been looking through my phone while I was naked.
28.
Feel free to visit my web blog: clever pub quiz names
Chords introduce harmony into music and it is the effects created by chords that produce the
inspiration behind so much music and make it so satisfying both to listen to and to play.
Then you can quickly and easily figure out how to play any chord
in any key on the spot, whether you've memorized that specific chord or not. offers free online piano lessons.
Feel free to visit my web blog - piano chords and notes
Contact Kayak Fishing Fever today by calling 518-368 8332.
They can be found online as well as in many kayak shops
across the country and in sporting good stores.
Best of all, a kayak will cost a fraction of the price of the average fishing boat.
Review my blog post - birmingham hotels
' Satanic Ritual - Decorate the space with human sacrifice, goblets of blood, pentagrams, and things draped in black. This was zero cost because the students went to local stores and asked for either donations and gift cards to purchase these items. Cranberry studios developed this sequel while publisher Anaconda brings it to you in stores.
Take a look at my web blog antiterrorism
I am certain I sometimes have an advantage over bass
boats speeding here and there while I quietly work shorelines, coves, and underwater structure.
Are you looking for a stable casting platform or a sleek, fast-moving boat to chase blitzing fish.
Now let us look at the specific needs of a kayak fishermen when it comes
to his craft.
My homepage :: scott
Some were practical, of course, but others were psychological and emotional.
Anna had been looking through my phone while I was naked.
28.
Also visit my blog ... free pub Quiz answers
Also, we need to determine the rounds of the quiz according to it.
At the end of each round read out the cumulative scores.
28.
My web blog great pub quiz names
By dividing up the party at several peoples houses you make
it easy on yourself. This was zero cost because the students went to local stores and asked for either donations and gift cards to purchase these items.
Spice things up by including these Halloween-themes recipes:.
My web site ... san diego movers
Choose from the list of the best kayaks available and
get value for your money. Kayaks are usually categorized firstly by their framework, and secondly by their
function. Kayaks can also be classified as ocean kayaks, Hobie kayaks, river kayaks, and tandem kayaks.
Also visit my site imagefap
If your tween is into paint-ball you can take everyone
to play paint-ball. A murder mystery game is a fun way to pass the time during the twenties theme party.
Play games all night long in keeping with the twenties theme such
as various card games and crossword puzzles.
Here is my web-site security
The decor on the inside of the restaurant is absolutely beautiful.
Below are listed a few popular pubs where one can chill in Mumbai.
Theme Format: It is almost like standard format of the
pub quiz.
Feel free to visit my website ... redtooth pub quiz answers
By dividing up the party at several peoples houses you make it
easy on yourself. A murder mystery game is a fun way to pass the time during the twenties
theme party. Spice things up by including these Halloween-themes recipes:
.
Feel free to surf to my web page :: accounting software
By dividing up the party at several peoples houses you make it easy on yourself.
For adults, a virtual makeover of hair and makeup may be the equivalent of
a little one hood game, with an improved
style sensibility that tends to make the knowledge each entertaining and inspirational.
Every Halloween party that people remember later in
the year by saying things like "Do you remember so-and-so's Halloween party last year.
my web page refrigerators
The owner decided after the event to donate half of the proceeds back to the students.
I've played Nancy Drew for years and even her saccharine personality is more 3D than Lindsay or 'Linds') as she calls herself. At each house you have the hostess serve something small to eat, and host a small game.
Also visit my webpage :: internet browser software
I must thаnk уou for the efforts you've put in writing this blog. I really hope to check out the same high-grade content by you in the future as well. In fact, your creative writing abilities has inspired me to get my very own blog now ;)
My homepage hcg diet recipes book pdf download
The only hurdle to accessing this is of course human limitations and
the fact that the brain does not function solely as a learning tool for the
human being. At the end of each round read out the cumulative scores.
The decline of the East side blues scene was disheartening,
but, it also gave rise to the need for a fresh start, which
came in the form of the next blues-only venue, Antone's, founded by the late Clifford Antone, during the summer of 1975.
Look into my website pub quiz archives
The only hurdle to accessing this is of course human limitations and the
fact that the brain does not function solely as a learning tool for the human
being. Anna had been looking through my phone while I was naked.
The Bull's Head Pub, Bangkok.
Look at my web blog :: clever pub quiz names
Some were practical, of course, but others were psychological and emotional.
Below are listed a few popular pubs where one can chill in Mumbai.
The buccal cavity is a small cavity that has neither jaws nor
teeth.
Also visit my blog post: pub quiz and answers general knowledge
On Sunday nights Erin Jaimes hosts a blues jam where anyone from
Alan Haynes to Gary Clark, Jr. Brazenhead is a great place to go with your family or for a
business lunch or dinner, but if you are looking for a party atmosphere,
this isn't it. The Bull's Head Pub, Bangkok.
Also visit my website - fun pub quiz names
Ηello, I dеsire tο subѕcгіbe fοr thіѕ
blοg to obtаin mοst uρ-to-date updаteѕ, thus where can i
ԁo it pleаѕe help out.
Feel fгee to suгf to my site: Florist Job
DJ spins out on Saturday nights. At the end of each round read out
the cumulative scores. Her father, Bruce Paltrow, produced the critically acclaimed TV series that is
considered the precursor to many medical shows today,
St.
Feel free to surf to my website: brainstormer pub quiz answers
On Sunday nights Erin Jaimes hosts a blues jam where anyone from Alan Haynes to Gary Clark, Jr.
Brazenhead is a great place to go with your family or for a
business lunch or dinner, but if you are looking for
a party atmosphere, this isn't it. Theme Format: It is almost like standard format of the pub quiz.
Also visit my web-site; pub quiz archive
Fashion Games of Teen Girls Interested Are Fun These challenges
are at times shared amongst buddies. At the end of the party all of the papers write down
who they think was the prohibition agent. At each house you
have the hostess serve something small to eat, and host a small game.
my website: ask com
(Thank you rounds are always welcome, of course.
Popular prizes include sports tickets, cash and vouchers for
drinks, food - and dollars off of tabs. The buccal cavity
is a small cavity that has neither jaws nor teeth.
Also visit my weblog - clever pub quiz names
The decor on the inside of the restaurant is absolutely beautiful.
* Team answer sheets - Basically a grid lined A4 type sheet with answer write in numbered boxes and a line on top for the team name.
The buccal cavity is a small cavity that has neither jaws nor teeth.
Here is my web-site: good pub quiz names
If all players are wrong the murderer gets away and everyone loses.
At the end of the party all of the papers write down who they think was the prohibition agent.
Now, one of my co-workers was applying to the Secret Service and I knew that I was down
as a reference for her.
Here is my homepage: classmates com
Ηmm is anуone else having prοblems with the pісtures on thіѕ blog loading?
I'm trying to find out if its a problem on my end or if it's the blog.
Αny fеedbаck would be greatly appгecіated.
Alѕο vіsit my blog - legal amphetamines
You nailed this one!
The SBOK guide of http://www.scrumstudy.com will give you a clear understanding of how to run effective daily standup meetings. It also provides you detailed information on Agile Project Management methodologies suchas planning/review/retrospective meeting, and how to take advantages of related tools and so on.
why don't you introduce yourself as:
"Hi, I'm your host, Ryan Cooper. I'm a copy cat and copy whole paragraphs of books in order to make me look smart ;)"
Still relevant!
Thank you so much for this suggestion. This will help me a lot and others.
You can find a lot of online phone games here https://apktab.com, it is a really necessary address when you want to search for a certain game
Post a Comment