“The most expensive thing developers can do is write code that doesn’t produce something needed by anyone. The second most expensive thing developers can do is write code that can’t be tested right away.”
“Reactive is dead. Long live composing side effects.”

Recursion and corecursion have the following types

cata : (f a -> a) -> mu f -> a
ana  : (a -> f a) -> a -> nu f

We call types of the form `mu f` data and types of the form `nu f` codata. Data is guaranteed to be finite while codata is not.

Finely grained management of software developers is compelling to a business. Any organization craves control. We want to know what we are getting in return for those expensive developer salaries. We want to be able to accurately estimate the time taken to deliver a system in order to do an effective cost-benefit analysis and to give the business an accurate forecast of delivery. There’s also the hope that by building an accurate database of estimates verses actual effort, we can fine tune our estimation, and by analysis find efficiencies in the software development process.

The problem with this approach is that it fundamentally misunderstands the nature of software development.

“CoSQL and SQL are not in conflict, like good and evil. Instead they are two opposites that coexist in harmony and can transmute into each other like yin and yang.”
“If work is going to be self-directing, then everyone must be able to see what is going on, what needs to be done, what problems exist, and what progress is being made. – Information radiators make problems visible, telegraph progress, and are an enabling mechanism for self-directing work.”
— Lean Software Development, Mary & Tom Poppendieck.