HACKER Q&A
📣 smellingwood

Which Language(s) to Migrate Application To?


Application context: Currently a fairly basic .NET application that has been dead in the water for a bit due to the original author leaving the company. A few tables, a few pages, fairly simple AWS API calls. From what I can tell, not a compute intensive application.

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.


  👤 timdev2 Accepted Answer ✓
Absent any current requirements for computational throughput, I think "future-proofing" with Go is likely premature optimization. You know Python well, it's a capable and widely-used language and platform. You can almost certainly scale it well enough by throwing inexpensive resources at it as needed for the foreseeable future.

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).


👤 PaulHoule
I write a lot of back end stuff in Python for my own account such as some IoT functionality for my smart home, workflow systems for making machine learning training sets, filtering images for art projects, filtering social media posts, job listings, etc.

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.


👤 jbjbjbjb
Dotnet 6 was just released and you could use Blazor too (SPA using dotnet!) for the front end. I’d expect you’d be become familiar enough with Asp.net and Blazor with just a couple of weeks of training. When it comes to hiring why not just put it out to anyone with OO experience? I see that quite often.

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.


👤 prirun
I would do it in Python. Since you think you can do that faster and will have time leftover, you can spend some time when it's finished figuring out what needs to run faster. If it's critical enough that it really needs to go faster, propose a 2nd project. My guess is, it will be fine.

👤 ozzythecat
What programming languages do others at your company know? Who will support this application in the future? Who would take over if you left the company?

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.


👤 ss108
I am not as experienced as many on here, but, fwiw, I don't think there is nothing wrong with .NET.

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.


👤 dvlat
Before you begin the migration, are you sure that all requirements are known and well understood? What is the reason for migration, is it because you are not familiar with .Net or because it is not the right tool for the job? If you will be hiring new engineers, what is the talent pool for all three in your area?

👤 yuppie_scum
Python would be a lot more maintainable, since you should have no problems hiring entry level or mid level Python devs.

👤 destevil
If you care about long term vision, go with Java.

👤 cranberryturkey
svelte+deno is the win