Programming Tools
There are three main programming tools made available to you when programming your robot: Blocks, OnBot Java and Android Studio.
Blocks
Blocks (in the general sense) is a visual programming language that allows you to program your robot using a drag-and-drop interface.
It's designed to be easy to use and understand, which makes it "good" for beginners/those who are completely new to programming. It's also built-in to the RC (Robot Controller) app, so you don't need to install anything else (this also makes effective deploy times very quick) While it is great for getting a feel for how your robot works, Blocks is not really a programming language, and as such it is quite limited in what it can do (it's extremely high-level, to such an extent that you're not actually even writing any code). Whilst it might be a bit controversial to say, I don't believe Blocks should be used at all, even by beginners.
Your goal as a programmer is to understand how to write code, not to drag boxes around a screen; even if it looks easier at first, you're avoiding the part that actually teaches you something. The concepts you'll learn by using Blocks can be learned just as easily by writing code directly, and you'll be much better off in the long run.
OnBot Java
OnBot Java is a programming tool that (also) runs directly on the RC app. It allows you to write actual Java code directly from a browser (you can also access it from the REV Hardware Client instead of a regular browser). Like Blocks, it has really fast deploy times, since everything is running directly on the RC app.
It's definitely a step up from Blocks, as you're actually writing code, but it's still far from ideal because you're unable to use external libraries most of the time (some will work, but even then it's really hard to actually add them to your project).
To be honest, if you've started with Blocks (which, again, I don't recommend) and you're ready to move on, it's worth just jumping straight to Android Studio. Since it's actually used in the real world, you'll learn how to use a proper IDE (Integrated Development Environment), which is much more beneficial in the long run (you'll learn how to navigate the interface, what Gradle is, and how to manage dependencies, etc).
Android Studio
Android Studio is the official IDE for Android development, and it's what most programmers on an FTC team (should) use. It allows you to write Java (likewise to OnBot Java, I know, shocking), or Kotlin code, manage dependencies, use external libraries, and as a whole just do basically everything you'll need to do. The only downside is that deploy times are longer, since you're compiling the code on your computer first, then sending it to the RC app via Wi-Fi/USB, although this is a sacrifice worth making for the benefits you get in return; Even so, there does exist an amazing library, Sloth, that cuts down deploy times to less than 2 seconds, made by Oscar Chevalier.