Deciding what to learn next

Hello!

I’ve been a Python & Lua developer for approximately 4 years now. I’d consider myself quite advanced with Python having used it to do a multitude of things: data science, GUI Apps, Back-end web development (Flask), terminal-based apps and contributed to a variety of open-source projects.

I’ve decided that I want a new adventure, and want to learn a new language. Obviously, this is an important choice to make since I want to be sure to have made the right decision.

Obviously, if there is one thing I’ve learned is that certain languages are better suited for certain areas of software engineering over others.

My main area of interest (as of now) is interface creation. Python isn’t the best-suited language for this area of expertise., hence why I am here to get some advice.

I am particularly interested in GUI Based Desktop Application development. This means a GUI Application that users can install and just run.

Since “best” is highly objective, here’s a list of capabilities that I would like when choosing such languages:

  1. Cross-platform. This means maintaining one code base (same language & framework) for all platforms (mainly Windows and macOS)
  2. Native code capabilities (OS-specific features, reading and writing to files etc.)
  3. Good looking and customizable UI
  4. Packaging and distribution (ex. for commercial use) is possible. This means once packaged, users can just install the app and run it.
  5. Good Performance and not too resource-intensive
  6. Good docs.

I’ve considered C#, Java and JS/HTML/CSS (with Electron), which is the best suited for my needs?

Thanks

2 Likes

I’m not much of a cross platform dev, I’m very biased to what I work in. So take everything I say with a grain of salt. I don’t believe I have the best widest knowledge in this area, but I do know of a few things relative to my web-dev space.

If anything, these are biased references that are relevant if you already decided on web ;D

Web is the hands down winner. Here. Not only can you maintain the same codebase, but you can target almost all platforms at the same time. This is the primary reason why Web Development has gotten so popular, it’s turned essentially into an application delivery platform.

The best native support, is native. However you could work with some framework to “abstract” your codebase over native calls. However, this wont work for all use-cases, and depends largely on your use-case.

(these are web based, but that’s all I know well enough off the top of my head)

Web, yet again. There’s too much money, effort and time being poured into UI development for web platforms. Maybe too much.

I don’t know much about this topic. The only reference I have is Electron, which again is web based.

This is probably where any web based solution is not good. Electron apps run on chromium, which is a huge memory hog.

Again, native will provide the best performance, but requires the most work to make cross platform.

I guess “good docs” is relative, so I have no comment here.

I’ve made UI’s in Java. Its not much better than Python. I don’t know much about C# development, so I can’t offer any help there

I do however know web technologies are used for a number of widely used projects and products. Apps like Slack, Discord, and VSCode all use web technologies, which allows them incredible flexibility on which platform they run on. This is why all three of these technologies are available within a web-browser, desktop, and somewhat mobile.

Hopefully these resources are at least one option you can find out there, and again I’m very biased as I’m a web dev.

Good luck, keep learning, keep building :smiley:

P.S. When you mention UI today, most people think of React. I haven’t heard of really any other UI focused option for better or worse, but again I’m a web dev so I might be missing out on some native options that show potential ;D

2 Likes

Thanks a lot for the advice.

A lot of people whom I’ve seemed advice from regarding this question all have told me that web is definitely something I should look at.

I think I plan on taking that route, especially since web dev seems to be the big thing these days. This is great for me too, since I’ve already done some minor development with JS, HTML as well as CSS which gives me an advantage over knowing the basics. As for the back-end, I could always utilize something like Python with Flask or Django.

Thanks for your advice!