<p>I enjoy programming, usually.  Tedious stuff is easy to get done as quickly and correctly as possible so I can get through it and not have to see it again.</p>

<p>But a lot of my coding is <em>fun</em> and when I get in the 'zone' I just really enjoy myself.</p>

<p>Which is where I make the mistake of spending too much time, perhaps adding features, perhaps writing it in a cool or elegant manner, or just doing neat prototypes.</p>

<ul>
<li>How do you recognize this is happening before it exceeds your time frame?</li>
<li>What do you do before starting a potentially fun piece of code, or during, to get back on track?</li>
<li>When is it ok to let yourself go "hog wild" and just enjoy it without worrying about consequences?</li>
</ul>

<p>-Adam</p>

[{'answer_id': 60258, 'author': 'simon', 'author_id': 6040, 'author_profile': 'https://Stackoverflow.com/users/6040', 'pm_score': 4, 'selected': True, 'text': '<p>Keep a detailed prioritized feature list/bug list.  review it often then balance the fun work with bugs/features that need to get done.</p>\n'}, {'answer_id': 60262, 'author': 'Esteban Araya', 'author_id': 781, 'author_profile': 'https://Stackoverflow.com/users/781', 'pm_score': 2, 'selected': False, 'text': "<p>With a backlog. That way you'll always have in mind what <em>needs</em> to be done before you can start doing what you <em>want</em> to do.</p>\n"}, {'answer_id': 60266, 'author': 'SkunkSpinner', 'author_id': 5592, 'author_profile': 'https://Stackoverflow.com/users/5592', 'pm_score': 2, 'selected': False, 'text': "<p>Give yourself a hard deadline--even for your own projects. Otherwise, you'll just keep tweaking and adding features ad infinitum.</p>\n"}, {'answer_id': 60309, 'author': 'Gulzar Nazim', 'author_id': 4337, 'author_profile': 'https://Stackoverflow.com/users/4337', 'pm_score': 2, 'selected': False, 'text': '<p>Always have a working release (snapshot) ready. Treat it like the way SQL server implement snapshot isolation. :) </p>\n\n<p>Continue adding new cool stuffs to a separate copy of the project. Once it is stable, overwrite your release folder and that is your new snapshot. Whenever somebody ask for a demo or release, that way you can always switch to the stable application and will have something to show anytime.</p>\n'}, {'answer_id': 60370, 'author': 'moobaa', 'author_id': 3569, 'author_profile': 'https://Stackoverflow.com/users/3569', 'pm_score': 1, 'selected': False, 'text': '<p>Justify any "fun" features you insert by regarding them as marketable eye-candy.</p>\n\n<p>Unless, of course, they\'re not visible  ;)</p>\n'}]
['https://Stackoverflow.com/questions/60256', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/2915/']