← Back to context

Comment by tinyspacewizard

3 months ago

Start-ups should strongly consider F#.

It's a force multiplier when you have a small team of strong developers.

>startups should consider niche language with extremely limited hiring pool.

sure, but only if you're doing something that actually demands it - and actual innovation - instead of usual 'lets repackage XYZ as SaaS and growthhack' strategy.

  • F# is less popular, but it’s a first class .Net language with full MS support and integration onto .Net (VM and ecosystem). C# has been tracking F# and aiming for language parity for years (ie all your modern C# devs should be learning the same language facilities). F# is multi-paradigm so C# devs can write idiomatic C# with minor forced changes. And as a .Net language you can always decompile it into C# and keep going from there.

    That’s a radically different proposition than, say, raw OCaml and not particularly niche. It also impacts hiring pools differently since competent functional C# devs are viable, but it tends to appeal to a certain calibre of dev.

    Moving faster with fewer errors and more talented candidate pool are relevant to repackaged SaaS startups too. Leaves more time for the other stuff and scales better.

    • don't get me wrong - i want F# features in C#! I like the ecosystem and both languages.

      I'm just pointing out that no matter how cool the language is if it doesn't serve business needs(hiring, onboarding ,ease of replacing staff, target market) it won't be picked.

      2 replies →

    • Last I knew, Rider was pretty much the only IDE available for a large codebase when you weren't on Windows. Much love for Ionide, but it was a serious struggle.

      Is this any better now?

      1 reply →

  • It's good for, and I am not being sarcastic or snarky, justifying high pay and gate-keeping. Developers should set up more barriers for entry - look at doctors and lawyers.

    • I think I agree with you. When I was part of a growing F# team a number of years ago, everyone we hired was an enthusiast who just loved coding in F# and wanted an opportunity to do it professionally. It turned out that this love, combined with the constraints of the language, led to a super-clean and legible code base. The quality was (in my estimation) outstanding, and I was sad to leave it.

      2 replies →

Seeing that any startup is more likely than not to fail, why would I work for a company that is using a niche technology that isn’t going to be in demand when I look for my n+1 job?

  • How important is being a language expert in x vs all your other skills as a Software Engineer? My opinion is that "higher level" skills (like system design/architecture, product thinking/planning etc.) are so much more important than language minutia (outside of specialized fields).

    If a business is turning away candidates because they "don't have n years of experience in x" that doesn't sound like a very dynamic/interesting place to work, it sounds like a code monkey job. AI is going to eat code monkey jobs.

    • Before you can demonstrate your skills on the job - you have to get the job.

      Most of the 2.6 million+ developers in the US don’t have “interesting jobs” nor do they care if their jobs are “interesting”. They work to exchange labor for money to support their addiction to food and shelter.

      https://www.hanselman.com/blog/dark-matter-developers-the-un...

      If you look at the requirements for most jobs they want you to have $x number of years of technology $y. When every job application gets 100s of resumes, employees can be picky.

      Besides, every technology has its foot guns, ecosystems, way of doing things and people who think they can just pattern match based on what they know are often the most dangerous.

      One example is that I’ve seen people who know relational databases, optimization techniques and normalization try to pattern match their understanding of OLTP databases when using OLAP databases like Redshift and Snowflake and it being a complete disaster.

      See also people who don’t understand how to do a single table design with DynamoDB.

      In my particular niche (cloud + app dev + customer facing consulting) , I knows AWS inside and out and have used more AWS services than you can imagine in the past 7 years in a production capacity [1] and I’m currently a staff level developer at a consulting company (full time), the only company that would (has) looked seriously at me to do consulting outside of working with AWS is ironically enough - Google.

      But they have the bandwidth to let me ramp up. When I have one open req, why would I hire someone who needs to ramp up on AWS when I have a dozen applicants with experience? Why would I put myself at a disadvantage?

      A company would be absolutely insane to choose me over someone with experience with Azure, or GCP as a staff consultant over the probably dozens of applicants they have with that particular skill if they were an Azure or GCP shop.

      When my current company hired me, they were short staffed and gave me a week to onboard and flew me out to a customer site to do support a large sales contract. They hired me because I could hit the ground running both technically and without “consulting training” like AWS had.

      [1] seven years of experience between 2 working at a startup, 3 working directly at AWS (Professional Services) and two working as staff consultant at a third party company.

F# seems really awesome. Used it briefly for an internal tool. Are you at a startup working with it?

  • I am working at a 2k fte company and we use F# for a lot, its very nice to work with, prefer Rider over Visual Studio though.

    • Similar for us in magnitude of sized company, maybe a bit bigger. Lots of services are F# (internal and main services), but we don't advertise it that much nor want to. Every time we consider switching (even to C#) the developers want to switch back even though C# is a fine language. Its not perfect, but its enjoyable to code in all the same. At this point the stack is battle tested.