5 ms·
our team (C#) did an extended proof of concept in F# about ten years ago. we found that it was easier to hero-code in F# but harder to work as a team over time
by babarganesh 6y ago
our team (C#) did an extended proof of concept in F# about ten years ago. we found that it was easier to hero-code in F# but harder to work as a team over time in F#. we ended up embracing a lot of the functional paradigm in C#, which seems like a very good compromise.
- KurtMueller 6y ago> we found that it was easier to hero-code in F# What does hero-code mean?
- najarvg 6y agoSpeculating, but based on context, probably "Cowboy coding" with heroic intent and success..
- karmakaze 6y ago> easier to hero-code in F# but harder to work as a team Allowing hero-coding in any language makes it harder to work as a team, so using language that leverages hero output only makes it worse. I wouldn't say that the power of the language is the thing that should be blamed. I can certainly see that using constructs that the team as a whole isn't ready to adopt being a problem that also comes up in adoption of Scala.
- cogman10 6y agoHere's my stab at it (though I could be wrong). It's like perl, easy for experts to write a lot of it fast, but hard for anyone else to grok what's going on. As an anecdote, I see it come up with clojure a lot. Some of the clojure devs in my company can spin up a lot of interesting applications and fast. However, trying to read any of there code can be nearly impossible. Why? Usually because of a generous helping of their own metaprogramming constructs that they've built up over time. I've watched them program and it's both interesting and really hard to follow. The big problem we've ran into is these clojure projects have been really hard for teams to get into. As a result, the worst thing has happened, many of them are being scrapped and rewritten in java because they are too hard to maintain otherwise.
- Smaug123 6y ago"Hero-coding" is the kind of thing where you alone go into a fugue state for a week, and emerge on Sunday night, covered in blood and with your hair standing on end, holding a crystal redolent with eldritch power.
- karmakaze 6y agoThis is a good and understandable observation. The next question is whether this is from lack of common constructs/conventions by those new to F# or if it would always pervade as seems to be the case with Lisps. e.g. Clojure was specifically made to cover more in its library and syntax to promote standard styles. Rather than thinking F# didn't/doesn't work, what were the reasons and what could be changed so it did work well? Maybe some workflow changes like more design discussions before putting up a PR for review, or pair programming with rotating pairs so that conventions emerge. Also over time the codebase itself if it has benefited from convergence would show repeating patterns of adopted conventions. I see the language itself as unapproachable only by reputation/lineage. In practice it can be on about the level of Elixir which is gaining traction and success stories.
- fulafel 6y agoCould it be that you are just observing productivity? It seems plausible that anything which slows things down helps people work on a thing as a team because it's easier to keep up and there is more time and energy available to organise teamwork.