Hi Joshua,

I examined the repositories you have on github, looked at your linked-in registry, and then followed a link to your blog at http://solarmist.blogspot.com

There wasn't a lot to go on, but the main thing which I noticed was I didn't see any evidence of great depth in your skills. You have breadth pretty well covered. Your Linked-in page shows C, C++, Java, Perl, JavaScript, Python, SQL, Scheme, Lisp. But then when I looked at your github page, I saw a SICP repository, where you had been recently working on the exercises from SICP. Great! I commend you on that! But I only saw exercises from the first 3 exercises in Chapter 1, dated from about two weeks ago. Maybe you do know Scheme really well --- it could be that you simply haven't uploaded them, or I couldn't find it while Googling you. But the impression I got of the seven projects which you uploaded to Github, was that you're a bit of a dilettante. You've started a lot of projects, enough to upload them to github or fork them so you would have your own repo on github.... but then I didn't see a whole lot of sustained effort by you.

Your resume also shows that at different jobs you've had to use many different languages and technologies. This is not unusual, but what you need to do is to find a way to make yourself become a top-notch expert in one or two areas. Breadth is good, and you'll get some points for that. But if you go and compete to get a job at companies like Amazon, Facebook, Google, who want to accept only the very best, you'll need one or two areas where you are quite deep in your expertise.

Fortunately, that's not _that_ hard. While there's a lot of Malcolm Gladwell's work that I don't really agree with, his claim from his book Outliers that 10,000 hours (5 years of full-time sustained effort) is what it takes to become an expert in a field sounds right to me. Focus is key.

Ten years of experience, if it's a few years doing PL/SQL, a few years doing Javascript, a few years doing ML, and a few years doing Java, isn't as impressive as ten years working in a single area, where people are asking you to present at conferences and people recognize you as a leader in a particular area. This may be obvious, but someone who has done the latter will easily be getting far, far more than $100k, trust me. :-)

Something that I would suggest is that even if you have a pretty low interest in changing employers, try to get in some interviews. As long as you would be at least open to accepting a job offer, it's fair game to try getting an interview at companies like Intel, Facebook, Amazon, Google, etc. Most of them will ask you to code on a whiteboard. Getting good at that is a skill like any other. So practice is good. Based on the questions that they ask you, it might also help to calibrate yourself about how good you really are.

The other thing I'd suggest is that you try examining what languages and technologies these companies are most interested in, and then use that as a filter to the languages and technologies which really interest you. For example, it looks like you are at least half-way decent at being a Java programmer. OK, that's pretty marketable. But maybe your research will show that a number of companies want both C++ and Machine Learning. If that's what you find, then you better check --- and be ruthlessly honest with yourself --- how good your C++ chops really are. And if you are going to using github as your portfolio, maybe you should have some demonstration code of significant C++ and ML projects that you have worked on. (And I don't mean forking a ML code base and then making a few changes; if you're not going to start from scratch, you should have at least created a significant module or plug-in from scratch, and then make sure it's clear what is yours and what you grabbed from elsewhere.)