29 comments

[ 2.8 ms ] story [ 63.8 ms ] thread
This thought format is a great way for developers to find good business solutions. Nice share.
I've seen this idea go around a bunch, and I think it makes sense for how a company thinks about product internally.

But it basically makes 0 sense for customers. "Brand" is the exact opposite of a pure function - there's side effects all over the place. Any bad thing that Facebook or Twitter do greatly overshadows the good. Same goes for any other company or flagship product.

This is challenging, because product branding is often championed internally at any company. So thinking about product as "functions" will likely fall apart quickly outside of any engineering org.

You can differentiate between symbolic and real value, ideally your brand has both.

Real value is delivering on the progress or outcome the brand is positioned towards, symbolic value is more cultural (aesthetics, familiarity etc.), reinforcing desired identities.

Products can be functions because they can be aligned with that real and/or symbolic value, enabling it.

This would be a more compelling article if it was talking about a product which doesn't feel like it's stuck in 2010. Basecamp?!?
How would brutalist design make the point any less valid?
What makes you think it's stuck in 2010?
Yeah, how dare they not use the SPA framework du jour, and kill all kind of functionality that customers actually like about their product in favor of BS trends...
everything is a function if you contrive hard enough.
Am... am I a function? Oh my god
You know, if you read the article about Systems and Leverage Points[1] that's on the front page right now, it's not hard to see the entire world as a function made up of other functions. And one of those other functions is you.

The real question is, are you a serverless function? If someone likes you and wants more of you, can they infinitely scale you up on-demand, tuespetre? And if so, what will their AWS bill look like next month?

[1] http://donellameadows.org/archives/leverage-points-places-to...

Humans rarely produce identical output from identical input. You're probably more of a nondeterministic heuristic.
> Humans rarely produce identical output from identical input.

Sure they do, the problem is that humans take the state of the universe as input.

Right. Also everything is a file, an object, etc.
"A fat guy, a watermelon, and a stack of magazines? That's a function!"
The problem with mathematical analogies is that they tempt you to apply real mathematical definitions and theorems to the analogy and draw a conclusion. This is invalid because the analogy is not actually a statement within the original axiomatic system.
At first glance, this reminds me of the quote "comparisons are odious". It works though, because it uses situations as input and output. Pretty much anything can be modeled as a function if you crystalize the input and the output.
> Pretty much anything can be modeled as a function if you crystalize the input and the output.

Or stated differently, anything can be modeled as a function if you model it as a function.

Or still differently, any action is an action.

Yes, I think "action" is a compelling universal term, used by Redux.
TLDR: Business problems are function inputs, a function is a metaphor for software, resulting changes to the business are function outputs.

I think it is a very poor metaphor (a) it doesn't map well, (b) the metaphor isn't obvious (reading title I a didn't guess what what parameters or results were), (c) we understand what software is so the metaphor doesn't help us understand software.

Took until middle of second paragraph until I realized it's not some variety of CS or mathematical products but the products supplied by a business. Such confuse.
The mathematical analogy is fragile, but the takeaway is obvious:

Customer has problem X and they suggest Y as the solution. Good product people will solve for Z, what the customer _needs_, while bad product people will provide Y, which is harmful to both the people using the product and the people building the product.

Similarly someone described linear algebra as composition of vector space functions. It was a shocking revelation.
I think that's a solid concept, even though it's a more nerdy restatement of a marketing truth that's ages old. Products are functions because people buy what things do for them, not what things are.

In other words, people buy benefits, not features.

That's marketing in one lesson for you.

Of course, the next step is to realize that (at least sometimes) it is not about what the product objectively does for them that drives the purchasing decision, but rather how the product influences their own self-perception.
(comment deleted)
Then OSes/DBs/Platforms/Frameworks feel like second order functions
(comment deleted)