I was hired one year ago in a small company that works on utility apps, as a frontend developer. This company is very small and has more apps than developers, and often we work on very small features than in my opinion are not enough challenging. IMO we have low quality code and I think that the whole company often focuses on formalities and small details (e.g. "should we put a newline at this point of our code or not?"), while neglecting important things (e.g. using outdated practices that can lead to bugs). The feeling is to work in a small and boring company where no important things happen, and the most pressuring thing that you can get is to work on a bug that affects a a few hundreds of users. So since everything is boring I can feel that problems are magnified, often because there is nothing to discuss so issues that normally would have low priority become important in the eyes of my colleagues.
The thing is that I really didn't like it, I was also working on micro-features and I felt that I had coding-monkey tasks, so I made the horrible mistake of not giving importance to my tasks, also because I though that they weren't so important for the company, since I couldn't realize how those micro-features were somehow important for them. So I was often making pull requests without double checking, and it was happening sometimes that my features were breaking existing functionalities, or that my bug fixes weren't working; and for this reason, I lost the trust of my senior. And he didn't directly tell me that, he went straight to my manager and I wouldn't say that I was nearly fired, but he told me that if I didn't improve certain points I was not going to have my contract renewed.
So I've promised some change and I started making an effort to double check everything and to do my micro-tasks with extra attention, and after some time I was told by my senior that he noticed some real improvement, and I think that I have good chances of getting my contract renewed. But the fact is that now the development manager (who is also the product owner) has no idea of why I was underperforming (I felt like telling him the real reason was going to put me in further troubles), so he really thinks that I was underperforming because I don't have enough programming skills. As a result of this, I can see that often I don't get assigned hard tasks. My tasks are way too simple. So basically I underperformed because I didn't like my tasks, for being way too simple, and as a result I am getting assigned even easier tasks.
Now there is also a parallel problem going on: the company culture. The mentality is: "if we have to do the feature Y, we go to mister X [let's call him this way, He is not really a single developer, it may be one senior or another who is expert on the matter], who is the most expert on the matter [also because he learned how to work on Y on his extra time], and we tell him to do the feature". As a result, mister X's knowledge improves even more, but other developers' knowledge don't improve. I would say that the more you know, the bigger are your chances to learn; the lesser you know, the smaller are your chances to learn because they think "this task is too hard for you, let's give it to mister X". My colleagues don't seem to give too much importance to this issue, but my feeling is that the company really doesn't care about the personal growth of its developers.
Now I really don't know how to break this vicious circle. It would be easy to say "change company", I am trying but now it's hard for me to find another company since I have few experience and most companies want already experienced developers. I would like to have some suggestions.