|
|
|
|
|
by devjab
935 days ago
|
|
Lunar went through a transition from Node/Typescript, to Java to Go and they seem to think it’s the “only” language worth building a back-end in. Which is obviously a wild statement, but having worked with C# and .Net as well as C++ for the past decade and now slowly moving into Node/Typescript I can sort of see why you would want to leave some of the “legacy” technologies like Java or C# behind. Not because they aren’t excellent, but because they aren’t great to work with. C# and .Net has never been greater than they are now, and yet we increased our productivity by switching to Node/Typescript by around 20%, with the added benefit of having a single language across the stack. The latter was the primary reason for the switch and the increase in productivity came as a sort of surprise and we’re honestly still trying to figure out why our developers produce things which are measurably better at a faster pace with TS and for many a change of tech from something they’ve used for many years. I see some similar reflections and stories coming from the lunar team on why they switched from Java to Go. That being said. Whatever works is always the best technology. If that’s C, C#, PHP or whatever, then that’s always going to be your best answer. I don’t think there is really any reason to “pick” the right technology from the get go, you can always worry about that when/if it becomes a problem. We didn’t switch to TS from C# because we disliked it, we did it to share our resources better. Eventually if/when we grow enough, we’re likely going to have to change things. Though maybe not. Lego seems to be doing fine on mainly Node and I doubt will reach their size any time soon. |
|
After looking around at the current popular solutions, I've yet to find something that is as ergonomic and productive as the .NET stack in regards to creating a web-based product. You have one of the most solid backend frameworks (ASP.NET) with lots of great tools like EF Core for ORM, SignalR for real-time, now Blazor for frontend, easy authentication and authorization, etc. That just makes everything so performant.
However, that is a very high level focused development path, while I feel Go is slightly lower level where you still have pointers and such. I see it as great for CLI apps and very specific server needs where you'd want great performance and CSP threading in combination with a very easy syntax for new developers, but I don't think that's a very common use case to be honest. Even though I love Go for its focus on simplicity, it just isn't the most suitable lang for high-level work, nor is it very suitable for low-level work at the same time.
Regarding your switch from C# to TS, I understand it made sense in the last couple of years. It simplified the stack via reducing language context switching, which can be a good productivity boost depending on your team and team size. However, if you would've tested Blazor today and found it would have satisfied your frontend needs, I actually think a full C# stack will be better than TypeScript to be honest, due to the better tooling and better runtime that exists for C# compared to Node.js/Bun/Deno. I still think TS is better in the frontend department than Blazor, but that's simply because JS/TS has been the only language for frontend in a long time. I hope Blazor will gain traction as a real alternative.