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
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:
They can be somewhat ameliorated by
by way of contrast, these ones are either not confusing, or confusing in their own unique ways:
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?
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.
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.
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’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.
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.
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.
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.