[erlang-questions] Software Estimation and Progress Tracking

Jesper Louis Andersen jesper.louis.andersen@REDACTED
Thu Sep 19 11:59:00 CEST 2013


On Thu, Sep 19, 2013 at 6:44 AM, <kevin@REDACTED> wrote:

> I recently wrote a blog post on software estimation and progress tracking
> for functional languages. Unfortunately, the post was not terribly
> substantive and posed more questions than it answered. Since the Erlang
> community seems to have a lot of good practical experience on various sizes
> of commercial projects, I wondered if anyone here had experience with
> estimation and progress, particularly as it differs (or perhaps doesn't)
> when using Erlang as opposed to imperative languages.


The underlying problem of software estimation is this:

"Please estimate how many years it takes to make a fusion reactor from now,
solving all power problems on the earth in one fell swoop."

The thing is, you can't. People understand this to be research and hence
they have no qualms at throwing effort at the project in the hope it brings
you closer to the ultimate goal, albeit slowly.

Software is not "construction". It turns out to be "research". Regarding it
as "construction" by imposing estimates and progress tracking is usually
futile due to this dichotomy and the fact people missed it was "research".

So, will the research happen faster in Erlang than in other languages? This
is hard to answer without being concrete. My loose experience is that
languages working at higher level in general provides shorter paths to
enlightenment[0]. Since functional languages are often working at a higher
level there is a considerable overlap. But don't underestimate something
like Python, Ruby or Javascript which also works at the same high level. It
is not always the case that you will be faster due to the trait of being
functional.

Compared to "traditional" languages like C or C++, the lack of proper
garbage collection is the key thing which make you research faster.
Compared to Java, it is the succinctness of Erlang. Compared to many other
systems, like Python or Ruby, it is the toolset in Erlang to describe
concurrency and the ability to utilize the machine via parallelism.
Compared to Golang, it is probably the process isolation and the ability to
run large complex systems with hundreds of applications in the same memory
space without panics[1].

Bringing it back to estimation, I fear that we will just adapt and expect
more features to delivered in shorter time, so our estimation of progress
and effort will still be off, even if we get things done faster. For some
reason, there is a bias toward "fast delivery" with no regard toward
"quality of product". This is a depressing work environment, though: every
deliverable will be too late, always. And this leads to a psychological
phobia of estimation :)

[0] Since software is research, the goal is to seek enlightenment and
understand something deeper than before.
[1] Though this is a hunch, not experience.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20130919/ac31bc99/attachment.htm>


More information about the erlang-questions mailing list