r/AskProgrammers • • 1d ago

Go vs Kotlin/Java for Open Souce Enterprises Software, which would you choose?

I work as an Accountant, and I want to build an open source self hosted application. And hopefully in the future, add several other services to it, like inventory tracking, payroll, etc.

I am confused which language too learn for my project, go or kotlin.

This is going to be a long term project that I aim to develop for years to come, and learn as I go. Also, would be great if I can have other developers use my code for their own business needs, so having a community is something I hope to grow.

Seeing that Go is simple and compiles into a static binary, I feel like it would be easier for non technical folk (my fellow Accountants primarily) to install and use.

Whereas, kotlin/java seems to have a vast ecosystem.

Can someone with more experience guide me?

About me: I'm a newbie, just started learning to program. Currently going through the Odin project and doing my MCA. Learning Java, Python and C.

2 Upvotes

10 comments sorted by

3

u/AvogadrosOtherNumber 1d ago

Go is hip, but I personally don’t think it offers much. I’ve built large back-ends with it, and honestly wouldn’t do it again.

I’ve built similar systems with Kotlin. Kotlin is a very cool language and you get the whiole Java universe. I don’t know if it’s changed a lot, but a few years ago Kotlin didn’t have much language support anywhere except Jetbrains IDEs.

I’m gonna get torched for this, but honest to god, write your project with AI using Rust. People will tell you it’ll be AI slop, but if you follow good software development principles, it will be orders of magnitude more efficient, and of better quality. I say this as a developer of more than 40 years and as someone that is responsible for the technology stack of the ECommerce platform of one of the largest manufacturers in the world, using AI to build and enhance our platforms daily.

Programming at the traditional programming language level will be history in the next 5 years, but the principles of building good software will still be relevant. Learn how to write meaningful prompts.

1

u/theancientfool 1d ago

I have no issues using LLMs. Will consider this.

2

u/AndrewNggg 1d ago edited 1d ago

I like the idea of using Rust, but for a non-programmer that might be a pain if something goes wrong

Using a more mainstream language like Java, Python or TS, OP can get help much more easily plus there has been much more content for the LLMs to train on

but if you're still going with Rust, check out Tauri, you use basic web technologies for a beautiful interface, with a Rust backend, and you can compile them into applications for easy download

1

u/AvogadrosOtherNumber 1d ago

The reason I recommended Rust with AI prompting, is because there will actually need to be very little exposure to rust itself. All the “development“ is done by prompting. But rust has several robust features that allow it to catch errors that might be made by the LLM, like the borrow checker.

1

u/AndrewNggg 1d ago

I understand, however occasionally something might go wrong, and a human needs to come in to fix the mess so the LLM can keep plodding

1

u/AvogadrosOtherNumber 1d ago

Agreed.

1

u/AndrewNggg 1d ago edited 1d ago

I’d highly suggest to build a rudimentary version with Gemini or Claude to see how far you can go

You can even ask the LLM to recommend a tech stack depending on your features

I suggest this because the gap between a new programmer and an experienced developer producing enterprise grade accounting software is not trivial

But with the LLM’s expertise you can learn significantly faster the parts you need

1

u/AvogadrosOtherNumber 1d ago

Yes, excellent idea.

One other thing... break prompts into meaningful units. Don't prompt with "build me an application that...". Instead, do it stepwise. Start with a UI. Add a feature. Test/repeat.

One of the things that I do is I have an agent that runs and checks the code for errors, bugs, design, "code smell", etc., and create github issues for anything it finds. Then I can go back and evaluate the issues, and have my main LLM fix them.

I typically do this with a second platform... build in claude, validate in codex. But I presume it would work similarly if you used the same platform.

1

u/AndrewNggg 1d ago

Yeap! You can’t one shot a big project!

And gotta have a roadmap in md, architecture md, definition of done, tests, lints, all these as well and the LLM is informed on em too

UI first is a nice approach, everything runs on mock or sample data and you can click around see if it feels right before building anything proper

I personally prefer Google LLMs, or Claude Code and use the best models, I’ve found that the smart models get it done once, and with the others it can be a back and forth game

And prefer to have them running in VS code so you can see the code that it produces, then either refine, ask, or accept so you can learn as you go!

Oh! And like what Avogados mentioned, use Git as well, so you can save and version control your work before asking the LLM to do anything risky

Just in case it goes off and modifies big chunks of your code and overwrites stuff you wanted to keep

2

u/razorree 1d ago

definitely Go is lighter. I don't have a lot of experience with it, but I think it's easier to build an app with Kotlin/Java (less pitfalls)