Archive for May, 2014

MITRE – An amazing new professional adventure!

1214_best-work-mitre-logo_485x340

I’m thrilled to share that I’ve accepted a position as “Computer Science Principal” at MITRE Corporation.

MITRE is a federally funded non-profit organization that performs technology centric research and development for the United States Government. Technically, MITRE operates multiple Federally Funded Research and Development Centers (FFRDC).

From the mission statement, “As a public-interest company, MITRE’s mission is to work in partnership with the government applying systems engineering and advanced technology to address issues of critical national importance.”

I’ll working on the design of Mission Planning Systems for the foreseeable future.

And yes, I’ll continue to blog ! (Hopefully even more !)

The specifics of my work will be classified, but my use of software development technologies and practices won’t b, so I’ll continue to blog about them.

MITRE is an amazing center of software development technology and MITRE has encouraged me to continue blogging. This can say / can’t talk about filtering won’t be anything new for me. Blogging has always required the sorting of what was public information and what was NDA.

What technology stack will I be using ?

If you’ve been reading my blog for a while you probably know that as a developer, I’m not religiously bound to any specific language, platform, or philosophy. If you browse the open positions at MITRE you’ll find .NET, Java, Python, Ruby RoR, iOS, NodeJS, C/C++, PHP, Android, MatLab, NoSQL, Hadoop and a lot of other technologies. MITRE uses whatever is the right stack for the task at hand.

Part of my job will include working with the MITRE Advanced Technology group to determine the right tools for a given application, but I’m expecting, at least for the foreseeable future to be deep in C#/.NET, iOS, and C/C++

Where ?

So, after over 15 years of living in New England, working from a home based office and traveling to the west coast to my employer – I’ll be joining the Greater Boston area commute.

MITRE has a flexible work environment but my role will really require a lot of face time with my team at MITRE and stakeholders from the US Government, so I’ll be spending a couple of hours in the car most days.

To ease the pain of the commute (and cut a few hundred dollars a week from my gas bill) I bought a new car with a good media system, BlueTooth & XM radio. I also reactivated my subscription at Audible.com – so I’m open to audio book recommendations !! (Or anything else to ease the commute !)

So ?

Being out of work is painful (at least for me). Being in the job market when you’re over 50 is a challenge and the more senior you are in your career the fewer potential positions there are in the job pool.

With the exception of two young software developers recruited straight form college , everyone I met with at MITRE had been there a long time. The shortest tenure was almost 10 years, the longer ones almost 35 years. So, it must be a great place to work, perhaps somewhere I could spend a couple of decades.

Just as a side note : the interview was epic !

Rick Spiewak, who I met at Microsoft events when I was at Microsoft, contacted me on Twitter after see a post about my leaving Zend Technology. Rick is a Lead Software Engineer at MITRE on the Mission Planning effort and an authoritative voice inside MITRE on .NET technologies. Rick suggested I consider joining MITRE (THANKS RICK, dinner is on me when I see you !)

Huge Kudos to Joe Hurley in Talent Acquisition at MITRE who was on the ball, easy to work with, moved the process quickly and communicated effectively from first contact through the offer. (It’s SO MUCH rarer than you might think.)

After a couple of phone screenings I was scheduled to visit MITRE to interview.

My interview lasted NINE HOURS and included delivering a technical presentation on a topic of my choice (I presented on a massively scalable use-case in NodeJS)!

A nine hour interview might sound like a drag but it was really a blast – it’s awesome to “talk tech” with a room full of really bright people.

One of the things I loved about working at Microsoft was getting to work with the really smart people in the Developer Division. MITRE will offer me the same kind of intellectually challenging people.

Needless to say – I’m VERY excited 🙂

A guide to the technical job search for the “over 50“ professional.

Man with help wanted sign.

I left my software related position on Feb 21st of this year due to my company’s strategic realignment (which I enthusiastically support).

The last time I was in the “job market”, I was in my early 30s. I’m now 52 years old and this job search has been a very different experience than any other during my career.

After three months of actively searching for a great fit (two and a half months longer than any other job search I’ve engaged in) I thought that this was a good time to share the experience. (Yes I expect to have a job announcement to make soon.)

First, lets address the elephant in the room for we “seasoned” professionals.

There ABSOLUTELY IS age discrimination in the software industry, especially since I was looking for technical (as opposed to management) positions.

Code phrases for age concerns include :

  1. You’re over qualified
  2. We don’t feel it’s a good fit
  3. We don’t think we can challenge you based on your experience
  4. You’ll be a perfect match for us in a year.

Of course, these things could be true, but I’ve never heard them before in my career.

I interviewed with several interesting small companies with interesting senior management (and I had great meetings with them) but when it came time to meet the teams I would be working with, I discovered I was much older than the rest of the team.

Some of the teams were very honest.

  1. We don’t want someone with lots more experience coming in and telling us what to do.
  2. We don’t use agile or unit testing or any of that stuff and we don’t want someone who will encourage management to change the way we work.
  3. After Microsoft Mozilla & Zend you’ll get bored here and leave in 6 months.
  4. We’re like a family, we hang out together after work.  (Implying that an old guy won’t fit into the social scene.)

My experience in developer community didn’t help.

I interviewed with some big companies like Microsoft who clearly wanted a young guy or gal to focus on young app developers (and college aged developer).

Red Hat told me relative to a position building developer community programs that I “had been too evangelism focused”. (Which apparently is different than developer community engagement.)

Twilio told me I wasn’t technical enough for developer evangelism 🙂 (Mmmmm ….)

So, what did I learn that can help YOU streamline the process if you find yourself looking for a new software development related gig after you’ve turned 50 ?

Recruiters are useless.

Well, there are great recruiters out there and like a great bartender, chiropractor, mechanic, etc. the really good ones are worth their weight in gold – the problem is that for every great one there are hundreds of useless ones.

Many years ago I worked with Robert Half and had great experiences as a job seeker and as an employer. In this go-around I found 2 of the 3 recruiters I interacted with at Robert Half to be completely useless. Terse unprofessional communication, illiterate email exchanges, etc.

CyberCoders was even worse. Though I did talk to one or two CyberCoders reps who seemed OK, most were terrible. I even posted on Twitter that I didn’t think CyberCoders even read resumes and they tweeted back “Yes we do”. No inquiry at all. About 2/3 of the voice mail messages I received from CyberCoders reps were entirely unintelligible. I finally got to the point where I just stopped submitting to any job listed by CyberCoders.

Many in house recruiters take weeks to respond to your submission, many do not bother to acknowledge receipt at all.

So, here are my tips for getting past the recruiter to the interview.

1.) Many, many recruiters simply do not know about the skills of the position they are hiring for. They lack the technical foundation to map your work history to the skills and responsibilities of the position that you submit to.

THEY DO KEYWORD MATCHING !

So, create a customized version of your resume for each position you submit to that highlights the job titles, technologies, and responsibilities that match the job description in the posting that you’re responding to. Within the confines of telling the truth, make your resume look as much like the job description (and the hiring company) as possible. Make the match so obvious that even a new recruiter can obviously see that you are a match for the position you are applying for.

2.) Write a specific cover letter for each  submission and target it to the RECRUITER. Specify in your cover letter why you are the right choice for the position. Call out a couple of unique matching points in your resume. Remember, recruiters work on commission, the less work that they have to do to make the match, the better it is for them – and you.

3.) Look at EVERY ad and see if you can determine the actual company that is hiring. If you can, submit directly to them.

4.) In my opinion CyberCoders is the worst! Lots of great listings but they don’t run like a professional placement / recruiting firm – they work like a dating site / matchmaker. CyberCoders forms have skills set ratings & a Q&A section. My suspicion is that if you rate yourself less than advanced in any of the skills sections they probably don’t even look at your resume.

When you have to do that, make the best use you can of the Q&A section to try to convince the recruiter to make a connection for you. I submitted to a dozen positions listed by “Peter” on CyberCoders and emailed him directly to ask for a phone call. Though he looked at my LinkedIn profile, he never even paid me the courtesy of a single reply.

5.) Many local recruiters will want you to come meet with them in person. You’ll go sit with a kid half your age who will ask you “what are you looking for” and “what motives you” and a bunch of other apparently silly questions that you would expect to be obvious from your resume. Yes it will feel like a waste of time, but this is your opportunity to cultivate an advocate in your job search.

Yes, bad recruiters suck and there are tons of them but good recruiters are worth their weight in gold !

Your Resume

1.) 2 Pages MAX !!!!!

I know, we old guys (and gals) have tons of great experience, but find a way to sell yourself with a TWO PAGE resume. Anything after the second page won’t get read anyway and many hiring managers tell me that a resume longer than two pages DECREASES your attractiveness.

2.) Trim your work history. I know this sucks to do. I’m proud of my experience, but 30 years of experience on your resume just highlights your antiquity.

3.) Have MULTIPLE versions that are specifically tailored to the different roles (CTO, Architect), companies or even specific jobs that you are submitting to. Make identifying you as an exact match easy.

4.) Consider using a professional resume writer. They are not that expensive and they can be worth the money !

5.) Use a unique professional design (I’ll post mine shortly). The economy and therefore the job market is bad so every job opening gets lots of resumes submitted, make yours stand out.

 

Use the web – Old School versus New School

1.) Old School – Monster, Indeed, Traditional “Head Hunters” etc. still get lots of listings and you can use a resume submission service to list you and your resume. (I think I paid $30 for a bulk submission.) It’s worth a try. Note, you may want to use a throwaway email address and a burner phone just for your job search because you WILL get junk calls and email if you list your availability publicly.

2.) New School – For software professionals (in my opinion) the two best resources on he web for your career search are LinkedIn.com an careers.stackoverflow.com

3.) LinkedIn, LinkedIn, LinkedIn – make sure your resume and profile are complete. Get a premium membership (for a dozen reasons.) Post on linked in and announce your availability.

Be Prepared

1.) If, like me, it’s been a decade or more since you found yourself in the job market, you may be surprised (as I was) by how much more slowly things move then they did back in the dot com days. Have at least six months financial buffer on hand  so that you don’t have to take something less than you really want just to pay the bills.

2.) Start building the experience for the job you want now.

Here’s what I mean. I REALLY wanted to go to work at Acquia. (The folks that make Drupal) I applied for several technical and management positions at Acquia and went to their headquarters to interview. The place is cool, the products are cool and all the people that I met (including the corporate recruiter) were AWESOME ! But I just didn’t have enough presence in the Drupal community or enough Drupal specific experience to compete successfully against other applicants.

In hindsight, I should have made the time in recent years to submit code to Drupal and increase my visibility on Drupal.org.

The more visible the company that you are applying to – the more competition there will likely be for the position that you want.

Build and Work your Social Network

Your Blog (you should have one) LinkedIn, Twitter, FaceBook, Google+, StackOverflow, etc.

Virtually all of the best / most interesting leads that I’ve had have come from the people in my social network – invest in YOURS !

The Interview.

Since most of my blog readers are professionals I would hope that these tips will all fall into the “obvious” category but I’ve heard LOTS of stories about interview stupidity so I thought them worth including.

1.) If you can’t be on time – don’t bother at all. Get a GPS, Print out directions from Google Maps, Print out directions from the company’s website, print out the email confirmation with contact info for the person you are interviewing with. Consider the traffic you will encounter on the drive and leave AN HOUR early (and wait in the parking lot if you are early.)  Being late for an interview (unless you show up bleeding) nearly guarantees you won’t get the job. It shows that you are unreliable, a poor planner and / or researcher, that you aren’t REALLY interested in the position and that you don’t respect the time of others.

2.) Find out the names and titles of the people you will be interviewing with and them find them on the web. Look for blogs, LinkedIn profiles, press releases etc. Know who you are speaking to.

3.) Research the company and brush up on all the technology and the market segment(s) the job will include. This can help to prove that you are both motivated and interested as well as resourceful.

4.) Overdress !  I don’t care if the company has a casual dress code. Show that you can present yourself as a professional.

5.) Use your spare time to get in shape. Be well groomed. Health & fitness projects motivation, energy and certain approach to life that is attractive to employers.

6.) De-emphasize salary discussions but be prepared to have them. It’s not all about money, but the financial discussion can be difficult to have. As a senior / experienced professional, especially if you are coming from a well known company, there may be an assumption that your salary expectations will be beyond the companies salary range. If you are primarily focused on the salary you will likely find yourself  a bad match anyway. Find a job that you will love with people you really want to work with and then work out the salary issues.

7.) Follow up. Without being pushy, keep yourself in the conversation.

8.) Say “I want this job” out loud.

What’s HOT and what’s not !

What Programming Languages are “hot”.

I’m in the greater Boston area and specifically searching in this geography. Engineering trends tend to have some geo-specific leaning, so take these observations with that in mind.

Here’s my impression of what programming languages are most in demand at the moment in rough order by popularity.

1.) Java (Enterprise/Web)  – yup, this was a surprise to me, but there are lots of Java Dev, Architect and Dev Manager positions and they seem to pay a bit higher than other technologies.

2.) JavaScript – I know, REAL programmers don’t write JavaScript but it’s the NEW thing. There are lots of openings for experienced JavaScript professionals, both front end (AngularJS, Ember, jQuery, ExtJS) and server side NodeJS.

3.) Objective-C and Java for Android – but you knew that !

3.) Python and Ruby On Rails. Python is a bit more popular, but not by a really large amount. Of additional interest is that the Python & RoR ecosystems seem to be the most in tune with distributed teams so if you are interested in working from home, I’d invest in becoming an expert in one of these.

4.) C# – Note to .NET developers. It appears that the Microsoft Windows Language wars are over. I have not seen a single position doing new development with VB, though I did see a few positions migrating VB6 and VB.NET to C#. There are still more Web Forms jobs than MVC jobs. WPF is hot and SilverLight (and WinForms) is not.

5.) PHP – A good number of positions but mostly “ham & egg” development and lower salary ranges. (Which made me sad since I really like PHP.) For PHP Developers Laravel & Zend Framework are most popular.

6.) C/C++ for Linux internals and embedded are fairly popular.

7.) COBOL – Yep, there are still COBOL jobs available.

And what about certifications you ask ?

Language certifications seem to be only of nominal value to potential employers but there are some certifications that make a real difference.

1.) Anything SCRUM. Scrum is very popular and many organizations have moved or are moving to SCRUM. SCRUM certification seems very much in demand.

2.) PMP – Project management certification seems pretty in demand as well.

Being out of work, even when it happens for all the right reasons, is difficult. I’ve been picking up bits of consulting work but I’m very much a mission oriented guy and being part of a team is central to my makeup. It’s a bit like holding your breath while waiting for to find the RIGHT THING !

Stay Calm and Carry On – It’s nothing personal. 

Even when your sure your age was a determining factor that kept you from getting an offer, don’t let it get to you. A number of the organizations that told me “I wasn’t a fit”, even tough I felt like a TECHNICAL match, forced me to agree, if THEY had an issue with the age difference between me and the rest of their team – I probably WOULD be unhappy with their culture.

Hopefully some of the tips above will help other folks – especially the more senior professionals in my readership.

At 52 I don’t feel AT ALL like I’m in the late stages of my career, quite the opposite.  I have young children at home so I’m planning on at least an other 20 years building great software solutions.

I’d love to spend them all 20 at my next employer, but you never know what the future will bring.  Building your parachute now will help you land softly if you even find yourself back in the job market – especially if your “over 50“.

My dev stack is better than your dev stack !

JerseyDev

I’m preparing a presentation for a large consulting firm on architectural options for a massively scalable, bi-directional real time application.

I’ll post about the technology and the architectural choices in the near future but I’ve been chuckling at most of the content that I’ve been reviewing and though I’d spill a few thoughts about it.

Specifically I’ve been looking at “alternative” choices that might be uniquely ideal for this particular use case.

As a basis for understanding the challenge…. Up to half a billion users (yes, billion with a B) sending an update to the server once every 3 minutes and retrieving a stat structure every one or two minutes.

About six months ago I started mapping this use case scenario to Node.JS and NoSQL (Redit or MongoDB).

There are  a few pretty big / high profile on-line properties already using Node.JS in production.

But, mining through articles and on line conversations has reminded me to the religious zeal with which many developers defend their choice of developer stack.

Node.JS is not SINGULARLY unique in it’s non-blocking architecture but it is somewhat unique in that it it’s FUNDAMENTAL PREMISE is non blocking, that it’s syntax is JavaScript (the Google V8 engine) and that it is INNATELY web (not requiring a separate http server.

What’s I’ve been chuckling at is how threatened certain camps of mainstream developers seem so threatened by the emergence of any new technology in their space.

In response to article on Node.JS .NET developers jump in to try to convince you that you can do the same thing in .NET using Async, Threads and customizing the IIS pipeline (just follow these 40 steps.)

Java developers start talking about NIO as though it’s the same thing as Node.JS.

PHP devs point you at ReactPHP

Python developers start talking about Async I/O and threads, etc, etc, etc.

But what’s wrong with just accepting that there is a new technology that’s very good at a specific category of use-case?

Ok, I’ll admit I never loved programming in Java, but I spent a decade at Microsoft digging C#. I also did PHP there and ended up Zend (“The PHP Company”). I spent a year and a half at Mozilla with is mostly a Python shop and I still like all three.

But I don’t need any of those to be the right answer for every software development challenge.

Too often I see dialog from a .NET developer who needs every solution to be only .NET  or from a Java developer who needs every answer to be Java.

For the last 13 years I’ve worked for organizations that manufacture a specific set of developer technologies. I frequently donned my “application/solutions architect” hat to help companies answer the question “what is the right approach for solving THIS business problem”. Even when I was working for a company who’s success was based on a technically bias answer to those sorts of questions, sometimes I answered in the alternative. (How fun it was to explain to my Microsoft management that I recommended PHP for a project 🙂 )

It’s my personal opinion that many folks close their minds to this “best mapped use case” approach because technology grows and evolves so rapidly many of us just give up on the idea of staying on the “front edge”  of  of the software development industry. In some ways we’ve gone from looking for that silver bullet to trying to convince folks that the stuff we are already good at IS THE SILVER BULLET.

All of this I suppose by way of encouraging you to open your mind and spend a little time looking at how emerging technologies might provide better solutions to some of the problems you solve in your day job.

I’ll post the technical blueprint for the above referenced architecture using Node.JS and NoSQL in the near future.