I want to learn programming as a hobby and have several project ideas in mind. My main goal is to create a Linux music player with features comparable to MusicBee, since I have not found a satisfying replacement. I am also interested in making utility apps for Android-based retro gaming handhelds, experimenting with Raspberry Pi projects, and possibly exploring self-hosted server or Linux administration work later on.
I am currently deciding between Python and C++. Python seems beginner-friendly and useful for learning core programming concepts, but I have heard it is not the best choice for Android development. C++ appears to be more versatile and commonly used, though it may be more difficult to learn. Which language would be the best starting point for these goals?
4 Answers
If career opportunities become important later, it is worth checking which technologies are in demand where you live. Since your immediate goal is hobby programming, though, job-market popularity should not be the deciding factor. Building small projects and learning how to break problems into manageable tasks will be more valuable than spending too long searching for the perfect first language.
Most of these projects can be built in many different languages. Android is the main area where your choice matters: Kotlin is the usual modern choice, with Java also being widely supported. Other languages and frameworks can target Android, but they may add extra complexity. You could learn general programming with Python and then pick up Kotlin when you have a specific Android project in mind.
There is no single language that is automatically best for Linux applications, servers, Raspberry Pi, and Android. Go, Python, C++, Rust, Java, and others can handle several of those areas. For a hobby project, prioritize a language that keeps you motivated. C++ can be a good fit for a desktop music application, but it has more concepts and manual details to learn than Python, so expect a steeper learning curve.
Python is a solid place to start because it lets you focus on programming fundamentals—variables, loops, conditions, collections, functions, APIs, and problem-solving—without much language overhead. Once those ideas make sense, moving to Kotlin, Java, C++, Rust, or another language is much easier. You do not need to choose one language that perfectly covers every future project.

That makes sense. I’m mainly learning for fun, so starting with something approachable may be better than trying to pick the perfect language immediately.