Live data from Hacker News

How to Sell Excellence

docs.google.com

61–70 of 124 posts

Re: How to Sell Excellence

#61
post #14
post #13

Earlier quoted context omitted.

> But where are all the successful large scale projects built with Haskell (or Clojure or whatever)? How about Erlang. Let's try it, just from the top of my head: * AXD 301 Switch -- Classic. Powers and control phone switch networks of whole countries. Claims 99.9999999% reliability. * Basho Riak -- popular NoSQL database, highly scalable nodes are peers * RabbitMQ -- popular message queue used by enterprises * Whats…

Throw IRCCloud into that list, my go-to IRC client that I've been using for nearly two years.

You don't like irssi?

Re: How to Sell Excellence

#62

Reading the "How to Sell to Business" section convinced me as an engineer that I should not focus on Haskell. If Haskell programmers are a better deal for businesses because better programmers can be hired for less money, I should logically choose to be a Java programmer for the same reason.

It doesn't necessarily work that way. Java programmers at the high end can push their compensation into the 250k+ range by starting bidding wars. It's hard to do that in a small community. In Java, there are so many jobs that it's really easy for a good engineer to set up a bidding war.

You have to be somewhat of a game-player to pull off the Java-engineer-bidding-war game. You have to be the sort of person who will work on the most horrible projects just to move up the salary scale. You also have to live in the Bay Area or New York, and use competing offers to drive up your pay every 2 years or so.

At some point, though, these $300-500k Java engineers at tech giants (who, by the way, are mostly paid in stock with vesting, so if you're bearish on the markets, their comp is more modest than it appears) are going to dry out and have to go into big-company executive roles. Playing that game rots your brain, because you're spending more time looking like a great engineer than learning new things.

Some people who are just as smart as me have better boredom-proofing and can work on enterprise Java. Good for them. I can't do it. I'd leave the industry before I'd maintain someone else's Java mudball.

Re: How to Sell Excellence

#63

Michael, big fan of your work here. Can you talk a bit more about how to avoid subordinating or dominating?

My main point is to recognize that:

    (a) there are good business people out there,
    (b) the fact that they trust idiots on tech is our fault as much as theirs 
        (we get too arrogant or too submissive and fail to convince them),
    (c) we need to recognize that we and they have orthogonal skill sets
        and aren't *prima facie* smarter,
    (d) and this requires understanding certain cultural differences.
It's a long road, though. We're not a socially skilled tribe, for one. Secondly, there are a lot of terrible managers and business people in tech (more than in other industries) due to the Damaso Effect.

Re: How to Sell Excellence

#64

Earlier quoted context omitted.

I'm using GHCJS and Reflex. Reflex is a recently released FRP library that makes a huge difference in one's ability to abstract GUI code. I personally feel that this combination of GHCJS + Reflex is the first thing I've used that makes web front end programming tolerable. A week ago there was a presentation about it at the NY Haskell Meetup. Look for videos of it to be posted early next week.

Ah, that's new! Is there any documentation on Reflex? A quick google search isn't working.

It's new, so not right now. But docs are coming. The NYHUG presentation will probably be the first thing along those lines. My company just rewrote a significant front-end app in it, so we clearly are invested in its future. In the meantime there's a #reflex-frp IRC channel on Freenode that you could use to talk to some of the people currently working with it.

Re: How to Sell Excellence

#65
post #4

At the risk of sounding inflammatory... I would be willing to believe that purely functional languages are the "one true way" if there were even the slightest bit of empirical evidence to support it. But where are all the successful large scale projects built with Haskell (or Clojure or whatever)? The biggest FP project I was aware of was Twitter using Scala and they ended up completely backing away from it. Yikes. T…

But where are all the successful large scale projects built with Haskell (or Clojure or whatever)?

Standard Chartered has a huge amount of infrastructure in Haskell. Clojure's too young to have the types of stories you're looking for, but it's had plenty of moderate-sized successes (as has Haskell).

The biggest FP project I was aware of was Twitter using Scala and they ended up completely backing away from it. Yikes.

Scala is different from Haskell. Scala has a lot of features that don't play well together, it has stability issues, and it has inherited some of the Java culture which means that there's a lot of terrible Scala code out there.

I've been working with Spark over the past month and I'm shocked by how bad the JVM/Hadoop legacy is. Spark itself is a neat idea. Getting it to work on an actual production cluster is a huge PITA. I'm tempted to just use Cloud Haskell.

I know people who've moved away from Scala (either to Java or Clojure or Haskell). No one who's moved to Haskell has ever regretted it. I know of about 15 companies that use it (not all on million-line projects) and they're all happy with it. I'm only aware of one case, in the past 7 years, where a company moved away from using Haskell: they moved to F# because they picked Microsoft up as a client and MSFT wanted to be able to say that $COMPANY_X was using their products.

The only other popular site that springs to mind is Hacker News, and frankly, it sucks. It's practically the Hello World of discussion forums.

It's written in Arc, which lost to Clojure. Also, HN is as good as it needs to be. It's successful on its own terms. It doesn't need to be a wonder of software engineering.

Re: How to Sell Excellence

#66
post #57

Earlier quoted context omitted.

I would use strongly typed functional programming languages for everything if I could. However, to be productive, you're usually constrained by what the dominant language is for your domain. For example, Android apps are usually written in Java and web apps are usually written in JavaScript. Each has a huge ecosystem of tools and libraries based around these languages. I'm sure there's some way I could use Haskell or…

> However, to be productive, you're usually constrained by what the dominant language is for your domain. For the code running on the server side, you are free to use whatever you want. Are you using strongly typed FP there?

It depends on if your server side code is heavily reliant on third party libraries written in non-functional languages and which languages your team are experienced with.

Re: How to Sell Excellence

#67
post #60

I loved Haskell, seriously! The year was 1997 and my uni professor was contributing to Hugs (do you remember it?). But, while I was working my way through Monads and stuff other people were running circles around me in C or C++. The basics were "simple" (even for basic C++) and they concentrated in getting things done. Years later I launched my first start-up idea on Common Lisp. In both situation I learnt two hard t…

So why are you using Python now and not C/C++?

Balance, c/c++ (and even to some extend Java), are not appropriated for what I normally build: web systems. The balance that Python offers me, where performance is achieved by other means than the programming language (systems), with an access to libraries (data analytics, web frameworks, devops...) that cannot be easily matched by C/C++/Java. And about Haskell... well, I suppose it offers amazing performance and technical advantages over other languages (if I remember...), but always as far as you can afford little geniuses working in specific problems in a megacorp where all the other things (from having access to cash, to sending them to Hawaii with all the family every year, to SRE, to Devops, to... well everything) has been covered and what you really need is that 0.00001% of advantage that can keep you in the competition with other megacorps (Google vs Facebook?).

Sorry for my "you geniuses are important but not that much" approach, but I'm in the start-up business, not in a PhD ridden competition to check who can move more chess movements in their head while listening to trash metal :)

If you want to know my thinking framework for this kind of stuff, I apply Dawkins/Evolutionary Biology technique of counting how many times certain traits have evolved independently to measure its usefulness. Take any Haskell project in Google and measure it vs their total code vs the revenue that it brings to the table. Same for Facebook. And then we can talk.

And yes, I realise that Facebook is mostly PHP and Google is mostly C++/Java. But I remember, the first engine in Google was implemented (at least in part) in Python ;) Later they had the cash/resources to afford rewrites in C++/Java.

Re: How to Sell Excellence

#68

I disagree with the presentation a lot. * There's no widely used successful system written in Haskell. Yes, there's GHC, Agda, Idris and other research tools but they are marginal. * It's untrue that mutable state is the main reason of problems with code. You can manage state in Java and C# in any other language. * Haskell programmers are usually smarter than Java programmers, but they often don't want to work on tas…

I've been using Haskell at work for the past two years, but despite the fact that it's been a great investment, I don't really like articles like this.

I find evangelism gross, and in particular, developer technology evangelism especially distasteful.

That said, I take issue with the objectiveness of your points. For the first one, there are indeed quite a few successful systems written in Haskell (I suppose I might be quibbling with your definition of "successful"). Facebook is using Haskell for a few things internally (including their rule engine for fraud/spam processing), Standard Charter is using Haskell. In fact, here's a whole site of people using Haskell in industry (https://wiki.haskell.org/Haskell_in_industry)

I do think that it's only recently that you're starting to see projects/products built with Haskell that aren't libraries. Just this week there's been a bunch of web frameworks released (Airship and Spock, with Silk releasing a REST API framework a couple of months ago).

I'd like to see more projects that people can use that don't have to care about the fact that the software is written in Haskell (databases and data analytics systems are a particular area I'd like to see become less Java-focused).

Your second point on mutable state seems counter to a lot of the current conventional wisdom of the past five years, which is that immutability is vastly preferred to mutability. This is becoming true in Javascript (with React and Underscore), has always been true in Clojure, and is becoming more and more important in any system that deals with concurrency.

You can certainly disagree that mutable state is the root of all evil, or even the most important problem with modern development; but I don't think it's accurate to paint Haskell as being the weirdo fringe language that's advocating immutability is the way to go. They have a lot of company on that front, they've just been making the point for a lot longer than most.

Your third point seems like you just completely made it up. Do you have evidence that Haskell programmers are "usually smarter than Java programmers"?, or that they are somehow inordinately picky about what projects they work on? Do you know many professional developers who work in Haskell?

It's true that the population of Java programmers is probably an order of magnitude larger than Haskell programmers (the number of universities who still teach Java for their introductory CS classes would probably guarantee that's the case), but contrary to what message board lore would have you believe, Haskell isn't some magical "smart person" language.

I'm an idiot and I haven't had any trouble using it full-time. I don't use it for crazy math stuff, or advanced computer-science research. I use it to process events, interact with databases, and display CRUD operations (like probably 80% of most enterprise-y software development).

Haskell's design flaws, while certainly existent, don't seem appreciably above or below any other language (I'm trying not to be smug, I actually think Haskell is much better designed than most any other language). I can happily attest that the record field scoping has not actually been an issue (although maybe I've just been lucky, and there's actually a bunch of other idioms for dealing with the scoping issue like lenses).

Re: How to Sell Excellence

#69
post #61
post #14

Earlier quoted context omitted.

Throw IRCCloud into that list, my go-to IRC client that I've been using for nearly two years.

You don't like irssi?

There is what I like to call The IRC Problem, which is that it takes a bit of work to really make IRC into an awesome, persistent chat environment.

First, you need to be persistently connected so that you don't miss messages when you're not actually at your computer.

Second, you need a decent interface to use when you are actively reading or chatting.

Third, it would be great to have the same across all devices (phone, tablet, laptop/desktop), with everything syncing correctly. If you read some scrollback on your phone, you want your laptop to also know that you already read those messages, and vice versa.

It's certainly possible to achieve all this with irssi and a combination of other techniques. However, you can also use something like IRCCloud and get every problem solved at a very high level of competence immediately, plus a bunch of other stuff (like push notifications and embedded social media, images, videos, tweets, pastebins, etc.).

It's up to you. For me, I really just want everything to work and I don't care at all about doing it myself. It's a means to an end. The $5/month fee is not important to me given the product quality. I sort of liken it to Dropbox -- it's not about doing something that couldn't be done before, it's about just making it streamlined for those who don't care to do it themselves.

Re: How to Sell Excellence

#70

Earlier quoted context omitted.

> the number of extensions which aren't standardized but widely used. Actually, I think this is something that Haskell did right. It allows experimentation with new language ideas in a way that allows them to be tested safely with existing codebases. Edward Kmett recently had this to say about it: > I appreciate Haskell's willingness to take a very very long view, and explore the design options, before committing to…

Given that not even basic functional programming has become popular yet, I can't see dependent types being widely adopted for decades. The learning curve for using dependent types is incredibly steep and capturing interesting properties in types inevitably requires you to understand and write tricky maths proofs.

>Given that not even basic functional programming has become popular yet.

It's already popular. All the mainstream programming languages already support it.

Post reply on HN