The saying goes you never get a second chance to make a first impression, and it is well-documented that this is never more true than in the effort to hire great technical talent. Complaints about the interview practices of some companies and anecdotes about how recruiters make foolish approaches are quite popular reads lately. As someone in the hiring business, the criticism can be painful to hear, but when justified with evidence of ineptitude it is certainly understandable.
Demand for elite developers is so competitive (and talent is so hyperaware of this fact) that both recruiters and company representatives rarely get a second chance if their first contact or the ensuing hiring process is received negatively. The best case scenario for the headhunter approach gone awry is to have the attempt ignored, and the worst case is public shaming by a tech celebrity. It is particularly painful when a recruiter or company turns off an attractive candidate (whether through an email or hiring process) that possesses a very rare skill or experience, or worse yet a high degree of both skill and community influence.
Accomplished technologists can be brutally unforgiving to even the slightest perceived breaches by recruiters, and the level of outrage is often congruent to the programmer’s self-perceived industry status. This is most likely a function of the sheer volume of noise received by high-end talent with status, and the frustration that noise can cause. Junior level candidates tend to appreciate any type of attention, while the more senior or recognizable professionals seem to rarely find any recruiter contact worthy of a positive response. Beyond just the recruiter problem, the interview process and practices used by companies cause very strong negative reactions by many in the industry. When offended, those that feel they’ve earned ninja status (used ironically, please stop saying ninja) seem most likely to wield the sword.
Applicants that appear average will probably be treated that way. But when a recruiter or a company hiring manager discover what could be that once-in-a-lifetime potential hire, or even a candidate that would seem to fall into the top 10%, they must be flexible enough to change their standard hiring protocol while exercising an abundance of both caution and tact at every contact. Many companies homogenize the process for all candidates to their own detriment, and when dealing with in-demand talent that typically comes with a bit of ego thrown in for good measure, treating the ninja like a common commodity is a critical error.
What are the most obvious ways that recruiters and companies turn off the most qualified candidates during first contact and the subsequent hiring process?
First, mistakes in the approach:
- Impersonal contact and lack of research – The link earlier in the article referencing a recruiter approaching DHH for a Rails role happened more than once, and notably a recruiter for Groupon made the same mistake. These examples are well beyond a typical recruiter infraction, as most Rails engineers are not DHH and most recruiters are not this lazy and clueless. The ‘Let’s connect on LinkedIn‘ invite without any point of reference also applies to this category. Recruiters are given little leeway and must conduct at least minimal research before contact, and then must choose their words wisely. Once you know a bit about the candidate, tell him/her why you felt it was appropriate to reach out. Be specific.
- Referral requests – Recruiters are trained from birth to end every communication with ‘Do you know anyone else who might be qualified?‘, and they are often asking complete strangers. Technologists at the lower levels look at this as an opportunity to help a colleague find work (and maybe even get a referral bonus), while ninjas who make plenty of money have no interest in helping most recruiters and view the request itself as a breach. Don’t ask top people for referrals until you have at least developed some form of relationship, and even then only with caution.
- Approached by the wrong person – When courting high-end talent (particularly for a small company), it is wise to get an internal talent or leader involved as early as possible. Your junior recruiter that started last week should be kept in check until he/she knows how to market the company, and that marketing skill should be honed in conversations with junior candidates that generally require a lower degree of difficulty and thus reduced potential risk. Startup CEO, CTO or Development Managers should be willing to send a quick note from their own email in order to get a ninja’s attention early in the process. Recruiters need to know when it may be appropriate to step aside for first contact.
- Lack of details – Vague, boilerplate company descriptions rarely get the attention of top talent, and may turn off the candidate completely without ever getting the chance to show them more. Provide as much detail as reasonably possible to demonstrate that you have no intention of wasting their time.
And in the hiring process:
- The HR phone screen – I cringe when a client responds to my submittal of a top talent with ‘This one looks great! We’ll have Joe from HR do a quick phone screen‘. NO! Some recruiters vet engineers better than others, but if a candidate looks stronger on paper than most you see, forgo the pleasantries and get down to business.
- Standardized tests – These are fairly rare with startups and small companies and for midsize and large companies these tests serve as just another way to scare off top talent. Tests for IQ, personality types, and even third-party technical tests tend to give the wrong impression to talent. Development managers at companies that employ standardized tests could be frustrated with the skill level of their applicants, and should want to promote policy change or at least allow for exceptions.
- Disorganized interview process and inflexibility – Missed phone calls and making candidates languish in a lobby while waiting for an interviewer is inexcusable when wooing a strong candidate, and tech talent may feel these indiscretions could reflect on your work environment. Even if you traditionally like to keep interviews very loose and informal, use at least a small amount of choreography when entertaining the ninja to keep their engagement level high. Accommodating a request for a call either before or after hours could also be the difference when interviewing candidates that are unable to use business hours for meetings.
- Lowball offers and negotiation games – After investing a fair amount of time building mutual trust and admiration during the interview process, the last thing you should do is play games when it comes to sealing the deal. The long term value of the hire should not be risked for a few thousand dollars saved through negotiations.
Conclusion: Companies and recruiters need to do a better job of customizing their approach and treatment of top technical talent. While technical recruiting is generally considered a numbers game focused on high-volume, the courting of the most elite developers requires a completely different and more time consuming campaign to be implemented by your most competent resources.
Discuss on Hacker News.
Have you ever had a conversation with a fellow technologist that you felt wasn’t quite at your skill level, and at some point you discovered that she/he makes $20,000 more than you do? $50,000? As someone who has had a great deal of access to the salary and compensation details for thousands of software engineers over many years, I can report that there can be significant variation in salary between technologists with almost indistinguishable skills and qualifications. This may not be news to some, but the reasons might not be obvious to professionals in the field, particularly if someone has only been exposed to a small subset of industries or companies. Many of the explanations are somewhat unique to this industry or just more prevalent in the software world. Regardless of whether or not money is a primary motivator in your career, it is still useful to understand why others may be earning more (and what you can do to join them).
What are some possible explanations as to why someone equally or less-qualified makes more money?
- Public image and intangibles – An average technologist may be compensated above more productive co-workers if there is some advantage that the company sees in that person’s employment. Community influencers such as open source project leads, conference organizers, meetup/user group leaders, speakers, and authors may all fall into this category. In business this is the concept of goodwill, where an asset has a higher value due to an intangible. Google’s high profile hires of James Gosling and Ray Kurzweil and Dropbox’s hiring of Guido van Rossum came with a certain level of goodwill bundled. On a local level, a company may believe that hiring the local Python group leader could make hiring Python pros easier and less expensive, which may justify a higher salary independent of the developer’s quality or production. Regulars on the conference speaker circuit can ask for a premium simply based on the PR provided every time their bio is published on an event website.
- Negotiations and raises – Software professionals are often stereotyped as unskilled negotiators or uncomfortable in situations where they are seeking additional salary or perks. This first requires the courage to ask for more (in the form of a raise, or a higher starting salary for a new hire), and then the knowledge and skill to ask effectively. As a recruiter I typically handle salary discussions for my candidates, and I know that for most engineers that particular service is highly valued. A difference of even a few thousand dollars as a starting salary has the potential to dramatically alter your lifelong earnings. Remember that this number is regularly used as the basis for bonuses and raises, and most importantly it usually has some bearing on salary at your next job. Think of starting salary as the principal level for compound interest.
- Market knowledge – Remember that conversation alluded to in the first line of this article? If you had three or four similar interactions within a year you may have noticed a pattern and it seems your friends might know something that you don’t. Many engineers aren’t even aware that they are paid below market rate because they just trust that they are fairly compensated and have no reason to investigate further. I have had conversations with experienced and well-qualified developers who are floored when they learn that they have been paid 20-30% below market rate for many years. Know what you are worth.
- Self-promotion – Even if the high skill level is there, many technologists are either unable to properly express their own expertise and accomplishments or feel awkward tooting their own horn. The ability to market yourself often starts with a powerful résumé and a confident interview presence when trying to maximize salary at a new job. When staying with your employer, self-promotion requires the savvy to make your accomplishments known without looking like a braggart.
- Consulting differential (both independent and staff) – Developers that are independent consultants charge clients a premium to account for expected frictional unemployment and to address the fact that a temporary employer typically will not make any real investment in the career of a temporary employee. It is rare to see independent consultants sent to conferences or trainings by their clients, and independents do not always get the most desired projects. Independents are also on the hook for their own benefits, retirement savings, etc. Salaried employees of consulting firms are also often paid above other similarly qualified professionals, as it is easy to measure a consultant’s contribution to the firm’s net revenues based on bill rates, billable hours, and their compensation package. There may also be regular travel or variable commute that tends to inflate salaries. Salaried consultants who know their bill rate, utilization, and total compensation package have a distinct advantage when trying to justify their value (and salary) to an organization.
- Profit vs Cost Centers – Similar to consulting, companies that use technology as their main source of revenue tend to pay higher than firms where it is considered a cost center. Building software products that will be sold usually results in higher salaries than building systems for internal use. There are some major exceptions, but those tend to be specialized to industries where technology utilization is a key differentiator in the performance of the firm’s primary business interests (trading systems come to mind).
- Rare skill – The premium paid for even one single rare skill among many common skills can be substantial. When a new language, framework, product, or platform is hyped as the ‘next big thing’ and adoption begins, even junior level talent with that skill can earn above more generally qualified individuals. This is simple supply and demand for a scarce resource. In years past the premium was greater for rare skills, as companies today seem more confident in their ability to train an existing resource than to hire someone new and much more expensive.
- Time expectations – Some employers pay a premium because of the high expectations they place on hires. Unless you have some vested interest in the success of the company (stock, profit sharing), a 70 hour work week is probably unacceptable unless you are being compensated accordingly for that level of commitment. Positions that require employees to be on-call are also commonly paid above market. Work/life balance has a price, and some are willing to sell.
- Long tenures at big companies – Many large organizations have systems of pre-determined fixed raises and regular bonus or vacation increases for certain milestones. The hire’s value to the company increases over time as they become highly specialized in a certain environment, and the concept of golden handcuffs is born. The downside of this for the employee is that it often leads to compensation well above true market rates, which makes it nearly impossible to find new employment at a lateral compensation rate. When these types are victims of a layoff, the result is brutal.
- Location – No explanation needed, I hope.
Conversely, here are a couple explanations as to why someone might make less.
- Startups – Startups often exchange equity for cash compensation. These employees are often earning less for the opportunity to receive a big payout. Candidates negotiating with startups must place their own figures on the value of the equity, which is a difficult task. Startup compensation today is much more competitive with large companies than it once was, at least in my experience.
- Benefits, work/life balance – Since most professionals refer to compensation in terms of cash paid, employees that receive significant value in their benefits and perks may be mistakenly considered underpaid. Generous paid time-off, tuition reimbursement, and childcare can be major expenses that are covered by some employers and often not included in discussions.
- Experience value – The opportunity to work for certain companies, to learn a valuable skill, or to be on a highly-regarded team is a reason that many engineers may sacrifice some salary, and shops that provide that ability may leverage that during negotiations. Many developers are entirely comfortable with accepting compensation below market as a trade-off for the positive effect on their career and marketability.
If the topic of compensation comes up with other technologists, consider that there may be several explanations and hidden factors for the disparity between numbers. When exploring new opportunities, keep in mind that the amount of your offer is not solely based on your skill level relative to others or the value the company feels you will provide. In situations where several of these explanations apply simultaneously, the numbers become even more skewed.If you found this post useful, you may find my ebook Job Tips For GEEKS: The Job Search even more helpful. You can also follow Job Tips For Geeks on Facebook, Twitter, or Google+.
Over the past few years my clientele shifted from a mix of mostly mid-market companies and a few startups to almost entirely startups, and that shift has resulted in a wider palette of languages requested by clients. Where my business was about 95% Java for the first 10+ years of my career, today it is closer to 25%. As I’ve written before, my business veered naturally from a pure Java focus when a considerable amount of the Java talent I have represented in years past started to migrate and show interest in diverse languages and ecosystems.
Unlike the boom periods for startups in the past, it appears that today’s startup is much less likely to choose Java as the primary development platform. Many developers who did Java work for startups in the mid 2000’s sought higher ground in the late part of the decade when small shops took a hit, and found themselves working for large companies and more corporate environments.
Flash forward to the past few years and the resurgence of startups. Many of those engineers who took shelter in the larger firms are now interested in establishing themselves once again as a major contributor on a small team in a startup, and when I have represented some of these highly qualified developers to startups now, I’ve been met with the feedback ‘The candidate’s résumé appears too enterprisey‘. As an aside, I don’t get that response nearly as often for Java engineers that stayed with small companies.
The enterprisey label, in my experience, seems to be used in two situations that can often (but not always) go hand-in-hand. First, enterprisey is often used to describe candidates that come from large development shops regardless of the languages used (although Java and .Net platforms are the norm), where the bias is that the development culture and the broader company culture make that candidate less likely to succeed in the startup. This is the result of preconceptions surrounding development methodology, possible unnecessary complexity in applications, a slower release schedule, or the impression that developers in these larger environments are sheltered from tasks related to data, devops, sysadmin, and QA that are frequently handled by developers at startups. The label may be applied liberally to virtually any candidate coming from a company larger than the hiring firm.
The second common enterprisey tag is used on any developer using Java or .Net regardless of the employer size, due to the predominant viewpoint that other language communities have developed regarding Java/.Net being wrought with and plagued by dozens of frameworks and bloated stacks. As someone who sees thousands of résumés a year, it is clear that résumés of Java and .Net developers are often significantly longer than those of developers in other languages, but there could be several factors at play there beyond just the number of potential bloat items (insert Java = verbose joke here). At a distance, the résumés of Java developers can resemble an eye chart, with acronyms outnumbering actual words. One hiring manager of a Scala shop provided this gem:
“The laundry list of legacy enterprise technologies (JMS, JMX, etc.) doesn’t do anything for me.”
The word ‘legacy’ seems particularly cruel there.
Sadly, many of those making hiring decisions in these startups are quick to dismiss a highly-skilled talent simply because of their experience working for a larger company or their primary language being in the Java or .Net worlds. Whereas an interest in, say, functional languages is now often used by startups as an indicator of ability, the prolonged use of Java or .Net at a large firm can be a detriment when applying for work in any other language or polyglot environments.
So how can engineers labeled ‘enterprisey’ escape that bias and be accepted by smaller shops with different languages?
Résumé and bio de-enterprisification – That’s not a word (yet), but the concept would be to go back and make sure your résumé/bio/LinkedIn profile/etc. doesn’t read like a corporate Buzzword Bingo card. Eliminate or modify anything that may appear steeped in bureaucratic process and procedure, and be wary of any items that can be perceived as indicative of a glacial development pace. References to project length and time between releases should typically be avoided. Emphasize new development over maintenance tasks, and accomplishments over process. Listing too many tools, frameworks, and specifications will often work against you and may be considered an indicator of your dependence upon them. Shortening the résumé is almost always the way to go here, and three + page résumés generally smell of enterpriseyness.
Develop other language credibility – Any code that you can point to that does not run the risk of being labeled enterprisey is better than nothing. As stated before, some startups perceive functional programming interest as a marker for ability, so even an implementation of a typical interview exercise in a functional language (or one different from your primary) has value. Provide links to this code on your résumé and reference any personal projects that are applicable.
Stop calling yourself ‘LANGUAGE Developer’ – I do it too (all the time), but you should not. Use whatever you feel is appropriate – Software Engineer, Programmer, Developer, Geek – but stop inserting a language when describing yourself on paper or verbally. And perhaps more importantly, stop thinking of yourself as a LANGUAGE Developer. Sometimes you may need to dumb it down so the clueless recruiter will find you, but try to minimize those instances the best you can (and do you really want that recruiter to find you anyway?).
Express your outside interests – Just because you get paid by some insurance company to write Java/.Net apps all day doesn’t mean that is who you are. If you are exploring other languages through books, conferences, and self-study, make that known in whatever way may be discovered during your job search (résumé, blog, social media, etc.). Hobbies like robotics, Raspberry Pi, and Arduino are probably unrelated to your job but not necessarily unrelated to your career. Any technical interests beyond the primary function of your job demonstrate at least some level of versatility and the ability to adapt outside of your enterprisey 9 to 5.
There seem to be a rash of “Am I Unemployable?” posts and comments lately on sites that I frequent, and after reading details the answer in my head is usually “Not quite, but sounds like you are getting there“. In other words, someone will hire you for something, but many who assess themselves as unemployable are going to feel both underpaid and undervalued when they finally find work.
How does a technology professional go from being consistently and happily employed for a number of years, only to find himself/herself suddenly unemployable? Better yet, what are the key differences between someone who spends months on a job search and someone who can unexpectedly lose a job Friday and start a new one the following Monday?
How do certain people get job offers without having to even interview?
It isn’t simply about skill, although that is obviously a factor. Even pros that are highly productive and well-regarded in some circles can encounter challenges in today’s hiring environment. It’s about creating relationships and developing your reputation/visibility.
In my experience, pros that are always in demand and rarely (if ever) unemployed seem to share certain sets of habits, and while some of the material below is Career 101 there are some that you probably never considered. As a longtime user group leader and recruiter of software engineers for the past 15 years, I see this first hand on a daily basis. Let’s start with the habits that are the least obvious and progress to some that are more widely practiced.
Interview – How often do you interview when you are not actively looking for a job? For most the answer is never, and I’d encourage you to take at least a couple interviews a year. Going on the occasional interview can serve two purposes. First, they are a way to make new contacts and keep your name in the minds of potential employers, with the added benefit that these same interviewers may be working at new companies in a year or two. One interview could lead to an ‘in’ with four or five companies down the road. Second, it is the only way to keep interview skills sharp. Interview practice is best done live without a net, and failing the audition for a job you truly wanted is often attributed to rusty interview chops. Even a simple informational interview request (made by you) is an effective and creative way to make first contact with a potential employer.
Know when to leave your job – Without question, the group having the toughest time finding work are unemployed with say ten+ years at the same company, and a close second would be employed workers with that same ten year tenure. For anyone about to scream ‘ageism‘ please hold that thought, as older technologists that have made smart moves do not typically have this issue. I would add that older engineers who possess the habits outlined here are the group being hired without interviews. There are always exceptions, but tech pros can stagnate quicker than those in other industries due to the speed of change in technology.
The definition of job hopping has morphed over the past fifteen years, and it is now understood that semi-regular movement is expected and accepted. Where other industries may interpret multiple employers as a symptom of disloyalty, in the software world a pattern of positive (moving to something better) job changes is often more indicative of a highly desirable candidate. Conversely, someone who has remained at a company for many years may be viewed by employers as loyal to a fault and potentially unambitious. If this person has solid skills, why has no company picked him/her up yet? Changing jobs before stagnating is critical to overall employability, and how quickly you stagnate will vary based primarily on your employer’s choices, your own ability to recognize that stagnation is happening, and your desire to not let it happen.
Make ‘future marketability’ a primary criterion when choosing jobs or projects – Carefully consider how a new position will impact your ability to find work later in your career and use that as one of your key incentives when evaluating opportunities. Details about your roles and responsibilities as well as the company’s technology choices and reputation in the industry are all potential factors. Does the company tend to use proprietary languages and frameworks that will not be useful later in your career? How will this look on my résumé? Many candidates today are choosing jobs or projects based on an opportunity to learn a new skill, and for this they are usually willing to sacrifice some other criteria.
Reach out to others in the community (not coworkers) – How many times have you sent an unsolicited email to someone in your field that you don’t know? “Congrats on your new release, product looks great!” or “Saw that you open sourced, look forward to checking it out” as an email or a tweet is an effective way to create a positive impression with a person or organization. Twitter is great as a public acknowledgment tool, and the character limit can actually be advantageous (no babbling). If you stumble on an article about a local company doing something interesting, there is much to be gained by a 140 character pat on the back. This is essentially networking without the investment of time.
Lunch with others (again, not coworkers) – You have to eat lunch anyway, so how about inviting someone you don’t know that well to lunch? Perhaps include a few people that share some common technology interest and turn it into a small roundtable discussion. Meeting with other tech pros outside an interview or meetup environment enables everyone to let their guard down, which leads to honest discussions about the experience of working at a company that you may consider in the future. It’s also an opportunity to learn about what technologies and tools are being used by other local shops.
Public speaking – This is an effective way to get attention as an authority in a subject matter, even on a local level. Preparing a presentation can be time consuming, but generally a wise investment. Even speaking to a somewhat small group once a year can help build your reputation.
Attend a conference or group meeting – This isn’t to be confused with going to every single meeting for every group in your area. Even getting to an event quarterly keeps you on the radar of others. Make an appearance just to show your face and say hi to a few people.
Reading and writing about technology – One could debate whether reading or writing has more value, but some combination of the two is likely the best formula. If you don’t know what to read, follow some peers and a few respected pros from your field on Twitter, LinkedIn or Google+, and make a point to read at least a few hours a week. As for writing, even just making comments and discussing articles has some value, with perhaps more value (for job hunting purposes) in places like Stack Overflow or Hacker News where your comments are scored and can be quantified. Creating your own body of written work should improve your understanding of a topic, demonstrate your ability to articulate that topic, and heighten your standing within the community.
Build a personal code repo – Many in the industry balk at this due to the time required, but having some code portfolio seems to be on the rise as an expectation hiring firms have for many senior level candidates. If the code you wrote at work is not available for demonstration during interviews, working on a personal project is more critical.
At first glance, this list may appear overwhelming, and I’m certain some readers will point to time constraints and the fact that they are working 60 hour weeks already. Some of these recommendations take considerable time, but at least a few require very little commitment. Employ a few of these tactics and hopefully you will never suffer through a prolonged job search again.