So my last post concerning Junior developers got some rather expected feedback that it was really pushing the line of what a “Junior” is. To be fair perhaps I should have named that post like I did that one. Maybe it doesn’t really matter that much if the person knows those things at the moment, rather that he should be able to grasp them when needed.
As for what a Middle level developer should know I think I can allow myself to push the line quite far. As I believe that the gap between Middle and Senior levels should be based more on experience than on theory. Obviously it’s the job of a Senior to know some more obscure things that don’t come up that often, but a Middle level developer should be self-sufficient. But please treat is as a suggested reading list, rather than “you have to be this tall” plank.
I received a few comments on why I focus little on actual technologies like libraries and frameworks. The reason is that they don’t really matter in the long run and may change every 2 years. You could also check out the “ If carpenters were interviewed as programmers” to understand my view on this.
General application runtime
This is a bit beyond the pale for web developers, but understanding the basics of application runtime may help prevent some bugs, like stack overflow for example.
Data structures
These actually come up often. In PHP arrays can behave like a lot of fundamental data structures, so you might have been using one for ages, and just didn’t know the proper name.
Programming paradigms
I’m unsure whether I should include functional programming here, since although it has become increasingly popular, especially after we got non=blocking I/O, but not everyone needs that.
Architectural
Networking
Relational Databases
NoSQL Databases
This is tricky, as there are so many and they differ a lot between themselves. But I guess it would be worthwhile to familiarize oneself with at least these ones:
HTML, CSS
Security
Development process
Optimization
PHP
I actually want to make these lists useful, so if you have any ideas or would like to suggest entire sections please comment. Such things are far better done by a community than a single person.