Is it reasonable to learn GML if I want to make this my career or should I choose something more mainstream to begin with

Bold claim:

Mainstream, mainstream, mainstream.

Apart from language choice, a good aim would be to become "better than average". Take a look at university / college curricula for computer scientists, even if you don't want to become "just a computer scientist": Adding a 2nd (or 3rd...) language of a completely different language familie is not unheard of and can vastly improve your skills and broaden your view. If your first language is C or C++ or similar, your 2nd language could be OCaml or one of the Lisp families. Those can feel "different".

To add, if you choose a "mainstream" language like C, C++ or even C#, then, inadvertently or not, you can do things that with GameMaker's GML you simply cannot do. And you can dig deeper into certain topics because you can find a huge variety of books and other resources.

One major issue is terminology. Some aspects:

  • If you happen to talk about terms like "objects and instances", a C# programmer will know these words, but there will be a high chance for misunderstandings. If you happen to be exposed to programming terminologies from "mainstream" teaching, you'll find GameMaker's GML "odd", but you can easily cope with these oddities. If you only know GML, you won't even know how odd some parts of of GML are and how to mitigate some of these oddities.
  • For some reason or another, certain programming topics are being classified as "advanced" by some GameMaker users. One very odd example I have seen too many times is (I'm feeling stupid to write this): arrays. In "mainstream" languages arrays wouldn't be considered an advanced topic. I think it's a matter of a huge pile of legacy of 25 (?) years of GameMaker.
  • Users are (mis-) led to believe GameMaker's DnD could be "easier" than even GameMaker's own GML.
    • A standard human brain can be fooled quickly: a screen full of "stuff" (full of code) can easily create an illusion of productivity.
    • So what really happens with DnD is: You fill up your screen very very quickly, because those DnD elements take up a lot of screen space. One mouseclick and 35% of your screen is full. Congratulations, you're a genius.
    • Further, "being productive" is misunderstood as "DnD is easier", because... well.... "Mom, look how fast I can fill the screen with visual code!"
    • Please accept that filling a computer screen quickly isn't a very good indicator for "being productive". If you're staring at, say, 10 lines of (GML) code for an hour (or four), trying to find an error, those 10 lines of code only take up a fraction of your screen space. Once you finally find your error and you need to only change one single line of code, there is not nearly as much to show to your mom (visually). Unless she's a computer scientist, of course 3 . Then she'll know.
    • So what if there is no indicator of increased productivity? Chances are, the whole ordeal of DnD-coding is actuallly not any easier than a coding language as text - like GML. 1 2 Why would it be, if the whole idea of DnD being easier is the false assumption that you can be "more productive" with DnD?

1 One argument I keep reading so often is that DnD is better for people who are in anxiety of coding or similar. I think it'd be worth it to address how kids are being schooled: why do schools create so much anxiety? What are those teachers doing to the children? Let's hope society learns not to spread fear and anxiety so widely among children.
2 Can "visual code" be a meaningful tool? Yes. But I am a non-believer in terms of GameMaker's DnD.
3 She'll also teach you that you can use an in-built function or a library to condense your ten lines of code into three lines that are much more readable, reliable and testable. And she'll scold you for not writing tests in the first place. Had you written your tests first like she told you, it wouldn't have taken you so long to find and fix your error.

/r/gamedev Thread