<?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>Forem: Peter Karakas</title>
    <description>The latest articles on Forem by Peter Karakas (@peti2001).</description>
    <link>https://forem.com/peti2001</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%2F164467%2Fac5915bf-11f4-4e9a-b9ff-669a2862abdb.jpeg</url>
      <title>Forem: Peter Karakas</title>
      <link>https://forem.com/peti2001</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/peti2001"/>
    <language>en</language>
    <item>
      <title>12 JavaScript Developers You Should Follow</title>
      <dc:creator>Peter Karakas</dc:creator>
      <pubDate>Fri, 28 May 2021 15:30:47 +0000</pubDate>
      <link>https://forem.com/peti2001/12-javascript-developers-you-should-follow-5f7c</link>
      <guid>https://forem.com/peti2001/12-javascript-developers-you-should-follow-5f7c</guid>
      <description>&lt;p&gt;In recent years, JavaScript has been consistently ranking in the top three most popular programming languages. Based on CodersRank users’ commits, JavaScript was the most popular language with our community in 2020 (&lt;strong&gt;with a whopping 851K commits&lt;/strong&gt;).&lt;/p&gt;

&lt;p&gt;Today, we’d like to highlight twelve cool JavaScript developers (in no particular order) who are not only great at what they do but also share their knowledge and contribute to the community. Some of them are big names already, but we’ve also included some rising stars⭐&lt;/p&gt;

&lt;p&gt;Whether you’re a beginner in JavaScript or a seasoned professional, you’ll find lots of quality educational content by following them👇&lt;/p&gt;

&lt;h2&gt;
  
  
  David Walsh
&lt;/h2&gt;

&lt;p&gt;David Walsch is a former Senior Software Engineer and evangelist for Mozilla. Prior to that, he worked as a Core Developer on MooTools JavaScript Framework, where he created numerous MooTools plugins, and as a Software Developer at SitePen. One of his mottos is to ‘work as much in the open-source space as possible’.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to now&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Serves as Senior Full-Stack Engineer at MetaMask&lt;/li&gt;
&lt;li&gt;Speaks at various conferences and meetups such as London AJAX, AustinJS, BrazilJS, Snow*Mobile, etc.&lt;/li&gt;
&lt;li&gt;Shares cool demos, useful tutorials, and invaluable dev career lessons on his blog and to his 83,000+ followers on Twitter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow him on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://davidwalsh.name/about-david-walsh"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/darkwing"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/davidwalshblog"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.facebook.com/davidwalshblog"&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Piotr Kowalski
&lt;/h2&gt;

&lt;p&gt;Piotr Kowalski is an open-source enthusiast and seasoned JavaScript developer. He started his career as a Web Developer, but once he discovered his passion to JavaScript, he decided to focus on the frontend and never looked back.&lt;/p&gt;

&lt;p&gt;Kowalski is an expert in building web applications in diverse environments (for example this Smart TV platform or Ipla.tv). He’s created the architecture for lots of other big commercial projects, which are being used by a few millions of users monthly.&lt;/p&gt;

&lt;p&gt;As a keen community builder, Kowalski also co-founded WarsawJS, ConFrontJS, and Educaton. If you’re looking for informative JavaScript content, you’ll love Kowalski’s blog (181 data-packed articles (!)) and his YouTube channel. At CodersRank, we’re big fans of his History of Front-end timeline and Awesome Shortcuts collections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Works as Senior Frontend Software Engineer at Sumo Logic&lt;/li&gt;
&lt;li&gt;His GitHub profile is a treasure trove of utility projects to explore&lt;/li&gt;
&lt;li&gt;Shares useful tutorials on his blog and runs live open source sessions on his YouTube channel&lt;/li&gt;
&lt;li&gt;Organizes webinars and training sessions on all things JavaScript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow him on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://piecioshka.pl/"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/piecioshka/"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.facebook.com/piecioshka.trener"&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/piecioshka"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/piecioshka"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/piecioshka"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Szymon Piłkowski
&lt;/h2&gt;

&lt;p&gt;Szymon Pilkowski is an experienced JavaScript Developer with a passion for all kinds of experiments, focusing on HTML5 and NodeJS. He’s worked in a variety of exciting dev roles, such as helping NGO’s visualize their social change at Impact Mapper or visualizing orbits, flybys, and Near-Earth Objects for the European Space Agency.&lt;/p&gt;

&lt;p&gt;Prior to that, in 2016 he’s served as a founder and teacher at the programming school Heycode.io.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to&lt;/strong&gt;:&lt;br&gt;
Serves as a Sofware Engineer at Molecule.one, a cool startup that leverages AI to design novel chemical syntheses within seconds.&lt;br&gt;
Ranks in the Top 5 JavaScript Developers in Poland at CodersRank&lt;br&gt;
Grows a community at JS News: Jobs FB group&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Follow him on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/users/183918/wildcard"&gt;StackOverflow&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://profile.codersrank.io/user/ardcore"&gt;CodersRank profile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ardcore"&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/ard"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Ben Nadel
&lt;/h2&gt;

&lt;p&gt;Ben Nadel is the co-founder and a principal engineer at InVision App, Inc, a company that is at the forefront of the design and UX revolution. He lives and breathes JavaScript, NodeJS, AngularJS, ColdFusion, and User Experience.&lt;/p&gt;

&lt;p&gt;On his blog, you’ll learn about various aspects of web application development including but not limited to the topics of ColdFusion / Lucee, JavaScript, Node.js, HTML, Cascading Style Sheets (CSS), and SQL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to now:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runs ‘Working Code’ podcast (new episodes drop weekly on Wednesdays) &lt;/li&gt;
&lt;li&gt;Works on a variety of Open Source projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow him on:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.bennadel.com/index.cfm"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/BenNadel"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/BenNadel"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.facebook.com/bennadel/"&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Shawn Wang (Swyx)
&lt;/h2&gt;

&lt;p&gt;Shawn Wang is a JavaScript developer who has worked on React and serverless JavaScript at Two Sigma, Netlify and AWS. He’s mainly active in the web dev community as a blogger and frequent speaker, committed to Learn in Public movement. He’s a GitHub Star and Stripe Community Expert.&lt;/p&gt;

&lt;p&gt;Swyx has started and run communities for hundreds of thousands of developers, like Svelte Society, the React subreddit, and the React TypeScript Cheatsheet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to now&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Currently working on Developer Experience at Temporal.io&lt;/li&gt;
&lt;li&gt;Recently published The Coding Career Handbook with advice for engineers going from Junior to Senior. &lt;/li&gt;
&lt;li&gt;Teaches various courses and workshops (Design Systems with React + TypeScript, Building Custom CLI Tooling with OClif and React-Ink, Complete Intro to Netlify in 3.5 hours, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow him on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.swyx.io/"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/swyx"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sw-yx"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/swyxTV"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tania Rascia
&lt;/h2&gt;

&lt;p&gt;Tania is a Senior Software Engineer specializing in modern JavaScript/TypeScript and architectural design patterns, documentation, and best practices. She started making websites in 1998 (on Geocities) and has been making them ever since.&lt;/p&gt;

&lt;p&gt;On her blog (and in all her posts in other places), you can expect to learn a ton about Node.js, JavaScript (React/Redux, Vue), TypeScript, PHP, Python, Bash, HTML5, CSS3, JSON, and more.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What she’s up to now&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Serves as Staff Software Engineer at Balto AI&lt;/li&gt;
&lt;li&gt;Recently authored Understanding the DOM book &lt;/li&gt;
&lt;li&gt;Writes lots of tutorials on her blog and other websites&lt;/li&gt;
&lt;li&gt;Works on a variety of open-source projects, which are available on her GitHub.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow her on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.taniarascia.com/"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/taniarascia"&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Khriztian Moreno
&lt;/h2&gt;

&lt;p&gt;Khriztian Moreno is a JavaScript developer. On a daily basis, he uses JavaScript (ES6), React, Gatsby, CSS (inJS), GraphQL, Serverless, just to name the most important bits. He’s a community leader and an altruistic speaker. He helps others learn by doing through articles, videos, and courses about Javascript, React, and the static web.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to now&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Co-organizes Medellin.js (the biggest JavaScript user group in Colombia), Avanet and JAMstack Medellin communities&lt;/li&gt;
&lt;li&gt;Speaks at Commit.fm podcast&lt;/li&gt;
&lt;li&gt;Producer at @commit.fm via @twitch&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow him on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/khriztianmoreno"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/khriztianmoreno"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@khriztianmoreno"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://profile.codersrank.io/user/khriztianmoreno/info"&gt;CodersRank Profile&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Kent C. Dodds
&lt;/h2&gt;

&lt;p&gt;Kent C. Dodds is a JavaScript software engineer and teacher. He’s taught hundreds of thousands of people how to make the world a better place with quality software development tools and practices. He’s a keen educator and organized multiple JavaScript workshops.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to now&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runs ‘Chats with Kent’ podcast&lt;/li&gt;
&lt;li&gt;Develops awesome (and many of them free) video courses on React, JavaScript, Suspense, etc.&lt;/li&gt;
&lt;li&gt;Runs The KCD Community on Discord, a community of people who want to make connections, share ideas, and use software to help make the world a better place&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Get in in touch with him on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kentcdodds.com/"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/kentcdodds/"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kentcdodds/"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/channel/UCz-BYvuntVRt_VpfR6FKXJw"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Robin Weiruch
&lt;/h2&gt;

&lt;p&gt;Robin Wieruch is a self-employed software and web engineer dedicated to learning and teaching JavaScript for client-server architectures. After obtaining his Master’s Degree in computer science, he gained experience from the startup world, where he used JavaScript intensively. &lt;/p&gt;

&lt;p&gt;He shares his many years of practical experience in the field via his blog, four self-published ebooks, and a course platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to now&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shares excellent writings on all things JavaScript, React.JS, Node.JS, Firebase on his blog&lt;/li&gt;
&lt;li&gt;As a keen believer in bridging the knowledge gap and unequal access to learning, his e-book The Road to React was translated into 6 languages (Russian, French, Chinese, Italian, Korean, Portuguese, and Persian)&lt;/li&gt;
&lt;li&gt;Shares great tutorials to 17,000+ followers on Twitter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow him on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.robinwieruch.de/"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/intent/follow?screen_name=rwieruch"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.facebook.com/rwieruch"&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/intent/follow?screen_name=rwieruch"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rwieruch/"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/rwieruch/"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Paolo Duzioni
&lt;/h2&gt;

&lt;p&gt;Paolo Duzioni is a web developer focused on the front-end side and a coding coach, who has always been attracted to how creativity can be used along with web technologies, to create amazing experiences.&lt;/p&gt;

&lt;p&gt;He builds websites and web applications, WordPress and Drupal themes, Laravel web apps, Vue JS and React JS/Native apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Works as a Teacher at Boolean Careers&lt;/li&gt;
&lt;li&gt;Ranks in the Top 100 JavaScript developer in Hungary&lt;/li&gt;
&lt;li&gt;Contributes to a variety of Open Source projects&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow him on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://profile.codersrank.io/user/paoloduzioni/info"&gt;CodersRank profile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://paoloduzioni.it/"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.facebook.com/paoloduzioni"&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/paoloduzionidev/"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/PaoloDuzioni"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://codepen.io/Paolo-Duzioni"&gt;CodePen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/paoloduzioni"&gt;Github&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  JC Smiley
&lt;/h2&gt;

&lt;p&gt;JS Smiley is an experienced React Developer and a community builder. His top specialties are React, React Native, HTML5, CSS3, JavaScript, Node/Express, Angular, and Java.&lt;/p&gt;

&lt;p&gt;Smiley is passionate about organizing tech meetups, helping others learn to code, and moderating an online slack channel for local developers. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to now&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Manages Code-Connective, a local non-profit tech meetup group&lt;/li&gt;
&lt;li&gt;Organizes other various meetups such as Dev-Memphis, Code-Connective, and Memphis Web Workers&lt;/li&gt;
&lt;li&gt;Serves as a Teaching Assistant at Teach Code&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow him on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jcsmileyjr"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/jcsmiley4"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jcsmileyjr.github.io/Portfolio/"&gt;Portfolio&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Jennifer Ponder
&lt;/h2&gt;

&lt;p&gt;Jennifer Ponder is an experienced Technical Solutions Leader. She has worked as a software developer solving complex problems and implementing agile methodologies for B2B and B2C organizations. &lt;/p&gt;

&lt;p&gt;A constant leader for diversity, equity, and inclusion in tech. She has helped communities plan their diversity and inclusion development strategies for minorities and underrepresented groups in tech. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What she’s up to now&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Serves as a Co-Lead for Atlanta Chapter for Black Women Talk Tech (Talk Tech Association) and National Program Director at STEM Atlanta Women&lt;/li&gt;
&lt;li&gt;Serves as Director of Technology at Common Counsel Foundation
Partners with startups and non-profits for events in the Atlanta area where she has given technical talks and talks around women creating their own pathway to reach leadership&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow her on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/JPonder77"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/in/jennifer-ponder-csm-651111164/"&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Connect with talented JavaScript devs around you!
&lt;/h2&gt;

&lt;p&gt;CodersRank’s leaderboard of JavaScript developers. You can find and connect with top developers in your city or country🔥&lt;/p&gt;

&lt;p&gt;Are you looking to connect with talented JavaScript developers in your area? Make new friends, find business partners, organize a peer support group or even find a mentor via &lt;a href="https://profile.codersrank.io/leaderboard/developer?technology=JavaScript"&gt;our Developer Leaderboards&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>reactnative</category>
      <category>vue</category>
      <category>powerfuldevs</category>
    </item>
    <item>
      <title>12 Java Developers to Follow</title>
      <dc:creator>Peter Karakas</dc:creator>
      <pubDate>Fri, 28 May 2021 11:36:02 +0000</pubDate>
      <link>https://forem.com/peti2001/12-java-developers-to-follow-apf</link>
      <guid>https://forem.com/peti2001/12-java-developers-to-follow-apf</guid>
      <description>&lt;p&gt;The 12 developers below are absolutely worth following because of the informative, quality content they put out into the world. Be it tweets, blogs, videos, podcasts, or event speeches, I’m confident you’ll learn something new and insightful from each of them.&lt;/p&gt;

&lt;p&gt;You may already recognize some big names but we have also included some rising stars from the community to keep things interesting.&lt;/p&gt;

&lt;h2&gt;
  
  
  Adam Bien
&lt;/h2&gt;

&lt;p&gt;Adam Bien is a Java Architect and Developer who in his own words is ‘working with Java since 1995 and still really enjoying it.’ His impressive credentials include a Java Champion, NetBeans Dream Team Founding Member, Oracle ACE Director, and a Java Developer of the year 2010.&lt;/p&gt;

&lt;p&gt;Bien spreads the love for the exciting world of Java via his blog, books, podcast, video courses, video workshops, and live events. He’s an excellent trainer who’s been voted a JavaOne Rockstar 5x times by the attendees of his sessions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Organizes virtual live workshops airhacks.live and shares on-demand video workshops airhacks.io available for download&lt;/li&gt;
&lt;li&gt;Runs a monthly free interactive Web &amp;amp; Java Q&amp;amp;A show on airhacks.tv&lt;/li&gt;
&lt;li&gt;Sparks thought-provoking conversations with other Java experts on airhacks.fm podcast&lt;/li&gt;
&lt;li&gt;Shares actionable Java tutorials on his blog (2236 articles to the day) and a YouTube channel with 17.6K+ daily visits&lt;/li&gt;
&lt;li&gt;Shares his nuggets of knowledge via his Twitter account with 35,000+ followers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Check him out on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/AdamBien"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/channel/UCksTNgiRyQGwi2ODBie8HdA"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/AdamBien"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://adam-bien.com/"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Trisha Gee
&lt;/h2&gt;

&lt;p&gt;Trisha Gee is a Java Champion and leader of the Java Developer Advocacy team at JetBrains. Having developed Java applications for a range of industries of all sizes, she has expertise in Java high performance systems, dabbles with Open Source development, and is a leader of the Sevilla Java User Group.&lt;br&gt;
Trisha’s exceptionally passionate about sharing things that help real developers. She’s been voted JavaOne Rockstar 3x times.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What she’s up to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Edited and co-authored three books: 97 Things Every Java Developer Should Know, What to Look for in a Code Review, and Developer, Advocate!&lt;/li&gt;
&lt;li&gt;Helps developers to keep up with the world of Java via Java Annotated Monthly, a great summary of a month in the Java world&lt;/li&gt;
&lt;li&gt;Released four video courses via Pearson’s Live Lessons&lt;/li&gt;
&lt;li&gt;Inspired developers as a keynote speaker on a variety of conferences&lt;/li&gt;
&lt;li&gt;Leads Sevilla MongoDB and JavaUser Groups and is a key member of the London Java Community&lt;/li&gt;
&lt;li&gt;Shares Java knowledge with 28,000+ followers on Twitter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow her on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/trisha_gee"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/trishagee"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://trishagee.com/"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Alan Richardson
&lt;/h2&gt;

&lt;p&gt;Alan Richardson is an Agile Software Testing and Development consultant with 25+ years of experience. His mission as a coach and educator is to help developer teams to better test, automate and deliver improved quality software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Author of Dear Evil Tester, Java for Testers, Automating and Testing a REST API, Selenium Simplified (11,000+ books sold)&lt;/li&gt;
&lt;li&gt;Shares videos covering technical skills and practical software testing techniques to 17,000+ subscribers on his YouTube channel&lt;/li&gt;
&lt;li&gt;Runs ‘The Evil Tester Show’ podcast&lt;/li&gt;
&lt;li&gt;Speaks at various industry conferences. His tally is 60+ conference talks&lt;/li&gt;
&lt;li&gt;Ranks as 1% of Java Developers Worldwide on CodersRank&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Check him out on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/eviltester"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/c/EvilTester"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.facebook.com/eviltester/"&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.instagram.com/eviltester/"&gt;Instagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/eviltester"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.eviltester.com/"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Thorben Janssen
&lt;/h2&gt;

&lt;p&gt;Thorben Janssen has been a Software Developer and Architect for more than 15 years. More than a decade ago, he used one of the first Hibernate releases to implement the persistence layer of enterprise applications. Since then he’s used Hibernate and JPA in all kinds of projects of various sizes.&lt;br&gt;
He shares his experience on ‘Thoughts on Java’, a treasure trove of information on all things Java including tutorials, YouTube videos, workshops, and online courses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to&lt;/strong&gt;:&lt;br&gt;
Wrote Amazon’s bestselling book Hibernate Tips&lt;br&gt;
Regularly speaks at international conferences and Java User groups&lt;br&gt;
Shares detailed Java tutorials on his blog and YouTube with 26,000+ subscribers&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Check him out on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/channel/UCYeDPubBiFCZXIOgGYoyADw"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://twitter.com/thjanssen123"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/thjanssen"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thorben-janssen.com/"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A N M Bazlur Rahman
&lt;/h2&gt;

&lt;p&gt;A N M Bazlur Rahman is a Java Developer with 8+ years of experience. He helps Junior Software Developers to master the top coding and collaboration skills so they get hired to work on amazing projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runs the Java User Group in Bangladesh&lt;/li&gt;
&lt;li&gt;Published several books about Java programming&lt;/li&gt;
&lt;li&gt;Ranks at the Top 4% of Java Users on CodersRank&lt;/li&gt;
&lt;li&gt;Has been recognized as ‘Most Valuable Blogger’ by Dzone Inc.&lt;/li&gt;
&lt;li&gt;Shares useful Java nuggets on LinkedIn&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Check him out on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/bazlur_rahman"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.facebook.com/groups/jugbd/"&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/rokon12"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Jessica Kerr
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;With a dozen years of C and Java development at large companies under her belt, Jessica Kerr is a software developer who writes * Scala at Stripe. Besides Scala and Java, she also dabbles in Clojure, Elm, Ruby, Python and Go.&lt;/li&gt;
&lt;li&gt;As an international speaker, Kerr’s mission is to help Java developers learn new concepts and ideas in order to help them enjoy their work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What she’s up to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shares exclusive personal reflections on all things Java and effecting change in the world by operating and evolving useful software via her newsletter&lt;/li&gt;
&lt;li&gt;Serves as a keynote speaker at various industry events&lt;/li&gt;
&lt;li&gt;Shares her Java wisdom on Twitter with 33,000+ followers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow her on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/jessitron"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/jessitron"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jessitron.com/"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/user/jessitronica"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Sebastian Daschner
&lt;/h2&gt;

&lt;p&gt;Sebastian Daschner is a self-employed Java consultant, author, and trainer. He supports his clients with workshops and tailored consultation engagements, by applying expert knowledge and experience with a high claim in software craftsmanship.&lt;/p&gt;

&lt;p&gt;His mission is to educate developers about Java, enterprise software, and IT in general.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created DayCaptain, a personal time and task management tool
Shares productivity tips and experience-based technical advice on his blog&lt;/li&gt;
&lt;li&gt;Runs a value-packed YouTube channel&lt;/li&gt;
&lt;li&gt;Authored the book Architecting Modern Java EE Applications: Designing lightweight, business-oriented enterprise applications in the age of cloud, containers, and Java EE 8&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow him on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/DaschnerS"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/sdaschner"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sebastian-daschner.com/"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Heather VanCura
&lt;/h2&gt;

&lt;p&gt;Heather VanCura is a Java Expert with 20+ years of technology leadership. She leads the Java Community Process (JCP) Program at Oracle, as well as the global community driven adoption and user group programs. She’s a keen community builder who contributes to multiple diversity initiatives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What she’s up to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Organizes Hackergartens and Early Adopter areas&lt;/li&gt;
&lt;li&gt;Volunteers in multiple initiatives including Devoxx4Kids, Day of the Girl Events, and working with TechBridge Girls&lt;/li&gt;
&lt;li&gt;Contributes to JDuchess, Women Who Code, and the Grace Hopper Conference/Anita Borg Foundation&lt;/li&gt;
&lt;li&gt;Serves as an international speaker and community organizer of developer hack days around the world&lt;/li&gt;
&lt;li&gt;Speaks at conferences, such as Devoxx, DevNexus, FOSDEM, JFokus, OSCON, and JavaOne&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Check her out on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/heathervc"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/heathervc"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://heathervcblog.wordpress.com/"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Yong Mook Kim
&lt;/h2&gt;

&lt;p&gt;Yong Mook Kim is a Java Developer and the blogger behind Mkyong.com. He has been sharing Java and Spring tutorials with his community since 2008. All his articles are simple and easy to understand, sharing tips that are well tested in the development environment.&lt;/p&gt;

&lt;p&gt;His mission is to translate technology and programming in a way that’s easy for everyone to understand and help developers unlock their full potential.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Publishes easy-to-follow Java tutorials at Mkyong.com&lt;/li&gt;
&lt;li&gt;Shares useful Java tips to 18,000+ followers on Twitter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow him on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/mkyong"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mkyong"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mkyong.com/"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Monika Beckwith
&lt;/h2&gt;

&lt;p&gt;Monica Beckwith is a consultant specializing in optimizing Java/JVM performance and Garbage Collectors, for enterprise applications. Before that, she led Oracle’s First Garbage Collector (G1 GC) performance team. She’s also a Java Champion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What she’s up to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Serves as a President at Code Karam LLC, a group of experts in OpenJDK/Oracle JVM and Garbage Collectors, providing in-depth analysis and support&lt;/li&gt;
&lt;li&gt;An editor and writer for InfoQ, covering the latest news about Java&lt;/li&gt;
&lt;li&gt;Speaks at various conferences such as JavaOne, StrangeLoop and QCon&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow her on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/mon_beck/with_replies"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mo-beck"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Mateusz Kupilas
&lt;/h2&gt;

&lt;p&gt;Mateusz Kupilas is a Java Developer, YouTuber and entrepreneur. The mission behind his blog and YouTube channel is to help Junior developers to make their first steps in Java. He also shares lots of tutorials and retrospectives from his various coding and entrepreneurship projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recently published Junior Developer, a must-have read for each rookie programmer who wants to be ready for their first job in the field&lt;/li&gt;
&lt;li&gt;Runs a YouTube channel with 18,000+ subscribers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow him on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/javadevmatt?lang=en"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/channel/UCC0DqsMgWeHqNA6TGa2UHIA"&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/JavaDevMatt"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.javadevmatt.pl/"&gt;Blog&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Dr Heinz Kabutz
&lt;/h2&gt;

&lt;p&gt;A Ph.D. in Computer Science, Heinz has programmed significant portions of several large Java applications and has taught Java to thousands of professional programmers.&lt;/p&gt;

&lt;p&gt;Dr. Heinz was chosen as a Java Champion by Sun Microsystems, the inventors of Java, for his work in advancing Java.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What he’s up to&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Teaches Java training including Java Specialist Master, Design Patterns, and Concurrency Specialist Courses anywhere in the world, either in person or remotely&lt;/li&gt;
&lt;li&gt;Regularly speaks at all the major Java conferences
Authors Java Specialists Newsletter&lt;/li&gt;
&lt;li&gt;Shares his wisdom with 12,000+ followers on Twitter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Follow him on&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://twitter.com/heinzkabutz"&gt;Twitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kabutz"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.javaspecialists.eu/"&gt;Website&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Join 20,000+ Java Developers on CodersRank!
&lt;/h2&gt;

&lt;p&gt;Are you a Java developer? Among others, we’re proud of our vibrant community of both junior and experienced Java devs!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://profile.codersrank.io/register"&gt;Register your own profile on CodersRank&lt;/a&gt; to showcase your developer story and discover how your skills compare to other Java programmers around the world.&lt;/p&gt;

</description>
      <category>java</category>
      <category>inspiration</category>
      <category>podcast</category>
      <category>powerfuldevs</category>
    </item>
    <item>
      <title>2021 Developer Job Search Preference Survey</title>
      <dc:creator>Peter Karakas</dc:creator>
      <pubDate>Wed, 17 Mar 2021 13:31:47 +0000</pubDate>
      <link>https://forem.com/peti2001/2021-developer-job-search-preference-survey-37p8</link>
      <guid>https://forem.com/peti2001/2021-developer-job-search-preference-survey-37p8</guid>
      <description>&lt;p&gt;In February, we sent out a developer survey to our audience to learn more about devs and their job search habits.&lt;/p&gt;

&lt;p&gt;We wanted to gain a better understanding of what bugs developers about the recruitment process. Our big-picture goal is to revolutionize tech recruitment as a whole. This includes both sides: helping recruiters/companies AND developers have a better experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Developers told us about…
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;How many job offers they get on average&lt;/li&gt;
&lt;li&gt;Why they don’t respond to them&lt;/li&gt;
&lt;li&gt;What makes them jump on an opportunity&lt;/li&gt;
&lt;li&gt;What the BIGGEST problem with tech recruitment is&lt;/li&gt;
&lt;li&gt;…and more!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It was a small survey of nearly 500 respondents. Still, we feel that we can reach definitive conclusions thanks to the diversified answers and a few clear trends that emerged in the results.&lt;/p&gt;

&lt;p&gt;Just take a look at the word cloud that we generated out of the free text answers for the question “What do you hate most about the recruitment process?”&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qd_rvFDR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dsud7firvtun3grgzqhd.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qd_rvFDR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dsud7firvtun3grgzqhd.jpg" alt="developer survey word cloud"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most developers are overwhelmed by the interview process, how long it takes, and they desperately need more information up front (such as salary info).&lt;/p&gt;




&lt;h2&gt;
  
  
  1: 62.53% of developers receive 0-2 job offers per week
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--X8QEKp47--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tfwj6y60fbhtzsnbf8ni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--X8QEKp47--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tfwj6y60fbhtzsnbf8ni.png" alt="how many offers do developers get"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: single-choice question.&lt;/p&gt;

&lt;p&gt;The majority of devs get no more than two job offers per week. That may not seem like much but for many, it could be overwhelming.&lt;/p&gt;

&lt;p&gt;At the same time, we would love to chat with the 3% of devs who said they receive 10+ job offers per week. We suspect that these devs are the ones who usually appear in the top 10 of search results on LinkedIn.&lt;/p&gt;

&lt;p&gt;Let’s give these programmers a break and make space for new talent.&lt;/p&gt;




&lt;h2&gt;
  
  
  2: Almost half of participating developers answer these messages
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VOaG1275--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wcbcxwkzs4aglwr0s1e6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VOaG1275--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wcbcxwkzs4aglwr0s1e6.png" alt="graph: developers answer recruiter messages"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: single-choice question.&lt;/p&gt;

&lt;p&gt;Developers either answer their messages or they don’t. Nothing surprising there. However, almost half of them do try to get back to recruiters.&lt;/p&gt;

&lt;p&gt;You will see in Question #3 and Question #9 WHY devs don’t respond. The quality of recruiter messages can make or break new relationships. The more automated the message looks, the less likely developers will make time to explore the opportunity.&lt;/p&gt;




&lt;h2&gt;
  
  
  3: Over 64% of developers get offers for the wrong job
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pTyEcvsl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/91g9ldlcdt1kls7fpi25.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pTyEcvsl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/91g9ldlcdt1kls7fpi25.png" alt="what percentage of messages do developers answer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: multiple-choice question. Developers could select up to 3 reasons.&lt;/p&gt;

&lt;p&gt;More than 64% of developers included the reason ‘Irrelevant job title’ in their responses. They are receiving a lot of messages about job opportunities that do not reflect their expertise.&lt;/p&gt;

&lt;p&gt;Why do we think this is? A developer’s past is still the main defining element in their job offers in the present and in the future. This is problematic. Just because they did two small projects in Java 8 years ago, they shouldn’t be getting messages about it today. This is why CodersRank has the “Preferred Job Roles” and the “Technologies I don’t like” sections.&lt;/p&gt;

&lt;p&gt;Other times, developers don’t respond because some crucial information is missing from the recruiter’s messages. The salary range given is either not up to their preferences or absent entirely.&lt;/p&gt;

&lt;p&gt;36% of developers have no time to respond to recruiter inquiries.&lt;/p&gt;




&lt;h2&gt;
  
  
  4: Most developers are blasted with messages on LinkedIn
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4NuIMCkA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3i0juujrl88tyxvelznr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4NuIMCkA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3i0juujrl88tyxvelznr.png" alt="pie chart which channels do developers get contacted"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: multiple-choice question. Developers could select up to 3 channels.&lt;/p&gt;

&lt;p&gt;57.5% of developers usually get messages from tech recruiters &amp;amp; companies via LinkedIn. About 28% of them receive emails and the rest get direct messages on social media or phone calls.&lt;/p&gt;

&lt;p&gt;Within the ‘Other’ option, developers mentioned Stack Overflow, Xing (the German LinkedIn), and word-of-mouth.&lt;/p&gt;




&lt;h2&gt;
  
  
  5: 51% of developers are OK with messages via LinkedIn
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_pzwiKph--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ln8v16oeirt309elme56.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_pzwiKph--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ln8v16oeirt309elme56.png" alt="developer channel preference graph"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: single-choice question.&lt;/p&gt;

&lt;p&gt;More than half of all devs don’t mind receiving messages on LinkedIn. They likely prefer to keep their recruitment-related communication within a professional platform.&lt;/p&gt;

&lt;p&gt;‘Email’ landed as a close second in top communication choices.&lt;/p&gt;




&lt;h2&gt;
  
  
  6: Overwhelming majority of developers prefer to-the-point talk
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mYycG9ak--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3cg20aggfevtl5zb0h7o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mYycG9ak--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3cg20aggfevtl5zb0h7o.jpg" alt="graph: developer connection request preferences"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: single-choice question.&lt;/p&gt;

&lt;p&gt;82% of developers want to see a direct proposal about a position in their inbox. No fluff. No general introductions. They are not interested if the company may have a fitting role in the future. Programmers don’t want to entertain recruiters with no current openings.&lt;/p&gt;




&lt;h2&gt;
  
  
  7: When receiving a job offer, 82% of developers want to see the full tech stack needed
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qhqGRFdo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pilg8ukgsycg0h0apub8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qhqGRFdo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pilg8ukgsycg0h0apub8.png" alt="graph: minimum info developers need to accept or reject a job offer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: multiple-choice question&lt;/p&gt;

&lt;p&gt;The recruiter has made the initial contact. Now, the developer is ready to see what the job has to offer. To even consider this job, recruiters should include the above info as the bare minimum.&lt;/p&gt;

&lt;p&gt;Tech stack, responsibilities, and company name are in most of the answers. Sometimes recruiters are secretive about the company they are hiring for and the devs are not crazy about that aspect. They want to know as much about the position as possible.&lt;/p&gt;




&lt;h2&gt;
  
  
  8: LinkedIn &amp;amp; GitHub play big roles when developers are looking for a new job
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XfKe4mE5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g7pybyt2560x9b61ww7x.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XfKe4mE5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g7pybyt2560x9b61ww7x.jpg" alt="graph: which of the following plays the biggest role in finding a job"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: single-choice question&lt;/p&gt;

&lt;p&gt;LinkedIn is the biggest contributor to finding a new job. Recruiters have become more and more savvy in the past few years which reflects in GitHub being the second important element in the job search.&lt;/p&gt;

&lt;p&gt;Other platforms, such as a developer website and job boards are supporting components to the main three profiles.&lt;/p&gt;




&lt;h2&gt;
  
  
  9: The biggest problem in tech recruitment is the convoluted, long processes
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--B__K0lQt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zh1deb5uh3kuvr104q2k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--B__K0lQt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zh1deb5uh3kuvr104q2k.png" alt="developer reasons why it hiring is broken"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: free text input.&lt;/p&gt;

&lt;p&gt;To give space for any issue that’s bothering developers, we gave them an open-ended question that they had to fill out manually. So, what do developers hate most about recruitment?&lt;/p&gt;

&lt;p&gt;We see a clear trend emerge in the results. 24% of answers include complaints about the convoluted, time-consuming process of recruitment. They also dislike the fact that they often do not hear back about a position, nor is there general feedback. Developers are irked by the nonsensical and often unpaid tests. Many mentions that these tests have nothing to do with the role they’re applying for.&lt;/p&gt;

&lt;p&gt;We collected all complaints under ‘Irrelevant questions/messages’ that contained mentions of spammy, untargeted, automated, or otherwise irrelevant messages from recruiters/companies.&lt;/p&gt;

&lt;p&gt;Over 8% of developers have problems with the salary information provided. Recruiters either present no salary info until the very end or devs feel the offer is too low. Another 5% of them feel that recruiters do not provide all necessary details about a job.&lt;/p&gt;

&lt;p&gt;More than 5% of developers say that their portfolios and preferences are often ignored. Even if they clearly state “no PHP roles, please” on their profile, for example, they still get messages about PHP roles.&lt;/p&gt;

&lt;p&gt;The next few comment categories target recruiter behavior with little mercy. They say that recruiters and some companies are lacking enough technical knowledge, they are dishonest about positions, or that they downright lack empathy. Some developers mention that they feel they are treated only as “tech stacks”, instead of human beings.&lt;/p&gt;

&lt;p&gt;We also received some comments from developers who have faced ageism, sexism, or biased decision-making in their careers. We speculate that we may have under surveyed developers who identify as women, and therefore, we suspect that these issues would have received a larger share in the survey.&lt;/p&gt;




&lt;h2&gt;
  
  
  10: 67% of developers think tech recruitment is spammy
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SzSH0Px9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v4p3dn2mxri1siaobsja.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SzSH0Px9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v4p3dn2mxri1siaobsja.png" alt="tech recruitment spam scale"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;According to our statistics, 67% of developers would mark tech recruitment as spammy in general. In this figure, we included any answer above 6 on the scale.&lt;/p&gt;

&lt;p&gt;To understand why so many developers voted 6+, please refer to the Quotes from developers section below.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quotes from developers
&lt;/h3&gt;

&lt;p&gt;Below, we highlighted a few comments straight from the question ‘What do you hate about recruitment?’ Note, that some of these are very blunt. We hope that recruiters and companies will appreciate the honest developer feedback and make an effort to update their processes.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Recruiters always (take it) for granted that you should be interested in what they offer, but the reality is that if I already have a job you have to show me something that triggers my interest if you want me to reply. And nope, it is not the fact that the unknown company is a leader in their market or that they have table tennis in the coffee area."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"The position is now remote, but after COVID it’s on-site."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Some recruitment processes have many steps, taking months to give a final answer. Also that in some cases, they issue code tests, and theoretical tests, that in my opinion are useless."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Why are they asking for my CV via LinkedIn when they can check everything on my profile?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Employers/recruiters asking every tech stack they heard of regardless of whether they’re relevant."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"DevOps = Kubernetes (LOL)"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Bulk sent emails, with no personal touch. Having to send a CV while they could just check LinkedIn. Not hearing back from recruiters when you’re rejected. Not having it clear from the beginning what are the process steps."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"After getting selected for the practical test, spend days/weeks building the project and after that, get rejected without even a reason for so. This is truly unmotivating."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Too many phases, normally it takes more than 3 or 4 interviews plus a technical challenge. I think all could be settled with a max of 2 interviews plus a technical assessment."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




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

&lt;p&gt;We can say that devs would prefer a simpler interview process with fewer steps and more feedback along the way.&lt;/p&gt;

&lt;p&gt;In one word, IT hiring is broken. There is no doubt about it.&lt;/p&gt;

&lt;p&gt;This is why CodersRank’s mission is to revolutionize tech hiring and fix recruitment from the ground up. “The ground” in this case is a standardized profile where developers can represent their true value based on their experience and other preferences. Less mismatched requests, less time wasted, more excellent developers placed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are you a developer?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CodersRank is a platform built by developers for developers. We get your frustration about spammy practices and time-wasting interviews. We are aiming to connect you with recruiters/companies who are ready to embrace experience-based evaluation. Even if you’re not open to new opportunities right now, you can use CodersRank to monitor your progress as a professional.&lt;/p&gt;

&lt;p&gt;The more info you provide about your preferences on your profile, the less likely you’ll get irrelevant messages from recruiters going forward.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://profile.codersrank.io/register"&gt;Create your developer profile now ››&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are you a recruiter?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We hope this survey was helpful to you in understanding developers. To simplify your interview process, review developers’ experience instead of their test results. And for a better response rate, make sure to only contact candidates who qualify for your opportunity.&lt;/p&gt;

&lt;p&gt;CodersRank provides you the platform for this. Here, developers create their profiles by providing their real experience (via repositories) and combining it with their digital footprint. This gives you a code-based evaluation you can trust.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://search.codersrank.io/trial/"&gt;Sign up for a free trial to see our talent pool ››&lt;/a&gt;&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;Who filled out this survey?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--80WvJdnJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kx7swmtj9y3lmxtda9v1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--80WvJdnJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kx7swmtj9y3lmxtda9v1.jpg" alt="developer titles in this survey"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: single-choice question.&lt;/p&gt;

&lt;p&gt;In this survey, more than 71% of respondents are either full-stack, back-end, or front-end developers. But you can find a variety of titles from across the spectrum: from engineering managers to mobile developers and sysadmins.&lt;/p&gt;

&lt;p&gt;The results line up similar to the larger Stack Overflow survey. This tells us that our respondents are very close to the typical representation of the developer landscape.&lt;/p&gt;

&lt;p&gt;Note: in the CodersRank survey, we did not ask developers about their gender. The numbers you see are unweighted and may have slight discrepancies with the larger developer community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What’s their current job-search status?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OK0oGE3f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e53pk3o9rd7wu0qadhw9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OK0oGE3f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e53pk3o9rd7wu0qadhw9.jpg" alt="current developer job status in this survey"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Type&lt;/strong&gt;: single-choice question.&lt;/p&gt;

&lt;p&gt;Recruiters know this type of job-seeker very well: the passive candidate. They are not actively looking but open to new opportunities. In this survey, more than 56% of developers say they are interested in something new, and an additional 25% say that they are actively looking for a job. &lt;/p&gt;

</description>
      <category>career</category>
      <category>webdev</category>
    </item>
    <item>
      <title>10 Statistics from 2020 About Developers and Their Coding Habits</title>
      <dc:creator>Peter Karakas</dc:creator>
      <pubDate>Fri, 08 Jan 2021 09:55:23 +0000</pubDate>
      <link>https://forem.com/peti2001/10-statistics-from-2020-about-developers-and-their-coding-habits-4451</link>
      <guid>https://forem.com/peti2001/10-statistics-from-2020-about-developers-and-their-coding-habits-4451</guid>
      <description>&lt;p&gt;CodersRank is a community-based platform. It’s designed to help developers showcase their experience, grow professionally and make connections.&lt;/p&gt;

&lt;p&gt;For the second year in a row CodersRank aims to give devs a &lt;a href="https://profile.codersrank.io/year-in-review-2020"&gt;big-picture overview of their coding habits&lt;/a&gt; from the past year. The platform combines their experience and activity from various sources: GitHub (public AND private repos), GitLab and Stack Overflow. &lt;/p&gt;

&lt;p&gt;Aside from the personal overview, the platform also provides three additional reports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Global &lt;/li&gt;
&lt;li&gt;Local / Country-level&lt;/li&gt;
&lt;li&gt;Fun Facts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Global-level stats are based on 40,000+ CodersRank developers from around the world, same with the Local report. The Fun Facts are based on GitHub’s publicly available data on top performing repos and users. &lt;/p&gt;

&lt;p&gt;In this article, we’ll highlight 10 of the most interesting stats from these three reports. Let’s see how developers coded in 2020!&lt;/p&gt;




&lt;h2 class="has-text-color" id="h-codersrank-2020-developer-report"&gt;CodersRank 2020 Developer Report&lt;/h2&gt;

&lt;h3 id="h-1-most-active-month-for-coding-may"&gt;1. Most active month for coding: May&lt;/h3&gt;

&lt;p&gt;In 2020, developers were most productive in May. They submitted 286,000 commits, 816,000,000 insertions and 296,000,0000 deletions.&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://profile.codersrank.io/year-in-review-2020/global/"&gt;Source&lt;/a&gt;, slide 2)&lt;/p&gt;

&lt;h3 id="h-2-most-productive-coding-day-of-the-week-monday"&gt;2. Most productive coding day of the week: Monday&lt;/h3&gt;

&lt;p&gt;Developers were most active on Mondays in 2020. They made a total of 376,000 commits on these days.&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://profile.codersrank.io/year-in-review-2020/global/"&gt;Source&lt;/a&gt;, slide 3)&lt;/p&gt;

&lt;h3 id="h-3-most-productive-time-of-day-daytime"&gt;3. Most productive time of day: daytime&lt;/h3&gt;

&lt;p&gt;Devs churned out the most code and contributions between 12 pm and 6 pm during the day in 2020. Who said that developers were night owls?&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://profile.codersrank.io/year-in-review-2020/global/"&gt;Source&lt;/a&gt;, slide 4)&lt;/p&gt;

&lt;h3 id="h-4-most-used-programming-language-javascript"&gt;4. Most used programming language: JavaScript&lt;/h3&gt;

&lt;p&gt;In 2020, JavaScript is still ranking as the top language worldwide. The full list included:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;Python&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We recognize that most developers do not consider HTML and CSS as languages, but rather markup languages. The CodersRank report did not differentiate between stats this year and simply listed the most used technologies as is. Next year, HTML and CSS will likely be featured on a separate list.&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://profile.codersrank.io/year-in-review-2020/global/"&gt;Source&lt;/a&gt;, slide 5)&lt;/p&gt;

&lt;h3 id="h-5-security-was-top-priority"&gt;5. Security was top priority&lt;/h3&gt;

&lt;p&gt;Based on the number of commits, &lt;a href="https://gitlab.com/fluidattacks/product/-/tree/master/integrates"&gt;fluidattacks/integrates&lt;/a&gt; was the most popular public repositories in 2020. &lt;/p&gt;

&lt;p&gt;(&lt;a href="https://profile.codersrank.io/year-in-review-2020/global/"&gt;Source&lt;/a&gt;, slide 6)&lt;/p&gt;

&lt;h3 id="h-6-open-source-code-beat-private-code"&gt;6. Open source code beat private code&lt;/h3&gt;

&lt;p&gt;In 2020, developers committed almost 4x as much open source code as private code. &lt;/p&gt;

&lt;p&gt;(&lt;a href="https://profile.codersrank.io/year-in-review-2020/global/"&gt;Source&lt;/a&gt;, slide 7)&lt;/p&gt;

&lt;h3 id="h-7-most-popular-back-end-framework-strapi"&gt;7. Most popular back-end framework: strapi&lt;/h3&gt;

&lt;p&gt;The strapi/strapi framework gained over 11k stars on GitHub this year, effectively beating out nest, django, laravel, and spring.&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://profile.codersrank.io/year-in-review-2020/facts/"&gt;Source&lt;/a&gt;, slide 5)&lt;/p&gt;

&lt;h3 id="h-8-most-popular-front-end-framework-vue-js"&gt;8. Most popular front-end framework: vue.js&lt;/h3&gt;

&lt;p&gt;After much competition with react.js, vue.js landed on the first place with the most stars gained in 2020 (24k). These two were followed by angular, svelte and nuxt.&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://profile.codersrank.io/year-in-review-2020/facts/"&gt;Source&lt;/a&gt;, slide 6)&lt;/p&gt;

&lt;h3 id="h-9-big-cities-pushed-big-code"&gt;9. Big cities pushed big code&lt;/h3&gt;

&lt;p&gt;Cities that pushed the most code in order: London, Sao Paulo, Frankfurt am Main, Moscow and Saint Petersburg. &lt;/p&gt;

&lt;p&gt;(&lt;a href="https://profile.codersrank.io/year-in-review-2020/facts/"&gt;Source&lt;/a&gt;, slide 7)&lt;/p&gt;

&lt;h3 id="h-10-the-longest-coding-streak-in-2020-211-days"&gt;10. The longest coding streak in 2020: 211 days&lt;/h3&gt;

&lt;p&gt;This person pushed out code every single day for 211 days straight. Congrats, great work! (Hopefully some washroom breaks were incorporated, though.)&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://profile.codersrank.io/year-in-review-2020/global/"&gt;Source&lt;/a&gt;, slide 8)&lt;/p&gt;

&lt;h2 class="has-text-color" id="h-still-reading-here-s-a-surprise-for-you"&gt;Still reading? Here’s a surprise for you 🎁&lt;/h2&gt;

&lt;p&gt;If you &lt;a href="https://profile.codersrank.io/register"&gt;registered a developer profile&lt;/a&gt; on CodersRank when the Year in Review came out, you probably weren’t able to generate your own personal report. &lt;/p&gt;

&lt;p&gt;Well, great news! We are planning on doing a data push before the end of January so that all the new devs on the platform can get their 2020 coding report! Stay tuned.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Vue 3 Basic Tutorial  (Migration plan for Vue 2 users)</title>
      <dc:creator>Peter Karakas</dc:creator>
      <pubDate>Wed, 25 Nov 2020 12:27:11 +0000</pubDate>
      <link>https://forem.com/peti2001/vue-3-basic-tutorial-migration-plan-for-vue-2-users-30m5</link>
      <guid>https://forem.com/peti2001/vue-3-basic-tutorial-migration-plan-for-vue-2-users-30m5</guid>
      <description>&lt;h2 id="h-intro"&gt;&lt;strong&gt;Intro&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;At &lt;a href="https://codersrank.io/"&gt;CodersRank&lt;/a&gt; we build our front-end with Vue.js. And with the recent release of &lt;a href="https://v3.vuejs.org/"&gt;Vue.js version 3&lt;/a&gt; we decided to upgrade. Here, we’ll cover what needs to be changed to migrate to the all new Vue.js based on our experience.&lt;/p&gt;

&lt;p&gt;We have 2 main projects. One project is the large &lt;a href="https://profile.codersrank.io/"&gt;developers profile website&lt;/a&gt; and the other one is a smaller admin section. To start, we decided to migrate the smaller admin section to see how hard it is to migrate (spoiler: not hard).&lt;/p&gt;

&lt;p&gt;So, let's start.&lt;/p&gt;

&lt;h2 id="h-init-vue-app"&gt;&lt;strong&gt;Init Vue App&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;Let’s start at the main app entrypoint script. Vue.js version 3 uses new Global API and requires a different approach to initialize the app:&lt;/p&gt;

&lt;p&gt;In Vue 2 we had:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Import Vue &lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Vue&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Import main App component&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./App.vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Init Vue app&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="c1"&gt;// element where to mount the app&lt;/span&gt;
  &lt;span class="na"&gt;el&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="c1"&gt;// render main component&lt;/span&gt;
  &lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And in Vue 3 it is now:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Import createApp function&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createApp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Import main App component&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./App.vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Init Vue app and pass main app component&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;createApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Mount app&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#app&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2 id="h-vuex-store"&gt;&lt;strong&gt;Vuex Store&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;If you use &lt;a href="https://vuex.vuejs.org/"&gt;Vuex&lt;/a&gt; state management library, then it also needs to be updated to the latest version for Vue 3. And Vuex v4 also has new global API changes.&lt;/p&gt;

&lt;p&gt;Let's look at how we use that and the init Vuex store in Vue 2:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Vue&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Import Vuex&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Vuex&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vuex&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./App.vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Tell Vue.js to use Vuex plugin&lt;/span&gt;
&lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Vuex&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Create store instance&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;store&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Vuex&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Store&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;state&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cm"&gt;/* ... */&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;getters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cm"&gt;/* ... */&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;mutations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cm"&gt;/* ... */&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;actions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="cm"&gt;/* ... */&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;el&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;#app&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;render&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="c1"&gt;// pass store instance&lt;/span&gt;
  &lt;span class="na"&gt;store&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;store&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The same but in Vue 3 should be the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createApp&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Import createStore function&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createStore&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vuex&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./App.vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;createApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Create store instance&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;store&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;createStore&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;state&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="cm"&gt;/* ... */&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;getters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="cm"&gt;/* ... */&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;mutations&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="cm"&gt;/* ... */&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;actions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="cm"&gt;/* ... */&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="c1"&gt;// Tell app to use store&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;store&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Mount app&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;mount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#app&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2 id="h-slots"&gt;&lt;strong&gt;Slots&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;In our Vue 2 app we were still using legacy slots API:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;some-component&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;h1&lt;/span&gt; &lt;span class="na"&gt;slot=&lt;/span&gt;&lt;span class="s"&gt;"header"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;slot=&lt;/span&gt;&lt;span class="s"&gt;"content"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Content&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/some-component&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is required to be changed to a new one using &lt;code&gt;&amp;lt;template&amp;gt;&lt;/code&gt; tags:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;some-component&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;template&lt;/span&gt; &lt;span class="na"&gt;#header&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;Title&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/template&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;template&lt;/span&gt; &lt;span class="na"&gt;#content&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Content&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/template&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/some-component&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2 id="h-v-model"&gt;&lt;strong&gt;v-model&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;v-model&lt;/em&gt; also has new syntax in Vue 3. For example, if in Vue 2 we had the following component:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;custom-input&lt;/span&gt; &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"inputValue"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;template&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;:value=&lt;/span&gt;&lt;span class="s"&gt;"value"&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;input=&lt;/span&gt;&lt;span class="s"&gt;"onInput"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/template&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// specify prop that will be modified by v-model&lt;/span&gt;
      &lt;span class="na"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;value&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c1"&gt;// specify event that should be received by v-model with the new value&lt;/span&gt;
      &lt;span class="na"&gt;event&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;input&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;onInput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$emit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;input&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Vue 3, by default, it expects that v-model should be bound to modelValue prop of the component and emit &lt;code&gt;update:modelValue&lt;/code&gt; event in order to update model value. So we have to change the component to the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// change "value" prop to "modelValue"&lt;/span&gt;
      &lt;span class="na"&gt;modelValue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;onInput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// emit "update:modelValue" prop with new value&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$emit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;update:modelValue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But also Vue 3 provides more control over it and we still keep the prop named &lt;code&gt;value&lt;/code&gt;. In this case we need to emit &lt;code&gt;update:value event&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// keep name as value&lt;/span&gt;
      &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;methods&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;onInput&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// emit "update:value" prop with new value&lt;/span&gt;
        &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;$emit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;update:value&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And to let Vue know that we need model to be bound to the &lt;code&gt;value&lt;/code&gt; prop instead of the default &lt;code&gt;modelValue&lt;/code&gt;, we should use &lt;code&gt;v-model&lt;/code&gt; like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;custom-input&lt;/span&gt; &lt;span class="na"&gt;v-model:value=&lt;/span&gt;&lt;span class="s"&gt;"inputValue"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The best thing about it is that now components can have multiple &lt;code&gt;v-model&lt;/code&gt;s:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;some-component&lt;/span&gt; &lt;span class="na"&gt;v-model:title=&lt;/span&gt;&lt;span class="s"&gt;"titleValue"&lt;/span&gt; &lt;span class="na"&gt;v-model:content=&lt;/span&gt;&lt;span class="s"&gt;"contentValue"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2 id="h-composition-api"&gt;&lt;strong&gt;Composition API&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;Vue 3 comes with a new &lt;a href="https://v3.vuejs.org/guide/composition-api-introduction.html"&gt;Composition API&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It is not necessary to change all your components to the new Composition API as Vue 3 still works perfectly with the current Options API. That is why we decided to keep it at the moment.&lt;/p&gt;

&lt;h2 id="h-custom-elements-web-components"&gt;&lt;strong&gt;Custom Elements (Web Components)&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;At CodersRank we have a nice set of web components for developers to integrate on their personal websites. We also use them on our website:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/codersrank-org/activity-widget"&gt;Activity Chart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/codersrank-org/skills-chart-widget"&gt;Skills Chart&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It was not so straightforward to make Vue 3 understand them properly and not to think these are not Vue components.&lt;/p&gt;

&lt;p&gt;In Vue 2 to specify custom elements, we used &lt;code&gt;Vue.config.ignoredElements&lt;/code&gt;&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Vue&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ignoredElements&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;codersrank-activity&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;codersrank-skills-chart&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Vue&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ignoredElements&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;codersrank-activity&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;codersrank-skills-chart&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Vue 3 it is decided whether it is a custom element or not during template compilation phase, so it should be specified in webpack config Vue loader options:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;test&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\.&lt;/span&gt;&lt;span class="sr"&gt;vue$/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;use&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;loader&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue-loader&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nl"&gt;compilerOptions&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// ignore elements that starts with codersrank-&lt;/span&gt;
        &lt;span class="na"&gt;isCustomElement&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;indexOf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;codersrank-&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2 id="h-typescript"&gt;&lt;strong&gt;TypeScript&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;Vue 3 has much better &lt;a href="https://v3.vuejs.org/guide/typescript-support.html"&gt;TypeScript support&lt;/a&gt;. And during the migration to Vue 3 all we needed to change was the component declaration in single-file components:&lt;/p&gt;

&lt;p&gt;In Vue 2 we used `Vue.extend` to define the Vue component:&lt;/p&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;template&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!-- ... --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/template&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Vue&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;Vue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// ...&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// ...&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And in Vue 3 we need to use the new &lt;code&gt;defineComponent&lt;/code&gt; function:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;template&amp;gt;&lt;/span&gt;
  &lt;span class="c"&gt;&amp;lt;!-- ... --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/template&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;
  &lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;defineComponent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;defineComponent&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// ...&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="c1"&gt;// ...&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="c1"&gt;// ...&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2 id="h-post-scriptum"&gt;&lt;strong&gt;Post Scriptum&lt;/strong&gt;&lt;/h2&gt;

&lt;p&gt;In this article we have covered just the basics that we faced ourselves in our own project during migration from Vue.js 2 to Vue.js 3. Of course there are many things to pay attention to if you use other APIs, Vue features and plugins. Worth to mention:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Official &lt;a href="https://v3.vuejs.org/guide/migration/introduction.html#overview"&gt;Vue.js 3 migration guide&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Official &lt;a href="https://next.router.vuejs.org/guide/migration/index.html#breaking-changes"&gt;Vue Router migration guide&lt;/a&gt; for Vue.js 3 (in case you use Vue Router)&lt;/li&gt;
&lt;li&gt;New built-in &lt;a href="https://v3.vuejs.org/guide/teleport.html"&gt;Teleport functionality&lt;/a&gt; (if you used `portal-vue` plugin which is not yet supported for Vue.js 3)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v3.vuejs.org/guide/composition-api-introduction.html"&gt;Composition API Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://v3.vuejs.org/guide/migration/render-function-api.html#_3-x-syntax-2"&gt;Render function API changes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id="h-about-codersrank"&gt;About CodersRank&lt;/h2&gt;

&lt;p&gt;Interested in learning more about how we help developers? &lt;a href="https://codersrank.io/"&gt;Check out our website here &amp;amp; create your own profile&lt;/a&gt;!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
