<?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: gadi</title>
    <description>The latest articles on DEV Community by gadi (@gmanil).</description>
    <link>https://dev.to/gmanil</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%2F273138%2Fd1ece46a-145b-47f1-a990-437d89806464.png</url>
      <title>DEV Community: gadi</title>
      <link>https://dev.to/gmanil</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gmanil"/>
    <language>en</language>
    <item>
      <title>Why you should consider GraphQL for your APIs?</title>
      <dc:creator>gadi</dc:creator>
      <pubDate>Mon, 17 Feb 2020 16:36:17 +0000</pubDate>
      <link>https://dev.to/gmanil/why-you-should-consider-graphql-for-your-apis-22og</link>
      <guid>https://dev.to/gmanil/why-you-should-consider-graphql-for-your-apis-22og</guid>
      <description>&lt;h1&gt;
  
  
  Problem A — developing and maintaining multiple APIs
&lt;/h1&gt;

&lt;p&gt;If you’re developing and / or consuming multiple RESTful APIs you know the struggle.&lt;br&gt;
You need to work with multiple endpoints for each entity and support different schema for your clients.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kX709yCX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/796/0%2AjHxzHwoREJJ_hR35" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kX709yCX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/796/0%2AjHxzHwoREJJ_hR35" alt="GraphQL" width="796" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Consider the following example for getting orders details via the following Orders API endpoints:&lt;br&gt;
GET /api/orders/{id}&lt;br&gt;
GET /api/orders/GetByStatus/{status}&lt;br&gt;
GET /api/orders/GetByDate/{Date}&lt;br&gt;
GET /api/orders/GetByCustomerId/{id}&lt;br&gt;
GET /api/orders/GetByCustomerEmail/{email}&lt;br&gt;
You see where this is going. Even if you only support retrieving orders by id , you’ll still have different endpoint according to the data that the client asked for:&lt;br&gt;
GET /api/order/details/{orderId}&lt;br&gt;
GET api/ordersWithCustomerDetails/{id}&lt;br&gt;
GET api/orders/shipping/{id}&lt;br&gt;
GET api/orders/payment{id}&lt;br&gt;
Either you return all the above data in your response or you create multiple endpoints for your clients.&lt;/p&gt;

&lt;h1&gt;
  
  
  Problem B — Frontend and Backend teams integration
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hgH4yxzo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1200/0%2AQqQNZLFSbnbvN_cq" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hgH4yxzo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1200/0%2AQqQNZLFSbnbvN_cq" alt="GraphQL" width="880" height="880"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Even if you designed the perfect API architecture for your system, different clients might need different data in a different schema or format. I’ve seen backend teams change their response types just to meet the needs of the frontend team.&lt;br&gt;
For example: client A would like to get the products as an object and client B as an array. Client A has to have the payment data WITH the rest of the order’s details but client B would rather get a lighter and faster response with just the order’s number and address.&lt;br&gt;
GraphQL to the rescue!&lt;br&gt;
GraphQL is an open-source data query and manipulation language for APIs, and a run-time for fulfilling queries with existing data. GraphQL was developed internally by Facebook in 2012 before being publicly released in 2015.&lt;br&gt;
GraphQL isn’t tied to any specific database or storage engine and is instead backed by your existing code and data.&lt;br&gt;
Query whatever and however you like!&lt;br&gt;
GraphQL defines a schema and can support any request to the server within this format.&lt;br&gt;
Check it out:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Yk3Ry54U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/0%2AERL4WqHa2YSyTY2r" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Yk3Ry54U--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/700/0%2AERL4WqHa2YSyTY2r" alt="GraphQL" width="700" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above example, the client decides what and how that data returned to it, removing the need of changes in on the server side.&lt;br&gt;
Here’s another use case returning the data using a flag:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--27VvRXpq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/500/0%2AafarSyrTwsBaVaD6" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--27VvRXpq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/500/0%2AafarSyrTwsBaVaD6" alt="GraphQL" width="500" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In addition to supporting queries, GraphQL also support object updates via “Mutations”. Those enables you to manipulate the state of an object on the server:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kvzFV_to--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1600/0%2AeZsCebJy3BR_RR3h" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kvzFV_to--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1600/0%2AeZsCebJy3BR_RR3h" alt="GraphQL" width="880" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Another cool feature is the GraphQL subscriptions. Subscriptions enables the server to push data to the clients, usually notifying about specific events like creation of an object, update of a field and so on.&lt;br&gt;
GraphQL is a full specification language that supports schema definitions, fields, parameters, variables, a wide range of types, validations and even built in authorization and pagination features.&lt;br&gt;
Implementing GraphQL on your system&lt;br&gt;
Hopefully by now, you can get the feel of out GraphQL implementation can do for you. Implementing GraphQL solution with in your system is not an easy task, while there are frameworks for most frontend and backend languages, using services like Apollo, Relay (JavaScript only) or Prisma that even offers a database ORM solution are very useful and usually worth it.&lt;br&gt;
For example you can use Azure functions as a serverless architecture with Apollo like this.&lt;br&gt;
Get the resources&lt;br&gt;
Here’s great resources to get you started:&lt;/p&gt;

&lt;p&gt;*&lt;a href="https://graphql.org/learn/"&gt;GraphQL.org&lt;/a&gt;, the official site, get place to get started&lt;br&gt;
*Get started with .NET Core and GraphQL &lt;a href="https://dev.to/dotnet/learn-how-you-can-use-graphql-in-net-core-and-c-4h96"&gt;here&lt;/a&gt;&lt;br&gt;
*&lt;a href="https://www.apollographql.com/"&gt;Apollo&lt;/a&gt;, great server, client and tools for GraphQL&lt;br&gt;
*Pluralsight, create couple of courses to get you started &lt;a href="https://www.pluralsight.com/courses/graphql-big-picture"&gt;here&lt;/a&gt; and &lt;a href="https://www.pluralsight.com/courses/graphql-scalable-apis"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>graphql</category>
      <category>management</category>
      <category>api</category>
    </item>
    <item>
      <title>Cool tip for your next 1 on 1 meeting</title>
      <dc:creator>gadi</dc:creator>
      <pubDate>Mon, 27 Jan 2020 14:06:23 +0000</pubDate>
      <link>https://dev.to/gmanil/cool-tip-for-your-next-1-on-1-meeting-e4h</link>
      <guid>https://dev.to/gmanil/cool-tip-for-your-next-1-on-1-meeting-e4h</guid>
      <description>&lt;p&gt;1 on 1 meetings are important, you already know it.&lt;/p&gt;

&lt;p&gt;You might have those once every 6 months or maybe you do them on a weekly basis. it’s always hard to get your team members to open up instantly and tell you what is on their minds.&lt;/p&gt;

&lt;p&gt;Very rarely those meeting goes as planned. Even if you got some kind of a check list of things you’d like accomplished in this meeting, it’s very hard to be effective.&lt;/p&gt;

&lt;p&gt;You’d like to use those meetings to give some kind of a feedback to your guys from time to time. Either regarding their performance on a certain task or project or even their overall behavior working with peers or other stake holders within your company.&lt;/p&gt;

&lt;p&gt;Those issues are not easy to discuss but ARE very important. how would you bring it up without upsetting your team member?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--L5E6DOxr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/600/1%2A7Nn1LPK6KTWryWZCzmrtHg.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--L5E6DOxr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/600/1%2A7Nn1LPK6KTWryWZCzmrtHg.jpeg" alt="1on1"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here’s a small but VERY effective tip, I’ve used in the past.&lt;/p&gt;

&lt;p&gt;Let’s say for example you’d like to address your team members’ performance on his / her last project. they didn’t do well.&lt;/p&gt;

&lt;p&gt;He or she might have missed the time estimates and / or deadlines and the overall quality of the delivery was below average at best.&lt;/p&gt;

&lt;p&gt;Present the following question to your team member: “How would you rate your work on the last project from 1 to 10”?&lt;/p&gt;

&lt;p&gt;After taking few seconds to think about an answer that would be truthful but still won’t cause him or her to look bad, most people would give themselves a 7 or an 8.&lt;/p&gt;

&lt;p&gt;There’s a catch here. As a manager you don’t really care about the grade given, it’s all about creating a discussion. If a grade other then 10 was given you should follow with this question: “Why a 7 (or any other grade for that matter)? What would have caused this task to be rated as a 10?”.&lt;br&gt;
This will create an open discussion and will enable you give that feedback.&lt;/p&gt;

&lt;p&gt;Try it and let me know what was the result in the comments.&lt;br&gt;
Good Luck!&lt;/p&gt;

</description>
      <category>management</category>
    </item>
    <item>
      <title>The things you know that you don’t know</title>
      <dc:creator>gadi</dc:creator>
      <pubDate>Sat, 25 Jan 2020 18:25:16 +0000</pubDate>
      <link>https://dev.to/gmanil/the-things-you-know-that-you-don-t-know-4424</link>
      <guid>https://dev.to/gmanil/the-things-you-know-that-you-don-t-know-4424</guid>
      <description>&lt;p&gt;You’re busy I get it, we all are. One of the most important things for a tech leader is not lost touch with the current trends and updates.&lt;br&gt;
Actually, we can sum up the knowledge you should be up to date to the following &lt;/p&gt;

&lt;p&gt;categories:&lt;br&gt;
&lt;strong&gt;The stuff you know that you know you need to updated about&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;The stuff you know that you don’t know&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;The stuff you don’t know that you don’t know&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;“The Stuff you know that you know toy need to be updated about”&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If you’re using ReactJS or .NET Core, you still have to make sure you’re up to date with the latest changes. &lt;br&gt;
You might be missing the new functionality of C# 8 that can make you life easier or you’re might be struggling with bugs that were already fixed in the latest version.&lt;br&gt;
How should I get the info?&lt;br&gt;
I can assume you already part of some community , you already follow some sub-reddits or some blogs. If not , you should. In addition, sign up for updates, get email weekly summaries or even just make sure to check the landing page of your favorite framework once a week (make a reminder!)&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;“The stuff you know that you don’t know”&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;You might have heard that Python is getting a lot of attention since AI, Machine learning and Deep learning are on the rise or you heard that everyone is using Redis, but you know nothing about it. As a tech leader you should get at least an overview of the topic, take a note and if you think you might need it in the future, you’ll be able to dive it.&lt;br&gt;
How should I get the info?&lt;br&gt;
You should really try to follow the trends by googling about it from time to time. I find educational sites like “Pluralsight” very useful to get me started. Some of the courses offer great overview on various topics and are a good starting point to learn about new stuff.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;“The stuff you don’t know that you don’t know”&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Since we’re all very busy with our important tasks, we might not even know that Blockchain is a thing. Since software development is big and vast, we tend to try and focus on our own technologies. That might do for regular developers but if you’d like to be considered as a tech lead, you have to know what’s up with the outside world.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How should I get the info?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Check out the most popular meetups at meetup.com. Search for those you know nothing about, if you’re a back end guy, go for the front end ones, if you’re working in a corporate environment, check out the ones for startups. Try to attend one every couple of months.&lt;/p&gt;

&lt;p&gt;As a tech leader, we are expected to have a deep understanding of our core technologies but adding tools to your “tool belt” is super important. You should always look for the next thing and encourage your developers to do the same.&lt;/p&gt;

</description>
      <category>management</category>
    </item>
  </channel>
</rss>
