>>14First, I want to say knowing a Lisp is a must. You won't ever use a language with as much expressiveness per pound. Macros really captures the bare essence of Computer Science.
Second, most algorithms tend to be optimizations of searching and/or sorting. Don't forget basic data structures either. This shit never changes.
Learn the main programming paradigms (functional, procedural, logic, oop, static/dynamic typing, weak/strong typing).
While Scheme is the most elegant lisp, Common Lisp will satisfactorily cover all of those paradigms except for weak and static typing. Fortunately, those can be covered by C which you should learn anyways.
If you have more time, I'd suggest learning languages which specialize in particular paradigms to certain extremes. Haskell = (functional, static, strong), Prolog = (logic), and the bonus Erlang = (oop, distributive). And to be completely honest, there really isn't a righteous path. Just-fucking-do-it should be the philosophy. There will be a lot of overlap anyways, so it hurts more to deliberate than to act.
If you have even more time, learn many different languages until you can nitpick them all.
There's really two 'practical' foundational things I can say for certain:
1) Learn the Linux's and POSIX's APIs (man7.org/tlpi). Of course that implies knowing C and assuming you mostly interact with Linux (because it's been eating the world). Now, C. C gets so many things right that it's portable enough, low-level enough, and flexible enough for the future hardware. I honestly can't see Linux nor C going away anytime soon. Neither C++ nor Rust can replace it. I believe the biggest break away will be through with chemical computers. The benefit of knowing these APIs exposes that virtually every language essentially piggy-backs off the same API. Some languages like python and lisp will even give you a way to pipe data through. They almost appear like pseudo-code for C.
2) Learn JavaScript for the browser. And don't learn your favorite transpiled language quite yet. I know people like to shit on JavaScript because it's not a lisp or not statically typed. Some will even go as far to pretend the browser isn't a legit platform to be taken seriously. Even with its quirks, JavaScript isn't close to a horrible monster. It's also here to stay. Aside from the lisp dialects, it's one of the best dynamic languages I can suggest. From that alone, I suggest know it. It's such a wacky, hacky language that I've grown to love it.
Learning jQuery or whatever-framework-of-the-month isn't so important. You can ignore all that shit. You'll want to check out HTML5 canvas and WebGL though.
With a proficiency of the paradigms and latter these things, it would be nearly impossible to trap youself in a corner.
Once you've narrowed yourself down to your domain(s), do as the Romans do. At worst, you can always pretend you're using some wonky looking lisp macro.