scottefein / the-happiness-manifesto

The Happiness Manifesto-What makes a happy developer?
http://blog.sefindustries.com/the-happiness-manifesto/
171 stars 20 forks source link

#perfmatters #12

Open nathany opened 9 years ago

nathany commented 9 years ago

I'm glad @tmorton made the change in #7 from:

My language must be optimized for me, not the computer

to

We value languages that are optimized for developers over the computer

It's an improvement.

Performance is a feature. It's something customers care about. #10

It's also something developers care about. And it costs time, loads of time, to get that performance back:

"Time to optimize, right? Starting with a 90k line codebase of Python and C, fast forward to now and we’ve spent months finding hotspots, optimizing, configuring, and writing C modules, rinse, lather, and repeat" - Go Space Monkey

At some point a developer may even be willing to give up a few niceties of the language in order to have the tools (see @alex talk about that) to write efficient software, both in terms of memory and CPU.

Now, we're not all looking to write in assembly, so that value still stands. Plus it can be taken other ways as well (type inference is a good thing). But I do think we need to add something about efficiency. It may be the biggest reason for the dispora that @ernie spoke of.

scottefein commented 9 years ago

img_20140909_082838

Go, Scala, Clojure-they offer efficiency without the cost of being significantly harder to work with. Their big optimization for developers is not only the language but their performance. So I agree efficiency is important, I just think we already cover it here. So I'm not 100% positive this is needed.

I could use Go to write some really slow apps, and I can write Ruby to write some really fast apps, so I'm not sure I want to tie efficiency to the language (more than it's already implied).

Ideas for how you'd consider framing efficiency?

nathany commented 9 years ago

I'm not sure how to frame it.

It's about having good tools to write efficient code.

Perhaps that is covered in other ways.

We already want maintainable code, and tricks like caching can be a burden for the developer to debug. Much easier if the base runtime starts out reasonably fast.

We could bring up utilizing our hardware well, not being wasteful of cycles and power. Valuable, but does that bring happiness?