Sourcing in practice: Dev advocate example

Disclaimer: You won’t find anything impressive in this article. No crazy hack, no crazy exotic sourcing, no database leak exploit. This article is made for people starting in sourcing. You will figure out that if they stick to Linkedin you’ll both only see the tip of the iceberg, and compete with recruiters who do the same. My goal is to make you understand that sourcing isn’t sorcery, geeky stuff nor rocket science: it’s a mix between having a strong process and a good state of mind: you’ll find people where they live, not where you’d like them to be. I will introduce some tools, all of them are free. At the end of this article, you should be able to be sourcing at scale!
Disclaimer bis: I won’t talk about GDPR, ethics, etc… You should always take care when it comes to both people and data (that includes your own data).

As some of you may know, I work for SonarSource, the company behind SonarQube, SonarCloud, and SonarLint. These products are used by devs willing to get back ownership of their code, focusing on code quality and security.

We do enjoy strong community support; and to help us educate this community on best practices, we are nowadays looking for a C++ Developer advocate. That sounds like a great sourcing mission!

1st step: Know what you are looking for

So this step isn’t specific to C++ Dev advocate sourcing, you should do it for every single position you source for :)
As Guillaume Alexandre is reminding in his brilliant training,

DON’T START SOURCING UNTIL YOU CAN EXPLAIN THE ROLE YOU’LL SOURCE FOR TO A 3 YEARS OLD KID. That includes: what would make any candidate successful? What would be a blocker? What is the perfect candidate attracted by? How does he live, what is he looking for? etc…

2nd step: Start…with the start!

Tris Revill explains what the Intent-based model for TA is in this medium article. This is a must-read for any sourcing aficionado. In short, he demonstrates that there’s no value in searching for candidates on exotic platforms (hello Clubhouse) without checking your ATS first. If you can’t properly perform searches in your ATS, then it’s time to buy a new one!
When you’re 100% sure that the perfect candidate isn’t in your database already, check your classical job boards, LinkedIn, etc…

In the same way, before even thinking of typing anything in Google, ask your hiring manager and your team if they know anyone.
Hint: if they don’t, it’s already time to challenge the need! Chances are high that the candidate you’re looking for doesn’t exist.

3rd step: World Wide Web, find where the data is!

Rule number 1: don’t look for your target, look for places where your ideal target is!
We can expect C++ developer advocates to be active in C++ communities, giving talks, writing blog posts/books, etc. Let’s look for those places! We will first show how to find names, and in the next section, we’ll see how to store this data in spreadsheets.

Blogs:
“Homemade” blogs are cool places to look at (and, with C++ I discovered a new rule: the uglier the blog is, the better the content will be!); “official” blogs from your competition are even better! For instance, Microsoft is having its own blog about C++: https://devblogs.microsoft.com/cppblog/
Guess what? Each author's name is written in an HTML class named entry-author-link and is so easy to scrape.

Books:
You can either check what Amazon has in stock and scrape the author names or -and it’s a better option-, ask your C++ developers which books they do have in their bookshelves.

Talks:
Few options there. If you type “top c++ conferences”, Google brings this as a 1st result: https://isocpp.org/wiki/faq/conferences-worldwide
more than 90% of these conferences do have a “speakers” page, that you can actually scrape. It should give you hundreds of people already. For instance: https://www.meetingcpp.com/2020/Speaker/
Pay attention to the URL structure. Most of the time, when you write “2019” instead of “2020” it will give you the speakers of the previous year as well. You just doubled your number of results!

Second option, for talks, please try: https://www.google.com/videohp
As you may quickly understand, it’s made and powered by Google, so it accepts boolean queries.

People:
The easiest way to find active people within a kind of community: distinctions, awards… For the Java community, you can check the Java champions by Oracle; for other technologies, the Microsoft MVP badge recognizes exceptional leadership.

Interactions:
IMHO looking for interactions is a cool way to find your target. Look for Slack channels (PA Fortin made a cool article on Slack scraping), discord, Reddit, Twitter interactions.
For Reddit, for instance, there’s a sub made for people looking for jobs: https://www.reddit.com/r/cpp/comments/ko9g8i/c_jobs_q1_2021/
The author of this sub is Stephan Lavavej and guess what? He doesn’t have a Linkedin account. If you’d have stayed on Linkedin, you’d have missed him.
For Twitter, ask your C++ team about 2 influential people in the C++ world that they do follow on Twitter. On my side, it was Jonathan Boccara from Murex, located in France, and Sy Brand, C++ Dev advocate for Microsoft in the US. One can assume that people followed by both of these rockstars are involved in C++ communities. Finding them is something that you can do with followerwonk.

4th step: Data gathering

At this time you may have found multiple beautiful names. It’s time to gather them in a single place, to be able to enrich this data (which will be done in the next section).

First of all, let’s define what scraping is. Wikipedia defines web scraping as being “a form of copying in which specific data is gathered and copied from the web, typically into a central local database or spreadsheet, for later retrieval or analysis.”

There are few options in order to get started with scraping. They all work on the same principle: the same data is always stored the same way. Practically speaking, displaying data online isn’t much different from this game:

Let’s take the example of the green triangle on the top right. Let’s say that a block is a name displayed on a speaker page of a C++ conference. This block will fit in a certain class (triangle hole) and has an attribute (green). If you want to find every speaker's name, you then have to find each class (i.e) triangle hole and gather their attribute (here, green, and pink).
DataMiner is a free tool that does that quite well, in your Chrome browser. You can check their help page or this video to help you get started.

If you want to go in advanced mode and want to scrape data on your own, without an external tool, you can check my previous article. It was made specifically for HackerRank but the logical thinking will be the same on every single web page.

5th step: Data enrichment

So by now, you should have a beautiful list of names gathered in a spreadsheet.
Let me introduce you to FreeSourcingTools. It’s a cool tool-gathering website created by Guillaume Alexandre and PA Fortin. To go from a name to a Linkedin profile, they created this Magic Sourcing Sheet. Paste the names you’ve gathered in the first column and add a keyword (here C++ or Cpp for instance). This spreadsheet will automatically build a Google Query link following this format: site:linkedin.com/in NAME keyword
If you click on that link, chances are high that you’ll get as a first link the Linkedin profile of the people you are looking for. TADAM!

That’s it, folks. That’s a fast way to have a list of qualified candidates, that you might not have found on LinkedIn. If anything is unclear, drop me a mail at noe.antona@sonarsource.com . As we say, feedback is a gift!
If you want a live demo, that’s also something I might be able to do, depending on my bandwidth. Thanks for reading!

Happy geek recruiter @SonarSource