Those two things should be aligned - that's how capitalism works. There are cases where we create the wrong incentives - e.g. the whole HFT industry exists because the sub-penny rule forbids market-makers from competing on price - but let's fix those. Fundamentally the best way to make money should be - and in my view largely is - by creating value for your clients.
> Fundamentally the best way to make money should be - and in my view largely is - by creating value for your clients.
Should be - yes. And to a great extent it was - that's why capitalism is undeniably responsible for propelling (most of) us into the age of prosperity we now enjoy. But I disagree creating (social, not just economic) value for clients is the best way to make money now. Profit and value motives are increasingly misaligned. It is to be expected - we've picked up all low-hanging fruits years ago. Now the money is being made on gaming the system, on exploiting the fact that profit is only a proxy for value.
Companies nowadays know that they can get away with almost anything because the market has very short memory. They also know they can sell any kind of bullshit with enough advertising, and that marketing expenses have much better ROI than actually delivering a working product. In contemporary marketplace, providing honest value to customers is not a competitive strategy - hence less and less of it happens (it's painfully visible in our industry - it's why most Internet startups are bullshit).
> In contemporary marketplace, providing honest value to customers is not a competitive strategy - hence less and less of it happens (it's painfully visible in our industry - it's why most Internet startups are bullshit).
Examples? People might not like what Facebook/Snapchat/Uber/Amazon/etc. are doing (and in some cases I would agree with the criticism - I certainly think startups whose business model involves getting people to break the law need to be held to account), but they're undeniably providing a lot of honest value to their users.
I wasn't thinking about Facebook, Snapchat, Amazon or even Uber - those are examples of companies that do provide a lot of honest value (not to mention I wouldn't call either of them a startup now). I meant all your random SaaS businesses that try to "change the world" by doing something utterly irrelevant that's only meant to give them enough growth to have a shot at getting acquihired by an established corporation.
You're going to have to give some concrete examples. All the "typical" SV startups I can think of were very much about creating value for the user. (If anything the lacuna in the business model tends to be around getting the user to pay for that value).
The good old days! After using edlin to write BASIC on my parents' 80286, we got a Pentium with a modem, and I used it to download Ralf Brown's Interrupt List and an assembler. Both downloads, I started before I went to bed and they were done by morning. (So as not to tie up the phone line during daytime.) Rbinter wasy my guide to causing a whole new world of exciting crashy behavior. Ultimately I wrote a paint program in assembly before I gave in and started using high level languages like C.
oh the Turbo Pascal and Turbo C days, where I had embedded assembly code mostly to have fun with 5.25 drives. Did fun experiments with copy protection back then; it was a thing; down to interrupt handling and more.
also a fun way to seize up your computer when you got it wrong, I mean it compiled it should run, right?
Or maybe they did start with the engineers. Maybe they already have some pretty cool technologies but they realised they don't know how to sell it all so they're looking for business people (yes, yes, very wishful thinking).
I've seen that before and I am so disappointed in the slow motion part. I wish I could see those bullets going one behind the other in a perfect 8 pattern.
I work with a lot of people who have never drunk the functional koolaid, professionally. They have to do an extra mental step with map or filter - "oh map, that's where the first argument is applied to each item in the second - I think - perhaps the second argument is applied to the first, right, Stack Exchange". More explicit is clearer, then. 'Clear' like beauty, is subjective. But productivity isn't. And whatever my personal feelings, the productivity of the team wins.
On the second point. I agree. Python's lambdas are a code-smell, for me. Which I don't say lightly, I'm a Scheme/Lisp guy deep down. But they fundamentally work against the aesthetics of the Python language, imho. A local function declaration is much less fragile.
But I would say that as code complexity increases, in my experience, comprehensions don't last long either. They've a narrow range of applicability before you get a big block of spaghetti code. Then it is much better to define a local function and, essentially, 'map' it (even if that 'map' is done as comprehension). Of course, YMMV.
100% agree that lambdas fight python's aesthetics. On the expression complexity front I can definitely say it's easy to slowly increase their complexity until they're no longer readable. As a side note, comprehensions in Python (2 at least, not sure about 3) leak scope a bit which can lead to some really funky bugs if you're in a loop and absentmindedly use a loop variable in a comprehension.
Yes, that was a pain. Particularly because it was only true of list comprehensions, not dict comprehensions or generators:
Python 2.7.10 ...
>>> a = 3
>>> [a for a in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a
9
>>> a = 3
>>> list(a for a in range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a
3
Guido called it Python's 'dirty little secret'. It is fixed in Py3 though.
In my experience, the more complicated processing ends up being composed up of smaller units (that are testable), and then map/filter remain the most clear way of representing the iteration. Using lambdas for non-trivial process is just as bad as throwing that same complicated processing into a list comp.