Live data from Hacker News

Ask HN: Should orgs limit the number of languages/frameworks?

news.ycombinator.com

1–10 of 28 posts

Ask HN: Should orgs limit the number of languages/frameworks?

#1
My teammates have been working on a collection of documents [0] about developer platforms and we've been talking about limits organizations can impose on acceptable languages and frameworks. Curious what HN thinks, how do you handle cases when there's an unused language that might be better suited to a business use-case?

0. https://developer.app/expectations/code-neutral/

Re: Ask HN: Should orgs limit the number of languages/frameworks?

#2
Start by quantifying what the cost of acquisition is for more developers with said specialization and if that business use case is making you money.

As an engineering leader I have witnessed that oftentimes folks confuse "neat", "cool", and actual business use cases/needs.

Re: Ask HN: Should orgs limit the number of languages/frameworks?

#4
At a small scale, pick the smallest set of boring technologies possible and be strict about using them. Introducing a new technology should only be done if it gives a sizable advantage that can't be had with your existing set. https://boringtechnology.club/

As you get larger (> 50 engineers in my opinion) you may need to switch things up a bit. I really like the "golden path" methodology described by Charity Majors: https://charity.wtf/2018/12/02/software-sprawl-the-golden-pa...

Short version: pick a set of tools that are fully supported by the organization: projects that use them get backups and deployment and testing and ops and development environments all provided by default.

Teams can stray from that golden path, but they'll need to solve that operational stuff themselves.

UPDATE: I just read https://developer.app/expectations/code-neutral/ and I mostly disagree with it: allowing developers to mix and match any langauges and frameworks they feel like is a huge competitive disadvantage and will greatly damage your ability to maintain software and build features productively over time.

The exception is editors and personal development tools - developers should be able to use whatever works best for them there because it has no impact on other developers - my work in unaffected by your decision to use Emacs instead of VS Code.

But don't make your Python programmers on a tiny team have to fix bugs in a Ruby app because some other developer liked Ruby better!

Re: Ask HN: Should orgs limit the number of languages/frameworks?

#6

Start by quantifying what the cost of acquisition is for more developers with said specialization and if that business use case is making you money. As an engineering leader I have witnessed that oftentimes folks confuse "neat", "cool", and actual business use cases/needs.

I guess what I'm wondering is more about the opposite of the "cool/neat" where orgs either prohibit development in non-standard langs (and that was good/bad) or allow development in non-standard langs (and that was good/bad).

What criteria is used to determine when it's ok to deviate from in-house langs? What justification is used to prevent deviation at all costs?

Re: Ask HN: Should orgs limit the number of languages/frameworks?

#7
post #6

Start by quantifying what the cost of acquisition is for more developers with said specialization and if that business use case is making you money. As an engineering leader I have witnessed that oftentimes folks confuse "neat", "cool", and actual business use cases/needs.

I guess what I'm wondering is more about the opposite of the "cool/neat" where orgs either prohibit development in non-standard langs (and that was good/bad) or allow development in non-standard langs (and that was good/bad). What criteria is used to determine when it's ok to deviate from in-house langs? What justification is used to prevent deviation at all costs?

Introducing a new technology - a new language, or new database (like MongoDB), or a new framework is a VERY expensive proposition.

You need to solve all of the following:

- Deployment. How will you run the new thing in production (and QA and staging)

- Upgrades. How will you upgrade to new versions in the future? Who will be responsible for that?

- For databases, backups. How will you backup data? How will you make those backups available for things like data warehouse reporting or replication to teat environments?

- Monitoring. How will you monitor systems built with the new technology, handle alerts etc? How will logging work?

- Profiling and debugging: what tools will you use for this, particularly in production?

- Testing: how will you run the new tech in your CI environments, and your local development environments?

- Development environments: how will you ensure all of your engineers can productively develop with the new platform?

- Expertise and education: who on your team will be the experts to help support the new tech and onboard your other engineers?

- Standards: what common patterns, idioms, styleguides etc will you adopt? Who will make decisions about these, and how will they be enforced?

A productive engineering environment should have widespread, well understood answers to each of these questions for every technology in their stack. The smaller the "approved stack" the easier it is to do that.

As a result of all of this, I think the criteria for introducing something new is to ask if the cost of all of this is justified by the expected improvement provided by the new tool.

That usually means it needs to either make some feature posible that was impossible without it, or it needs to provide a multiple productivity improvement - not just a 1.5x, probably a 3x or higher.

Re: Ask HN: Should orgs limit the number of languages/frameworks?

#8
I had a client that enforced writing every customer facing software in C++14. In 2024 they suddenly need to support various web technologies and modern web infrastructure. They still rely on their language limitations and don’t get stuff done any longer.

I advised to use Go and most developers were interested and even enthusiastic about it. We proved Go introduction by using it for simulators and testing. But finally the tech lead said "we will never ship anything different than C++ written applications".

My current client also works in embedded tech, but I proposed a polyglot approach and architecture. We ship apps in Go, Rust, C, C++ and even Fortran. Any developer can pick up any language as long as it compiles to Armhf. No one has a problem reading and at least maintaining any code.

There should only be technical limitations and constraints to force down your fellow developers.

Frameworks are a different topic. Web frameworks come and go, and most Angular shops I know became desperate legacy plumbing shops. Only use frameworks that you can replace easily or are willing and capable to maintain yourself.

Re: Ask HN: Should orgs limit the number of languages/frameworks?

#9
post #7
post #6

Earlier quoted context omitted.

I guess what I'm wondering is more about the opposite of the "cool/neat" where orgs either prohibit development in non-standard langs (and that was good/bad) or allow development in non-standard langs (and that was good/bad). What criteria is used to determine when it's ok to deviate from in-house langs? What justification is used to prevent deviation at all costs?

Introducing a new technology - a new language, or new database (like MongoDB), or a new framework is a VERY expensive proposition. You need to solve all of the following: - Deployment. How will you run the new thing in production (and QA and staging) - Upgrades. How will you upgrade to new versions in the future? Who will be responsible for that? - For databases, backups. How will you backup data? How will you make t…

Also for any larger company: Security, compliance, and legal.

Re: Ask HN: Should orgs limit the number of languages/frameworks?

#10
Unless the main set of languages you have are totally unable to solve the new usecase, its almost certainly going to land on the tech debt side of things. This is a new build chain, set of dependencies, development tools, developer skillset, etc. we are talking about here - not small stuff.

Also to get common libs (e.g. middleware, API definitions) going will be much harder.

The real reason new languages come up in discussion is because of bored developers - that has been my experience at least. And I don't exclude myself from that, it is a major factor in me looking for new work. Now assuming that cynical theory is true, there is an argument to introduce cool stuff to retain good developers - with the understanding that you are shooting yourself in the foot a little bit.

I've wondered about the possibility of allowing a prototype in a "cool" language or framework, with an understanding that it must be replaced soon after by a stable refactor in the existing language set. I think that would appeal to people who want to try something new as well as people who enjoy refactoring, and there would be a kind of extreme programming motivation to the business. I've never tried to get this kind of thing going though.

Post reply on HN