<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: George Udonte</title>
    <description>The latest articles on DEV Community by George Udonte (@george_udonte).</description>
    <link>https://dev.to/george_udonte</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%2F820520%2Fcdf0e4fe-5f50-4078-9b7e-119863710b68.png</url>
      <title>DEV Community: George Udonte</title>
      <link>https://dev.to/george_udonte</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/george_udonte"/>
    <language>en</language>
    <item>
      <title>Crash Guide to Vue 2 in 2025 (Part 1)</title>
      <dc:creator>George Udonte</dc:creator>
      <pubDate>Sat, 06 Dec 2025 08:24:12 +0000</pubDate>
      <link>https://dev.to/george_udonte/crash-guide-to-vue-2-in-2025-part-1-pnc</link>
      <guid>https://dev.to/george_udonte/crash-guide-to-vue-2-in-2025-part-1-pnc</guid>
      <description>&lt;p&gt;Of course, Vue has been around for a while and you may not even have used it before. So if you’re trying to get started with Vue 2 (yes, not Vue 3), let me tell you this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You’re not “late.”&lt;/li&gt;
&lt;li&gt;It’s not outdated.&lt;/li&gt;
&lt;li&gt;It’s still powering enterprise-grade production apps that won’t magically disappear because a new version exists.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Vue 2 still rocks, especially if you’re joining a team maintaining an existing product, or you want to understand the foundations behind Vue 3’s improvements.&lt;/p&gt;

&lt;p&gt;So let’s get started, you’ll understand how Vue 2 works, how to think like a Vue developer, and how to build scalable structure using Vuex and TailwindCSS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Understand Vue’s Mindset (Not Just Syntax)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now Vue isn’t just a framework, it’s a philosophy:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Data-driven UI&lt;br&gt;
The DOM doesn’t dictate UI — your state does.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Declarative → Not Imperative&lt;br&gt;
Instead of writing &lt;code&gt;document.querySelector(...)&lt;/code&gt;, you write:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;data() {&lt;br&gt;
  return { count: 0 }&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;…and your UI reacts automatically.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Component First Architecture
Everything becomes reusable, maintainable blocks.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you never internalize this mindset, everything else will feel like mechanical copying. And I mean that. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Setup Your First Vue 2 Project (With CLI)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you haven’t installed Vue CLI:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install -g @vue/cli&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create your project:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;vue create vue-starter&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Choose options like:&lt;/p&gt;

&lt;p&gt;Babel&lt;br&gt;
Router (optional)&lt;br&gt;
Vuex&lt;br&gt;
Linter&lt;/p&gt;

&lt;p&gt;Then start the dev server:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm run serve&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Boom: Vue is alive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Understand the Vue 2 Component Anatomy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every Vue component has three core parts:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;template&amp;gt;&lt;br&gt;
  &amp;lt;button @click="increment"&amp;gt;Clicked {{ count }} times&amp;lt;/button&amp;gt;&lt;br&gt;
&amp;lt;/template&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;script&amp;gt;&lt;br&gt;
export default {&lt;br&gt;
  data() {&lt;br&gt;
    return { count: 0 }&lt;br&gt;
  },&lt;br&gt;
  methods: {&lt;br&gt;
    increment() {&lt;br&gt;
      this.count++&lt;br&gt;
    }&lt;br&gt;
  }&lt;br&gt;
}&lt;br&gt;
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;style scoped&amp;gt;&lt;br&gt;
button { padding: 10px; }&lt;br&gt;
&amp;lt;/style&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Concepts to truly understand:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;data():&lt;br&gt;
This must return a function in components and it prevents shared state between instances.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;methods vs computed:&lt;br&gt;
Computed caches results while methods re-run always.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;props:&lt;br&gt;
The communication channel from parent → child.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;4.$emit():&lt;br&gt;
Child → parent communication.&lt;/p&gt;

&lt;p&gt;Once these click, Vue stops being “syntax” and becomes a “lifestyle.” lol&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Project Structure That Scales&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Avoid dumping components in one folder like a todo list gone wrong.&lt;/p&gt;

&lt;p&gt;Use this structure pattern:&lt;/p&gt;

&lt;p&gt;src/&lt;br&gt;
 ┣ components/&lt;br&gt;
 ┣ views/&lt;br&gt;
 ┣ store/&lt;br&gt;
 ┣ assets/&lt;br&gt;
 ┣ router/&lt;br&gt;
 ┗ utils/&lt;/p&gt;

&lt;p&gt;Observe that in ReactJS, a pages folders is created instead of a views folder in VueJS.&lt;/p&gt;

&lt;p&gt;Why structure it this way?&lt;/p&gt;

&lt;p&gt;Because the future you and even the future of other developers, deserves mercy. lol. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5 — State Management With Vuex&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When components start sharing data, props become a mess and event emitting  starts to look like spaghetti code.&lt;/p&gt;

&lt;p&gt;That’s where Vuex steps in.&lt;/p&gt;

&lt;p&gt;Install if you didn’t enable during setup:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install vuex@3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create src/store/index.js:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import Vue from "vue";&lt;/code&gt;&lt;br&gt;
&lt;code&gt;import Vuex from "vuex";&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Vue.use(Vuex);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;export default new Vuex.Store({&lt;br&gt;
  state: {&lt;br&gt;
    count: 0&lt;br&gt;
  },&lt;br&gt;
  getters: {&lt;br&gt;
    getCount: state =&amp;gt; state.count&lt;br&gt;
  },&lt;br&gt;
  mutations: {&lt;br&gt;
    INCREMENT(state) {&lt;br&gt;
      state.count++&lt;br&gt;
    }&lt;br&gt;
  },&lt;br&gt;
  actions: {&lt;br&gt;
    incrementCount({ commit }) {&lt;br&gt;
      commit("INCREMENT")&lt;br&gt;
    }&lt;br&gt;
  }&lt;br&gt;
});&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now use it in a component:&lt;br&gt;
&lt;code&gt;&amp;lt;template&amp;gt;&lt;br&gt;
  &amp;lt;div&amp;gt;&lt;br&gt;
    &amp;lt;p&amp;gt;{{ count }}&amp;lt;/p&amp;gt;&lt;br&gt;
    &amp;lt;button @click="incrementCount"&amp;gt;Add&amp;lt;/button&amp;gt;&lt;br&gt;
  &amp;lt;/div&amp;gt;&lt;br&gt;
&amp;lt;/template&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;script&amp;gt;&lt;br&gt;
import { mapGetters, mapActions } from "vuex";&lt;br&gt;
export default {&lt;br&gt;
  computed: {&lt;br&gt;
    ...mapGetters(["getCount"]),&lt;br&gt;
    count() {&lt;br&gt;
      return this.getCount&lt;br&gt;
    }&lt;br&gt;
  },&lt;br&gt;
  methods: {&lt;br&gt;
    ...mapActions(["incrementCount"])&lt;br&gt;
  }&lt;br&gt;
};&lt;br&gt;
&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Vuex matters:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Predictable state transitions&lt;/li&gt;
&lt;li&gt;Debuggable via devtools&lt;/li&gt;
&lt;li&gt;Scales to teams and large apps&lt;/li&gt;
&lt;li&gt;Separation of concerns is clean&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Learn more in the Vuex 

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://vuex.vuejs.org/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;vuex.vuejs.org&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;Step 6: Styling With TailwindCSS (Without Wrestling CSS)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Tailwind is perfect with Vue because it encourages component-driven styling.&lt;/p&gt;

&lt;p&gt;Install:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install -D tailwindcss postcss autoprefixer&lt;br&gt;
npx tailwindcss init&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In tailwind.config.js:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;module.exports = {&lt;br&gt;
  purge: ["./index.html", "./src/**/*.{vue,js}"],&lt;br&gt;
};&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create src/assets/tailwind.css:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;@tailwind base;&lt;br&gt;
@tailwind components;&lt;br&gt;
@tailwind utilities;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Import in main.js:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;import "@/assets/tailwind.css"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Use immediately:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;button class="bg-blue-600 text-white px-4 py-2 rounded shadow hover:bg-blue-700"&amp;gt;&lt;br&gt;
  Click Me&lt;br&gt;
&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Tailwind makes UI iteration fast, consistent, and scalable without worrying about CSS conflicts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advanced Tips (That Make You a Real Vue Developer)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use computed for anything derived from state. Don’t duplicate logic in multiple places.&lt;/li&gt;
&lt;li&gt;Modularize Vuex when the app grows. Split store into modules.&lt;/li&gt;
&lt;li&gt;Use watchers carefully. Watchers are useful, but if you're overusing them, it usually means your computed properties or mutations aren't structured right.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;My Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Learning Vue isn’t just learning a framework, it’s learning how modern frontend works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reactive thinking&lt;/li&gt;
&lt;li&gt;State-driven UI&lt;/li&gt;
&lt;li&gt;Component-based architecture&lt;/li&gt;
&lt;li&gt;Scalable styling and state management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vue 2 gives you the solid foundation to transition effortlessly later to Vue 3, Nuxt, and more advanced patterns.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>frontend</category>
      <category>vue</category>
    </item>
    <item>
      <title>The Real Truth About Becoming a Cracked Frontend Engineer (Not Just a “React Developer”)</title>
      <dc:creator>George Udonte</dc:creator>
      <pubDate>Fri, 21 Nov 2025 11:05:47 +0000</pubDate>
      <link>https://dev.to/george_udonte/the-real-truth-about-becoming-a-cracked-frontend-engineer-not-just-a-react-developer-epo</link>
      <guid>https://dev.to/george_udonte/the-real-truth-about-becoming-a-cracked-frontend-engineer-not-just-a-react-developer-epo</guid>
      <description>&lt;p&gt;I see a lot of posts telling frontend developers to “learn React, learn Vue, learn Next.js.”&lt;/p&gt;

&lt;p&gt;Cool.&lt;/p&gt;

&lt;p&gt;But if you really want to become cracked — the kind of frontend engineer companies fight for — you need to understand the invisible layer of engineering that most developers never talk about.&lt;/p&gt;

&lt;p&gt;Now clock this out:&lt;/p&gt;

&lt;p&gt;1.Tools Don’t Make You Cracked — Mental Models Do&lt;/p&gt;

&lt;p&gt;You can know React, Next.js, Vue.js… and still write code that collapses like a Jenga tower.&lt;/p&gt;

&lt;p&gt;Cracked frontend engineers think in systems, not components.&lt;/p&gt;

&lt;p&gt;Here are questions real seniors ask on every project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What happens to performance at scale?&lt;/li&gt;
&lt;li&gt;How predictable is state flow?&lt;/li&gt;
&lt;li&gt;Can another dev debug this in 10 seconds?&lt;/li&gt;
&lt;li&gt;How will this component behave with untrusted or malformed data?&lt;/li&gt;
&lt;li&gt;If the API changes tomorrow, will this UI break silently or loudly?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The earlier you start thinking like this, the faster you grow.&lt;/p&gt;

&lt;p&gt;2.UI Is More Than Pretty Pixels — It’s Applied Psychology&lt;/p&gt;

&lt;p&gt;The frontend is the closest layer to the human brain.&lt;/p&gt;

&lt;p&gt;Top frontend engineers understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cognitive load&lt;/li&gt;
&lt;li&gt;Interaction patterns&lt;/li&gt;
&lt;li&gt;Decision latency&lt;/li&gt;
&lt;li&gt;Microfeedback loops&lt;/li&gt;
&lt;li&gt;Error recovery intuition&lt;/li&gt;
&lt;li&gt;Accessibility that feels natural, not forced&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’re not just moving divs — you are engineering how humans experience software.&lt;/p&gt;

&lt;p&gt;That skill alone can 10x your value.&lt;/p&gt;

&lt;p&gt;3.State Management Will Make or Break You&lt;/p&gt;

&lt;p&gt;Most devs think state management = Redux or Zustand.&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;Cracked frontend engineers understand state architecture, not just tools.&lt;/p&gt;

&lt;p&gt;Ask yourself:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When should state live at the component level?&lt;/li&gt;
&lt;li&gt;When should it live globally?&lt;/li&gt;
&lt;li&gt;How do you prevent “global state bloat”?&lt;/li&gt;
&lt;li&gt;When do you cache or memoize?&lt;/li&gt;
&lt;li&gt;Should UI fetch synchronously or optimistically?&lt;/li&gt;
&lt;li&gt;How should you invalidate stale state?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why frontend feels harder than backend sometimes — the backend rarely deals with interactivity chaos at this scale.&lt;/p&gt;

&lt;p&gt;4.Performance Is a Frontend Duty, Not a Backend Favor&lt;/p&gt;

&lt;p&gt;Real frontend devs measure performance like backend engineers track database queries.&lt;/p&gt;

&lt;p&gt;You should know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bundle splitting&lt;/li&gt;
&lt;li&gt;React server components (RSC) behavior&lt;/li&gt;
&lt;li&gt;Network waterfalls&lt;/li&gt;
&lt;li&gt;Critical rendering path&lt;/li&gt;
&lt;li&gt;Preloading &amp;amp; prefetching&lt;/li&gt;
&lt;li&gt;Image optimization strategy&lt;/li&gt;
&lt;li&gt;JavaScript execution cost (not just size)&lt;/li&gt;
&lt;li&gt;Cumulative Layout Shift (CLS) killers&lt;/li&gt;
&lt;li&gt;A fast UI is a business advantage, not a checkbox.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;5.Debugging Is a Superpower — Treat It Like One&lt;/p&gt;

&lt;p&gt;Juniors try random fixes.&lt;br&gt;
Cracked Frontenders trace the root cause like forensic engineers.&lt;/p&gt;

&lt;p&gt;To improve debugging:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learn your browser devtools like your own home&lt;/li&gt;
&lt;li&gt;Set breakpoints intentionally&lt;/li&gt;
&lt;li&gt;Read call stacks cleanly&lt;/li&gt;
&lt;li&gt;Understand event loops and microtasks&lt;/li&gt;
&lt;li&gt;Know network failures vs logic failures&lt;/li&gt;
&lt;li&gt;Learn how to catch race conditions (most devs can’t)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you can fix what others can’t explain, you’re already senior.&lt;/p&gt;

&lt;p&gt;6.Version Control Is Not “Git Add .”&lt;/p&gt;

&lt;p&gt;If you want to stand out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Write commit messages that actually explain intent&lt;/li&gt;
&lt;li&gt;Use branches like you use toothbrushes — frequently and intentionally&lt;/li&gt;
&lt;li&gt;Learn how to revert cleanly&lt;/li&gt;
&lt;li&gt;Learn interactive rebasing&lt;/li&gt;
&lt;li&gt;Protect your main branch like it’s your baby&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most issues in teams are not React issues — they’re bad Git hygiene.&lt;/p&gt;

&lt;p&gt;7.The Secret Sauce: Build Boring, Predictable, Maintainable Apps&lt;/p&gt;

&lt;p&gt;Cracked Frontenders understand that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flashy code impresses nobody&lt;/li&gt;
&lt;li&gt;Maintainability impresses everyone&lt;/li&gt;
&lt;li&gt;Predictable architecture saves companies millions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your code requires a YouTube tutorial to understand, it's not cracked-level — it’s irresponsible.&lt;/p&gt;

&lt;p&gt;8.Yes, Learn Backend… But Not for the Reasons You Think&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Not to “be fullstack”.&lt;/li&gt;
&lt;li&gt;Learn backend to:&lt;/li&gt;
&lt;li&gt;Build better APIs through empathy&lt;/li&gt;
&lt;li&gt;Stop blaming backend teams for slow responses&lt;/li&gt;
&lt;li&gt;Structure your data flow properly&lt;/li&gt;
&lt;li&gt;Understand authentication deeply&lt;/li&gt;
&lt;li&gt;Avoid over-fetching and under-fetching&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You don’t need to be backend-heavy.&lt;br&gt;
You just need to understand the contract between UI ↔ API.&lt;/p&gt;

&lt;p&gt;If you can master even 40% of this, you're already above 90% of the field.&lt;/p&gt;

&lt;p&gt;Frontend is no longer “HTML/CSS + React.”&lt;/p&gt;

&lt;p&gt;It’s:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Engineering&lt;/li&gt;
&lt;li&gt;Psychology&lt;/li&gt;
&lt;li&gt;Architecture&lt;/li&gt;
&lt;li&gt;Systems thinking&lt;/li&gt;
&lt;li&gt;Performance&lt;/li&gt;
&lt;li&gt;Debugging&lt;/li&gt;
&lt;li&gt;Design intuition&lt;/li&gt;
&lt;li&gt;Product understanding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why frontend engineers who truly master the craft can comfortably earn 7–8 figures, as this &lt;a href="https://www.linkedin.com/posts/backend-developer-ismaheel_if-youre-a-frontend-developer-dont-rush-activity-7397472584382013440-iW9O?utm_source=share&amp;amp;utm_medium=member_desktop&amp;amp;rcm=ACoAABt_Wd4BfJKvhAd83MkFusZYc_YBf_7zrb8" rel="noopener noreferrer"&gt;linkedin post&lt;/a&gt; says.&lt;/p&gt;

&lt;p&gt;Because great frontend engineers aren’t just coders —&lt;br&gt;
They’re the bridge between humans and software.&lt;/p&gt;

</description>
      <category>frontend</category>
      <category>react</category>
      <category>software</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Unleashing Developer Potential: Balancing Cognitive Load for Peak Productivity</title>
      <dc:creator>George Udonte</dc:creator>
      <pubDate>Thu, 23 Oct 2025 09:50:10 +0000</pubDate>
      <link>https://dev.to/george_udonte/unleashing-developer-potential-balancing-cognitive-load-for-peak-productivity-1636</link>
      <guid>https://dev.to/george_udonte/unleashing-developer-potential-balancing-cognitive-load-for-peak-productivity-1636</guid>
      <description>&lt;p&gt;Introduction&lt;/p&gt;

&lt;p&gt;In the ever-evolving landscape of software development, engineers and teams are constantly challenged to bring their A-game to the table. One crucial factor that determines their effectiveness is cognitive load, the mental burden placed on individuals when they work. Striking the right balance of cognitive load can be the key to unlocking a team's full potential. Inspired by the Team Topologies framework, we delve into the three types of cognitive load and explore strategies to optimize each one for maximum productivity.&lt;/p&gt;

&lt;p&gt;The Three Types of Cognitive Load&lt;/p&gt;

&lt;p&gt;Intrinsic Load: Nurturing Technical Prowess&lt;br&gt;
Intrinsic cognitive load refers to the mental effort required for tasks that are intrinsic to your work, primarily your technical skills. For example, understanding how classes are defined in Java or mastering the intricacies of a complex framework. While this load is necessary, it can become a barrier to productivity when it overwhelms engineers.&lt;/p&gt;

&lt;p&gt;Scenario: Imagine a team tasked with developing a prototype. They can either choose to build it from scratch using a custom full-stack application or leverage a low-code tool to simplify the process. The latter option reduces the intrinsic load, allowing engineers to focus on the core functionality rather than getting bogged down by technical complexities.&lt;/p&gt;

&lt;p&gt;Strategies for Reducing Intrinsic Load:&lt;/p&gt;

&lt;p&gt;Make smart technology choices to simplify development.&lt;br&gt;
Invest in team capabilities through training, pair programming, and strategic hiring.&lt;br&gt;
Extraneous Load: Tackling Unnecessary Distractions&lt;br&gt;
Extraneous cognitive load involves the mental burden associated with tasks that do not add value to the development process. These distractions can range from cumbersome bureaucratic processes to repetitive, time-wasting activities.&lt;/p&gt;

&lt;p&gt;Scenario: Consider a scenario where developers frequently grapple with remembering how to deploy an application due to convoluted documentation or an outdated deployment process. This extraneous load distracts them from their primary goal—writing code and delivering value to users.&lt;/p&gt;

&lt;p&gt;Strategies for Reducing Extraneous Load:&lt;/p&gt;

&lt;p&gt;Streamline development processes and focus on developer experience (DX).&lt;br&gt;
Foster a culture of continuous delivery to eliminate unnecessary bottlenecks.&lt;br&gt;
Germane Load: Leveraging Domain Knowledge for Value Creation&lt;br&gt;
Germane cognitive load is the holy grail of development. It encompasses the knowledge of your business domain and the specific problems you aim to solve. This type of load directly contributes to value creation.&lt;/p&gt;

&lt;p&gt;Scenario: Picture a team working on an e-commerce platform. Their deep understanding of the domain allows them to make informed decisions about how to structure financial data for optimal performance. They can also implement best practices for an e-commerce checkout process, enhancing user satisfaction and revenue generation.&lt;/p&gt;

&lt;p&gt;Strategies for Optimizing Germane Load:&lt;/p&gt;

&lt;p&gt;Organize teams to apply domain knowledge effectively.&lt;br&gt;
Minimize plumbing and non-business-related tasks, allowing engineers to focus on solving domain-specific problems.&lt;br&gt;
Conclusion&lt;/p&gt;

&lt;p&gt;In the world of software development, cognitive load management is an art that can elevate teams to new heights of productivity. By recognizing and addressing the three types of cognitive load—intrinsic, extraneous, and germane—engineers can unlock their true potential. Creating an environment where germane knowledge is maximized while intrinsic and extraneous loads are minimized is the path to success.&lt;/p&gt;

&lt;p&gt;As software development continues to evolve, mastering the art of cognitive load management will be a hallmark of high-performing teams. By doing so, engineers can transform challenges into opportunities, creating innovative solutions that drive business success.&lt;/p&gt;

</description>
      <category>mentalhealth</category>
      <category>productivity</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Decoding Developer Relations: A Comprehensive Guide to DevRel</title>
      <dc:creator>George Udonte</dc:creator>
      <pubDate>Tue, 16 Jan 2024 10:15:28 +0000</pubDate>
      <link>https://dev.to/george_udonte/decoding-developer-relations-a-comprehensive-guide-to-devrel-4dfp</link>
      <guid>https://dev.to/george_udonte/decoding-developer-relations-a-comprehensive-guide-to-devrel-4dfp</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;A lot has evolved in tech, especially for software organizations. These days most tech businesses do not only have to build the tools/technologies that developers use, they also have to continuously build strong relationships with these developers in order to thrive. &lt;/p&gt;

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

&lt;p&gt;Developer relations, often abbreviated as DevRel, is the strategic approach that organizations employ to engage with and empower developers, in order to foster a mutually beneficial ecosystem. &lt;/p&gt;

&lt;p&gt;In this blog, we'll explore everything around Developer Relations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Developer Relations:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is Developer Relations?
&lt;/h3&gt;

&lt;p&gt;Developer Relations, or DevRel, is the practice of building and maintaining relationships between developers and a company, product, or technology. It involves advocating for developers within an organization, serving as a middleman between technical teams and end-users.  &lt;/p&gt;

&lt;p&gt;Over the years, DevRel has grown into a multifaceted field that plays a pivotal role in bridging the gap between developers and the technologies, products, or services they use. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Importance of DevRel:
&lt;/h3&gt;

&lt;p&gt;A company must have a developer products, for it to need a Developer Relations person/team; otherwise it may just need a marketing team. DevRel itself is not just about marketing; it's about fostering a sense of community, providing support, and empowering developers to succeed with a particular technology or product. The stronger the developer community, the more vibrant and sustainable the ecosystem becomes.&lt;/p&gt;

&lt;p&gt;DevRel is becoming increasingly important for businesses for several reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Developer-driven innovation:&lt;/strong&gt; Developers are at the forefront of innovation, and building strong relationships with them can help businesses stay ahead of the curve.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open source adoption:&lt;/strong&gt; Open source software is becoming increasingly popular, and DevRel plays a key role in helping companies get involved in open source communities and build a developer following.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Talent acquisition:&lt;/strong&gt; DevRel can help companies attract and retain top talent by building a strong reputation as an employer of choice for developers.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h3&gt;
  
  
  Key Responsibilities in DevRel:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Developer Advocacy:&lt;/strong&gt;&lt;br&gt;
Developer Advocacy is at the core of DevRel. Advocates act as the voice of developers within the organization, promoting products, creating content, and ensuring that the needs and concerns of the developer community are heard and addressed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Community Engagement:&lt;/strong&gt;&lt;br&gt;
Building and nurturing a thriving community is central to DevRel. This involves active participation in online forums, social media, conferences, and other events to connect with developers, share knowledge, and gather feedback.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Content Creation:&lt;/strong&gt;&lt;br&gt;
DevRel professionals often create diverse and valuable content such as blog posts, tutorials, videos, and documentation. This content serves as a resource for developers, helping them understand and utilize the technology or product effectively.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Essential Skills for Success in DevRel:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Communication Skills:&lt;/strong&gt;&lt;br&gt;
Effective communication is a cornerstone of DevRel. As a developer advocate you should be able to articulate complex technical concepts in a way that is understandable to various audiences, from beginners to experienced developers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Technical Proficiency:&lt;/strong&gt;&lt;br&gt;
While it is not mandatory, a strong technical background is beneficial for DevRel professionals. It enables them to understand developers' challenges and contribute meaningfully to technical discussions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Empathy:&lt;/strong&gt;&lt;br&gt;
Empathy is key to understanding and addressing the needs of developers. DevRel professionals should be able to put themselves in the shoes of their audience, recognizing the challenges and triumphs developers experience.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h3&gt;
  
  
  Types of DevRel Roles
&lt;/h3&gt;

&lt;p&gt;There are a variety of DevRel roles, each with its own set of responsibilities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Developer Advocate (DevAd):&lt;/strong&gt; DevAds are the face of DevRel, responsible for evangelizing a company's products and technologies to developers. They often speak at conferences, write blog posts, and create tutorials.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Engineering Advocate:&lt;/strong&gt; Engineering Advocates work closely with engineers to ensure that products are well-designed and easy to use for developers. They may also help with customer support and bug fixes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Community Manager:&lt;/strong&gt; Community Managers are responsible for fostering a vibrant community of developers around a company's products. They may organize meetups, manage online forums, and run developer events.&lt;br&gt;
Content Creator: Content Creators produce educational materials, such as blog posts, tutorials, and webinars, to help developers learn about and use a company's products.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Strategies for Success in Developer Relations:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Building Trust:&lt;/strong&gt;&lt;br&gt;
Trust is the foundation of successful DevRel. Advocates must establish credibility by providing accurate information, addressing concerns transparently, and actively listening to the community.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Measuring Impact:&lt;/strong&gt;&lt;br&gt;
DevRel success is measurable. Metrics like developer engagement, community growth, and feedback collection provide tangible insights into the impact of advocacy efforts. These metrics guide future strategies and initiatives.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Balancing Advocacy and Corporate Interests:&lt;/strong&gt;&lt;br&gt;
DevRel professionals must strike a delicate balance between being a user advocate and representing the company's interests. This requires transparency and authenticity to build trust within the community.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h2&gt;
  
  
  New DevRel Trends:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Remote DevRel&lt;/strong&gt;:&lt;br&gt;
The rise of remote work has impacted DevRel, with advocates engaging with developers globally through virtual events, webinars, and online communities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Inclusivity and Diversity&lt;/strong&gt;:&lt;br&gt;
DevRel is increasingly focused on promoting inclusivity and diversity within developer communities. Advocates work towards creating environments that welcome individuals of all backgrounds and experiences.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Evolving Technologies&lt;/strong&gt;:&lt;br&gt;
Keeping pace with technological advancements is crucial for DevRel professionals. Staying updated on industry trends enables advocates to provide relevant and timely information to the developer community.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Challenges in DevRel:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Technical Depth vs. Accessibility&lt;/strong&gt;:&lt;br&gt;
Finding the right balance between providing in-depth technical content and making it accessible to a broader audience can be challenging.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scalability&lt;/strong&gt;:&lt;br&gt;
As communities grow, ensuring scalability in terms of support, resources, and engagement becomes a challenge that DevRel teams need to address.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;h2&gt;
  
  
  Practical Approach to Become a DevRel Professional
&lt;/h2&gt;

&lt;p&gt;To become a successful DevRel professional, one should have a good  technical background and be passionate about software development. One should also be able to communicate effectively with both developers and non-technical audiences. &lt;br&gt;
Some additional tips for becoming a DevRel professional:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Get involved in the developer community: Attend meetups, contribute to open source projects, and blog about your technical interests.&lt;/li&gt;
&lt;li&gt;Develop your public speaking skills: Practice giving presentations and learn how to connect with your audience.&lt;/li&gt;
&lt;li&gt;Build a strong online presence: Create a personal website and blog, and network with other DevRel professionals on social media.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;Developer Relations is an interesting and rewarding field that requires a combination of technical expertise, effective communication, and a genuine passion for fostering developer success. DevRel is a growing and exciting field that offers a unique opportunity to make a real impact on the software development community. If you're a passionate developer with strong communication and interpersonal skills, then DevRel may be the perfect career for you. By building strong relationships with developers, you can help your company succeed and make a positive impact in the software development space.&lt;/p&gt;

</description>
      <category>devrel</category>
      <category>developers</category>
      <category>softwaredevelopment</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Emacs and Vim - A Basic Overview For Beginners in Software Engineering</title>
      <dc:creator>George Udonte</dc:creator>
      <pubDate>Thu, 24 Feb 2022 12:06:23 +0000</pubDate>
      <link>https://dev.to/george_udonte/emacs-and-vim-an-overview-for-beginners-2e65</link>
      <guid>https://dev.to/george_udonte/emacs-and-vim-an-overview-for-beginners-2e65</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;You've probably never heard of emacs or Vim, especially if you're just starting out your career in software engineering.&lt;/p&gt;

&lt;p&gt;It is also normal that as a windows Operating System user, you've only been working with the notepad, notepad++, sublime text, visual studio code, and all other common text editors.&lt;/p&gt;

&lt;p&gt;In the Linux operating system, Emacs and vi are the major editors that are used to manipulate files. Both are the major gladiators in the popular editor wars that started in the late 90s. &lt;/p&gt;

&lt;p&gt;Nowadays, the hottest contenders in tech software are web browsers. Internet Explorer, Firefox, and Chrome are competing for a larger market in the figurative browser war.&lt;/p&gt;

&lt;p&gt;Holy wars are also existing in every sphere of life, especially in pop culture: iPhone vs Android, Marvel vs DC, Coke vs Pepsi, and so on. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsdli4m8pm3p7y98wbukr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsdli4m8pm3p7y98wbukr.png" alt="Pop Culture Wars" width="261" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Text Editor Wars
&lt;/h2&gt;

&lt;p&gt;The editor war is the rivalry between users of the Emacs and vi (now usually Vim, or more recently Neovim) text editors. The rivalry has become a lasting part of hacker culture and the free software community.&lt;/p&gt;

&lt;p&gt;Since at least 1985, The Emacs versus vi debate was one of the original "holy wars" even before the internet. Many users insisted that their editor of choice is the paragon of editing perfection, and insulting the other. Similar tech battles have been fought over operating systems, programming languages, version control systems, and even source code indent style.&lt;/p&gt;

&lt;p&gt;We are going to look at both editors and analyze their features and jargon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Emacs
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.linuxfordevices.com/tutorials/linux/emacs-editor-tutorial" rel="noopener noreferrer"&gt;Emacs (Editor Macros)&lt;/a&gt;&lt;/strong&gt; was developed by David A Moon in 1976 making it one of the oldest pieces of software which exists today. GNU Emacs, the most used variant(fork) of Emacs, was released in 1985 by Richard Stallman, the founder of GNU/Linux.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyey5phikt92isuffcjlv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyey5phikt92isuffcjlv.png" alt="A Quote of Richard Stallman, the founder of GNU/Linux" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.gnu.org/software/emacs/" rel="noopener noreferrer"&gt;Emacs&lt;/a&gt; is a highly advanced, extensible, and customizable text editor that also offers an interpretation of the Lisp programming language at its core. Different extensions can be added to support text editing functionalities. &lt;/p&gt;

&lt;p&gt;Emacs has the following features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User documentation and tutorials&lt;/li&gt;
&lt;li&gt;Syntax highlighting using colors even for plain text.&lt;/li&gt;
&lt;li&gt;Unicode supports many natural languages.&lt;/li&gt;
&lt;li&gt;Various extensions including mail and news, debugger interface, calendar, and many more.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;You can find basic emac commands &lt;a href="https://web.physics.ucsb.edu/~pcs/apps/editors/emacs-basics.html" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Vi(m)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.linuxfordevices.com/tutorials/linux/vim-tutorial" rel="noopener noreferrer"&gt;Vim (Vi Improved)&lt;/a&gt;&lt;/strong&gt;, as the name suggests is an improved clone of the text editor. The text editor was originally developed by Billy Joy in 1976 for the proprietary Unix operating system. Bram Moolenar later enhanced &lt;code&gt;vi&lt;/code&gt; and released it as &lt;code&gt;vim&lt;/code&gt; in 1991.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://www.tecmint.com/install-vim-in-linux/" rel="noopener noreferrer"&gt;Vim&lt;/a&gt; is a powerful command-line-based text editor that has enhanced the functionalities of the old Unix &lt;a href="https://www.tecmint.com/vi-editor-usage/" rel="noopener noreferrer"&gt;Vi text editor&lt;/a&gt;. It is one the most popular and widely used text editors among System Administrators and programmers that is why many users often refer to it as a programmer’s editor. It &lt;a href="https://www.tecmint.com/enable-syntax-highlighting-in-vi-editor/" rel="noopener noreferrer"&gt;enables syntax highlighting&lt;/a&gt; when writing code or editing configuration files. &lt;/p&gt;

&lt;p&gt;The UNIX vi editor is a full-screen editor and has two modes of operation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Command mode&lt;/em&gt; commands which cause action to be taken on the file, and&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;em&gt;Insert mode&lt;/em&gt; in which entered text is inserted into the file. In the command mode, every character typed is a command that does something to the text file being edited; a character typed in the command mode may even cause the vi editor to enter the insert mode. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In the insert mode, every character typed is added to the text in the file; pressing the  (&lt;em&gt;Escape&lt;/em&gt;) key turns off the Insert mode.&lt;/p&gt;

&lt;p&gt;While there are several vi commands, just a handful of these is usually sufficient for beginning vi users.&lt;/p&gt;

&lt;p&gt;You can find basic vi commands &lt;a href="https://www.cs.colostate.edu/helpdocs/vi.html" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vim is also used with Kubernetes for Developer Operations (devops) &lt;a href="https://blog.getambassador.io/ckad-exam-tips-how-to-use-the-vim-editor-2be2a3283327?hss_channel=lcp-9320816&amp;amp;utm_content=200401193&amp;amp;utm_medium=social&amp;amp;utm_source=linkedin&amp;amp;gi=e5047caef4d2" rel="noopener noreferrer"&gt;expecially the Certified Kubernetes Application Developer Exam&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Similarities between Emacs and Vi
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;The buffer tabs are supported in both the command line and graphical user interface.&lt;/li&gt;
&lt;li&gt;Cross-platform text editors, including Unix, Linux, and Microsoft Windows.&lt;/li&gt;
&lt;li&gt;Available in English, Chinese, French, Italian, Polish, Russian, and even more languages.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Differences between Emacs and Vi
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;User Interface and Environment&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Vim uses editing modes - most commonly the &lt;em&gt;command mode&lt;/em&gt; and &lt;em&gt;insert mode&lt;/em&gt;. Vim aims to minimize the number of keystrokes that a user has to press, because &lt;a href="http://en.wikipedia.org/wiki/Vi" rel="noopener noreferrer"&gt;vi&lt;/a&gt;, upon which Vim is based, was designed to be used over slow terminals.&lt;/p&gt;

&lt;p&gt;Emacs uses modifier keys to enable shortcuts, which often involves pressing several keys simultaneously for a single function. This aspect of Emacs is often criticized.&lt;/p&gt;

&lt;p&gt;As computer technology developed, new advancements like the GUI (Graphical User Interface) were developed. Emacs adapted and developed its own GUI to make it easier for people to learn and use the editor. In comparison, Vi did not develop its own GUI. This is partly due to the appearance of Vi variants that took over. &lt;/p&gt;

&lt;p&gt;A good example is Vi iMproved, also known as Vim, which gradually became more popular than Vi as it added more features and improvements that are not found in Vi. There are also variants of Emacs, but those have not caused the software to fall by the wayside.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ease of Learning&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Emacs is easier to learn since it has a more natural interface (for users familiar with GUI-based text editors). Since Vim has different editing modes, beginners find it a little harder to learn.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Productivity and Editing Speed&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The main difference between the two is speed. Vi has historically &lt;a href="http://www.differencebetween.net/language/difference-between-been-and-gone/" rel="noopener noreferrer"&gt;been&lt;/a&gt; the faster of the two starting up in less &lt;a href="http://www.differencebetween.net/miscellaneous/difference-between-mountain-time-and-eastern-time/" rel="noopener noreferrer"&gt;time&lt;/a&gt; and is just generally the more responsive of the two. &lt;/p&gt;

&lt;p&gt;Vim enthusiasts argue that once a user becomes familiar with the editing modes and commands of Vim, it enables far greater productivity and efficiency. File editing is usually faster with Vim than with Emacs because of Vim's purposely speed-driven interface. For example, cursor movement can be controlled through the &lt;em&gt;H&lt;/em&gt;, &lt;em&gt;J&lt;/em&gt;, &lt;em&gt;K&lt;/em&gt;, and &lt;em&gt;L&lt;/em&gt; keys in the &lt;em&gt;normal mode&lt;/em&gt;. This means the user's hands do not need to leave the "home row" position, which improves efficiency but comes at the price of adding overhead as mode switching is required to choose between movement and text editing. &lt;/p&gt;

&lt;p&gt;In Emacs (with the default configuration), the user moves the cursor with the Ctrl-B or Ctrl-F shortcuts, which might slow down the novice user since two keys need to be pressed. Productivity and efficiency improvements in Emacs depend upon the configuration of the editing environment rather than the editor itself.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;RAM usage of Emacs vs Vim&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Vi also takes up much less memory than Emacs; this is at a time when 8MB is considered to be a huge amount of RAM. Vim is lighter than Emacs and uses less memory. Vim advocates criticize Emacs' resource consumption with the tongue-in-cheek suggestion that Emacs stands for "Eighty &lt;a href="https://www.diffen.com/difference/KB_vs_MB" rel="noopener noreferrer"&gt;Megabytes&lt;/a&gt; And Constantly Swapping".&lt;/p&gt;

&lt;p&gt;However, with GNUclient, a single persistent Emacs process can be run that can support several clients simultaneously. This speeds startup time and decreases total memory usage, closing the gap between Emacs and Vim.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Extensibility and Customization of Emacs vs Vim&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The &lt;a href="http://www.differencebetween.net/business/difference-between-absolute-and-comparative-advantage/" rel="noopener noreferrer"&gt;advantage&lt;/a&gt; of Emacs over Vi is its extensive customizability. Emacs lets the user choose from a wide variety of macros to integrate into his workflow and reduce the effort needed in his process. &lt;/p&gt;

&lt;p&gt;Vi lacks this level of customizability and relies on its simplistic and straightforward process. Emacs is also capable of emulating Vi in what they &lt;a href="http://www.differencebetween.net/business/finance-business-2/difference-between-call-and-put/" rel="noopener noreferrer"&gt;call&lt;/a&gt; “viper mode”; thereby making it easier for Vi users to use Emacs. Vi, with its simplicity, lacks such capabilities.&lt;/p&gt;

&lt;p&gt;While both Vim and Emacs support plugins that enhance their functionality, Emacs supports a lot more customization of the editor environment. This is arguably the most important feature of emacs and is responsible for much of emacs' devoted following.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgt8ee9w3o69iae3708qg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgt8ee9w3o69iae3708qg.png" alt="Living in world of emacs as a vi fan" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Emacs can be extended on the fly by redefining built-in elisp functions, either by typing the new definition into Emacs or by loading elisp files. Groups of related changes are called "modes" and can be easily configured to be automatically used for particular types of files (buffers). So it is easy to define modes for different programming languages or frameworks such as "lisp mode" or "Ruby on Rails mode" or "PHP mode". These modes can directly modify even core behaviors of Emacs, automatically format or colorize text and add standard template or "boilerplate" text such as function declarations and closures. &lt;/p&gt;

&lt;p&gt;Programmers find Emacs to be far more customizable to their particular requirements than Vim. Yet some programmers may find Vim to ultimately be better suited to their programming environment due to its equally customizable and fully modal operation. &lt;/p&gt;

&lt;p&gt;Emacs can be extended in elisp, while Vim has its own internal scripting language and supports the use of other &lt;a href="https://www.diffen.com/difference/Category:Programming_Languages" rel="noopener noreferrer"&gt;programming languages&lt;/a&gt; for plugin development.&lt;/p&gt;

&lt;p&gt;While Emacs can be extended in elisp, Vim has its own internal scripting language and supports the use of other &lt;a href="https://www.diffen.com/difference/Category:Programming_Languages" rel="noopener noreferrer"&gt;programming languages&lt;/a&gt; for plugin development can also be extended on the fly by using the command mode. The command mode allows configuration options to be set, functions to be defined, and macros to be made. Configuration files for Vim are just commands that can be input through the command mode.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Graphical User Interface (GUI)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both Vim and Emacs have graphical user interfaces. Virtually all menu items on the graphical interface for both editors are simply ways to handle a shortcut command or quick configuration. The GUIs for the editors do not provide virtually any additional functions beyond those available in the CLI (command-line interface)&lt;/p&gt;

&lt;p&gt;Emacs uses XDisplay or gtk2 for its GUI. Vim can use many other GUI libraries, such as gtk, &lt;a href="https://www.diffen.com/difference/GNOME_vs_KDE" rel="noopener noreferrer"&gt;gnome&lt;/a&gt;, gnome2, motif, athena, and neXtaw, in addition to gtk2.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;Vi is lighter and faster than Emacs.&lt;/li&gt;
&lt;li&gt;Emacs is more customizable than Vi.&lt;/li&gt;
&lt;li&gt;Emacs can emulate Vi but not the other way around.&lt;/li&gt;
&lt;li&gt;Emacs later developed a GUI while Vi did not.&lt;/li&gt;
&lt;li&gt;Emacs continued developing while Vi was succeeded by its variants.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Do we still have a war or a clear winner?
&lt;/h2&gt;

&lt;p&gt;In 2020, Jake King the CEO of &lt;a href="https://cmd.com/" rel="noopener noreferrer"&gt;CMD&lt;/a&gt; decided to settle a long-time debate with his CTO Mike Sample, about which of the &lt;a href="https://twitter.com/JakeKing/status/1245137819787382784?s=20" rel="noopener noreferrer"&gt;two editors is more popular in the Twitter tech space&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1245137819787382784-921" src="https://platform.twitter.com/embed/Tweet.html?id=1245137819787382784"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1245137819787382784-921');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1245137819787382784&amp;amp;theme=dark"
  }



.&lt;/p&gt;

&lt;p&gt;You should want to make some vim friends right now.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further Readings
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://batsov.com/articles/2011/11/19/why-emacs/" rel="noopener noreferrer"&gt;Why You Should Use Emacs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linuxfordevices.com/tutorials/linux/emacs-editor-tutorial" rel="noopener noreferrer"&gt;Emacs Editor Tutorial – An Absolute Beginners Reference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linuxfordevices.com/tutorials/linux/vim-tutorial" rel="noopener noreferrer"&gt;Vim Tutorial – All You Need, To Get Started with VIM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linuxfordevices.com/tutorials/linux/vim-plug-install-plugins" rel="noopener noreferrer"&gt;VIM Plug – The easy way to install plugins in VIM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.vimgolf.com/" rel="noopener noreferrer"&gt;Vim Games - Interesting Vim puzzles&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>emac</category>
      <category>vim</category>
      <category>linux</category>
      <category>softwareengineering</category>
    </item>
  </channel>
</rss>
