4 ms·
Foremost, I think you need to focus on a few specific goals or projects you want to work on and then pick the tools and skills you need to develop to achieve th
by kaiwetzel 15y ago
Foremost, I think you need to focus on a few specific goals or projects you want to work on and then pick the tools and skills you need to develop to achieve those goals so you have small successes early on and are motivated to kep going. Then you can tackle the next steps which may seems overwhelming initially.
From what you write it is often not clear to me exactly why you want to learn about those things you mention. You mention some cool technologies but what makes them cool? For me, knowing why I want to learn something tends to keep me motivated even when things get hard or I got stuck somewhere. Maybe that's a personal thing, though.
It appears there are two primary changes you want to make 1) Get out of your job and work in a more exiting setting, e.g. by learning Ruby/Rails and working in a startup using exciting tools and technologies and not feeling left behind on a job where your mind retreats. 2) The other concern seems to be long-term: gain a more solid understanding of the fundamentals of computer science and mathematics.
Outside of traditional university classes it seems best to pick specific problems (small projects) where you can practice newly gained skills. What do you find exciting , where do you want to apply your new knowledge? Robotics? Social networks? Computer graphics? Music? Sports or Health? Does mobile development interest you? With your background in Java, Android development should be easy to pick up, for example.
I think learning new programming languages is great, e.g. learning Haskell in university was mind-expanding, even though I have never used the language ever since. Keep in mind that you can only start with a limited number of new things without getting lost so pick your priorities. Consider clojure with your strong Java background.
You mention you feel lacking in fundamental algorithms but what is it, specifically, what you have problems with? Since you obtained our degree (albeit from an „academically poor university“) you must have some introduction to algorithms class, what is it you are missing? What kind of programmer challenges do you have problems with and what is it you can't do?
Are there many user groups in the area you live? I found going to local lisp meetups extremely motivating and there are often groups covering for example Ruby/Rails, Lisp, Android, Arduino, Processing, JavaScript, … You see what other people are using the tools for and will often get your questions answered right away if you have trouble with something.
Linux: Getting somewhat comfortable with UNIX/Linux and the command line seems relevant to quite a few things on your list. You don't have to become a full-fledged UNIX-admin, don't set your own bar too high! Do you have Linux installed? In a virtual machine (e.g. VMWare Player on Windows, Parallels on OS X)? Or as a dual boot option? If you don't have it on a Notebook, consider getting a cheap used IBM/Lenovo X61 so you can take it to user group meetings. I learned my basic Linux from mailing list discussions on open source projects or IRC but I'm sure there are some good books or tutorials that cover the basic principles, commands, and simple scripting.
By the way, I can only +1 learning jQuery and more SQL (I like Bill Karwin's stuff on the web, he has written a couple of books as well)!
(edit: my email is on the contact page)