site banner

Small-Scale Question Sunday for March 31, 2024

Do you have a dumb question that you're kind of embarrassed to ask in the main thread? Is there something you're just not sure about?

This is your opportunity to ask questions. No question too simple or too silly.

Culture war topics are accepted, and proposals for a better intro post are appreciated.

1
Jump in the discussion.

No email address required.

Does it matter what programming language a company uses as long as the choice is reasonable?

For example, if a startup making a CRUD app uses JS/NodeJS or TypeScript/NodeJS or Java or Golang? Does it matter if the company uses Vue, React, Svelte or just plain HTML/JS? Obviously it does matter if there are languages specifically used in an industry or if there are special requirements. Python is a terrible choice for an operating system. But if the goal is to make an internal tool for a company, a booking system for a hotel chain, or a billing system does it matter?

Do tech choices impact business success, or are we entertaining ourselves by playing with the next cool tool?

Yes.

At the trivial level, code with strong or moderate typing are far less likely to introduce a pretty wide variety of fairly annoying bugs. You can theoretically hire coders who aren't going to make that sort of mistake, but then you have to hire coders who don't make that class of mistake, and they have to put time and focus into it. Compile time can be the difference between iterating in seconds or minutes (or in one miserable case, tens of minutes). If you need portability (whether Windows to Linux, or x86 to ARM to Mac Silicon), some languages are much more frustrating than others.

At the less obvious, the availability of good and strong debuggers matters less for desktop (where the span is more Firefox Inspector Mode to Visual Studio) than embedded or microcontroller worlds (where the low end might be 'you get nothing, good day sir!'), but for applications requiring multithreading or complex performance or memory management, the higher end still matters. There's a tradeoff between succinctness and clarity of code, as evidenced by Java vs Kotlin vs Scala.

While you might consider them extremes of the "special requirements", some languages handle certain matters and frameworks better than others. MVVM makes a lot more sense in Java or C# than JavaScript, and may make sense for a common project type. Many things interfacing with hardware or certain databases may only have library support for a handful of languages, especially in industrial automation world -- at best you're going to end up writing a shim, at worst you may just be stuck. Some languages have really clever tricks justifying their use for certain specialty purposes (Matlab and matrix arithmetic) but are absolutely obnoxious otherwise. ((Some, like VC++, introduce weird user-environment-specific errors that can drastically increase your support costs and reduce user-friendliness, thank you msvr###.dll errors.)) For many internal-use tools, having something that you can build-and-leave-for-a-decade can push you away from languages with a history of breaking changes.

For smaller businesses, you go to war with the army you have, and I say that as someone who's written more than a fair share of internal-use C#, Java, and Python code.

I don't think they're the only part of business success: the road is paved with the skulls of LLCs that had great software but struggled on the business side, or just bad luck. And there's definitely a coding fandom that endlessly chases the Next Best Thing, either to (charitably) keep themselves sharp or (less charitably) keep their resume up to date, in preference to mastering one language well, or building lasting projects, or just getting tasks done. You can definitely end up bike-shedding. But it's a mistake to not consider it seriously and in depth.

Tech choices mostly impact the business on how easy it is to hire for it and how much the tech has a tendency to create messes. There are bunch of over engineered Java projects and PHP hacks out there that just messes with the businesses. Other than that, it doesn't really matter if you avoid that trap with sane choices. Mostly wanting to play with cool tech is an exercise in masturbation that started out with scratching an itch that last project caused. e.g. "The web UI was a kludge of JQuery, lets do it in a framework like React."

So mostly we are entertaining ourselves with the next cool tool unless it is something that is awful slow to get things done in for one reason or the other.

Yes. Not only the technical aspect but people aspect too. You will have a much harder time hiring Ruby on Rails devs in 2024 as opposed to say... NodeJS devs. For simple crud apps, that isn't a complex tech product, it doesn't really matter than much technically. I (not even a web dev) can make you a simple crud app with flask or express and postgress and deploy it in vercel in a week.

I think it matters in that different communities have different cultures. And that can nthn order affect the success of the product.

The people aspect is huge. This is why I want to work at Jane Street. Also because OCaml is amazing and HFT is challenging and because of the pay, but the people this attracts is why it's I think the only place for which I'd be willing to deal with snow and commuting instead of remote work from paradise.

Rust? Good luck getting business logic done over the din of nerds playing with a type system. Java? You're gonna get a culture of boring adults. Javascript? Scrappy startup types who may not write tests, they ran it like twice.