Why changing APIs might become a criminal offense.
After more than 25 years as a software engineer, I still find
myself underestimating the time it will take to complete a
particular programming task. Sometimes, the resulting schedule slip
is caused by my own shortcomings: as I dig into a problem, I simply
discover that it is a lot harder than I initially thought, so the
problem takes longer to solvesuch is life as a programmer. Just as
often I know exactly what I want to achieve and how to achieve it,
but it still takes far longer than anticipated. When that happens,
it is usually because I am struggling with an API that seems to do
its level best to throw rocks in my path and make my life
difficult. What I find telling is that, after 25 years of progress
in software engineering, this still happens. Worse, recent APIs
implemented in modern programming languages make the same mistakes
as their two-decade-old counterparts written in C. There seems to
be something elusive about API design that, despite many years of
progress, we have yet to master.