3 ms·
I sympathize with the romantic view of FP, and I'd say that the choice of language defines culture in companies I've worked in. I've hacked around with Haskell/
by motohagiography 7y ago
I sympathize with the romantic view of FP, and I'd say that the choice of language defines culture in companies I've worked in. I've hacked around with Haskell/snap and worked (as non developer) in a clojure shop and my impression is that functional languages are an expression of a culture that values a certain quality of thinking that is just not commodity today.
I suspect you can hold off imitators in an early stage company for a few extra months by giving the impression that there is a high cost/high risk aspect to your product, and it creates a foundation of quality reasoning about features.
However, I have also witnessed a culture clash a few times, where to build a business with investors, you need to scale up with commodity developer talent, and you lose the core team when you try to integrate them. Anecdotally, functional languages also tend to attract personalities who can be difficult to focus on products, which are to them just side effects of discovery. A company that depends on "geniuses," to run it is probably not a very sound business.
If I wanted to build a company positioned for linear growth over a 20 year horizon that was services heavy, in a specific niche like utilities or security, I would choose a functional language for the platform. If I wanted to position a company for exponential growth or integration/acquisition into another product family, I'd pick something with less friction around its cultural edges.
- blub 7y agoAt the end of the day, what exceptional products have developers with this certain quality of thinking released? It's more likely that this aura of cultured mystery is a self-defense against the hard truth that's been recognized by businesses for decades: programming language choice doesn't matter that much towards success OR implementation quality, with some exceptions. When someone wraps so much of their self-worth in a programming concept, it would be painful indeed if it turned out that said concept is remarkable only in their bubble.
- UK-AL 7y agoI've definitely been companies where a bad code base basically destroyed the product because we couldn't move fast enough compared to the competition. It usually happens on established products that have been around for a few years.
- blub 7y agoAnd did this happen because you chose a specific language? There are really few languages that can sink a project and that too only happens they're used in a domain that's uncharacteristic for them. E.g: writing a web app in classic VB. Windows GUI app in VB would be fine.
- UK-AL 7y agoI think languages can definitely make things worse. Dynamic languages are harder to refactor using automated refactor tools. In a code base with no tests, I'd rather start with something had a powerful type system. But you are right that you make a mess in any language.
- motohagiography 7y agoThis relationship to self worth is a big piece of it. Valuing competence in a company is a cultural value. It's not professional, it's basically a craft/academic orientation or aspirationally so. The products I have seen them release were exceptional in their novelty. There are upsides and downsides to the mysteriousness piece. The upside is rapid decisions based on group deference to demonstrable expertise and competence. The downside is a bottleneck where you can't delegate competence, so everything needs the guru blessing. Ultimately, this figure only gets a veto, and you get the global veto anti-pattern in the org. It's a basis for alignment that doesn't scale as well as dynamic collaboration. To me, the quality of thinking part has an effect on the culture is expressed as the cost/benefit and scaling aspects of fast hierarchies vs. the optionality of dynamic collaboration. (viewed negatively as command/control vs. political solutions.)