At work, I essentially function as an independent consultant. For management and customers, I need to estimate the amount of time it will take to develop software as part of my computational science research. However, my time estimates are usually off. I know that there are methods to estimate the time it takes to develop software. Will these methods give me accurate estimates for research tasks? Are they even useful in a research setting? If they aren't, is there a better method than "keep records and revise estimates accordingly"?
In most research settings, you do not have access to professional programmers with relatively uniform skill level whose time you can dictate. Rather, you have a mix of experienced programmers (maybe postdocs, maybe faculty) and grad students with little programming experience and no experience at all regarding large-scale projects. Furthermore, all of these actors have numerous other duties (teaching, TAing, reviewing papers, sitting on committees) that vary greatly throughout time. As a consequence, I think it's going to be very difficult to have accurate estimates. Certainly, my experience is that "it's going to take longer than I thought".