<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Guillaume Montard</title>
    <description>The latest articles on DEV Community by Guillaume Montard (@g_montard).</description>
    <link>https://dev.to/g_montard</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F223194%2F7ca44df6-dfb4-4011-9c0b-a991412973c7.jpg</url>
      <title>DEV Community: Guillaume Montard</title>
      <link>https://dev.to/g_montard</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/g_montard"/>
    <language>en</language>
    <item>
      <title>What I learned building a Developer Tool</title>
      <dc:creator>Guillaume Montard</dc:creator>
      <pubDate>Wed, 09 Oct 2019 15:24:18 +0000</pubDate>
      <link>https://dev.to/bearer/what-i-learned-building-a-developer-tool-276b</link>
      <guid>https://dev.to/bearer/what-i-learned-building-a-developer-tool-276b</guid>
      <description>&lt;p&gt;A little over 18 months ago, I launched a developer tool called &lt;a href="http://bearer.sh"&gt;Bearer.sh&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Recognizing the lack of tooling for API integration to be a major pain among developers, I wanted to solve this problem through a developer tool. But, to be honest, I didn’t entirely realize what building such a tool meant.&lt;/p&gt;

&lt;h1&gt;
  
  
  A developer knows what to build
&lt;/h1&gt;

&lt;p&gt;What is amazing when starting a developer tool, is that being a developer yourself, it’s very easy to reflect on your product; it’s thrilling. However, it’s both a &lt;strong&gt;blessing and a curse&lt;/strong&gt;, as you need to constantly challenge your own perceptions and experiences, to make sure your points of view always reflect those of your audience.&lt;/p&gt;

&lt;p&gt;We started with what I call “the positive arrogance of founders”—knowing what others need. This is illustrated well with the famous Steve Jobs quote:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"...customers don’t know what they want until we’ve shown them."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;While this may be true, it does not preclude you from conducting in-depth discussions, asking questions, and eventually summarizing the different pains, personas, and opportunities of your clients. All these enable you to craft well-fitting solutions for your customers; these will become your products.&lt;/p&gt;

&lt;p&gt;To this end, &lt;em&gt;I strongly suggest doing a customer discovery&lt;/em&gt;*; we eventually did one, thanks to our great advisors!&lt;/p&gt;

&lt;h1&gt;
  
  
  What is a developer tool?
&lt;/h1&gt;

&lt;p&gt;You have probably heard the terms low-code and no-code a lot lately, but don't mistake them for developer tools!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No-code&lt;/strong&gt; solutions are for building software without coding. Some of the best examples are Zapier, Airtable, and Bubble. Most of the time, they are targeted, by design, at businesspeople that don’t have the technical skill or time for coding, setting them free from those barriers.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;low-code&lt;/strong&gt; solution enables the building of software by coding using a simplified tool, for a fraction of the time and resources a traditional approach would take. These solutions are all about simplified code and they mostly appeal to IT professionals, releasing them from the need for engineering resources. Some examples are Appian, Salesforce App Cloud, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Developer tools&lt;/strong&gt; are about helping people build software by providing better application development ecosystems. They focus on core business problems instead of reinventing the wheel. Whether &lt;a href="https://www.algolia.com/"&gt;Algolia for search&lt;/a&gt;, &lt;a href="https://sqreen.io"&gt;Sqreen for security&lt;/a&gt;, or &lt;a href="http://bearer.sh"&gt;Bearer for API integration&lt;/a&gt;, each tool is all about helping engineering teams.&lt;/p&gt;

&lt;p&gt;As &lt;a href="https://a16z.com/2011/08/20/why-software-is-eating-the-world/"&gt;“software is eating the world"&lt;/a&gt;, given the increasing shortage of engineers, at every level of the pyramid, the industry is pushing for more abstraction.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BC1xyYcK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/nvnhmkdmzjsss2gnz1hh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BC1xyYcK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://thepracticaldev.s3.amazonaws.com/i/nvnhmkdmzjsss2gnz1hh.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And as you can imagine, both low-code and no-code solutions rely on developer tools :)&lt;/p&gt;

&lt;h1&gt;
  
  
  Simplicity vs Complexity
&lt;/h1&gt;

&lt;p&gt;To build a great product, &lt;strong&gt;user experience is paramount&lt;/strong&gt;; it especially has to be as frictionless as possible, even more so in the early days of use.&lt;/p&gt;

&lt;p&gt;When we started, I thought it was about building something complex; we got as far as building a framework. Our intentions were great, but I forgot something very important, most people don't have time to learn something new, at least not right away.&lt;/p&gt;

&lt;p&gt;Compared to SaaS or no-code solutions, &lt;strong&gt;developer tools, in particular, need to be versatile&lt;/strong&gt;. Indeed, developers have different use contexts and cases, so the tools have to be appropriately adaptable, despite lack of prior knowledge of each individual set of requirements.&lt;/p&gt;

&lt;p&gt;What we've seen is that most developer tools tend to add complexity over time, requiring increasing levels of user input. &lt;strong&gt;Developer tools are built around complexity layers&lt;/strong&gt;. The first layer has to be attractive and easy enough to encourage a user to invest a little of their time and energy. Then, with further use, additional layers are added, handling more complex use cases.&lt;/p&gt;

&lt;p&gt;This simplicity vs complexity is the biggest challenge when working on developer tools.&lt;/p&gt;

&lt;p&gt;In the end, perfecting this mix, of simplicity and complexity, creates the secret sauce that makes a developer tool successful. It's also the most exciting challenge for me 💪&lt;/p&gt;

&lt;p&gt;I'm happy to answer any question you might have below or on &lt;a href="https://twitter.com/g_montard"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Don't use API Clients 😅 </title>
      <dc:creator>Guillaume Montard</dc:creator>
      <pubDate>Thu, 26 Sep 2019 16:05:26 +0000</pubDate>
      <link>https://dev.to/g_montard/don-t-use-api-clients-2n71</link>
      <guid>https://dev.to/g_montard/don-t-use-api-clients-2n71</guid>
      <description>&lt;p&gt;At &lt;a href="https://www.bearer.sh"&gt;bearer.sh&lt;/a&gt;, I've been interviewing dozens of developers and experts to understand how they build and manage their API integrations.&lt;/p&gt;

&lt;p&gt;I've compiled those findings into a series of blog posts, here is the first part below, that is all about API clients. &lt;/p&gt;

&lt;h2&gt;
  
  
  First, why should I care?
&lt;/h2&gt;

&lt;p&gt;Because as the number of integrations you build tends to grow, consuming all those third-party APIs at scale becomes a real technical challenge.&lt;/p&gt;

&lt;p&gt;Integrating one or two APIs is not always that complicated, but when it comes to build dozens of integrations, each providing key business-critical components to your application, that’s when things get more complex (and interesting!). From there on in, you realize that every API is a single point of failure that needs to be managed accordingly; dealing with technical debt and security is going to be paramount.&lt;/p&gt;

&lt;h2&gt;
  
  
  Using API clients?
&lt;/h2&gt;

&lt;p&gt;How difficult can it be to consume an API, after all? It’s not like it’s something new, right? Sadly, it is difficult, and it's at that precise moment we usually all make a critical decision:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hey, I've found an API client for xyz API, let's use it it's going to go faster&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;But, what we've found out is that &lt;strong&gt;using a dedicated API client is the best way to build technical and security debt&lt;/strong&gt; over time. When you think about it, most of the time, those API clients are just nice wrappers over REST calls. Ideally, they are provided and maintained by the API vendor, but it is more often not the case.&lt;/p&gt;

&lt;p&gt;Imagine yourself consuming dozens of APIs, not an unusual feat, it means relying on dozens of dependencies,+ their own in turn. This will translate into numerous updates and security patches over time. Add to that the fact that, every API call will look different in your codebase; you quickly realize this may not be have been the ideal decision! &lt;/p&gt;

&lt;p&gt;By the way, would you query your DB using a different client for every table? Different methods? It's not just because data comes from an API, that you should suddenly forget all your best practices.&lt;/p&gt;

&lt;p&gt;From that single unspoken decision, the impact over time is going to be dramatic.&lt;/p&gt;

&lt;h2&gt;
  
  
  Great, what's the solution?
&lt;/h2&gt;

&lt;p&gt;First, the keep it simple stupid (KISS) approach would simply tell us to query the API using a regular HTTP client (axios, httparty etc.). Yes, It is going to be more verbose, but is that a bad thing after all?&lt;/p&gt;

&lt;p&gt;The ideal solution that we've seen is to build a dedicated service, responsible for querying all your third-party APIs. This way, every integration will rely on the same pattern, structure, and dependencies; you will be able to improve this service over time, and by design improving all your integration's codebase. You can think of it as a micro-service or a module for example, depending of your preferred architectural choice obviously.&lt;/p&gt;

&lt;p&gt;And finally, you can also give a try to our &lt;a href="https://www.bearer.sh"&gt;universal API client&lt;/a&gt; if you don't want to reinvent the wheel 😅.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I'd love to know how you build and manage your integrations, tell me more in the comment section below!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>integration</category>
      <category>devops</category>
    </item>
    <item>
      <title>Starting a remote-first and multicultural-first company!</title>
      <dc:creator>Guillaume Montard</dc:creator>
      <pubDate>Fri, 06 Sep 2019 14:38:46 +0000</pubDate>
      <link>https://dev.to/g_montard/starting-a-remote-first-and-multicultural-first-company-1hai</link>
      <guid>https://dev.to/g_montard/starting-a-remote-first-and-multicultural-first-company-1hai</guid>
      <description>&lt;p&gt;&lt;em&gt;This post was originally published on our &lt;a href="https://blog.bearer.sh/building-a-remote-multi-cultural-first-team/"&gt;blog&lt;/a&gt;, where we usually write about startups, remote and APIs!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I've started a remote-first company 18 months ago, called &lt;a href="https://www.bearer.sh"&gt;Bearer&lt;/a&gt;. Not only as a remote-first but, in fact, &lt;strong&gt;a multi-regional, multi-cultural, multi-lingual too&lt;/strong&gt;!&lt;/p&gt;

&lt;p&gt;Since we’ve been running the company this way for more than a year now, I wanted to take the opportunity to reflect on the culture and process we've built, hopefully answering some questions anyone might have with what it's like to work in such companies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a remote-first company?
&lt;/h2&gt;

&lt;p&gt;To be honest, it all started mostly out of necessity before becoming an opportunity, and nowadays our company’s core value!&lt;/p&gt;

&lt;p&gt;In the beginning, my co-founder was based in Scotland and myself in France; effectively, we were a remote-first company before we were even a company. &lt;strong&gt;We were remote-first founders&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Our ambition, with Bearer, was to build a company and we had a certain path in mind: To be able to cross the Atlantic, sooner rather than later, and become a multi-cultural company as a result. We've seen some of our friends’ amazing companies, like Algolia or Sqreen, follow this path. &lt;strong&gt;We realized we had an opportunity to learn and lay the foundations for a company that could scale continents, cultures, languages, and time zones, so we doubled down on it!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When we officially kicked-off the company we were a team of 5, across 4 cities in 2 countries. Everything was done in English, as it was the only way to communicate together, despite none of us being native English-speakers.&lt;/p&gt;

&lt;p&gt;Today, we are a team of 10, across 3 countries and located in 4 cities. To give an even broader view, one of our team members traveled around Asia for six months while still working with us. Finally, in the coming weeks, we have one member moving to South Africa; obviously, she will continue to be Bearer 🐻!&lt;/p&gt;

&lt;h2&gt;
  
  
  Running the company
&lt;/h2&gt;

&lt;p&gt;In a remote-first company, we quickly learned that &lt;strong&gt;communication is paramount&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We tend to often hear that engineering-focused companies are better candidates for remote working. I'm not sure; have you considered, for instance, if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Communication is an engineer’s strongest suit?&lt;/li&gt;
&lt;li&gt;Writing is an engineer’s best skill?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Communication, for us, meant setting up processes and tools, then finally, writing down and recording everything! Add to that the fact that 70% of our team has to do all of this in a foreign language and we have a serious challenge to tackle 💪.&lt;/p&gt;

&lt;p&gt;We've set up some processes and rituals to help communication flow well between everyone and to make sure we can all give our best.&lt;/p&gt;

&lt;p&gt;To give you a better understanding of how this works, some of our weekly rituals are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every Monday morning, at 9:30 am, the team receives a weekly note from me, some news etc. (thanks to Mathilde Collin for the trick)&lt;/li&gt;
&lt;li&gt;Every Monday morning, at 10 am, team leaders meet with the founders, for 30 min, to talk about current projects&lt;/li&gt;
&lt;li&gt;Every Wednesday, at 10 am, we have a 15 min remote-coffee break with whoever feels like it, to have casual chat about anything&lt;/li&gt;
&lt;li&gt;Every Friday, at 11 am, we have a weekly demo (recorded) where everyone can demo their progress and share some knowledge&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then, once every Quarter, we all meet through an offsite for a week in a nice location; the next one is in Portugal 🏝. Outside those, team members can freely travel to meet each other when needed.&lt;/p&gt;

&lt;p&gt;We also have some communication policies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Every discussion is held using public channels (100% in English)&lt;/li&gt;
&lt;li&gt;Every key technical decision is documented as an RFC and discussed&lt;/li&gt;
&lt;li&gt;Every project is documented and can be commented on by anyone&lt;/li&gt;
&lt;li&gt;Every day off is reported on a shared calendar sending Slack notification&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We are careful not to create too many processes, giving the team freedom to explore. For instance, engineering team leaders’ only requirements are to have a public kanban-style board and a weekly discussion with founders; then they are free to manage their team and communicate however they want.&lt;/p&gt;

&lt;h2&gt;
  
  
  The office question
&lt;/h2&gt;

&lt;p&gt;We have an office in Paris, a real one. This sounds a bit counter-intuitive for a remote-first company; however, this office can host about 10 people and is usually filled with 3, at best, including myself, and that's perfectly alright.&lt;/p&gt;

&lt;p&gt;Our Scotland-based team members work entirely from home we happily provide them with a co-working space whenever they want one. They get together for pizzas on Fridays! In Poland, our teammate has his own office in the city of Gdansk. My cofounder works from his home, now in the north of France, in Dunkirk, and comes to the Paris office once or twice every month.&lt;/p&gt;

&lt;p&gt;Working exclusively from home is not for everyone, and is certainly not for me, while it is for my-cofounder. &lt;strong&gt;Remote-first shouldn't be a synonym for working from home, it should mean having the liberty to decide and receiving the same support, whatever you choose.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Is remote-first working for us? I'd say yes!&lt;/p&gt;

&lt;p&gt;We have an amazing team: highly-skilled, passionate, and truly committed. In return, we can offer them, probably the best perk, the option of working from anywhere.&lt;/p&gt;

&lt;p&gt;To make it work, it all comes down to a simple value, trust. &lt;strong&gt;Without trust, I don't think it’s possible to make a remote-first company successful, even less so a multi-everything one.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Feel free to ask me anything in the comment section or share how you work in your remote-first company!&lt;/p&gt;

</description>
      <category>remote</category>
      <category>career</category>
      <category>startup</category>
    </item>
  </channel>
</rss>
