Use Machine Learning in your code, without being a ML expert, Codemotion Rome

Using Google Cloud AutoML to automatically train models on your custom data? Yes, and we can go deeper, exploring how to add image classification, speech recognition, video labelling and other machine-learning powered tasks to your code, without a PhD on the matter, thanks to Google solutions.

(Codemotion Rome, 14 April 2018)

FullContact to sync LinkedIn connections into Google Contacts

Meeting and talking with people is part of my job, and I’m generally good in remembering faces, but when it comes to names and some facts to help me reconnect and discuss, my memory is a huge, black and empty hole. And it’s embarrassing. I solved the problem using a mix of Google Contacts and LinkedIn, glued together by FullContact, with offline support and smallest effort my side to keep everything running.

First, I identified my core needs: a way, well-integrated with my Android phone as the only device I can quickly check in similar situations, to see faces, names and notes of people for a given category, working offline and with the possibility to change information on the go, so I can update them just after a chat.

At the beginning, it seemed the perfect scenario for a CRM. After some investigation, I changed my mind because all the software I checked, even the ones with a personal CRM attitude, were overkill, not always well-integrated with the rest of the Android system, and often required connectivity to do even the simples query or edit.

So, I tried to leverage tools I were already using, and Google Contacts, after all, met all my requisites. But how boring is to create a contact and fill details for every person I want to remember? Considering I used LinkedIn to map all my work-related relationships, I thought the native integration between the two could have been the solution, but I was wrong: I discovered then contacts sync between LinkedIn service and Google did not add new LinkedIn connections into Google Contacts. On the other side, the connections sync feature offered by the LinkedIn Android app creates a read-only address book in Android, where I cannot add more details to these contacts and categorise them. Finally, I didn’t want to see all my LinkedIn connection in my address book.

Luckily, LinkedIn allows to export all of your connections (plus other info) on a CSV file. And then a touch of magic happened: I discovered FullContact, a service to manage and enrich contact information, said in a very reductive way. Among the many, many features, it is able to sync with Google Contacts and import LinkedIn connections. All the pieces were finally in place. Here what I’ve done.

First, I created a FullContact account and synced it with my Google account from “Sync Settings – Add New Email Account”: once done, the two services shared the same contact lists, and changes made in one were reflected into the other. Just after, the FullContact magic started: the existing contacts were enriched with tons of useful information, starting from the profile picture (one of mine main needs), company data, social profiles and much more. It’s also possible to add Twitter info once connected an account. In addition, I consider FullContact contact editor slightly better than Google Contacts one. Special mention the many integrations with other services and Enrich API they have.

Then, from LinkedIn, I exported my connections, downloaded the resulting CSV file and imported into FullContact, from “Sync Settings – Add LinkedIn Connections”, and selected the “Update Existing Contacts” option to import all the LinkedIn connections in the special LinkedIn FullContact address book, without adding them to Google Contacts yet.

Add to Synced Contacts option in FullContactAfter that, the very unique boring part: I had a very long list (900+ items) of contacts in my brand new LinkedIn FullContact address book, and I wanted to sync only some of them also in Google Contacts. So, I went thru this list selecting “LinkedIn” in the FullContact “Tags” menu and, for each one, selected the “Add to Synced Contacts” option if I wanted to have that contact always at my fingertips during events. Contextually, I added it also under the desired category, in my case “Community Managers and DevRel”.
FullContact enriched also these new contacts with additional information, and synced everything back to Google Contacts. Magic, as I said! To be 100% sure everything was aligned, I also opened the Google Contacts app and checked in the “Duplicates” section if there were duplicates FullContact wasn’t able to spot.

Now, when I’m at a “Community Manager and DevRel” conference, where I meet people I see once every year if I’m lucky, a quick glance to that label under my Google Contacts app on the phone and I have names, faces and other info back to memory. Plus the edit field ready to register some interesting information.

Every month or so, I import again LinkedIn connections into FullContact, select the “LinkedIn” tag in the Tags list and select “Sorted by Date Created”: a quick look only at the new ones on top of the list is enough, if I want to add some of my new connections into my Google Contacts.

During the journey, I discovered also Hubspot, that seems to be a very good CRM, and Pipl API, a service to enrich a contact using via an API.

Conferences for community managers in 2018

Chairs in a conference room

** Looking for 2019 events? We got you covered! **

As per every job, it’s important to be part of a network of like minded and professionals with similar skills. What are the conferences for community managers, leaders and builders worthwhile attending in 2018?

FOSDEM Community DevRoomFebruary 3, Brussels, Belgium: Every year, thousands of developers of free and open source software from all over the world gather at the event in Brussels.

DevXCon, June 4 and 5, San Francisco, California: DevXCon is the practitioner-to-practitioner conference for developer experience and developer relations. Come hear the best practices and pitfalls for end-to-end developer evangelism, onboarding and success.

Community Leadership Summit, July, Portland, Oregon: The Community Leadership Summit brings together community leaders, organizers and managers and the projects and organizations that are interested in growing and empowering a strong community. The event pulls together the leading minds in community management, relations and online collaboration to discuss, debate and continue to refine the art of building an effective and capable community.

Swarm Conference, August 30-31, Melbourne, Australia: Founded by practitioners, Australia’s flagship community management conference connects local builders, thinkers, managers and makers with top international talent for two days of learning, collaboration, inspiration and outcomes.

TheCR Connect, October 1-2, Boston, MA: TheCR Connect is exclusively for community practitioners – those engaged in the development, implementation, management, and measurement of community initiatives. You might be a community manager for a 5,000 person internal community, the community specialist at a start-up, or the director of community for a Fortune 500 brand. TheCR Connect is a vendor-free event to ensure that open conversations can happen between community practitioners.

CMX Summit, October 1-3, Portland, Oregon: Communities change the world. Over 3 days, CMX Summit seeks to expand discussions, techniques, and tactics applied to community building for businesses and support communities and their builders (you!) at scale. You’ll gain insights from the best in the industry and make lifelong friends.

Open Source Summit Europe, October 22-24, Edinburgh, UK: the leading conference for developers, architects and other technologists – as well as open source community and industry leaders – to collaborate, share information, learn about the the latest technologies and gain a competitive advantage by using innovative open solutions – Community Leadership Conference

DevRelCon London, November 8, London: DevRelCon and DevXcon is an international series of conferences for people who build developer communities and developer experiences. There are also other events in China, San Francisco and Tokyo.

FeverBee – Community SPRINT: Unfortunately, they’re not planning to organise any SPRINT in Europe this year

If you’re a community manager, living in Italy, please consider join the Italian Community Managers group, as we organise several event across the year, included 2 main conferences in Milan and Rome, to discuss about these topics.

Any other important occasion missing in this list?

Google Developers community management culture

Working with communities, at scale, means working with a decentralized team of people in different geographies, with a similar, but diverse, professional background and expertise level. One of the few working strategies to keep all of us aligned on main goals, while fostering local ideas and adaptive strategies to better fit the local ecosystem, is to define and maintain a common team culture. Recently I was asked to present what is the Google Developers community management culture and key insights in front of our team of community builders, people like me in charge of supporting tech communities all over the world that want to share knowledge on Google technologies during their activities. Here a list of my main takeaways.

Why we do what we do and what is our role?
Dev communities help to solve the growing complexity of the technological landscape, adding a very unique social flavor. So, as community builders, we accelerate learning, cultivate culture and collaborate with communities on a shared mission and goals. We help them to be more successful because, ultimately, this helps Google dev products to be more successful. And because we love communities.

Community leaders first
We should already be used to the “User first Google’s philosophy principle. In our case, it translates to “community leaders first“. They are our primary focus, and should be treated with respect. We have to build a two-way and mutually useful relationship. All the rest follows.

Embrace goal diversity and work on the sweet spots
We have to recognize, and acknowledge, community leaders are driven by their own goals and reasons, and our company goals cannot be pushed to them. Instead, to keep this relationship prolific and sustainable in the long period, we have to base it on collaboration and independence, searching for overlaps in goals and build on these sweet spots. And we should be the first ones doing that. Sooner or later, opportunities will come.

Be a transparent and servant community builder
Community leaders know very well we don’t do this for charity. Like any trust-based relationship, it’s important to be transparent with them and communicate openly. We’re here to serve them, and not the other way around, as communities can exist without Google support, but we cannot exist without communities.

Treat them equally, as the ecosystem is our highest value asset
Some communities are more mature than others, some are quicker to execute, some able to have a bigger impact. It doesn’t matter, because what we value the most is a healthy growth and development of a vibrant community ecosystem. So they all are our beloved community leaders and we need to support all of them in the mid-long term, regardless of how they could help to reach our goals in the short team.

First save their time, then ours
In case we need to make a choice between saving our or their time, pick theirs: we’re paid to do this job, they volunteer their time. First, we need provide a coherent system maintained by a culture to interact with us, avoiding community micromanagement: in the long period, it will save a lot of time on both sides. Then, we can always optimize something: write easy-to-read, timely and useful communications, avoid asking data useful only to us, etc. Finally, if they don’t know about our initiatives, or they missed something, we assume it’s our fault.

Be data driven and restless student
Getting meaningful data out of communities is hard, but it doesn’t matter. A better knowledge of the community ecosystem helps us to make more informed decisions. We can be brave community builders, trying new things to improve our culture of community management one step at time, relentlessly, for the good of our communities and for a better collaboration with them. Every time we collect a new learning, positive or negative, we should share with each other.

Have fun
This job keeps a consistent part of our life busy: make the best out of this time, having fun while cultivating our passions.

If you’re curious about my life in Google, there are other posts to read.

How to structure useful 1:1 with your team

One of the core components of my manager toolbox is the 1to1 meeting (or 1:1, or one-on-one, or 1on1, face2face, f2f, …), a recurring appointment each team member has with me. How to structure and get the most out of it?

At the beginning, it’s important to set the reasons to spent this time together and the tone. The meeting is all about the team member: their needs, frustrations, feedback, ideas and career growth are the topics of discussion. The 1:1 is a chance for the team member to bring the problems them need help with, and a chance for me to learn more about their work. As consequence, I empower them to be the owner of the agenda and structure it around a unique, core, question: “What can your manager be helping with?

Once the objectives are clear, I set the cadency of the meeting to create an habits, generally weekly and one hour long. Unless something more urgent happens: rush hurts the quality of the conversation, so better postpone to a less busy moment, or shorten, or even make a phone call if there is something urgent to discuss and other conflicting activities.

Especially for the first times, I prefer to use a format that facilitate the discussion centered on the previous question. To make everything more collaborative and transparent, I have a shared and confidential document with every team member that we can both pre-populate, with this general structure for each meeting we have. The use of “you” is important to empower the team member, instead of a more abstract 3rd person.

  • Challenges: Leverage manager support to remove roadblocks and enhance your impact, receive coaching and guidance in areas where you have a challenge
  • Issues and Concerns: make manager aware of any personal or professional issues you have
  • Review core and project progress: an opportunity to demonstrate your impact, to share what’s going on and what’s coming up
  • Performance expectation and feedback: from the manager, to the manager
  • Career and personal development: support in developing your career, skills and knowledge
  • Misc (Out of office, lead updates, other unplanned discussions)

It’s important to constantly remember the point on career and personal development and, once in a while, it becomes the main topic of the meeting. Again, to facilitate the discussion, it can be useful to have a career worksheet template to use as base, touching these main areas:

  • Personal reflection
  • Goal setting
  • Action planning
  • End-of-quarter retrospectives

As final touch, I remember the team it’s always possible to change the structure of our 1:1 and they can schedule extra 1:1s outside of our normal schedule, as I’m here to serve.

Bonus activity for one of the 1:1: ask the reasons they do what they do.

What does a Developer Relations Ecosystem team do?

Some companies have evolved the Developer Relations area to a point they have a specialized orgs. Google is one of them, and I work under the Developer Relations Ecosystem team. What does we do?

Sticking to the broader DevRel goal (see the definition from my colleague Reto), I consider ourselves a connection layer. On the one side, there are the different Google Product Areas (PAs) like Android, Cloud, Assistant, etc, and we solve for them the complexity of dealing with local tech ecosystems. This scales global initiatives by engaging local developers. On the other side, that “articulated” tech ecosystem, where we’re often seen as the “last mile” between them and Google, brings valuable insights back.

How do we connect these two sides? We apply a 1:few:many interaction model. I see us (the one) as “passion multipliers“. We take Product Areas goals and, with a touch of magic, translate them for the “influencers” in their local context (the few), supporting them in doing even more of what they love doing. It could be organize tech communities, share their knowledge on Google techs, run amazing 3rd party tech conferences, solve people’s needs in innovative ways using company’s products, deliver best apps to clients and much more.
The more successful our audience is pursuing their passions, the more vibrant, mature and fun the company 3rd party tech ecosystem becomes (the many). A win-win situation I love and a way to implement Google’s philosophy “Focus on the user and all else will follow”.

We’re a tech team in the relationship business, at scale. Thanks to the trust component of our relationships, we have the rare privilege to be exposed to global and reliable first hand insights about developers all over the world. They let us know who they are and where they are; what they love and hate about our company’s technologies; emerging and descending trends; how they’re organising tech communities in every country; their success stories supported by our technologies. Because of this knowledge, we can be even more effective in building relationships and matching PAs needs, creating a virtuous circle.

Diversity is also deeply embedded in our team culture: there isn’t a project that can scale worldwide without considering how diverse the world is. For example, mentorship activities are very effective in some cultures, and totally against the mindset of others; developer and community dynamics in cities with millions of people are very different from cities with thousands; running a hackathon in Italy is different from running one in Nigeria, etc.
So, we naturally recognize the value of diversity and we focus on it, across our programs and audiences. What does diversity mean? Gender, culture, race, religion and many more.

From a team structure point of view, we approximated the complexity of the tech ecosystem splitting it in several audiences, like tech communities (GDG and all the other communities), Tech Experts, Startups and their developers etc.
Thus, we created work streams to deal with each one of these audiences, organising ourselves around two main roles. One gathers Program Managers that work on these streams at a global level, defining the infrastructure, strategy, goals, tools, budget etc. The other is made by people like me, called Regional Lead, in charge of executing these programs locally. It’s the implementation of “Think globally, act locally” strategy.
Maintaining a bi-directional communication channel between the roles is fundamental. Global work streams cannot evolve without the inputs, knowledge and experience from the local ecosystems provided by regional leads, while high-level directions from global allow us to operate in an aligned way despite we spread all over the world.

The most difficult challenge is linked to Ecosystem’s core: in fact, building these relationships at scale is a never-ending, tailor-made and time-consuming process, as the ecosystem is a living creature in constant evolution. In addition, after a certain point, we suffer from “reach-ability bandwidth” saturation: we simply cannot interact with additional people anymore and with all the amazing stuff they’re doing.

Apart from company PA goals, I personally see another important behavior for being a good citizen of the ecosystem we deal with: act as superb connectors. Pentland wrote in his book “It is not simply the brightest who have the best ideas; it is those who are best at harvesting ideas from others. It is not only the most determined who drive change; it is those who most fully engage with like-minded people. And it is not wealth or prestige that best motivates people; it is respect and help from peers.
Connecting people with similar passions helps the ecosystem to grow and improve in the mid-long term. It’s something you cannot control or measure, but years later, someone that has done something worthwhile your admiration will tell you: “Thanks to your suggestion all those years ago, I’m here now”. Priceless and crucial, this is one of my duties, and my passion!

If you’re curious about my life in Google, there are other posts to read.