<?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: Thanaphoom Babparn</title>
    <description>The latest articles on DEV Community by Thanaphoom Babparn (@tpbabparn).</description>
    <link>https://dev.to/tpbabparn</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%2F292119%2Fdc435e7f-3496-4a56-b62d-ac5f0e89f4d1.jpg</url>
      <title>DEV Community: Thanaphoom Babparn</title>
      <link>https://dev.to/tpbabparn</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tpbabparn"/>
    <language>en</language>
    <item>
      <title>Redis Hackathon: EmpFriendly - Backend</title>
      <dc:creator>Thanaphoom Babparn</dc:creator>
      <pubDate>Tue, 23 Aug 2022 10:44:00 +0000</pubDate>
      <link>https://dev.to/tpbabparn/redis-hackathon-empfriendly-backend-1m4a</link>
      <guid>https://dev.to/tpbabparn/redis-hackathon-empfriendly-backend-1m4a</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;EmpFriendly - Support your employees and strive to be better&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Inspiration is came from "Workers has different purpose to do in daily, so why don't we find something that make opportunity for our employees"&lt;/p&gt;

&lt;p&gt;This project will show the overview of microservices architecture that design base on Cloud-Native approach (actually, some parts still missing because need to compete with the times), In this regards, I design to show how we can implement it from scratch including RESTful/GraphQL API, Aggregation Pattern, Asynchronous messaging with Pub/Sub and Streams.&lt;/p&gt;

&lt;p&gt;The main purpose of this project is to highlight the implementation of microservices from scratch (how they work, how they communicate each other) and show the complexity of distributed systems. In the meanwhile, find the capabilities of Redis-OM Libraries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech Stack&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spring Boot/WebFlux [Java/Kotlin] + Redis OM Spring&lt;/li&gt;
&lt;li&gt;Sanic, FastAPI [Python] + Redis OM Python&lt;/li&gt;
&lt;li&gt;Redis Stack (Cloud)&lt;/li&gt;
&lt;li&gt;Kubernetes (Deployment/Service/Secret/ConfigMap)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Microservice Mavens&lt;/p&gt;

&lt;h3&gt;
  
  
  Video Explanation
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://youtu.be/ML5Vc8LkZwg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JlBNo_w6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://img.youtube.com/vi/ML5Vc8LkZwg/0.jpg" alt="Overview explaination video" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Language Used
&lt;/h3&gt;

&lt;p&gt;Java/Spring, Kotlin/Spring, Python/Sanic, Python/FastAPI&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Code
&lt;/h3&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A9-wwsHG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/marttp"&gt;
        marttp
      &lt;/a&gt; / &lt;a href="https://github.com/marttp/emp-friendly"&gt;
        emp-friendly
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      EmpFriendly [Redis Hackathon on DEV 2022] - Support you employees and be better
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1 id="user-content-empfriendly"&gt;&lt;a class="heading-link" href="https://github.com/marttp/emp-friendly#empfriendly"&gt;EmpFriendly&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;EmpFriendly [Redis Hackathon on DEV 2022] - Support your employees and strive to be better&lt;/p&gt;
&lt;p&gt;This project will show the overview of microservices architecture that design base on Cloud-Native approach (actually, some parts still missing because need to compete with the times), In this regards, I design to show how we can implement it from scratch including RESTful/GraphQL API, Aggregation Pattern, Asynchronous messaging with Pub/Sub and Streams.&lt;/p&gt;
&lt;h3 id="user-content-postman-example"&gt;&lt;a class="heading-link" href="https://github.com/marttp/emp-friendly#postman-example"&gt;Postman Example&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/marttp/emp-friendlyscreenshots/postman-example.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1w0ineqk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/marttp/emp-friendlyscreenshots/postman-example.png" alt="Postman Example"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="user-content-kubernetes-deployment"&gt;&lt;a class="heading-link" href="https://github.com/marttp/emp-friendly#kubernetes-deployment"&gt;Kubernetes deployment&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/marttp/emp-friendlyscreenshots/pod-svc.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vAk3XehQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/marttp/emp-friendlyscreenshots/pod-svc.png" alt="Kubernetes component including pods, deployments, and services"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="user-content-location-streaming-screenshots"&gt;&lt;a class="heading-link" href="https://github.com/marttp/emp-friendly#location-streaming-screenshots"&gt;Location Streaming screenshots&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/marttp/emp-friendlyscreenshots/location-streams.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9FRxyhBp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/marttp/emp-friendlyscreenshots/location-streams.png" alt="Location Streaming"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="user-content-streaming-example-in-redisinsights"&gt;&lt;a class="heading-link" href="https://github.com/marttp/emp-friendly#streaming-example-in-redisinsights"&gt;Streaming Example in Redisinsights&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/marttp/emp-friendlyscreenshots/streaming-topic-redisinsights.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ynbqmR_9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/marttp/emp-friendlyscreenshots/streaming-topic-redisinsights.png" alt="Streaming display from redisinsights"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="user-content-overview-video"&gt;&lt;a class="heading-link" href="https://github.com/marttp/emp-friendly#overview-video"&gt;Overview video&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Here's a short video that explains the project and how it uses Redis:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://youtu.be/ML5Vc8LkZwg" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/9ebd587cdc54c030efef2b79f14a1734e7a8754e0533604cbfd930a7bb80b360/68747470733a2f2f696d672e796f75747562652e636f6d2f76692f4d4c355663384c6b5a77672f302e6a7067" alt="Overview explaination video"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="user-content-demowalkthrough-video"&gt;&lt;a class="heading-link" href="https://github.com/marttp/emp-friendly#demowalkthrough-video"&gt;Demo/Walkthrough video&lt;/a&gt;&lt;/h1&gt;
&lt;p&gt;Here's a video that shows how api work and explain implementation in some technical:&lt;/p&gt;
&lt;p&gt;&lt;a href="https://youtu.be/B-5_xpC3D8A" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/f13815c7c5eed79f03a79a6324889f63d4ef2caae6b741a4f55c44082b1c669d/68747470733a2f2f696d672e796f75747562652e636f6d2f76692f422d355f787043334438412f302e6a7067" alt="Walkthrough video"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="user-content-how-it-works"&gt;&lt;a class="heading-link" href="https://github.com/marttp/emp-friendly#how-it-works"&gt;How it works&lt;/a&gt;&lt;/h2&gt;
&lt;h3 id="user-content-how-architecture-look-like"&gt;&lt;a class="heading-link" href="https://github.com/marttp/emp-friendly#how-architecture-look-like"&gt;How Architecture look like?&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/marttp/emp-friendly./architecture/Technical%20High-Level%20Architecture.drawio.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fb-z28Yn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/marttp/emp-friendly./architecture/Technical%2520High-Level%2520Architecture.drawio.png" alt="Architecture"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/marttp/emp-friendly/tree/main/architecture"&gt;More Informations&lt;/a&gt; are inside the architecture directory&lt;/p&gt;
&lt;h3 id="user-content-scenario-1---admin-level-who-can-manage-on-this-role-manipulate-data"&gt;&lt;a class="heading-link" href="https://github.com/marttp/emp-friendly#scenario-1---admin-level-who-can-manage-on-this-role-manipulate-data"&gt;Scenario 1 - Admin level (who can manage on this role) manipulate data&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/marttp/emp-friendly./scenarios/images/AdminManagement.drawio.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2dxQs7Wm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/marttp/emp-friendly./scenarios/images/AdminManagement.drawio.png" alt="Admin level manipulate internal data"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="user-content-scenario-2---pay-ic-points"&gt;&lt;a class="heading-link" href="https://github.com/marttp/emp-friendly#scenario-2---pay-ic-points"&gt;Scenario 2 - Pay IC Points&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/marttp/emp-friendly./scenarios/images/PayICPoint.drawio.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dKGCFjqs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://github.com/marttp/emp-friendly./scenarios/images/PayICPoint.drawio.png" alt="Pay IC Points"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3 id="user-content-scenario-3---give-rating-to-restaurantdriver"&gt;&lt;a class="heading-link" href="https://github.com/marttp/emp-friendly#scenario-3---give-rating-to-restaurantdriver"&gt;Scenario 3 - Give rating to restaurant/driver&lt;/a&gt;&lt;/h3&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/marttp/emp-friendly"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://hub.docker.com/search?q=emp-friendly"&gt;EmpFriendly - Docker Hub Queries&lt;/a&gt;&lt;br&gt;
&lt;a href="https://spring.io/projects/spring-boot"&gt;Spring Boot&lt;/a&gt;&lt;br&gt;
&lt;a href="https://docs.spring.io/spring-framework/docs/current/reference/html/web-reactive.html"&gt;Spring WebFlux&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/redis/redis-om-spring"&gt;Redis OM Spring&lt;/a&gt;&lt;br&gt;
&lt;a href="https://fastapi.tiangolo.com/"&gt;FastAPI&lt;/a&gt;&lt;br&gt;
&lt;a href="https://sanic.dev/en/"&gt;Sanic&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/redis/redis-om-python"&gt;Redis OM Python&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo Videos
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://youtu.be/B-5_xpC3D8A"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--enKp_5rA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://img.youtube.com/vi/B-5_xpC3D8A/0.jpg" alt="Walkthrough video" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Screenshots/Architecture
&lt;/h3&gt;

&lt;h4&gt;
  
  
  High-Level Design
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YIMMO-HQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/taar74zajxzl3t4zllvi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YIMMO-HQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/taar74zajxzl3t4zllvi.png" alt="High-Level Design" width="781" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Kubernetes deployment
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X8Ikp3fM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mxf8kd78s3vjep2z34c9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X8Ikp3fM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mxf8kd78s3vjep2z34c9.png" alt="Microservices Deployment" width="668" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  [Scenario 1] - Admin level (who can manage on this role) manipulate data
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gOJ7rLXt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z1846a9m7uaz1m1umsyf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gOJ7rLXt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z1846a9m7uaz1m1umsyf.png" alt="Admin level manipulate internal data" width="800" height="331"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  [Scenario 2] - Pay IC Points
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iopNyntx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3fbz9s0k8mkc5w7s17bi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iopNyntx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3fbz9s0k8mkc5w7s17bi.png" alt="Pay IC Points" width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  [Scenario 3] - Give rating to restaurant/driver
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zcOn_mid--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9dyzooahh8231qom7m5u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zcOn_mid--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9dyzooahh8231qom7m5u.png" alt="Give rating" width="800" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  [Scenario 4] - Driver accepted Deliver/Journey =&amp;gt; Start collect location of drivers
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--by-6dqOq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dbiz0mf27hd2z7wwusci.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--by-6dqOq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dbiz0mf27hd2z7wwusci.png" alt="Driver accepted Deliver/Journey" width="800" height="452"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Example QR Code for payment
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1cqJfbKn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e33y4kbcticcewd67li8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1cqJfbKn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e33y4kbcticcewd67li8.png" alt="Example QR Code for payment" width="390" height="390"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Check out &lt;a href="https://redis.io/docs/stack/get-started/clients/#high-level-client-libraries"&gt;Redis OM&lt;/a&gt;, client libraries for working with Redis as a multi-model database.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Use &lt;a href="https://redis.info/redisinsight"&gt;RedisInsight&lt;/a&gt; to visualize your data in Redis.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Sign up for a &lt;a href="https://redis.info/try-free-dev-to"&gt;free Redis database&lt;/a&gt;.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>redishackathon</category>
      <category>redis</category>
      <category>microservices</category>
    </item>
    <item>
      <title>My summary for "Stack Overflow Developer Survey 2022" in the compact version</title>
      <dc:creator>Thanaphoom Babparn</dc:creator>
      <pubDate>Thu, 28 Jul 2022 11:33:11 +0000</pubDate>
      <link>https://dev.to/tpbabparn/my-summary-for-stack-overflow-developer-survey-2022-in-the-compact-version-3198</link>
      <guid>https://dev.to/tpbabparn/my-summary-for-stack-overflow-developer-survey-2022-in-the-compact-version-3198</guid>
      <description>&lt;p&gt;This originally from this blog: &lt;a href="https://tpbabparn.medium.com/my-summary-for-stack-overflow-developer-survey-2022-in-the-compact-version-92d0fa4ea8cb"&gt;Source&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hi everyone! Welcome back to another blog with technical related again. Seem like this one would be the first blog that I wrote in English! 😁&lt;/p&gt;

&lt;p&gt;Actually, after I read the statistic in Stack Overflow Developer Survey 2022. I can feel some change in the survey, It’s so interesting when you’re seeing how the world of programming is changing! So I have planned to work on summarizing for myself, more than that, I hope this blog can help you decide the career path after as well.&lt;/p&gt;

&lt;p&gt;FYI, In this year's survey has been split into 2 parts. For professional developer and for who start learning to code. This information would help you to decide and think about it after. And I don’t want to bother your time reading so much, so I decided to summarize all of them in a compact version. You can open my blog and read the survey along as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I summarized some of the topics that I feel interesting only&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A massive of people around the globe start interesting in the software engineering career path, such as Full-stack, Backend, Frontend, DevOps, etc.&lt;/li&gt;
&lt;li&gt;Everything is currently transformed into Hybrid workplace and Fully Remote world for developers who work in enterprises and startups.&lt;/li&gt;
&lt;li&gt;If you don’t have Bachelor’s Degree in CS or related fields, No issues for now. (Some of the roles are required more than equal Master's Degree in particular fields to work on)&lt;/li&gt;
&lt;li&gt;People tend to learn directly through technical documentation, blog posts, videos, and online courses.&lt;/li&gt;
&lt;li&gt;Whatever OS you use in your job or hobby (Windows/Mac) should know how to do some with Linux.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For someone who wants to read directly from their site, below is the link to access to the survey.&lt;br&gt;
&lt;a href="https://survey.stackoverflow.co/2022/"&gt;Stack Overflow Developer Survey 2022&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Start
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Developer Profile
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Most Professional Developers have Bachelor’s Degree.&lt;/li&gt;
&lt;li&gt;Blog posts or videos that are related to technical solutions tend to be the most helpful resources for developers, following with knowledge from school, books, online courses, etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#learning-how-to-code"&gt;Learning how to code&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fJ6nhhNV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c67nqqpisvzu5qyot7yk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fJ6nhhNV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c67nqqpisvzu5qyot7yk.png" alt="Learning how to code" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Seem like most of developers expand their technical fields to Full-stack developers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#developer-type"&gt;Developer type&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--reafkYCi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lz4frvyxd0euvhh14uiz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--reafkYCi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lz4frvyxd0euvhh14uiz.png" alt="Developer type" width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Technology
&lt;/h3&gt;

&lt;p&gt;Before we jump to this section, I have a word for you.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I recommended you to read it in detail by yourself, I might be miss some important information! I only pick the topics that I found out it’s interested.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most popular programming, scripting, and markup languages, JavaScript is the 1st, don’t complain about it because there have fields to work on including Frontend and Backend, Python is still popular as well.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#section-most-popular-technologies-programming-scripting-and-markup-languages"&gt;Programming, scripting, and markup languages&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oPngpDgc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0mv13bxdsbwczh90qs44.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oPngpDgc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0mv13bxdsbwczh90qs44.png" alt="Programming, scripting, and markup languages" width="800" height="875"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For most loved, dreaded, and wanted programming, scripting, and markup languages, Seem like Rust makes most developers fall in love with it, following with Elixir, Clojure, and TypeScript. (I actually want to learn Rust as well, maybe I should try it right now!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#section-most-loved-dreaded-and-wanted-programming-scripting-and-markup-languages"&gt;Programming, scripting, and markup languages&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5omwmt2z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5vvvrp0k96n7lg71et9v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5omwmt2z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5vvvrp0k96n7lg71et9v.png" alt="Programming, scripting, and markup languages" width="800" height="628"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If reference to the survey trends for Web Framework and I want to focus only on [React, Angular, Vue, jQuery], the result might be
&lt;strong&gt;React &amp;gt; jQuery &amp;gt; Angular &amp;gt; Vue&lt;/strong&gt;
but if follow my feeling and trend in my home country should be
&lt;strong&gt;React &amp;gt; Vue &amp;gt; Angular &amp;gt; jQuery&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;For Mobile Application Development, I can summarize them from the trend of programming languages, I forecasted it most mobile developers are currently working in the native applications (Kotlin, Swift, etc.).&lt;/li&gt;
&lt;li&gt;Focusing on cross-platform mobile development
&lt;strong&gt;Professional Developer =&amp;gt; React Native &amp;gt; Flutter&lt;/strong&gt;
&lt;strong&gt;Learning to Code =&amp;gt; Flutter &amp;gt; React Native&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;RDBMS are still popular right now such as MySQL, and PostgreSQL, for NoSQL top choices is MongoDB and Redis.&lt;/li&gt;
&lt;li&gt;Seem like container technology is raised in popularity including Docker and Kubernetes, so I assume enterprises or startups starting to use Microservice Architecture, Cloud-Native Architecture, and Serverless architecture. And you can see the number of use IaC (Infrastructure as Code) are raised as well, such as Terraform, etc.&lt;/li&gt;
&lt;li&gt;Cloud provider for enterprise, This one is the same as I think about!
Amazon Web Services is still the most popular, follow up by Microsoft Azure and Google Cloud Platform (including Firebase). Alternative options like Heroku, DigitalOcean, and Tanzu are after but I can guarantee the provider can support you with great quality. (Don’t forget Oracle, Alibaba, and IBM)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#most-popular-technologies-platform-prof"&gt;Cloud platforms&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yQvTa6yp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8i4tfqiy134novdns25c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yQvTa6yp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8i4tfqiy134novdns25c.png" alt="Cloud platforms" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Something I need to underline, Google Cloud Platform seems like easier for someone who starts learning to code or someone who wants to jump into the cloud computing world! (To be honest, I start my cloud journey in Firebase and Heroku also)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#most-popular-technologies-platform-learn"&gt;Cloud platforms&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OPvYw5Sp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f5vk1oef9ivxblwlpoov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OPvYw5Sp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f5vk1oef9ivxblwlpoov.png" alt="Cloud platforms" width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some of the programming languages have a high median salary, but I understand that programming languages are things you can learn, but it also takes time to expert!&lt;/li&gt;
&lt;li&gt;Slack, MS Team, Zoom is the applications developers use most in workplace, follow with Google Chat/Meet and Cisco Webex.&lt;/li&gt;
&lt;li&gt;Tasks management in the workplace, Jira/Confluence is the 1st, follow by Asana, Trello. I saw number used Notion also.&lt;/li&gt;
&lt;li&gt;Github, Gitlab, and Bitbucket is popular version control platform, a few are stored in the repository from cloud provider, Why? Because the platform itself has tools and capabilities to integrate to cloud provider.&lt;/li&gt;
&lt;li&gt;For interest in Blockchain section, from my expectation, it should be in the Favorable zone but it’s completely wrong! Seem like it is natural for developers, with some interested and some not.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#blockchain"&gt;Blockchain&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yMcGwyHx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f9ofjvc5p0koyev3w7ty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yMcGwyHx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f9ofjvc5p0koyev3w7ty.png" alt="ฺBlockchain" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Work
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Most of the participants in the survey are Full-time employed.&lt;/li&gt;
&lt;li&gt;More Remote friendly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#work-environment"&gt;Work environment&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qoYpDumT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mllespase4kajvsjg764.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qoYpDumT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mllespase4kajvsjg764.png" alt="Work environment" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most of professional developers write code outside of work (88%) with 73% are write it as a hobby! (I’m the one who also drop in this category).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#coding-outside-of-work"&gt;Coding outside of work&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7RgNgy0z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tqr8zuv9uqvnnorg72zq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7RgNgy0z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tqr8zuv9uqvnnorg72zq.png" alt="Coding outside of work" width="800" height="269"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Below is my opinion and short summary from me.&lt;/p&gt;

&lt;h3&gt;
  
  
  Overall
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Everything is currently transformed into Hybrid workplace and Fully Remote world for developers who work in enterprises and startups.&lt;/li&gt;
&lt;li&gt;If you don’t have Bachelor’s Degree in CS or related fields, No issues for now. (Some of the roles are required more than equal Master’s Degree in particular fields to work on)&lt;/li&gt;
&lt;li&gt;People tend to learn directly through technical documentation, blog posts, videos, and online courses.&lt;/li&gt;
&lt;li&gt;Cloud-Native Architecture is still up to date, some of companies currently Lift &amp;amp; Shift products to the cloud or use strangler patterns to transform their product/service.&lt;/li&gt;
&lt;li&gt;AWS &amp;gt; Azure &amp;gt; GCP among professional use for software engineers and developers.&lt;/li&gt;
&lt;li&gt;GCP and Firebase are more developers friendly for someone who start learning to code. (Don’t get me wrong, every services have their own purpose)&lt;/li&gt;
&lt;li&gt;Whatever OS you use in your job or hobby (Windows/Mac) should know how to do some with Linux.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Technologies + Tools + Frameworks
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;I am actually a Java Developer in Spring Boot/WebFlux, seems like I need to transform myself and try to familiar with Kotlin, and technologies that are related to my career interests.&lt;/li&gt;
&lt;li&gt;Rust, Go, Kotlin, C#, Python currently high growth rate around the globe.&lt;/li&gt;
&lt;li&gt;Node.js is still top-notch for Frontend and Backend in long run.&lt;/li&gt;
&lt;li&gt;Jira &amp;amp; Confluence are most used at enterprise level&lt;/li&gt;
&lt;li&gt;Slack, MS Team, Zoom is most used for work communication.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So that’s it, How are you feeling about it? I’ll be glad if my blog post brings value for you guy!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy to learn, Happy to code, Happy in your life.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading! See you next time!&lt;/p&gt;




&lt;p&gt;Facebook: &lt;a href="https://www.facebook.com/thanaphoom.mart/"&gt;Thanaphoom Babparn&lt;/a&gt;&lt;br&gt;
LinkedIn: &lt;a href="https://www.linkedin.com/in/thanaphoom-babparn/?locale=en_US"&gt;Thanaphoom Babparn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>career</category>
      <category>technology</category>
    </item>
    <item>
      <title>[สรุป] ทำความเข้าใจ + สรุป Stack Overflow Developer Survey 2022 กระชับตามใจฉัน</title>
      <dc:creator>Thanaphoom Babparn</dc:creator>
      <pubDate>Tue, 26 Jul 2022 04:22:11 +0000</pubDate>
      <link>https://dev.to/tpbabparn/srup-thamkhwaamekhaaaicch-srup-stack-overflow-developer-survey-2022-krachabtaamaicchchan-4m1b</link>
      <guid>https://dev.to/tpbabparn/srup-thamkhwaamekhaaaicch-srup-stack-overflow-developer-survey-2022-krachabtaamaicchchan-4m1b</guid>
      <description>&lt;p&gt;สวัสดีคุณผู้อ่านทุกท่านนะครับ กลับมาพบกันอีกแล้วหลังจากห่างหายกันไปนาน คิดถึงกันรึเปล่านะครับ ฮ่า ๆ ขอบคุณทุกคนที่กดเข้ามาอ่านนะครับ 🥰 ก็สำหรับบทความนี้ไม่มีอะไรมากครับ พอดีได้มีโอกาสมานั่งอ่าน Stack Overflow Developer Survey 2022 ซะที [เริ่มเขียนบทความนี้วันที่ 20220724] ซึ่งในปีนี้ตัว Survey ถูกแบ่งออกมาเป็น 2 ประเภทก็คือ Professional (คนที่ทำงานแล้ว) กับ Learning to code (คนที่กำลังก้าวเข้าสู่โลก Coding) ก็เลยมาสรุปไว้สั้น ๆ นิดหน่อยครับ&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ตัวสรุปนี้ผมจะสรุปให้เฉพาะบาง Section นะครับ&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;โลกกลายเป็น Hybrid + Fully Remote ไปแล้วสำหรับ Developer&lt;/li&gt;
&lt;li&gt;ไม่มี Degree ตรงสายก็ทำสายนี้ได้ แต่ดีที่สุดคือมี Bachelor's Degree ขึ้นไป&lt;/li&gt;
&lt;li&gt;การเรียน ได้จากการอ่าน Doc, Blog, Video, หรือ Online course&lt;/li&gt;
&lt;li&gt;จะเป็น Windows หรือ Mac ใช้ไปเถอะ ขอแค่ใช้ Linux เป็นบ้าง&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;สำหรับคนที่อยากอ่านเองครับ&lt;br&gt;
&lt;a href="https://survey.stackoverflow.co/2022/"&gt;Stack Overflow Developer Survey 2022&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's Start
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Developer Profile
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Professional Developer ส่วนมาก จบ Bachelor's Degree&lt;/li&gt;
&lt;li&gt;ดูเหมือนว่า Blog สั้น ๆ ที่เกี่ยวกับ Technology จะมีส่วนช่วยมาก ๆ ในการศึกษา ตามมาด้วยเรียนจากสถานศึกษา หนังสือ และ Online course ตามลำดับ&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#learning-how-to-code"&gt;Learning how to code&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fJ6nhhNV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c67nqqpisvzu5qyot7yk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fJ6nhhNV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c67nqqpisvzu5qyot7yk.png" alt="Learning how to code" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dev ส่วนใหญ่เริ่มมูฟไปเป็น Full stack แล้ว ตามมาด้วย Backend Dev&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#developer-type"&gt;Developer type&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--reafkYCi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lz4frvyxd0euvhh14uiz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--reafkYCi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lz4frvyxd0euvhh14uiz.png" alt="Developer type" width="800" height="301"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Technology
&lt;/h3&gt;

&lt;p&gt;ส่วนนี้ผมจะย้ำอีกครั้ง อยากให้ลองอ่านเองดูครับ เพื่อดูเทรนด์ เพราะผมสรุปไม่หมดแน่ ๆ 🥺&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most popular programming, scripting, and markup languages ก็เข้าใจได้นะ ตรงกับ Trend ในไทยพอสมควรเลย&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#section-most-popular-technologies-programming-scripting-and-markup-languages"&gt;Programming, scripting, and markup languages&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oPngpDgc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0mv13bxdsbwczh90qs44.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oPngpDgc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0mv13bxdsbwczh90qs44.png" alt="Programming, scripting, and markup languages" width="800" height="875"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Most loved, dreaded, and wanted ของ programming, scripting, and markup languages =&amp;gt; Rust คือ 1st อีกแล้ว (สงสัยต้องลองเขียนให้มากขึ้นกว่านี้หน่อยแล้ว)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#section-most-loved-dreaded-and-wanted-programming-scripting-and-markup-languages"&gt;Programming, scripting, and markup languages&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5omwmt2z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5vvvrp0k96n7lg71et9v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5omwmt2z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5vvvrp0k96n7lg71et9v.png" alt="Programming, scripting, and markup languages" width="800" height="628"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Web Frameworks ผมขอ Focus ที่ตัว jQuery, React, Angular, Vue ละกันครับ เป็นที่ถกเถียงกันนิดหน่อย ซึ่งอ้างอิงจาก Trend เหมือนจะเป็นดังนี้ (ในตอนนี้)&lt;br&gt;
&lt;strong&gt;React &amp;gt; (jQuery รอเขาค่อย ๆ transform) &amp;gt; Angular &amp;gt; Vue&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;เรื่อง Mobile Application Development พอสรุปได้จาก trend of programming languages ก็คาดเดาได้ว่า &lt;strong&gt;Native นิยมมากที่สุด&lt;/strong&gt; ตามมาด้วย Cross Platform ที่&lt;strong&gt;ในหมู่ Professional จะเป็น React Native &amp;gt; Flutter แต่ในหมู่ Learning to code จะเป็น Flutter &amp;gt; React Native&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Database ที่เป็น RDBMS ก็ยังเป็นที่นิยมอยู่ดีโดยมี MySQL, PostgreSQL ส่วนตระกูล NoSQL ก็จะมี MongoDB, Redis&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Container technology related มีการใช้จำนวนมาก และผมก็แนะนำให้คนใช้เหมือนกัน ไม่ว่าจะเป็น Docker, Kubernetes รวมถึง IaC อย่าง Terraform เช่นกัน&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;เรื่องของ Cloud provider ในระดับ Enterprise, AWS ยังคงครองตลาด และตามมาด้วย Azure และ GCP ตัวที่ alternative อย่าง Heroku, DigitalOcean, Tanzu ก็ตามมาแต่ลดน้อยลงใน Large-scale enterprise (อย่าลืม Oracle, Alibaba กันด้วยนะเอ้อ)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#most-popular-technologies-platform-prof"&gt;Cloud platforms&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yQvTa6yp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8i4tfqiy134novdns25c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yQvTa6yp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8i4tfqiy134novdns25c.png" alt="Cloud platforms" width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;แต่สิ่งที่น่าสนใจที่ผมเห็นคือ GCP เหมือนจะเข้าถึงได้ง่ายสำหรับคนที่กำลังเรียนรู้และเริ่มก้าวเข้าสู่ World of Cloud Computing (ผมเองก็เริ่มมาจาก Firebase, Heroku เหมือนกัน)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#most-popular-technologies-platform-learn"&gt;Cloud platforms&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OPvYw5Sp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f5vk1oef9ivxblwlpoov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OPvYw5Sp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f5vk1oef9ivxblwlpoov.png" alt="Cloud platforms" width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;คนที่ทำงานในบางภาษาทำไม Salaray สูงจังเลยน้าา เอาซะอยากตามไปเขียนด้วยเลย 😅 ภาษาโปรแกรมมิ่งเป็น Tools ก็จริง แต่การเป็น Expert มันสร้าง Impact ได้มากกว่าน่ะครับ&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Salary range มีการปรับตัวเพิ่มขึ้นหนักพอสมควรไม่ว่าจะเป็น Old tech หรือ New tech แต่จากที่ดู Old tech จะปรับตัวโหดกว่า ก็เข้าใจได้ เพราะหาตัวจับยากมากขึ้น&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Slack, MS Team, Zoom ใช้คุยงานกัน ตามมาด้วย Google Chat/Meet และ Cisco Webex&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ในส่วนของการจัดการ Task ต่าง ๆ คนก็ใช้ Jira, Confluence, Asana, Trello รวมถึง Notion ก็เอากับเขาด้วย&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Github, Gitlab, Bitbucket เป็น Platform ยอดนิยม มีส่วนน้อยที่เก็บไว้ที่ Repository ของ Cloud โดยตรง อันนี้ไม่แปลกใจเท่าไหร่ เพราะ Platform มี Support เรื่องของ Integration กับ Cloud provider ต่าง ๆ ด้วย&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;สำหรับ Blockchain น่าแปลกใจที่ว่าผมคิดว่ามันน่าจะอยู่ในโซน Favorable ในส่วนมากแต่มันกลับกลายเป็นระฆังคว่ำ&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#blockchain"&gt;Blockchain&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yMcGwyHx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f9ofjvc5p0koyev3w7ty.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yMcGwyHx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f9ofjvc5p0koyev3w7ty.png" alt="ฺBlockchain" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Work
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;ผู้ตอบแบบสอบถามส่วนมากเป็น Full-time employed&lt;/li&gt;
&lt;li&gt;รูปแบบการทำงานเป็น Remote friendly มากขึ้น&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#work-environment"&gt;Work environment&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qoYpDumT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mllespase4kajvsjg764.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qoYpDumT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mllespase4kajvsjg764.png" alt="Work environment" width="800" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Salary (Annual) ก็อ้างอิงตามโซนและค่าครองชีพ (กรณีนี้ที่ Germany สามารถแทนบวกลบได้กับโซนยุโรป โดยมี Germany เป็น base)&lt;/li&gt;
&lt;li&gt;Professional Developer เขียนโค้ดนอกเวลางานกันมากถึง 88% และ 73% คือเขียนเป็น Hobby (ผมก็อยู่ในประเภทนี้ด้วยจริง ๆ)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Source: &lt;a href="https://survey.stackoverflow.co/2022/#coding-outside-of-work"&gt;Coding outside of work&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7RgNgy0z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tqr8zuv9uqvnnorg72zq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7RgNgy0z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tqr8zuv9uqvnnorg72zq.png" alt="Coding outside of work" width="800" height="269"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;ข้างล่างเป็นความเห็น + สรุปสั้น ๆ ส่งท้ายของผม&lt;/p&gt;

&lt;h3&gt;
  
  
  Overall
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;โลกกลายเป็น Hybrid + Fully Remote ไปแล้วสำหรับ Developer (จากประสบการณ์เลื่อนหางานในยุโรปมาบ้าง ถ้าคุณอยู่ในโซน EMEA หลายบริษัทคือ สมัครตำแหน่ง Remote ทำได้เลย)&lt;/li&gt;
&lt;li&gt;ไม่มี Degree ตรงสาย ก็ทำสายนี้ได้ แต่ดีที่สุดคือมี Bachelor's Degree ขึ้นไป&lt;/li&gt;
&lt;li&gt;เรียนได้จากการอ่าน Doc, Blog, Video, หรือ Online course&lt;/li&gt;
&lt;li&gt;Cloud Native ยังอยู่ไปอีกนาน เพราะบาง Enterprise ก็กำลังค่อย ๆ Lift &amp;amp; Shift หรือ ค่อย ๆ ทยอย Strangler Pattern ขึ้นมา&lt;/li&gt;
&lt;li&gt;AWS &amp;gt; Azure &amp;gt; GCP ในเชิง Profressional Developer&lt;/li&gt;
&lt;li&gt;GCP และ Firebase อาจจะ developer friendly สำหรับคนเริ่มเข้าวงการ Cloud (แต่ไม่ใช่ว่าตัวอื่นไม่ดีนะครับ)&lt;/li&gt;
&lt;li&gt;จะเป็น Windows หรือ Mac ใช้ไปเถอะ ขอแค่ใช้ Linux เป็นบ้าง&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Salary (ขึ้นกับค่าครองชีพด้วยนะ อย่าลืม)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Annual USA อู้ฟู่เหมือนเดิม&lt;/li&gt;
&lt;li&gt;Canada &amp;gt; UK &amp;gt; Germany เกาะกลุ่มกัน (ส่วนนี้คือเป็น Median นะครับ) ซึ่งผมแนะนำเว็บ &lt;a href="https://www.levels.fyi/"&gt;https://www.levels.fyi/&lt;/a&gt; สำหรับคนที่อยากเจาะตลาดมากขึ้น&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Technologies + Tools + Frameworks
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Java ที่ผมชื่นชอบ เริ่ม Drop และ ไม่น้าาา 5555555&lt;/li&gt;
&lt;li&gt;Rust, Go, Kotlin, C#, Python กำลังพุ่งขึ้นมา ซึ่งก็เห็นว่ามีหลายบริษัทเริ่มหันมาใช้แล้วเหมือนกัน&lt;/li&gt;
&lt;li&gt;ตระกูล Node.js ลอยลำไปละ ยังไงก็มีทั้ง Frontend / Backend&lt;/li&gt;
&lt;li&gt;Jira &amp;amp; Confluence ครองตลาด เข้าใจได้เพราะ Enterprise level&lt;/li&gt;
&lt;li&gt;Slack, MS Team, Zoom ใช้คุยงานกัน (Google Chat/Meet, Discord ก็ใช้กันได้นะ)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ก็จบไปแล้วสำหรับสรุปตามใจฉันของผม เป็นไงกันบ้างครับ หวังว่าจะมีประโยชน์ไม่มากก็น้อยนะครับ &lt;/p&gt;

&lt;p&gt;สุดท้ายนี้ก็ถ้าหากใครอยากสอบถามเพิ่มเติม หรือจะ Make connection กันไว้ก็สามารถมาที่ช่องทางนี้ได้เลยนะครับ ขอบคุณที่อ่านจนจบนะครับ ไว้เจอกันใหม่บทความหน้าครับ 😉&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Happy to learn, Happy to code, Happy in your life.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Facebook: &lt;a href="https://web.facebook.com/thanaphoom.mart/"&gt;Thanaphoom Babparn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;LinkedIn: &lt;a href="https://www.linkedin.com/in/thanaphoom-babparn/"&gt;Thanaphoom Babparn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>career</category>
    </item>
    <item>
      <title>Transform List to Varargs in Java</title>
      <dc:creator>Thanaphoom Babparn</dc:creator>
      <pubDate>Tue, 01 Jun 2021 10:21:46 +0000</pubDate>
      <link>https://dev.to/tpbabparn/transform-lists-to-varargs-in-java-3adi</link>
      <guid>https://dev.to/tpbabparn/transform-lists-to-varargs-in-java-3adi</guid>
      <description>&lt;p&gt;Hello everyone 😁. For this article we will be transform List to Varargs.&lt;/p&gt;

&lt;p&gt;Firstly, I want to show example of varargs in argument of method.&lt;br&gt;
Normally, the varargs is represent as a iterator type that you can loop each element.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Main&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;  
  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;[])&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; 
    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;concatString&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"world!"&lt;/span&gt;&lt;span class="o"&gt;));&lt;/span&gt; 
  &lt;span class="o"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;concatString&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="n"&gt;words&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;StringBuilder&lt;/span&gt; &lt;span class="n"&gt;sb&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;StringBuilder&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;words&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;sb&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;append&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
      &lt;span class="n"&gt;sb&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;append&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;" "&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;sb&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toString&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;trim&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But if you seen some library, They receive varargs as a parameter too!. So if you have list of data, you can transform it to array and thrown it to that method.&lt;/p&gt;

&lt;p&gt;This is example of code that will show you how to transform it. ✌&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="nn"&gt;java.util.List&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Main&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;  
  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;[])&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt; 
    &lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;words&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;of&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"world!"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;concatString&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;words&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toArray&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="n"&gt;words&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="o"&gt;()]));&lt;/span&gt;
    &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="nf"&gt;concatString&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt; &lt;span class="n"&gt;words&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="nc"&gt;StringBuilder&lt;/span&gt; &lt;span class="n"&gt;sb&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;StringBuilder&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;str&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;words&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;sb&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;append&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;str&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
      &lt;span class="n"&gt;sb&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;append&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;" "&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;sb&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toString&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;trim&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
  &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. This is how we can use List as argument of method that received varargs.&lt;/p&gt;

&lt;p&gt;Thank you very much for reading. 😄&lt;/p&gt;

</description>
      <category>java</category>
    </item>
    <item>
      <title>Use ZonedDateTime in Spring WebFlux (MongoDB Reactive)</title>
      <dc:creator>Thanaphoom Babparn</dc:creator>
      <pubDate>Tue, 01 Jun 2021 08:36:02 +0000</pubDate>
      <link>https://dev.to/tpbabparn/use-zoneddatetime-in-spring-webflux-mongodb-reactive-1408</link>
      <guid>https://dev.to/tpbabparn/use-zoneddatetime-in-spring-webflux-mongodb-reactive-1408</guid>
      <description>&lt;p&gt;Hello everyone. For this article we will be empowering our Spring WebFlux and MongoDB to be able to use ZonedDateTime, so let's get started.&lt;/p&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;You can find source code in &lt;a href="https://github.com/marttp/spring-webflux-zoneddatetime-converter" rel="noopener noreferrer"&gt;this repository&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Create Spring WebFlux Project
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6vpok1hxf0oicwzopuk3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6vpok1hxf0oicwzopuk3.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And if you want to implement ZonedDateTime inside our Spring WebFlux application, you can add ReadingConverter &amp;amp; WritingConverter for our MongoDB. you can see the code that implementation in the below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@Configuration&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MongoConfig&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

    &lt;span class="nd"&gt;@Bean&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;MongoCustomConversions&lt;/span&gt; &lt;span class="nf"&gt;mongoCustomConversions&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Converter&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;?,?&amp;gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;converters&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;ArrayList&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&amp;gt;();&lt;/span&gt;
        &lt;span class="n"&gt;converters&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;ZonedDateTimeToDate&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;INSTANCE&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;converters&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;add&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;DateToZonedDateTime&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;INSTANCE&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nf"&gt;MongoCustomConversions&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;converters&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="nd"&gt;@ReadingConverter&lt;/span&gt;
    &lt;span class="kd"&gt;enum&lt;/span&gt; &lt;span class="nc"&gt;DateToZonedDateTime&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;Converter&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;ZonedDateTime&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

        &lt;span class="no"&gt;INSTANCE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nd"&gt;@Override&lt;/span&gt;
        &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;ZonedDateTime&lt;/span&gt; &lt;span class="nf"&gt;convert&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Date&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;date&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toInstant&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;atZone&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;ZoneId&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;systemDefault&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt;
                    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;truncatedTo&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;ChronoUnit&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;MILLIS&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;

    &lt;span class="nd"&gt;@WritingConverter&lt;/span&gt;
    &lt;span class="kd"&gt;enum&lt;/span&gt; &lt;span class="nc"&gt;ZonedDateTimeToDate&lt;/span&gt; &lt;span class="kd"&gt;implements&lt;/span&gt; &lt;span class="nc"&gt;Converter&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ZonedDateTime&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;

        &lt;span class="no"&gt;INSTANCE&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

        &lt;span class="nd"&gt;@Override&lt;/span&gt;
        &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt; &lt;span class="nf"&gt;convert&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;ZonedDateTime&lt;/span&gt; &lt;span class="n"&gt;zonedDateTime&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;from&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;zonedDateTime&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toInstant&lt;/span&gt;&lt;span class="o"&gt;());&lt;/span&gt;
        &lt;span class="o"&gt;}&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. You can use ZonedDateTime as a datetime type in our class. 😁&lt;/p&gt;

&lt;h3&gt;
  
  
  Example of POST request
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl --location --request POST 'http://localhost:8080/promotions' \
--header 'Content-Type: application/json' \
--data-raw '{
    "name": "promotion-2",
    "startDate": "2021-06-01T10:00:00.000+07:00",
    "endDate": "2021-06-20T18:00:00.000+07:00"
}'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Result
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft9f3nosdsjh3bpe7iw2i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft9f3nosdsjh3bpe7iw2i.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhgfat6gbvf9ykgpp0k3i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhgfat6gbvf9ykgpp0k3i.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a short article on how to use the converter of ZonedDateTime in Spring Data MongoDB Reactive, I hope it will be useful for all readers.&lt;/p&gt;

&lt;p&gt;Thank you very much. 😄&lt;/p&gt;

</description>
      <category>springwebflux</category>
      <category>java</category>
    </item>
  </channel>
</rss>
