Since I myself am still a junior developer, I will not have to share my experience. But, on the other hand, I believe that the bottom view is no less important. Well, and since I'm still a junior, I must know what middle is and understand what to strive for.
I believe that evaluating the level of a programmer by the number of years he spent working in his field is wrong. At least because in the IT world everything is quickly becoming obsolete. I think it’s hard to call the middle one the programmer who fixed bugs for 5 years, and at the same time has never implemented a new functionality.
Independence and confidence in solving problems
Most often, the current tasks that I encounter force me to “pull” my older comrades in order to find out, clarify, and explain something. I understand that by doing this I take away part of their working time from them, and simply distract them. On the one hand, it is terribly inconvenient for me to disturb them, but often this is the only source of a quick solution to the problem.
From all these episodes, I concluded that I often lack the competence, experience and knowledge of the system, and, as a result, the confidence in independent task solving. Probably, if I could take tasks and close them on my own, without distracting my colleagues, this would be the first bell talking about my approach to the middle-grade developer.
Of course, now any junior, like me, will say with confidence: "I have already solved many problems myself!" Yes, it's great, but you need to consider the complexity of the tasks. Almost any novice programmer can fix bugs, write unit tests, crutches and click on the button to automatically build the build. But here, I myself can hardly realize the new functionality, improve the current architecture or performance and do it wisely, in my opinion, junior. I think that this is a good reason to think about raising your grade to middle.
When I was first given the code to write on a combat project, for some reason I decided that the more I write, the cooler it will be. I wrote a working library that generates PDF documents from prepared templates and incoming JSONs. Over time, it became necessary to add a few more templates for new documents. And with the addition of each template, I began to understand how bulky, unreadable and unsupported the code becomes.
If I initially thought over the architecture of this "small" library so that I did not have to refactor the code, then this would be another point in the direction of the middle developer.
The middle developer will not sculpt the new code class by class, but will most likely start with interfaces and try to apply design patterns where they are appropriate. By the way, here is a good site with a catalog of patterns.
If it’s still not clear:
- Find a senior developer in the company who uses the same stack as you and ask him to rate your level.
- You can also ask colleagues to review your code.
- Find out what else you have to work on to reach middle.