Friday, April 5, 2013

Senior Developer Interviews: Tales from the Trenches

From my experience as a Junior Software Engineer and Java Developer, since there is such high demand for software developers as soon as you qualify for a job in the field you have a pretty good chance of landing one in short order.  Trying to go for a Senior Developer job broke the mold in a number of ways.

First off, people rise up through the pay grades for the first two levels pretty rapidly, which means that you're competing with people with approximately your experience level.  However, people with TEN years experience can be applying for a Senior Developer job.  This of course means that the required 5+ years experience is going to put your résumé not looking too hot on paper.  However, you can tell yourself that you "punch above your weight" so you'll impress them on the purely technical side.  Easier said than done as they say.

In the first two tiers, you're treated as a technical specialist.  You just have to be an expert in JavaScript OR Java OR SQL, and you're not even really expected to know in detail how those fussy clusters of computers with their web containers work in detail, that's IT's job right?  Not at the Senior level though.  You're expected to be able to prance about the entire software stack with ease and grace.  Saying that the JavaScript prototype concept is kinda like Java inheritance and leaving at that isn't going to cut it.  Confusing your jQuery with your XPath is not going to cut it.  Not knowing how to make a Java Singleton a true Singleton when deployed to a clustered environment isn't going to cut it.  Not knowing the difference between an inner and outer SQL joins isn't going to cut it.  Not knowing the details of your web containers' class loader isn't going to cut it.  On top of all of this, you're expected to have excellent soft skills at this level as well.

Just getting over social anxiety by taking a metric ton of Prozac every day is just the preliminaries of the soft skills you're going to need.  In addition to being able to charm people ("Hay!  I thought engineers were allowed to be socially awkward!"  Nope) and having the standard "Excellent Written and Verbal Communication Skills" where you thought communication skills were being able to feign interest in Steve's ukulele collection and your bosses Whole Foods shopping, veiled "spirituality" references and superstitious neo-hippy quasi-Eastern bull****, but also be able to orate and deliver technical speeches / presentations and be able to handle yourself in the office-politics charged meetings that you'll be invited to more and more. All the while keeping your code throughput high and keeping your inboxes at 0 (you also should have read Getting Things Done by now, or the context switching will require a few buckets of daily anti-psychotics as well).  Did I mention a strong social media presence and a great Klout score too?

In summary to snag that $100k+ Senior Developer job you won't just need to hone your existing skill sets, but learn many additional ones as well.  You will need to possibly hold a regular Programmer position until you have 8-10 years experience.  You will need to know the entire software stack to the point of being a quasi-superhero of computation.  Lastly you will need truly overwhelming social skills, including conducting presentations, giving prepared speeches and attending and holding meetings.  All in all, I have about 7,000 pages of books queued up to read to bring myself up to these levels, because possibly the most valuable skill you can have is being able to rise to a challenge.