Well that's a nice question.
I am with programming many years already (you can check my experience on my online CV BackendFreak.com - it's not really up to date but still) and with Construct 2 only a year (but intensive ). The first thing to mention is that even though I am fluent in direct programming I love making apps with C2 because it saves you enormous amount of time comparing to normal coding.
If you ask about programming thinking then I would say - yes. Programming is basically a specific logic/way of thinking. And C2 has that logic. So for newbies it is pretty cool to start with C2 and then go to coding. After you got familiar with C2, you understand what are conditions (if statements), functions, arrays etc. So once you jump into programming, this knowledge is very useful.
But if you ask about good programming practices, then I'll rather say - no. In real programming one of the most important things are encapsulation and semanthic. I don't see anyone talking about that in C2. I see people code snappets on the forum which are really far from or even opposite to what a good programming practice is about.
I'm working now on MoModth, and I really try to make it as much as possible encapsulated and semantically correct. And it is possible but I really struggle sometimes to connect things in the smart and "clean" way. C2 doesn't have features which would let you organize your code/events in the way that you could say it's a very good programming practice. Functions are always global, you almost can't manage groups (besides toggeling), can't include event sheets by events etc...
So again. Yes C2 helps you with understanding what programming is about, but C2 is just another layer over programming language so obviously it has limited possibilities. With raw programming you have to take care of way more things around but it also takes much more time. I'm not saying that C2 is teaching bad practices... it just doesn't teach good ones, because it's simply not a direct programming.
I'd say, that if you make your C2 events as much encapsulated and semanthic as possible then you do the most what's possible. There is simply no way to learn programming patterns and other good programming techiques with C2, because C2 does not have such low level possibilities.