3 ms·
Your attitude towards math/"timeless" cs is correct. Today's infrastructure, if you want to build something awesome four years in the future, is of little inter
by moggleface 16y ago
Your attitude towards math/"timeless" cs is correct. Today's infrastructure, if you want to build something awesome four years in the future, is of little interest to you. Focus on learning general-purpose algorithms, maths, language concepts, and design sensibilities. When the time comes to pick up the technologies of the day you want to build in, you'll have an abstraction of those technologies ready to give you the context to totally own it.
This is not to say that you should totally neglect concrete tools. The strategy that I've followed in this case has served me well, and I'll outline it below:
First, learn a few "immortal tools" really well: emacs, some kind of revision control, and how to be fluent in a UNIX shell. This includes understanding the "unix philosophy," and shell scripting. None of these things are going anywhere anytime soon, and a deep understanding and fluency with them will boost your productivity by quite a lot.
Second, learn an orthogonal basis of programming languages to reasonable fluency. That is, identify the major families of programming languages, pick the one that most appeals to you in each family, and learn it. Do some project euler stuff, or hack out that application you wanted, or implement one of your favorite algorithms. The first thing I always write in a new programming language is a nondeterministic finite automaton description language and execution engine, for instance. Not only will this be fun, but it will prepare you to learn whatever is in vogue when you sit down to make your product by giving you broad context for programming languages in general.
Good luck. You have a good attitude and you're starting in the right place; linear algebra is great stuff, and so is CLRS.
Oh, and finally: for the love of god take a class that uses SICP. Or just work through it yourself with the online lecture videos. It teaches programming by giving you a series of ever-more-elaborate models of program evaluation. It will give you a deep understanding of how programming languages work, in general, which it sounds like you'd really enjoy.
- yewweitan 16y agoThanks for the reply. The recommendations are awesome, thanks! I've put off picking up SICP for awhile, will probably do that soon.