Company context: Small, been frozen for some time due to the developer not working on the code at all, hard to hire for the codebase without spending a lot of money that they don't have. Ideally having me come in, within 4-6 months having a slightly improved version of the application up and running, but on a more common stack. I would be in charge of hiring new developers to work with me on the project right away.
My background: Been working in Python for about 5 years, the past 2 years have been very intense on Python. The past year I have been working in Go as well. We have moved some of our API's to Go due to the speed gains from the migration. I would say I am significantly more comfortable with Python, but I know the performance I can get from Go is very nice.
The ask: Which language do I migrate the backend API's to? I have been torn between the two languages. Python would be the fastest off the ground for me, since that is what I am more comfortable with, but Go might be more "future-proof"? What if we implement some more compute heavy features that may benefit from the speedup of Go? I believe the timeline is doable for both languages, with Python getting finished sooner I am sure. Is it worth taking the risk of maybe running up on the deadline with Go?
Any suggestions on frontend are also welcome, currently just going with React due to my own past experience.
Somewhat tangentially: if you're also already comfortable with javascript, you might consider using it (or typescript) on the back-end as well. I've recently been looking at remix (https://remix.run) which seems like a pretty smart approach to doing that. The idea is roughly that you build a thing that looks like a traditional server-side app, but with server-rendered react components, and the framework supports you in layering on client-side progressive enhancement. I haven't done anything serious with it, but it's piqued my interest enough that I might overcome my aversion to running javascript on the server (mostly due to healthy paranoia about the state of the npm ecosystem).
It is all a lot of fun but it is also low volume, mostly driven by me, myself and I with a little bit of ‘friends and family.’
Python does not deal with concurrency well so I would not be confident that these applications would hold up to heavy use.
For the last 15 years or so every back end I have worked on professionally has either been JVM or .NET. To be frank, rewriting an application in a different language is one of the most certain ways to launch a failing project. It is right up there with leaving your spouse to get a better lover in terms of success rate.
I would say though that Go is an appropriate choice if you are succeeding with it now.
You could use Python if you want but I don’t see the compelling reason. React seems like overkill for what you described as a fairly basic application.
I would work backwards from that and not necessarily whatever language is the most popular or highly voted response on HN or any other site.
You mentioned you’re going to hire additional devs. Are there other applications those devs would also work on or support? What are those applications written in? What type of development does this company normally do, I.e. consider their problem domain. If there’s a lot of ML work, for example, you could try to unify around Python. If they already have lots of JVM stuff, maybe Kotlin, Java, or even Scala make more sense.
The second startup I worked at had a .NET backend. I came to it from a Python Django thing. .NET/C# was solid. It performed the required job admirably.
We migrated the front-end to React eventually.
After that, I wrote something with a Typescript/Node backend. IDK if it was better or worse than .NET. Some might say worse, since I had to spend time piecing the framework together.