18 months ago, I started my first job as an android developer in a fintech startup, after graduating with my Masters in a top 20 university. When I joined, I was the only android developer and built 2 relatively complex apps from scratch (designing architecture, app development, some security/crypto/api). My CTO, to whom I report directly, knows since the day he hired me that I don't want to be doing front-end my whole life, and we agreed this summer that I'd be switching to the back-end.
At the time, I asked him if there would be any salary change with the switch, and he reassured me that there wouldn't be, because he allows his engineers to move horizontally without any salary change.
Since 2 months, I've been learning about the back-end language, Functional Programming, and other frameworks they use. All on my personal time in the evening and on week-ends.
Last week, the CFO asked to speak with me and told me that we'd have to sign a new contract, and that they're going to decrease my salary (by over 10%). His argument is that he wants to align my salary with the other back-end juniors.
This news came to me as a shock and I am very confused if this is a normal practice or not. I've explained the situation to some of my SE friends and older acquaintances and all of them without exception find it scandalous and have told me that I should not accept the offer and start looking for another job.
I feel like the company is not valuating my work and my experience at their place. During these 18 months, I have shown that I am able to learn and adapt fast, that I deliver good results, and they have seen that I am highly motivated and positive in a very consistent way.
(Continuing the text in comment)