Agreed. I would recommend learning many concepts, e.g. in the database section, what's the difference between a document/time-series/column/graph/etc. database. A broad knowledge of such things makes us better at choosing the right tool for the job, rather than (poorly) re-inventing stuff that already exists.
However, I wouldn't bother choosing any actual implementation, for a few reasons:
- It takes time that could otherwise be spent learning something else
- If you're inheriting a legacy project, that choice has already been made for you
- If you need to choose one for some green-field project, the landscape/tradeoffs may have changed since you originally learned this stuff (e.g. your preferred tool may have been discontinued, or some alternative has solved a bunch of its problems, etc.)
When it comes to actually building stuff, start small and simple (e.g. LAMP, (Fast)CGI, etc.); whilst keeping those concepts in mind to avoid limiting future options (don't over-abstract, since YAGNI; but likewise don't paint yourself into a corner)
However, I wouldn't bother choosing any actual implementation, for a few reasons:
- It takes time that could otherwise be spent learning something else
- If you're inheriting a legacy project, that choice has already been made for you
- If you need to choose one for some green-field project, the landscape/tradeoffs may have changed since you originally learned this stuff (e.g. your preferred tool may have been discontinued, or some alternative has solved a bunch of its problems, etc.)
When it comes to actually building stuff, start small and simple (e.g. LAMP, (Fast)CGI, etc.); whilst keeping those concepts in mind to avoid limiting future options (don't over-abstract, since YAGNI; but likewise don't paint yourself into a corner)