Does anyone else find javascript/electron-based code editors confusing? I can never understand the organization/hierarchies of menus, buttons, windows, tabs. All my time is spent hunting through the interface. My kingdom for a normal dialogue box!
I’ve tried and failed to use VSCodium on a bunch of occasions for this reason. And a couple other ones. It’s like the UI got left in the InstaPot waaaay too long and now it’s just a soggy stewy mess.
Today I finally thought I’d take the first step toward android development. Completing a very simple hello world tutorial is proving to be challenging just because the window I see doesn’t precisely correspond to the screenshots. Trying to find the buttons/menus/tools is very slow as I am constantly getting lost. I only ever have this in applications with javascript-based UIs
Questions:
-
Am I the only one who faces this challenge?
-
Do I have to use Android Studio or it there some kind of native linux alternative?
edited to reflect correction that Android Studio is not electron
I don’t know what JavaScript has to do with the ui. You can design a bad ui in any language, a good one too.
So no I don’t understand it. Maybe you need a different type of approach like a modal editor?
Look into helix, (neo)vim or (Spac)emacs. They could be a better fit from a visual point of view. But they have a steep learning curve.
Android Studio is based on IntelliJ, it is not an electron based IDE.
aaah hmmm you do seem to be correct
what is it then? the javascript-based UI?
What IDEs have you used in the past?
Is it perhaps just modern (not necessarily better) layouts? Or tooling?
Software dev these days is a hell of a lot more complicated, however we are also standing on the shoulders of giants so it seems really easy as the complexity has been abstracted away.So the following all drive me insane in exactly the same way:
- Android Studio
- VSCode/ium
- Submlime
- Brackets
- Atom
- various smaller projects that i uninstalled and can’t remember the names of them
They can be somewhat ameliorated by
- uninstalling/removing/hiding features that are not in use if possible (but risk having to spend 30 minutes looking for it if you ever need it)
- finding a high contrast theme so at least you can mostly see where one visual area stops and the next one begins
- Never opening more than a single document
- don’t use terminal, git or anything else. don’t use any sidebars. remove status bars.
by way of contrast, these ones are either not confusing, or confusing in their own unique ways:
- Kate
- Notepad++
- Geaney
- jEdit
- gedit
- Mousepad
- TextMate
- BBEdit
- Textadept
Only considering GUI-based editors.
I don’t really have much experience with any of the ones you mention that you like. However, I’m guessing they are more of a text editor.
All the ones you dislike lean more towards IDEs (if not actually being an IDE) because of the features they have over more basic text editors (like the ones you like).
And it seems like the feature that you dislike are part of an IDE toolset, whereas text editors (like sublime) may or may not include these features.Why do you want an IDE (or IDE tooling) if you don’t want the extra features?
Could you just use a text editor and a separate compiler?Could you just use a text editor and a separate compiler?
I don’t know? Could I? Specifically asking for android because the tutorials I find tell me to use Android Studio. Is it doing something essential and different?
I googled it, and found a few writeups for android without using an IDE. Some dated. Adding “24” to the search helps get recent articles.
Sounds like the UI can be done in XML, but would need to be previewed in Android Studio.
https://stackoverflow.com/questions/32643297/how-to-make-an-android-app-without-using-android-studio/76150499#76150499
Might be helpful? A more recent post on this kinda thing, but I only skimmed it. Then you can use whatever editor you want.Another option is to drink the koolaid. Find an up-to-date tutorial that is for beginners, so it goes over the features of the IDE and why you should be using them.
I used to use Sublime for the majority of my stuff. But eventually tried drinking the VSCode koolaid for a new project, setting up language servers and all that. Wouldn’t go back.
Some things only need a text editor. But if there are extensions for the language/platform/framework in VSCode, I’d rather have the tooling support.
Your issue seems to be less to do with electron or JS than it is to do with IDEs in general. Everything you said you dislike is an IDE, the ones you said are less confusing aren’t IDEs they’re text editors (some with extra macro buttons, but still not actual IDEs).
I’m confused what exactly you’re having issues with in IDEs? Part of what separates an IDE from a simple text editor is that it provides much more information to help you understand and modify complicated code bases. Perhaps your issue is that you’re simply not dealing with anything complicated enough to actually need the power of an IDE. Another possibility is that you don’t really understand the languages or systems you’re dealing with so you become confused about the extra info the IDE is providing you. Information overload, particularly as a beginner can be a very real problem as modern IDEs can be a little like drinking from a fire hose. They are by their nature information dense.
finding a high contrast theme so at least you can mostly see where one visual area stops and the next one begins
I don’t intend this to be rude, but do you perhaps have some kind of visual impairment? Could adjusting your display to use a higher UI scaling help? Maybe bump up the default font sizes? Have you tested to see if you have some kind of colorblindness? Many IDEs will have themes or options to help with these cases.
Information overload, particularly as a beginner can be a very real problem as modern IDEs can be a little like drinking from a fire hose. They are by their nature information dense.
All of what you mention is possible. Which is why I’m wondering if I need android studio to learn? Or can I use something simpler for now? Tutorials I find seem to want you to use AS. Does it do anything special?
Sort of reminds me of 101 intro beginner linux tutorial that begins with instructing the user to open
vi
. Even though eventually it’s good to knowvi
,nano
is better to start with.I don’t intend this to be rude, but do you perhaps have some kind of visual impairment? Could adjusting your display to use a higher UI scaling help? Maybe bump up the default font sizes? Have you tested to see if you have some kind of colorblindness?
I’ve done the ones where there is a circle of dots hat have a number in them and I can see all the numbers. Some of them are faint but I assume that’s expected.
But OTOH in general I find a lot of modern dark color schemes difficult especially the “low contrast” ones difficult to use. My guess has been it’s because I mostly have shitty old hardware and the schemes might be designed by people with fancy modern displays that fix it somehow. Or if you are using a tiling WM instead of stacking windows on top of one another, the fact that the titlebar of the active window melts into the content of the one behind it may be a non issue.
All of what you mention is possible. Which is why I’m wondering if I need android studio to learn? Or can I use something simpler for now?
So, lets unpack what exactly you mean by learn in this context. There are multiple layers of skills necessary in order to program an Android app.
At the base layer, you’ve got conceptual skills like Object Oriented Programming (OOP). There are a variety of languages that are classified as OOP, Java/Kotlin happen to be among the more popular ones at the moment. But all OOP languages will have certain design principles in common and understanding those will allow you to not only structure your own code well, but also to understand why certain APIs are designed the way they are. You don’t even need a computer to learn these skills, although having one to play around with will certainly help.
Next up from that you have the actual language. Kotlin and/or Java in the case of Android. Technically you don’t need an IDE to learn the intricacies of these languages, although it will probably help mostly in regard to your interactions with the standard libraries. What an IDE will give you is the ability to quickly navigate to class, method, and property declarations, both in your own code and in libraries. It will also provide you with auto-completion of all of the above, so you can explore library APIs in a more organic way by taking an instance of some class and simply scrolling through what methods and properties it has available. That said, if you have a web browser open you can technically accomplish the same thing by just keeping the language reference open, so this is really more of just a time saver.
Finally there’s the Android APIs. These are distinct from the standard library of Kotlin/Java and are going to be the most opaque portion of the learning process. Due to the size and complexity of these APIs, you really do want to be using an IDE here. You can write an Android app without one, but it’s going to be much harder and far more error prone.
Tutorials I find seem to want you to use AS.
That’s because Android Studio is the official IDE that google has endorsed for Android development, much like XCode is the IDE that Apple has endorsed (and developed) for iOS (and OS X) development. Unlike in the case of iOS/OS X you don’t technically need to use Android Studio, it’s entirely possible to cobble together your own set of scripts and tools to accomplish the same thing, but once again you’re going to have a much smoother time if you use Android Studio. While the actual code can be written in almost anything, Android Studio is going to provide you tools to do things like UI design, easy access to launch your code in an emulator (or connected device), as well as a very easy to use debugger, plus the benefits I mentioned previously for exploring and understanding the Android APIs.
Does it do anything special?
Basically all the stuff I mentioned previously. The ability to very easily navigate to class and method declarations or instances of interfaces is invaluable when understanding and designing your apps, and being able to easily breakpoint and step through your code is absolutely critical for fixing bugs.
Overall I’d say take a layered approach. First make sure your OOP fundamentals are good, for that you can work with anything you happen to be comfortable with. Next learn Kotlin. Once again you can use anything you want for this, although it would be a good idea to at least use something like IntelliJ community edition or Android Studio. I recommend not writing an Android app for this, instead make something simple that just prints to the CLI like a hello world type app, although hopefully with a little more going on.
Only once you’re comfortable with the above, then I’d explore making an Android app, and I would also recommend using Android Studio to do so. Once you’ve got a good understanding of OOP and Kotlin then a lot of what Android Studio provides will start to make sense.
100%. Not intuitive at all
Am I the only one who faces this challenge?
No. There are a lot of small frustrations that add up to a sense of futility. These frustrations can only be addressed one at a time and are annoyingly orthogonal to the task you’re trying to complete.
Even more frustrating is that the people who write tutorials are typically well past that early stage of learning and have forgotten about many of the little details they no longer need to think through and are unconscious of the knowledge they are leveraging gained from their early stage of learning. So you can find a lot of tutorials that simply don’t address the issues you are likely to run into. Which is understandable to not want to include every possible issue in a focused tutorial, but there are often no hints or resources linked to help someone with the unstated prerequisite knowledge.
Also, you seem to be using Linux and that tutorial has a bunch of screenshots examples for MacOS. This is another annoying trend from the silicon valley based developers of assuming that everyone outside of their bubble is using the same technology stack as they are and often the newest and most expensive hardware options. (Which I suspect is a big influence on Android Studio being as resource heavy as it is.)
Do I have to use Android Studio or it there some kind of native linux alternative?
You don’t need to use Android Studio for Android development, but it’s probably the path with the least friction for getting started.
But there are a few non-Kotlin options for Android development, Flutter and Progressive Web Applications (PWAs) are two different pathways for Android development which don’t require Kotlin.
Ultimately, I suggest that you stick with Android Studio and learn the annoying details that it requires to be used effectively. You’ll feel like you’re moving much slower than you want to at first but you’ll get up to speed eventually. And you can ask here or on forums or chat rooms for help as you’re figuring out the details of Android Studio.
I’m pretty sure Android Studio has a search function for its menus.
deleted by creator
Since some folks already suggested Android studio, I want to throw the “new UI” vs “old UI” on JetBrains products into the ring. I’m not sure if it already arrived in Android studio s well, but the new UI sucks in a similar vscode sucks, so maybe that (turning off new UI) is an angle you can investigate.