<?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: Vincent Tommi</title>
    <description>The latest articles on DEV Community by Vincent Tommi (@vincenttommi).</description>
    <link>https://dev.to/vincenttommi</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1057211%2Fb677487b-3f87-456c-b555-669a164fba50.jpeg</url>
      <title>DEV Community: Vincent Tommi</title>
      <link>https://dev.to/vincenttommi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vincenttommi"/>
    <language>en</language>
    <item>
      <title>How to Fix Windows 11 Installation Problems on Lenovo ThinkPad E490: A Complete Clean Installation Guide</title>
      <dc:creator>Vincent Tommi</dc:creator>
      <pubDate>Fri, 13 Nov 2026 18:39:00 +0000</pubDate>
      <link>https://dev.to/vincenttommi/how-to-fix-windows-11-installation-problems-on-lenovo-thinkpad-e490-a-complete-clean-installation-2oka</link>
      <guid>https://dev.to/vincenttommi/how-to-fix-windows-11-installation-problems-on-lenovo-thinkpad-e490-a-complete-clean-installation-2oka</guid>
      <description>&lt;h1&gt;
  
  
  How to Fix Windows 11 Installation Problems on Lenovo ThinkPad E490: A Complete Clean Installation Guide
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Have you ever tried installing Windows 11 on your laptop, only to discover that after installation and restarting, the computer still loads the old Windows installation?&lt;/p&gt;

&lt;p&gt;I recently encountered this issue while troubleshooting a Windows 11 installation on a Lenovo ThinkPad E490.&lt;/p&gt;

&lt;p&gt;The installation process appeared to work normally. Windows Setup loaded, installation files were processed, and multiple Windows 11 boot options appeared. However, selecting either option continued loading the old Windows installation.&lt;/p&gt;

&lt;p&gt;Initially, I suspected that Windows was retaining cached installation files or failing to recognize the new installation properly.&lt;/p&gt;

&lt;p&gt;After investigating the boot configuration and internal storage, I discovered that the computer had multiple Windows boot entries and two internal drives.&lt;/p&gt;

&lt;p&gt;In this tutorial, I'll walk through the troubleshooting process and explain how to perform a clean Windows 11 installation using a bootable USB.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Understanding the Problem
&lt;/h2&gt;

&lt;p&gt;The issue presented itself in the following way:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Created a bootable Windows 11 USB using Rufus.&lt;/li&gt;
&lt;li&gt;Connected the USB to the Lenovo ThinkPad E490.&lt;/li&gt;
&lt;li&gt;Started the computer and selected the USB from the F12 boot menu.&lt;/li&gt;
&lt;li&gt;Windows installation files loaded.&lt;/li&gt;
&lt;li&gt;Two Windows 11 boot options appeared:

&lt;ul&gt;
&lt;li&gt;Windows 11 on Volume 2.&lt;/li&gt;
&lt;li&gt;Windows 11 on Volume 5.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Selecting either option continued loading the old Windows installation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This suggested that the computer might have multiple boot entries pointing to existing Windows installations.&lt;/p&gt;

&lt;p&gt;However, duplicate boot entries do not necessarily mean that multiple complete Windows installations exist.&lt;/p&gt;

&lt;p&gt;The next step was to investigate the Windows Boot Manager configuration.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Inspecting Windows Boot Configuration Using BCDEdit
&lt;/h2&gt;

&lt;p&gt;Windows provides a built-in command-line utility called BCDEdit.&lt;/p&gt;

&lt;p&gt;It allows administrators to inspect and manage the Windows Boot Configuration Data (BCD).&lt;/p&gt;

&lt;p&gt;To inspect the current boot configuration:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Boot into Windows.&lt;/li&gt;
&lt;li&gt;Open Command Prompt as Administrator.&lt;/li&gt;
&lt;li&gt;Execute:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bcdedit /enum
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This displays the Windows Boot Manager and registered Windows Boot Loader entries.&lt;/p&gt;

&lt;p&gt;Important properties to examine include:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;identifier&lt;/td&gt;
&lt;td&gt;Identifies a boot entry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;device&lt;/td&gt;
&lt;td&gt;Identifies the partition containing boot files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;osdevice&lt;/td&gt;
&lt;td&gt;Identifies the Windows operating system partition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;path&lt;/td&gt;
&lt;td&gt;Specifies the Windows boot loader&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;description&lt;/td&gt;
&lt;td&gt;Displays the boot menu name&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;default&lt;/td&gt;
&lt;td&gt;Identifies the default boot entry&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Windows Boot Loader

identifier      {default}
device          partition=\Device\HarddiskVolume2
path            \Windows\system32\winload.efi
description     Windows 11
osdevice        partition=\Device\HarddiskVolume2
systemroot      \Windows
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The investigation revealed that the default Windows boot entry referenced HarddiskVolume2, while the currently running Windows installation was identified as C:.&lt;/p&gt;

&lt;p&gt;This was an important clue, but it was not sufficient to establish whether these were separate installations.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Mapping Windows Volumes Using FLTMC
&lt;/h2&gt;

&lt;p&gt;The next step was identifying the volumes referenced by Windows Boot Manager.&lt;/p&gt;

&lt;p&gt;Windows provides another useful command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fltmc volumes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This displays mounted volumes and their device names.&lt;/p&gt;

&lt;p&gt;Example output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Volume Name

\Device\HarddiskVolume5
\Device\HarddiskVolume6
\Device\HarddiskVolume3
\Device\HarddiskVolume2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the investigation, the following device names were particularly important:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HarddiskVolume2: Referenced by the default Windows boot entry.&lt;/li&gt;
&lt;li&gt;HarddiskVolume3: Referenced by Windows Boot Manager and identified as the EFI partition.&lt;/li&gt;
&lt;li&gt;HarddiskVolume5 and HarddiskVolume6: Additional NTFS volumes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One important lesson: HarddiskVolume numbers are not the same thing as Disk 0, Disk 1, or Windows drive letters.&lt;/p&gt;

&lt;p&gt;You should map them to actual partitions before making changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Inspecting Physical Drives Using DiskPart
&lt;/h2&gt;

&lt;p&gt;The next investigation involved DiskPart, a Windows command-line utility for managing disks and partitions.&lt;/p&gt;

&lt;p&gt;Open Command Prompt as Administrator and execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;diskpart
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;List the physical disks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;list disk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Lenovo E490 showed two internal drives:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Disk ###  Status    Size
Disk 0    Online    119 GB
Disk 1    Online    298 GB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both disks had an asterisk under the GPT column.&lt;/p&gt;

&lt;p&gt;This indicated that both drives were using the GUID Partition Table (GPT) partitioning scheme.&lt;/p&gt;

&lt;p&gt;Next, inspect the available volumes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;list volume
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The results showed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Volume ###  Ltr  Fs      Size
Volume 0    C    NTFS    117 GB
Volume 1         FAT32   100 MB
Volume 2         NTFS    1285 MB
Volume 3         NTFS    297 GB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Based on the sizes, the likely configuration was:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Volume&lt;/th&gt;
&lt;th&gt;Size&lt;/th&gt;
&lt;th&gt;File system&lt;/th&gt;
&lt;th&gt;Possible purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Volume 0 (C:)&lt;/td&gt;
&lt;td&gt;117 GB&lt;/td&gt;
&lt;td&gt;NTFS&lt;/td&gt;
&lt;td&gt;Existing Windows partition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Volume 1&lt;/td&gt;
&lt;td&gt;100 MB&lt;/td&gt;
&lt;td&gt;FAT32&lt;/td&gt;
&lt;td&gt;EFI System Partition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Volume 2&lt;/td&gt;
&lt;td&gt;1,285 MB&lt;/td&gt;
&lt;td&gt;NTFS&lt;/td&gt;
&lt;td&gt;Recovery partition&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Volume 3&lt;/td&gt;
&lt;td&gt;297 GB&lt;/td&gt;
&lt;td&gt;NTFS&lt;/td&gt;
&lt;td&gt;Secondary storage partition&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; The volume listing alone does not conclusively establish which physical disk contains each partition. Use &lt;code&gt;detail disk&lt;/code&gt; to verify the mapping.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;select disk 0
detail disk
list partition
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then inspect the second drive:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;select disk 1
detail disk
list partition
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This helps identify which partitions belong to each physical disk.&lt;/p&gt;

&lt;p&gt;To leave DiskPart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;exit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Understanding UEFI and GPT
&lt;/h2&gt;

&lt;p&gt;Modern Windows 11 installations generally use UEFI firmware and GPT partitioning.&lt;/p&gt;

&lt;p&gt;Understanding these technologies is important when creating a bootable installation USB.&lt;/p&gt;

&lt;h3&gt;
  
  
  UEFI
&lt;/h3&gt;

&lt;p&gt;Unified Extensible Firmware Interface (UEFI) is the modern replacement for traditional BIOS booting.&lt;/p&gt;

&lt;p&gt;It supports features such as Secure Boot and uses an EFI System Partition to store boot files.&lt;/p&gt;

&lt;h3&gt;
  
  
  GPT
&lt;/h3&gt;

&lt;p&gt;GUID Partition Table (GPT) is a modern disk partitioning format designed to work with UEFI systems.&lt;/p&gt;

&lt;p&gt;For a standard Windows 11 installation, the recommended Rufus configuration is:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rufus setting&lt;/th&gt;
&lt;th&gt;Recommended option&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Boot selection&lt;/td&gt;
&lt;td&gt;Windows 11 ISO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Partition scheme&lt;/td&gt;
&lt;td&gt;GPT&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Target system&lt;/td&gt;
&lt;td&gt;UEFI (non-CSM)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;File system&lt;/td&gt;
&lt;td&gt;Use Rufus default&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Always verify that your laptop is configured to boot using UEFI.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Creating a Bootable Windows 11 USB Using Rufus
&lt;/h2&gt;

&lt;p&gt;To prepare the installation media:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download the official Windows 11 ISO from Microsoft.&lt;/li&gt;
&lt;li&gt;Download and launch Rufus.&lt;/li&gt;
&lt;li&gt;Insert a USB flash drive with sufficient capacity (8 GB minimum).&lt;/li&gt;
&lt;li&gt;Select your USB device.&lt;/li&gt;
&lt;li&gt;Select the downloaded Windows 11 ISO.&lt;/li&gt;
&lt;li&gt;Choose GPT as the partition scheme.&lt;/li&gt;
&lt;li&gt;Select UEFI (non-CSM) as the target system.&lt;/li&gt;
&lt;li&gt;Start the process.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Rufus will prepare the bootable USB.&lt;/p&gt;

&lt;p&gt;Official resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Windows 11 download: &lt;a href="https://www.microsoft.com/software-download/windows11" rel="noopener noreferrer"&gt;https://www.microsoft.com/software-download/windows11&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Rufus: &lt;a href="https://rufus.ie/" rel="noopener noreferrer"&gt;https://rufus.ie/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Remember that creating bootable installation media will erase the USB flash drive.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Booting the Lenovo ThinkPad E490 From USB
&lt;/h2&gt;

&lt;p&gt;After preparing the USB:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Shut down the laptop.&lt;/li&gt;
&lt;li&gt;Connect the bootable USB.&lt;/li&gt;
&lt;li&gt;Power on the Lenovo ThinkPad E490.&lt;/li&gt;
&lt;li&gt;Press F12 repeatedly when the Lenovo logo appears.&lt;/li&gt;
&lt;li&gt;Open the boot device selection menu.&lt;/li&gt;
&lt;li&gt;Select the USB device under the UEFI boot options.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Windows Setup should now load directly from the USB.&lt;/p&gt;

&lt;p&gt;If the computer continues loading the existing Windows installation, verify that you selected the USB device rather than Windows Boot Manager.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Performing a Clean Windows 11 Installation
&lt;/h2&gt;

&lt;p&gt;Once Windows Setup loads:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select your preferred language.&lt;/li&gt;
&lt;li&gt;Choose your keyboard layout.&lt;/li&gt;
&lt;li&gt;Click Install Windows 11.&lt;/li&gt;
&lt;li&gt;Accept the licence terms.&lt;/li&gt;
&lt;li&gt;Select the custom installation option when presented.&lt;/li&gt;
&lt;li&gt;Continue to the disk and partition selection screen.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You should see the available drives and partitions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Identifying the correct installation drive
&lt;/h3&gt;

&lt;p&gt;In this troubleshooting case, the laptop had:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Disk 0: 119 GB.&lt;/li&gt;
&lt;li&gt;Disk 1: 298 GB.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The plan was to install Windows 11 on the 119 GB SSD.&lt;/p&gt;

&lt;p&gt;Before deleting anything, verify the disk sizes and partition layout carefully.&lt;/p&gt;

&lt;h3&gt;
  
  
  Removing existing Windows partitions
&lt;/h3&gt;

&lt;p&gt;If you want a completely fresh installation and are certain that all data on the target drive can be erased:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identify the correct target disk.&lt;/li&gt;
&lt;li&gt;Select each partition belonging to that disk.&lt;/li&gt;
&lt;li&gt;Click Delete.&lt;/li&gt;
&lt;li&gt;Continue until the target disk shows Unallocated Space.&lt;/li&gt;
&lt;li&gt;Select the unallocated space.&lt;/li&gt;
&lt;li&gt;Click Next.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Windows Setup will automatically create the required partitions, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;EFI System Partition.&lt;/li&gt;
&lt;li&gt;Microsoft Reserved Partition (MSR).&lt;/li&gt;
&lt;li&gt;Windows partition.&lt;/li&gt;
&lt;li&gt;Recovery partition.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; Deleting partitions permanently destroys the data stored on them. Make sure you have identified the correct physical disk.&lt;/p&gt;

&lt;p&gt;If your computer has multiple internal drives, disconnecting the secondary drive during installation, where practical and safe, can help prevent Windows Setup from placing boot files on the wrong drive.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Handling the First Restart
&lt;/h2&gt;

&lt;p&gt;One common mistake during Windows installation is repeatedly booting from the USB after Windows has started copying installation files.&lt;/p&gt;

&lt;p&gt;Windows Setup normally restarts the computer several times.&lt;/p&gt;

&lt;p&gt;After the first restart:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Allow the laptop to restart.&lt;/li&gt;
&lt;li&gt;Remove the USB when the computer begins restarting.&lt;/li&gt;
&lt;li&gt;Allow the computer to boot from Windows Boot Manager on the internal SSD.&lt;/li&gt;
&lt;li&gt;Continue the Windows initial setup.&lt;/li&gt;
&lt;li&gt;Configure your country, keyboard, network and user account.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Do not start the installation process again unless necessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Verifying the New Windows Installation
&lt;/h2&gt;

&lt;p&gt;After completing the installation, verify that Windows is running from the intended drive.&lt;/p&gt;

&lt;p&gt;Open Command Prompt as Administrator and execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo %windir%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;bcdedit /enum
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check that the Windows Boot Manager and Windows Boot Loader reference the intended installation.&lt;/p&gt;

&lt;p&gt;You can also inspect the disk layout:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;diskpart
list disk
list volume
exit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The objective is to have one working Windows installation with a correctly configured UEFI boot process.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Common Mistakes to Avoid
&lt;/h2&gt;

&lt;p&gt;Here are some lessons from this troubleshooting experience:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Confusing boot entries with physical Windows installations&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Two Windows boot menu entries do not necessarily mean that two complete Windows installations exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Assuming Windows has cached the old installation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The problem may be caused by incorrect boot configuration, selecting the wrong boot device, or an incomplete installation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Formatting the wrong drive&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Always verify physical disk sizes and partition layouts before deleting anything.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Ignoring the EFI System Partition&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Windows needs an EFI System Partition to boot correctly in UEFI mode.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Restarting into the USB installation repeatedly&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After the first installation restart, allow the laptop to continue from its internal drive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Deleting boot entries without investigating them&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use BCDEdit to understand the configuration before modifying it.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Useful Windows Troubleshooting Commands
&lt;/h2&gt;

&lt;p&gt;Here is a quick reference to the commands used throughout this tutorial.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bcdedit /enum&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display boot configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bcdedit /enum {current}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display current boot entry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;bcdedit /enum {default}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display default boot entry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;fltmc volumes&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List mounted volume device names&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;diskpart&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Open disk management utility&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;list disk&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display physical disks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;list volume&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display available volumes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;select disk 0&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Select Disk 0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;detail disk&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display selected disk details&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;list partition&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display partitions on selected disk&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;echo %windir%&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Display current Windows directory&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

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

&lt;p&gt;Troubleshooting Windows installation problems requires more than simply reinstalling the operating system.&lt;/p&gt;

&lt;p&gt;In this Lenovo ThinkPad E490 investigation, the important discoveries were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiple Windows boot entries were registered.&lt;/li&gt;
&lt;li&gt;The default and current Windows boot entries referenced different volume identifiers.&lt;/li&gt;
&lt;li&gt;The computer had two internal GPT drives.&lt;/li&gt;
&lt;li&gt;The Windows installation and EFI boot configuration needed further verification before making destructive changes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The safest approach is to inspect the boot configuration, identify the physical disks, verify the installation target, and then perform a clean Windows installation.&lt;/p&gt;

&lt;p&gt;Whether you are troubleshooting a Lenovo ThinkPad, Dell Latitude, HP EliteBook, or another Windows laptop, these diagnostic techniques can help you understand what is happening before modifying your partitions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remember: Always identify your target disk before deleting partitions. A few minutes of diagnosis can save hours of recovery work.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>rufus</category>
      <category>learning</category>
      <category>beginners</category>
      <category>lenovo</category>
    </item>
    <item>
      <title>How to Customize Windows 11 Installation Using Rufus</title>
      <dc:creator>Vincent Tommi</dc:creator>
      <pubDate>Fri, 13 Nov 2026 15:45:00 +0000</pubDate>
      <link>https://dev.to/vincenttommi/how-to-customize-windows-11-installation-using-rufus-2ohm</link>
      <guid>https://dev.to/vincenttommi/how-to-customize-windows-11-installation-using-rufus-2ohm</guid>
      <description>&lt;p&gt;Installing Windows 11 using a bootable USB is a straightforward process, but configuring the installation options correctly can make the experience much smoother.&lt;/p&gt;

&lt;p&gt;One useful feature in "Rufus" (&lt;a href="https://rufus.ie/" rel="noopener noreferrer"&gt;https://rufus.ie/&lt;/a&gt;) is Windows User Experience, which allows users to customize certain Windows installation requirements and setup preferences before creating a bootable USB.&lt;/p&gt;

&lt;p&gt;In this guide, I'll explain each available option, what it does, and which settings I recommend enabling when creating a Windows 11 bootable USB.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What Is Rufus?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;"Rufus" (&lt;a href="https://rufus.ie/" rel="noopener noreferrer"&gt;https://rufus.ie/&lt;/a&gt;) is a free, open-source utility that helps users create bootable USB drives from ISO files.&lt;/p&gt;

&lt;p&gt;It is particularly useful when installing operating systems such as Windows 10, Windows 11, and Linux distributions.&lt;/p&gt;

&lt;p&gt;For Windows 11 installations, Rufus provides additional customization options that can simplify the installation process.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Understanding Windows User Experience Settings&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After selecting your Windows 11 ISO file in Rufus, clicking START opens a dialog box called Windows User Experience.&lt;/p&gt;

&lt;p&gt;This window contains several customization options.&lt;/p&gt;

&lt;p&gt;Let's examine them individually.&lt;/p&gt;

&lt;p&gt;Option 1: Remove Requirements for 4GB+ RAM, Secure Boot and TPM 2.0&lt;/p&gt;

&lt;p&gt;Recommendation: ENABLE&lt;/p&gt;

&lt;p&gt;Windows 11 has minimum hardware requirements, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;4GB of RAM.&lt;/li&gt;
&lt;li&gt;TPM 2.0.&lt;/li&gt;
&lt;li&gt;Secure Boot capability.&lt;/li&gt;
&lt;li&gt;A supported processor.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enabling this option removes certain installation compatibility checks.&lt;/p&gt;

&lt;p&gt;This can help users install Windows 11 on older computers that do not officially meet Microsoft's hardware requirements.&lt;/p&gt;

&lt;p&gt;Important: Bypassing these checks does not make unsupported hardware officially supported by Microsoft. Compatibility and update availability are not guaranteed.&lt;/p&gt;

&lt;p&gt;Option 2: Create a Local Account with Username&lt;/p&gt;

&lt;p&gt;Recommendation: ENABLE&lt;/p&gt;

&lt;p&gt;This option allows you to create a local Windows account during installation.&lt;/p&gt;

&lt;p&gt;For example, you can enter a username such as:&lt;/p&gt;

&lt;p&gt;"Bkay"&lt;/p&gt;

&lt;p&gt;A local account allows you to sign in to Windows without requiring a Microsoft account during the initial setup.&lt;/p&gt;

&lt;p&gt;This is useful for users who prefer a traditional offline Windows account.&lt;/p&gt;

&lt;p&gt;Option 3: Set Regional Options to the Same Values as This User's&lt;/p&gt;

&lt;p&gt;Recommendation: ENABLE&lt;/p&gt;

&lt;p&gt;This option copies the current computer's regional settings to the Windows installation.&lt;/p&gt;

&lt;p&gt;These settings may include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Regional format.&lt;/li&gt;
&lt;li&gt;Date and time preferences.&lt;/li&gt;
&lt;li&gt;Keyboard and language-related preferences.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It helps reduce the amount of manual configuration required after installation.&lt;/p&gt;

&lt;p&gt;If you need a different language, keyboard layout, or regional format, you can configure those separately.&lt;/p&gt;

&lt;p&gt;Option 4: Disable Data Collection (Skip Privacy Questions)&lt;/p&gt;

&lt;p&gt;Recommendation: ENABLE&lt;/p&gt;

&lt;p&gt;Windows may display several privacy-related questions during its initial setup.&lt;/p&gt;

&lt;p&gt;Enabling this option skips certain privacy questions during installation.&lt;/p&gt;

&lt;p&gt;It makes the initial Windows setup process faster and reduces the number of prompts you need to answer.&lt;/p&gt;

&lt;p&gt;Option 5: Disable BitLocker Automatic Device Encryption&lt;/p&gt;

&lt;p&gt;Recommendation: OPTIONAL&lt;/p&gt;

&lt;p&gt;This option prevents Windows from automatically enabling device encryption through the supported automatic setup process.&lt;/p&gt;

&lt;p&gt;Consider enabling it if you prefer to manage device encryption manually.&lt;/p&gt;

&lt;p&gt;However, remember that encryption helps protect your personal files if your computer is lost or stolen.&lt;/p&gt;

&lt;p&gt;If you decide to enable encryption later, you can manage it through Windows settings.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;My Recommended Rufus Configuration&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For a typical Windows 11 installation, these are the settings I recommend:&lt;/p&gt;

&lt;p&gt;Rufus option| Recommended setting&lt;br&gt;
Remove Windows 11 hardware requirements| Enable&lt;br&gt;
Create a local account| Enable&lt;br&gt;
Set regional options| Enable&lt;br&gt;
Disable data collection| Enable&lt;br&gt;
Disable automatic device encryption| Optional&lt;/p&gt;

&lt;p&gt;For the configuration shown in this guide, I recommend enabling the first four options and enabling the fifth only if you prefer to manage encryption yourself.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Step-by-Step: Creating Your Windows 11 Bootable USB&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Follow these steps:&lt;/p&gt;

&lt;p&gt;Step 1: Download Rufus&lt;/p&gt;

&lt;p&gt;Visit the official website:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rufus.ie/" rel="noopener noreferrer"&gt;https://rufus.ie/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Download and launch Rufus.&lt;/p&gt;

&lt;p&gt;Step 2: Connect Your USB Drive&lt;/p&gt;

&lt;p&gt;Insert your USB flash drive into your computer.&lt;/p&gt;

&lt;p&gt;Make sure you have backed up any important files because creating a bootable USB will erase the existing contents.&lt;/p&gt;

&lt;p&gt;Step 3: Select Your Windows 11 ISO&lt;/p&gt;

&lt;p&gt;Under Boot selection:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select Disk or ISO image.&lt;/li&gt;
&lt;li&gt;Click SELECT.&lt;/li&gt;
&lt;li&gt;Locate your downloaded Windows 11 ISO file.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 4: Configure Rufus&lt;/p&gt;

&lt;p&gt;Choose the appropriate partition scheme and target system for your computer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT is generally recommended for modern UEFI-based systems.&lt;/li&gt;
&lt;li&gt;MBR is generally associated with legacy BIOS boot configurations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not select these options blindly; match them to your computer's firmware and boot configuration.&lt;/p&gt;

&lt;p&gt;Step 5: Customize Windows User Experience&lt;/p&gt;

&lt;p&gt;Click START.&lt;/p&gt;

&lt;p&gt;When the Windows User Experience dialog appears, configure the five options discussed above.&lt;/p&gt;

&lt;p&gt;Click OK to continue.&lt;/p&gt;

&lt;p&gt;Step 6: Create the Bootable USB&lt;/p&gt;

&lt;p&gt;Wait for Rufus to finish writing the Windows 11 installation files.&lt;/p&gt;

&lt;p&gt;Once the status shows READY, safely eject your USB drive.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Installing Windows 11 From the USB Drive&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After creating your bootable USB:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect the USB drive to the target computer.&lt;/li&gt;
&lt;li&gt;Restart the computer.&lt;/li&gt;
&lt;li&gt;Open the boot menu (commonly F12 on Lenovo computers).&lt;/li&gt;
&lt;li&gt;Select your USB drive.&lt;/li&gt;
&lt;li&gt;Follow the Windows installation instructions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want a clean installation, select the custom installation option.&lt;/p&gt;

&lt;p&gt;Warning: Deleting or formatting partitions permanently removes the data stored on them. Double-check that you have selected the correct drive before proceeding.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Final Thoughts&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Rufus is one of the most useful tools for creating Windows installation media, especially when working with older computers or configuring a personalized Windows installation.&lt;/p&gt;

&lt;p&gt;The Windows User Experience settings make it possible to customize hardware compatibility checks, account creation, regional preferences, privacy prompts, and automatic device encryption before installation.&lt;/p&gt;

&lt;p&gt;My recommended configuration is to enable the first four options and make the BitLocker option a personal choice depending on your security requirements.&lt;/p&gt;

&lt;p&gt;With the right configuration, you can make the Windows 11 installation process simpler and more convenient.&lt;/p&gt;




&lt;p&gt;Useful Resources&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Rufus Official Website" (&lt;a href="https://rufus.ie/" rel="noopener noreferrer"&gt;https://rufus.ie/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;"Download Windows 11" (&lt;a href="https://www.microsoft.com/software-download/windows11" rel="noopener noreferrer"&gt;https://www.microsoft.com/software-download/windows11&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;"Windows 11 System Requirements" (&lt;a href="https://www.microsoft.com/windows/windows-11-specifications" rel="noopener noreferrer"&gt;https://www.microsoft.com/windows/windows-11-specifications&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>xamarin</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>Understanding Common Internet Protocols: A Beginner-Friendly Guide</title>
      <dc:creator>Vincent Tommi</dc:creator>
      <pubDate>Thu, 12 Nov 2026 21:57:00 +0000</pubDate>
      <link>https://dev.to/vincenttommi/understanding-common-internet-protocols-a-beginner-friendly-guide-2299</link>
      <guid>https://dev.to/vincenttommi/understanding-common-internet-protocols-a-beginner-friendly-guide-2299</guid>
      <description>&lt;p&gt;I've been exploring how computers communicate and exchange information over the Internet.&lt;/p&gt;

&lt;p&gt;One thing I've come to appreciate is that communication between computers doesn't happen randomly. There are established rules that define how information is addressed, transmitted, received, and managed.&lt;/p&gt;

&lt;p&gt;These rules are known as &lt;strong&gt;network protocols&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this article, I'm sharing my understanding of some common Internet protocols, their functions, and practical examples to make them easier to understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. What Are Internet Protocols?
&lt;/h2&gt;

&lt;p&gt;Internet protocols are sets of rules that allow computers and other devices to communicate over a network.&lt;/p&gt;

&lt;p&gt;Most Internet communication relies on the &lt;strong&gt;TCP/IP protocol suite&lt;/strong&gt;, which provides the foundation for exchanging data between devices across interconnected networks.&lt;/p&gt;

&lt;p&gt;Think of protocols as a common language that computers use to communicate. Without these rules, devices would struggle to understand how to send, receive, and process information.&lt;/p&gt;

&lt;p&gt;Different protocols perform different responsibilities, depending on the type of communication required.&lt;/p&gt;

&lt;p&gt;Let's explore some of the most common ones.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. ARP (Address Resolution Protocol)
&lt;/h2&gt;

&lt;p&gt;ARP is used to find the physical (MAC) address associated with a given IP address on a local network.&lt;/p&gt;

&lt;p&gt;To understand this, remember that devices use IP addresses for logical addressing, while MAC addresses identify network interfaces at the hardware level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine your computer wants to communicate with another device on the same local network. It knows the device's IP address but needs its MAC address to deliver the Ethernet frame.&lt;/p&gt;

&lt;p&gt;ARP helps discover that MAC address.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; ARP translates an IP address into a MAC address.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. IP (Internet Protocol)
&lt;/h2&gt;

&lt;p&gt;The Internet Protocol is responsible for addressing and routing data packets between devices and networks.&lt;/p&gt;

&lt;p&gt;It allows data to travel from a source device to a destination using IP addresses.&lt;/p&gt;

&lt;p&gt;For example, when you visit a website, IP helps ensure that your request can be routed towards the server hosting that website.&lt;/p&gt;

&lt;p&gt;IP itself does not guarantee that packets will arrive successfully or in the correct order. Other protocols, such as TCP, can provide additional reliability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; IP handles logical addressing and packet delivery across networks.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. RARP (Reverse Address Resolution Protocol)
&lt;/h2&gt;

&lt;p&gt;RARP performs the opposite function of ARP.&lt;/p&gt;

&lt;p&gt;It allows a device to discover its IP address using its MAC address.&lt;/p&gt;

&lt;p&gt;Historically, it was used by diskless computers that did not have permanent local storage and needed to obtain their IP addresses when starting up.&lt;/p&gt;

&lt;p&gt;RARP has largely been replaced by more flexible protocols such as BOOTP and DHCP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; RARP translates a MAC address into an IP address.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. TCP (Transmission Control Protocol)
&lt;/h2&gt;

&lt;p&gt;TCP is a connection-oriented protocol that provides reliable data transmission between devices.&lt;/p&gt;

&lt;p&gt;Before exchanging data, TCP establishes a connection between the communicating devices.&lt;/p&gt;

&lt;p&gt;It provides several important features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ensures data is delivered reliably.&lt;/li&gt;
&lt;li&gt;Maintains the correct order of data.&lt;/li&gt;
&lt;li&gt;Detects lost or corrupted segments.&lt;/li&gt;
&lt;li&gt;Retransmits missing data when necessary.&lt;/li&gt;
&lt;li&gt;Uses acknowledgements to confirm successful receipt.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When downloading an important document, you want the complete file rather than missing sections. TCP helps ensure reliable delivery.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; TCP provides reliable and ordered communication.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. UDP (User Datagram Protocol)
&lt;/h2&gt;

&lt;p&gt;UDP is a connectionless transport protocol.&lt;/p&gt;

&lt;p&gt;Unlike TCP, it does not establish a connection before sending data and does not guarantee delivery or packet ordering.&lt;/p&gt;

&lt;p&gt;However, it has less communication overhead, making it useful for applications where speed and low latency are important.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical examples:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Online gaming.&lt;/li&gt;
&lt;li&gt;Live video and audio communication.&lt;/li&gt;
&lt;li&gt;Voice calls.&lt;/li&gt;
&lt;li&gt;Real-time streaming applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For these applications, waiting for every missing packet to be retransmitted may affect the user experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; UDP provides fast, connectionless communication without guaranteed delivery.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. FTP (File Transfer Protocol)
&lt;/h2&gt;

&lt;p&gt;FTP is used to transfer files between computers over a network.&lt;/p&gt;

&lt;p&gt;It supports operations such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uploading files to a remote server.&lt;/li&gt;
&lt;li&gt;Downloading files from a server.&lt;/li&gt;
&lt;li&gt;Managing files on remote systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Traditionally, FTP uses username and password authentication.&lt;/p&gt;

&lt;p&gt;However, standard FTP does not encrypt its communication. More secure alternatives include SFTP and FTPS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A developer may use a file transfer client to upload website files to a remote hosting server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; FTP is used for transferring files between computers.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. HTTP (Hypertext Transfer Protocol)
&lt;/h2&gt;

&lt;p&gt;HTTP is the protocol used for communication between web browsers and web servers.&lt;/p&gt;

&lt;p&gt;When you enter a website address into your browser, the browser sends an HTTP request to the server. The server processes the request and sends back a response.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You enter a website address.&lt;/li&gt;
&lt;li&gt;Your browser sends a request to the web server.&lt;/li&gt;
&lt;li&gt;The server processes the request.&lt;/li&gt;
&lt;li&gt;The server returns the requested web resource.&lt;/li&gt;
&lt;li&gt;Your browser displays the content.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;HTTPS is the secure version of HTTP. It uses TLS encryption to protect communication between the browser and server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; HTTP enables communication between web browsers and web servers.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. DHCP (Dynamic Host Configuration Protocol)
&lt;/h2&gt;

&lt;p&gt;DHCP automatically assigns IP addresses and other network configuration details to devices joining a network.&lt;/p&gt;

&lt;p&gt;Without DHCP, network administrators would often need to configure IP addresses manually.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you connect your laptop or smartphone to a Wi-Fi network, DHCP can automatically provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An IP address.&lt;/li&gt;
&lt;li&gt;A subnet mask.&lt;/li&gt;
&lt;li&gt;A default gateway.&lt;/li&gt;
&lt;li&gt;DNS server information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes network management easier, especially in environments with many connected devices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; DHCP automatically provides IP configuration to network devices.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. RIP (Routing Information Protocol)
&lt;/h2&gt;

&lt;p&gt;RIP is a dynamic routing protocol that allows routers to exchange information about available network routes.&lt;/p&gt;

&lt;p&gt;It uses a distance-vector routing algorithm to determine the best route based on the number of router hops.&lt;/p&gt;

&lt;p&gt;A hop represents a router that a packet passes through when travelling towards its destination.&lt;/p&gt;

&lt;p&gt;RIP has a maximum of 15 usable hops. A distance of 16 is considered unreachable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; RIP helps routers exchange routing information and select routes using hop count.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. OSPF (Open Shortest Path First)
&lt;/h2&gt;

&lt;p&gt;OSPF is another dynamic routing protocol used to determine the best paths for forwarding data through a network.&lt;/p&gt;

&lt;p&gt;Unlike RIP, which uses a distance-vector approach, OSPF uses a link-state approach.&lt;/p&gt;

&lt;p&gt;Routers exchange information about their network links and use this information to calculate the shortest paths.&lt;/p&gt;

&lt;p&gt;OSPF is suitable for larger and more complex networks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; OSPF is a link-state routing protocol that calculates optimal network paths.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. POP3 (Post Office Protocol Version 3)
&lt;/h2&gt;

&lt;p&gt;POP3 is an email retrieval protocol that allows email clients to download messages from a mail server.&lt;/p&gt;

&lt;p&gt;Traditionally, POP3 downloads emails to a local device, although modern implementations may support additional server-side options.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An email application can use POP3 to retrieve messages from your email account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; POP3 is used to retrieve emails from a mail server.&lt;/p&gt;

&lt;h2&gt;
  
  
  13. IMAP4 (Internet Message Access Protocol Version 4)
&lt;/h2&gt;

&lt;p&gt;IMAP4 is an email access protocol that allows users to access and manage messages stored on a mail server.&lt;/p&gt;

&lt;p&gt;Unlike traditional POP3 usage, IMAP keeps messages on the server and synchronises changes across connected devices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Practical example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can read an email on your laptop and later access the same mailbox on your smartphone, with your email activities synchronised.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; IMAP4 allows users to access and synchronise emails across multiple devices.&lt;/p&gt;

&lt;h2&gt;
  
  
  14. Telnet
&lt;/h2&gt;

&lt;p&gt;Telnet is a protocol that allows users to establish remote command-line sessions with another computer over a network.&lt;/p&gt;

&lt;p&gt;It relies on TCP for communication.&lt;/p&gt;

&lt;p&gt;Although it was historically used for remote administration and troubleshooting, Telnet sends information, including login credentials, without encryption.&lt;/p&gt;

&lt;p&gt;Because of this security weakness, SSH (Secure Shell) is preferred for modern remote administration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key takeaway:&lt;/strong&gt; Telnet provides remote command-line access but is insecure because it does not encrypt communication.&lt;/p&gt;




&lt;h2&gt;
  
  
  15. Comparing Some Important Protocols
&lt;/h2&gt;

&lt;p&gt;Understanding the differences between similar protocols makes networking concepts easier to remember.&lt;/p&gt;

&lt;h3&gt;
  
  
  TCP vs UDP
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;TCP&lt;/th&gt;
&lt;th&gt;UDP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Connection-oriented&lt;/td&gt;
&lt;td&gt;Connectionless&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reliable transmission&lt;/td&gt;
&lt;td&gt;No delivery guarantee&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maintains data order&lt;/td&gt;
&lt;td&gt;No ordering guarantee&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retransmits missing data&lt;/td&gt;
&lt;td&gt;No automatic retransmission&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;More communication overhead&lt;/td&gt;
&lt;td&gt;Less communication overhead&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  ARP vs RARP
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ARP&lt;/th&gt;
&lt;th&gt;RARP&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IP address to MAC address&lt;/td&gt;
&lt;td&gt;MAC address to IP address&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Discovers hardware addresses&lt;/td&gt;
&lt;td&gt;Historically discovers IP addresses&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  POP3 vs IMAP4
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;POP3&lt;/th&gt;
&lt;th&gt;IMAP4&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Retrieves emails&lt;/td&gt;
&lt;td&gt;Accesses and manages emails&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Traditionally downloads emails locally&lt;/td&gt;
&lt;td&gt;Keeps emails on the server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Less suited to multi-device synchronisation&lt;/td&gt;
&lt;td&gt;Supports multi-device synchronisation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  RIP vs OSPF
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;RIP&lt;/th&gt;
&lt;th&gt;OSPF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Distance-vector protocol&lt;/td&gt;
&lt;td&gt;Link-state protocol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Uses hop count&lt;/td&gt;
&lt;td&gt;Uses link cost&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maximum 15 usable hops&lt;/td&gt;
&lt;td&gt;Supports larger networks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Simpler routing approach&lt;/td&gt;
&lt;td&gt;More advanced routing approach&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  16. Quick Reference: Common Internet Protocols
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Protocol&lt;/th&gt;
&lt;th&gt;Main Function&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ARP&lt;/td&gt;
&lt;td&gt;Finds a MAC address using an IP address&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IP&lt;/td&gt;
&lt;td&gt;Addresses and routes data packets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RARP&lt;/td&gt;
&lt;td&gt;Historically finds an IP address using a MAC address&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TCP&lt;/td&gt;
&lt;td&gt;Provides reliable data transmission&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UDP&lt;/td&gt;
&lt;td&gt;Provides connectionless data transmission&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FTP&lt;/td&gt;
&lt;td&gt;Transfers files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTTP&lt;/td&gt;
&lt;td&gt;Transfers web resources&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DHCP&lt;/td&gt;
&lt;td&gt;Automatically assigns IP configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RIP&lt;/td&gt;
&lt;td&gt;Exchanges routing information using hop count&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OSPF&lt;/td&gt;
&lt;td&gt;Calculates routes using link-state information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;POP3&lt;/td&gt;
&lt;td&gt;Retrieves emails&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IMAP4&lt;/td&gt;
&lt;td&gt;Accesses and synchronises emails&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Telnet&lt;/td&gt;
&lt;td&gt;Provides remote command-line access&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Learning about Internet protocols has helped me understand that communication over the Internet involves several layers of processes working together.&lt;/p&gt;

&lt;p&gt;Previously, I mostly interacted with the Internet as an end user. Now, I'm beginning to understand some of the mechanisms that make that communication possible.&lt;/p&gt;

&lt;p&gt;One important lesson is that not every protocol performs the same task. Some handle addressing, others manage data transmission, while others support services such as email, file transfers, and web browsing.&lt;/p&gt;

&lt;p&gt;I'm sharing these notes as part of my learning journey in Information Technology. If you have additional insights, corrections, or practical examples, feel free to share them in the comments.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>cli</category>
    </item>
    <item>
      <title>Understanding the Structure of the Internet: Routers, ISP Tiers, and Peering</title>
      <dc:creator>Vincent Tommi</dc:creator>
      <pubDate>Thu, 12 Nov 2026 21:07:00 +0000</pubDate>
      <link>https://dev.to/vincenttommi/understanding-the-structure-of-the-internet-routers-isp-tiers-and-peering-5b03</link>
      <guid>https://dev.to/vincenttommi/understanding-the-structure-of-the-internet-routers-isp-tiers-and-peering-5b03</guid>
      <description>&lt;p&gt;As I continue learning about Information Technology, I've been exploring how the Internet works behind the scenes.&lt;/p&gt;

&lt;p&gt;We use the Internet every day to browse websites, send messages, stream videos, and access online services. However, have you ever wondered how information travels from one computer to another, sometimes across different continents, within seconds?&lt;/p&gt;

&lt;p&gt;In this article, I'm sharing my understanding of some fundamental concepts that make global Internet communication possible.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Understanding Routers
&lt;/h2&gt;

&lt;p&gt;A router is a specialised networking device that connects different networks and directs data packets towards their intended destinations.&lt;/p&gt;

&lt;p&gt;Think of a router as a traffic controller. Just as traffic officers help vehicles follow the correct routes, routers help data travel through the appropriate network pathways.&lt;/p&gt;

&lt;p&gt;Routers perform two important functions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Prevent unnecessary traffic:&lt;/strong&gt; They ensure information is not sent to networks where it is not needed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forward data:&lt;/strong&gt; They determine where information should go so that it reaches its intended destination.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, when you send a WhatsApp message to someone in another country, your data may pass through several routers and networks before reaching its destination.&lt;/p&gt;

&lt;p&gt;Without routers, communication between different networks would be difficult.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Understanding the Internet Network Hierarchy
&lt;/h2&gt;

&lt;p&gt;One interesting thing I've learned is that the Internet is not owned or operated by one organisation.&lt;/p&gt;

&lt;p&gt;Instead, it is a global collection of independent networks operated by different Internet Service Providers (ISPs), businesses, and organisations.&lt;/p&gt;

&lt;p&gt;These networks communicate using common technologies, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;IP (Internet Protocol):&lt;/strong&gt; Provides addressing that allows devices and networks to be identified.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;BGP (Border Gateway Protocol):&lt;/strong&gt; Allows networks to exchange routing information and determine how traffic can reach other networks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To understand how these networks connect, it helps to look at the three main ISP tiers.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Three ISP Tiers
&lt;/h2&gt;

&lt;p&gt;Internet Service Providers are commonly classified into three tiers based on their network size, coverage, and relationships with other networks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tier 1 ISPs
&lt;/h3&gt;

&lt;p&gt;Tier 1 providers operate large Internet backbone networks with international coverage.&lt;/p&gt;

&lt;p&gt;They have extensive infrastructure, including routers, switches, and high-capacity connections.&lt;/p&gt;

&lt;p&gt;Some of their characteristics include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Global network coverage.&lt;/li&gt;
&lt;li&gt;Direct connections with other Tier 1 providers.&lt;/li&gt;
&lt;li&gt;Settlement-free peering arrangements with qualifying networks.&lt;/li&gt;
&lt;li&gt;Ability to reach the entire Internet through their peering relationships.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In simple terms, Tier 1 ISPs form a major part of the global Internet backbone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tier 2 ISPs
&lt;/h3&gt;

&lt;p&gt;Tier 2 providers are generally smaller than Tier 1 providers and commonly operate at regional or national levels.&lt;/p&gt;

&lt;p&gt;They may connect directly with other Tier 2 providers through peering agreements. However, they also purchase transit services from Tier 1 providers to access networks beyond their direct connections.&lt;/p&gt;

&lt;p&gt;Their main characteristics include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Regional or national coverage.&lt;/li&gt;
&lt;li&gt;Connections with other Tier 2 networks.&lt;/li&gt;
&lt;li&gt;Dependence on higher-tier providers for some Internet routes.&lt;/li&gt;
&lt;li&gt;Services for businesses and other organisations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tier 3 ISPs
&lt;/h3&gt;

&lt;p&gt;Tier 3 providers mainly serve local customers, including households, individuals, and small businesses.&lt;/p&gt;

&lt;p&gt;They provide the local connection that allows ordinary users to access the wider Internet.&lt;/p&gt;

&lt;p&gt;Their characteristics include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limited geographical coverage.&lt;/li&gt;
&lt;li&gt;Focus on local consumers and businesses.&lt;/li&gt;
&lt;li&gt;Dependence on higher-tier providers for wider Internet connectivity.&lt;/li&gt;
&lt;li&gt;Often purchase Internet transit services from Tier 1 or Tier 2 providers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, a local Internet provider offering home fibre or wireless Internet services may operate at Tier 3.&lt;/p&gt;

&lt;h3&gt;
  
  
  Comparing the Three Tiers
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;Tier 1&lt;/th&gt;
&lt;th&gt;Tier 2&lt;/th&gt;
&lt;th&gt;Tier 3&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Coverage&lt;/td&gt;
&lt;td&gt;Global&lt;/td&gt;
&lt;td&gt;Regional/National&lt;/td&gt;
&lt;td&gt;Local&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Network size&lt;/td&gt;
&lt;td&gt;Largest&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Smaller&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Main role&lt;/td&gt;
&lt;td&gt;Global backbone&lt;/td&gt;
&lt;td&gt;Regional connectivity&lt;/td&gt;
&lt;td&gt;End-user access&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internet connectivity&lt;/td&gt;
&lt;td&gt;Peering with other Tier 1 networks&lt;/td&gt;
&lt;td&gt;Peering and purchasing transit&lt;/td&gt;
&lt;td&gt;Purchasing upstream connectivity&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  4. Points of Presence (PoPs) and Network Access Points (NAPs)
&lt;/h2&gt;

&lt;p&gt;Another important concept is understanding where different networks connect.&lt;/p&gt;

&lt;h3&gt;
  
  
  Points of Presence (PoPs)
&lt;/h3&gt;

&lt;p&gt;A Point of Presence is a physical location where an ISP connects its network to customers or other networks.&lt;/p&gt;

&lt;p&gt;PoPs help ISPs extend their services and establish connections with other networks.&lt;/p&gt;

&lt;h3&gt;
  
  
  Network Access Points (NAPs)
&lt;/h3&gt;

&lt;p&gt;A Network Access Point is a facility where different networks connect and exchange Internet traffic.&lt;/p&gt;

&lt;p&gt;These facilities help independent networks communicate with one another.&lt;/p&gt;

&lt;p&gt;A simple way to distinguish them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PoP:&lt;/strong&gt; A connection point within an ISP's network.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;NAP:&lt;/strong&gt; A location where different networks exchange traffic.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Understanding Public and Private Peering
&lt;/h2&gt;

&lt;p&gt;Peering is an arrangement where two or more networks connect to exchange Internet traffic.&lt;/p&gt;

&lt;p&gt;The main purpose is to improve connectivity, reduce dependence on third-party transit providers, and manage network traffic efficiently.&lt;/p&gt;

&lt;p&gt;There are two common forms of peering.&lt;/p&gt;

&lt;h3&gt;
  
  
  Private Peering
&lt;/h3&gt;

&lt;p&gt;Private peering involves a direct connection between two networks.&lt;/p&gt;

&lt;p&gt;It is commonly used by providers with significant traffic volumes and network capacity.&lt;/p&gt;

&lt;p&gt;Benefits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Direct traffic exchange.&lt;/li&gt;
&lt;li&gt;Greater control over network performance.&lt;/li&gt;
&lt;li&gt;Reduced dependence on transit providers.&lt;/li&gt;
&lt;li&gt;Potential improvements in latency and packet delivery.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Public Peering
&lt;/h3&gt;

&lt;p&gt;Public peering allows multiple networks to exchange traffic through a shared facility, commonly an Internet Exchange Point (IXP).&lt;/p&gt;

&lt;p&gt;Instead of establishing separate direct connections with every network, providers can connect through the shared exchange infrastructure.&lt;/p&gt;

&lt;p&gt;Benefits include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easier interconnection between multiple networks.&lt;/li&gt;
&lt;li&gt;Reduced connectivity costs.&lt;/li&gt;
&lt;li&gt;Improved opportunities for local traffic exchange.&lt;/li&gt;
&lt;li&gt;Less dependence on distant networks for traffic that can be exchanged locally.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Private vs Public Peering
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Private Peering&lt;/th&gt;
&lt;th&gt;Public Peering&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Direct connection between two networks&lt;/td&gt;
&lt;td&gt;Multiple networks connect through a shared exchange&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dedicated connection&lt;/td&gt;
&lt;td&gt;Shared exchange infrastructure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bilateral arrangement&lt;/td&gt;
&lt;td&gt;Multiple participants&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Greater control over the direct connection&lt;/td&gt;
&lt;td&gt;Easier access to multiple networks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  6. Putting Everything Together
&lt;/h2&gt;

&lt;p&gt;Let's use a simple example.&lt;/p&gt;

&lt;p&gt;Imagine you are in Nairobi and want to access a website hosted on a server in another country.&lt;/p&gt;

&lt;p&gt;Here is a simplified explanation of what happens:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your device sends a request through your local Internet connection.&lt;/li&gt;
&lt;li&gt;Your ISP receives the request and uses routers to forward the data.&lt;/li&gt;
&lt;li&gt;The traffic may pass through higher-tier networks.&lt;/li&gt;
&lt;li&gt;Different networks exchange traffic through peering or transit arrangements.&lt;/li&gt;
&lt;li&gt;Routers continue forwarding the data towards the destination server.&lt;/li&gt;
&lt;li&gt;The server responds, and the information travels back to your device.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This process happens extremely quickly, even though the information may cross several networks and geographical locations.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Key Takeaways
&lt;/h2&gt;

&lt;p&gt;Here are the main concepts I'm taking away from this topic:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Routers connect networks and direct data packets towards their destinations.&lt;/li&gt;
&lt;li&gt;The Internet is a global collection of interconnected independent networks.&lt;/li&gt;
&lt;li&gt;IP addressing and BGP help make communication between networks possible.&lt;/li&gt;
&lt;li&gt;Tier 1 ISPs provide global backbone connectivity.&lt;/li&gt;
&lt;li&gt;Tier 2 ISPs provide regional or national connectivity.&lt;/li&gt;
&lt;li&gt;Tier 3 ISPs provide local Internet access to end users.&lt;/li&gt;
&lt;li&gt;PoPs are network connection locations, while NAPs facilitate traffic exchange between networks.&lt;/li&gt;
&lt;li&gt;Peering allows networks to exchange traffic directly or through shared exchange facilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;One thing I appreciate about learning Information Technology is discovering how the systems we use every day work behind the scenes.&lt;/p&gt;

&lt;p&gt;Before studying this topic, I mainly thought about the Internet from the user's perspective: connecting to Wi-Fi, browsing websites, and accessing online services.&lt;/p&gt;

&lt;p&gt;Understanding routers, ISP tiers, and peering has helped me appreciate the infrastructure and cooperation required to keep the Internet connected globally.&lt;/p&gt;

&lt;p&gt;I'm sharing these notes as part of my learning journey. If you notice anything that needs clarification or improvement, feel free to share your thoughts. I'm always open to learning.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>webdev</category>
      <category>infrastructure</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Communication Skills for Software Developers: Lessons Beyond Writing Code</title>
      <dc:creator>Vincent Tommi</dc:creator>
      <pubDate>Mon, 09 Nov 2026 16:48:00 +0000</pubDate>
      <link>https://dev.to/vincenttommi/communication-skills-for-software-developers-lessons-beyond-writing-code-3hc6</link>
      <guid>https://dev.to/vincenttommi/communication-skills-for-software-developers-lessons-beyond-writing-code-3hc6</guid>
      <description>&lt;h1&gt;
  
  
  Communication Skills for Software Developers: Lessons Beyond Writing Code
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Software development is not just about writing code, debugging errors, or building applications. It also involves communicating ideas, sharing information, writing documentation, working with teams, and understanding users.&lt;/p&gt;

&lt;p&gt;A developer may have excellent programming skills but still struggle in the workplace if they cannot communicate effectively.&lt;/p&gt;

&lt;p&gt;In this article, we explore important communication concepts and how they apply to everyday software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Including Personal Opinions in Articles
&lt;/h2&gt;

&lt;p&gt;An article can include the author's opinions, especially when discussing a particular topic. Opinions should be supported by explanations, examples, and evidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connection to software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developers regularly express opinions when discussing technical decisions.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why Django might be suitable for a particular backend project.&lt;/li&gt;
&lt;li&gt;Why PostgreSQL could be preferred over MySQL.&lt;/li&gt;
&lt;li&gt;Why a certain application architecture is easier to maintain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, technical opinions should be supported by facts and practical experience rather than personal preference alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Self-Handicapping Strategies
&lt;/h2&gt;

&lt;p&gt;Self-handicapping happens when someone creates excuses or obstacles that they can use to explain failure.&lt;/p&gt;

&lt;p&gt;For example, a student may avoid preparing for an examination and later blame poor performance on insufficient preparation time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connection to software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A developer might fail to complete a task and blame the programming language, development environment, or other team members without first examining their own preparation and approach.&lt;/p&gt;

&lt;p&gt;Instead of making excuses, developers should take responsibility, identify mistakes, and learn from them.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Business Letters and External Communication
&lt;/h2&gt;

&lt;p&gt;Business letters are formal documents used to communicate with people outside an organization.&lt;/p&gt;

&lt;p&gt;Examples include communication with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clients.&lt;/li&gt;
&lt;li&gt;Suppliers.&lt;/li&gt;
&lt;li&gt;Business partners.&lt;/li&gt;
&lt;li&gt;Government institutions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Connection to software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Software developers sometimes communicate with external clients about project requirements, deadlines, technical problems, and system updates.&lt;/p&gt;

&lt;p&gt;For example, when a client reports a problem with an application, a professional email or business letter can explain the issue and the proposed solution.&lt;/p&gt;

&lt;p&gt;Good external communication builds trust and maintains professional relationships.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Summaries and Abstracts
&lt;/h2&gt;

&lt;p&gt;A summary or abstract presents the main ideas of a longer document in a shorter and clearer form.&lt;/p&gt;

&lt;p&gt;Its purpose is to help readers understand important information without reading the entire document.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connection to software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developers use summaries in several areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;README files explain what a project does.&lt;/li&gt;
&lt;li&gt;API documentation summarizes available endpoints.&lt;/li&gt;
&lt;li&gt;Pull request descriptions explain code changes.&lt;/li&gt;
&lt;li&gt;Technical reports summarize project progress.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, instead of reading an entire codebase to understand a project, a developer can start with its README file.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Effective Reading and Time Management
&lt;/h2&gt;

&lt;p&gt;Many readers waste time because they read everything at the same speed, often too slowly.&lt;/p&gt;

&lt;p&gt;Different reading techniques can improve efficiency:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Skimming:&lt;/strong&gt; Quickly reading to understand the general idea.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scanning:&lt;/strong&gt; Looking for specific information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Detailed reading:&lt;/strong&gt; Carefully studying complex information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Connection to software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developers regularly read documentation, error messages, tutorials, and source code.&lt;/p&gt;

&lt;p&gt;For example, when learning Django, you do not always need to read every page of the documentation. You can scan for information about models, views, serializers, or authentication depending on the problem you are solving.&lt;/p&gt;

&lt;p&gt;Learning how to read efficiently saves time and improves productivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Memos and Subheadings
&lt;/h2&gt;

&lt;p&gt;A memo is a short formal document used to communicate information within an organization.&lt;/p&gt;

&lt;p&gt;Memos can contain subheadings to separate topics and make information easier to follow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connection to software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Development teams use internal communication documents to share:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Project updates.&lt;/li&gt;
&lt;li&gt;System maintenance notices.&lt;/li&gt;
&lt;li&gt;Technical changes.&lt;/li&gt;
&lt;li&gt;Meeting decisions.&lt;/li&gt;
&lt;li&gt;Security announcements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using clear headings makes technical communication easier for team members to understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Findings, Discussion, and Conclusion in Reports
&lt;/h2&gt;

&lt;p&gt;A report usually contains different sections that serve different purposes.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Findings:&lt;/strong&gt; Present the information, facts, and observations collected.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Discussion:&lt;/strong&gt; Interprets and explains the findings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conclusion:&lt;/strong&gt; Summarizes the main outcomes of the report.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Connection to software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine a developer preparing a report after testing a newly developed application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Findings:&lt;/strong&gt; The login page takes five seconds to load.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Discussion:&lt;/strong&gt; The delay may be caused by inefficient database queries or unnecessary API requests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt; The application requires performance improvements to provide a better user experience.&lt;/p&gt;

&lt;p&gt;Understanding these sections helps developers communicate technical problems professionally.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Articles and Awareness
&lt;/h2&gt;

&lt;p&gt;Articles can serve different purposes, including informing readers, presenting ideas, and creating awareness about important issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connection to software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developers use technical articles to share knowledge about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cybersecurity awareness.&lt;/li&gt;
&lt;li&gt;Programming best practices.&lt;/li&gt;
&lt;li&gt;New software technologies.&lt;/li&gt;
&lt;li&gt;Common programming errors.&lt;/li&gt;
&lt;li&gt;Application development techniques.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Platforms such as Dev.to allow developers to share their experiences and help other programmers learn.&lt;/p&gt;

&lt;p&gt;Writing technical articles also helps developers improve their understanding of concepts.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Responding to Business Letters
&lt;/h2&gt;

&lt;p&gt;Business letters should receive prompt responses, preferably on the day they are received when possible.&lt;/p&gt;

&lt;p&gt;Timely communication demonstrates professionalism and respect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Connection to software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine a client emails a development team reporting that an online payment system is not working.&lt;/p&gt;

&lt;p&gt;Ignoring the email may damage the relationship with the client.&lt;/p&gt;

&lt;p&gt;A professional developer or support team should acknowledge the issue, explain the next steps, and provide updates until the problem is resolved.&lt;/p&gt;

&lt;p&gt;Communication is an important part of technical support and software maintenance.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Affinity-Seeking Strategies
&lt;/h2&gt;

&lt;p&gt;Affinity-seeking strategies are communication techniques used to increase the chances of being liked and building positive relationships with others.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Showing genuine interest in others.&lt;/li&gt;
&lt;li&gt;Listening carefully.&lt;/li&gt;
&lt;li&gt;Being respectful.&lt;/li&gt;
&lt;li&gt;Offering assistance.&lt;/li&gt;
&lt;li&gt;Appreciating other people's contributions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Connection to software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Software development often involves teamwork.&lt;/p&gt;

&lt;p&gt;A developer who listens to colleagues, respects different opinions, and willingly helps others contributes to a positive working environment.&lt;/p&gt;

&lt;p&gt;Good relationships also make collaboration, code reviews, problem-solving, and knowledge sharing easier.&lt;/p&gt;

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

&lt;p&gt;Communication and software development are closely connected. Writing code is only one part of building successful software. Developers must also read documentation, explain technical decisions, write reports, communicate with clients, and collaborate with other team members.&lt;/p&gt;

&lt;p&gt;My view is that becoming a good software developer requires more than mastering programming languages and frameworks. It also requires developing the ability to communicate ideas clearly and work effectively with people.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remember: Good developers write code, but effective developers also know how to communicate.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Personal opinions should be supported by evidence and examples.&lt;/li&gt;
&lt;li&gt;Avoid making excuses; take responsibility for mistakes.&lt;/li&gt;
&lt;li&gt;Business letters support professional external communication.&lt;/li&gt;
&lt;li&gt;Summaries help developers understand technical documents quickly.&lt;/li&gt;
&lt;li&gt;Effective reading saves time when learning new technologies.&lt;/li&gt;
&lt;li&gt;Memos use headings to organize internal information.&lt;/li&gt;
&lt;li&gt;Findings, discussion, and conclusions serve different purposes in reports.&lt;/li&gt;
&lt;li&gt;Technical articles help developers share knowledge.&lt;/li&gt;
&lt;li&gt;Prompt responses improve professional relationships.&lt;/li&gt;
&lt;li&gt;Affinity-seeking strategies encourage positive teamwork.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Learning never stops: Keep communicating, keep coding, and keep improving.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>learning</category>
      <category>softwaredevelopment</category>
      <category>community</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Effective Communication in Software Development: Why Writing Code Is Not Enough</title>
      <dc:creator>Vincent Tommi</dc:creator>
      <pubDate>Mon, 09 Nov 2026 10:44:00 +0000</pubDate>
      <link>https://dev.to/vincenttommi/effective-communication-in-software-development-why-writing-code-is-not-enough-5485</link>
      <guid>https://dev.to/vincenttommi/effective-communication-in-software-development-why-writing-code-is-not-enough-5485</guid>
      <description>&lt;p&gt;Introduction&lt;/p&gt;

&lt;p&gt;Software development is not only about writing code, designing databases or building applications. It also involves communicating ideas, understanding requirements, sharing information and working with other people to achieve a common goal.&lt;/p&gt;

&lt;p&gt;A software developer may have excellent programming skills but still struggle to deliver a successful project if they cannot communicate effectively with clients, project managers and other developers.&lt;/p&gt;

&lt;p&gt;For example, imagine a client approaches a software development team and requests an online booking system. The client explains the general idea, but the developers fail to ask questions or clarify the requirements. They might build an application that works technically but does not solve the client's actual problem.&lt;/p&gt;

&lt;p&gt;This shows why communication is an important part of the software development process.&lt;/p&gt;

&lt;p&gt;In this article, we will explore key areas of effective communication and how each one applies to real-world software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Clarity: Writing and Explaining Requirements Clearly
&lt;/h2&gt;

&lt;p&gt;Clarity means communicating information in a simple and understandable way without creating confusion.&lt;/p&gt;

&lt;p&gt;In software development, developers need to understand what clients want before implementing a solution. Unclear requirements can result in incorrect features, wasted development time and additional costs.&lt;/p&gt;

&lt;p&gt;For example, instead of telling a developer to "improve the login system," a project manager should explain whether the improvement involves password security, email verification, authentication speed or password recovery.&lt;/p&gt;

&lt;p&gt;Clear communication helps developers understand exactly what they are expected to build.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Active Listening: Understanding Client Requirements
&lt;/h2&gt;

&lt;p&gt;Active listening involves paying attention to what another person is saying, understanding their message and asking questions where necessary.&lt;/p&gt;

&lt;p&gt;This is particularly important when gathering software requirements.&lt;/p&gt;

&lt;p&gt;For example, when developing a property management system, a developer should listen carefully to landlords and tenants to understand their different needs.&lt;/p&gt;

&lt;p&gt;A landlord might need to manage properties, monitor rent payments and respond to maintenance requests, while a tenant might need to pay rent and report maintenance problems.&lt;/p&gt;

&lt;p&gt;By listening to both parties, developers can design a system that addresses the actual needs of its users.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Feedback: Improving Software Through Collaboration
&lt;/h2&gt;

&lt;p&gt;Feedback involves providing information about someone's work or response to confirm understanding and identify areas that need improvement.&lt;/p&gt;

&lt;p&gt;In software development, feedback happens throughout the development process.&lt;/p&gt;

&lt;p&gt;For example, during a code review, one developer may identify a problem in another developer's code and suggest a better approach.&lt;/p&gt;

&lt;p&gt;Similarly, testers provide feedback by reporting bugs, while clients provide feedback after reviewing application features.&lt;/p&gt;

&lt;p&gt;Feedback is also important in Agile development, where teams regularly review their progress and make improvements.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Appropriate Body Language: Building Confidence During Technical Discussions
&lt;/h2&gt;

&lt;p&gt;Communication is not limited to spoken or written words. It also includes facial expressions, gestures, posture and eye contact.&lt;/p&gt;

&lt;p&gt;During software project presentations, developers need to communicate confidently through both their words and body language.&lt;/p&gt;

&lt;p&gt;For example, when presenting a newly developed application to a client, maintaining eye contact, using appropriate gestures and demonstrating confidence can help the client understand the proposed solution.&lt;/p&gt;

&lt;p&gt;Good body language also helps developers participate effectively in meetings and technical discussions.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Conciseness: Writing Better Technical Documentation
&lt;/h2&gt;

&lt;p&gt;Conciseness means communicating information using as few words as necessary without leaving out important details.&lt;/p&gt;

&lt;p&gt;Software developers regularly write documentation, commit messages, bug reports and technical instructions.&lt;/p&gt;

&lt;p&gt;For example, instead of writing a long and confusing Git commit message, a developer can write:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Fix user authentication validation&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This clearly explains what was changed.&lt;/p&gt;

&lt;p&gt;Similarly, when reporting a bug, developers should describe the problem, steps to reproduce it and the expected result without including irrelevant information.&lt;/p&gt;

&lt;p&gt;Concise communication saves time and makes collaboration easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Correctness: Sharing Accurate Technical Information
&lt;/h2&gt;

&lt;p&gt;Correctness means ensuring that information is accurate, properly presented and free from misleading statements.&lt;/p&gt;

&lt;p&gt;In software development, inaccurate information can lead to serious problems.&lt;/p&gt;

&lt;p&gt;For example, a backend developer working with a REST API must provide accurate information about available endpoints, request methods, required parameters and response formats.&lt;/p&gt;

&lt;p&gt;If API documentation contains incorrect information, frontend developers may struggle to integrate their applications with the backend.&lt;/p&gt;

&lt;p&gt;Correct technical communication reduces errors and improves the quality of software projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Completeness: Providing All Necessary Information
&lt;/h2&gt;

&lt;p&gt;Completeness means ensuring that a message contains all the information required by the receiver.&lt;/p&gt;

&lt;p&gt;For example, when a project manager assigns a task to a developer, the instructions should include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The feature that needs to be developed.&lt;/li&gt;
&lt;li&gt;The expected functionality.&lt;/li&gt;
&lt;li&gt;The requirements and limitations.&lt;/li&gt;
&lt;li&gt;The expected deadline.&lt;/li&gt;
&lt;li&gt;Any relevant technical documentation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If important details are missing, developers may make assumptions that result in incorrect implementations.&lt;/p&gt;

&lt;p&gt;Complete communication helps teams understand their responsibilities and deliver the expected results.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Courtesy and Respect: Working Effectively in Development Teams
&lt;/h2&gt;

&lt;p&gt;Software development often involves people with different skills, experiences and opinions.&lt;/p&gt;

&lt;p&gt;Courtesy means communicating politely and respecting other people's contributions, even when disagreements arise.&lt;/p&gt;

&lt;p&gt;For example, during a code review, a developer may disagree with another developer's implementation.&lt;/p&gt;

&lt;p&gt;Instead of saying, "Your code is bad," they can explain:&lt;/p&gt;

&lt;p&gt;"I think we can improve this implementation by separating the business logic from the view to make the code easier to maintain."&lt;/p&gt;

&lt;p&gt;Respectful communication creates a positive working environment and encourages developers to learn from one another.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Choosing the Right Communication Channel
&lt;/h2&gt;

&lt;p&gt;Effective communication also involves selecting the appropriate communication method depending on the information being shared.&lt;/p&gt;

&lt;p&gt;Software development teams use different communication channels, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Email:&lt;/strong&gt; For formal communication, project updates and official decisions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;WhatsApp or Slack:&lt;/strong&gt; For quick updates and team discussions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; For code reviews, pull requests, issues and tracking development work.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meetings:&lt;/strong&gt; For discussing requirements, solving problems and making decisions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical documentation:&lt;/strong&gt; For explaining system architecture, APIs and development procedures.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, GitHub issues can be used to report software bugs and assign tasks to developers, while meetings can be used to discuss complex technical challenges.&lt;/p&gt;

&lt;p&gt;Choosing the right channel makes information easier to access and understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Empathy: Understanding Users and Their Problems
&lt;/h2&gt;

&lt;p&gt;Empathy means understanding other people's feelings, experiences and points of view.&lt;/p&gt;

&lt;p&gt;In software development, empathy helps developers understand the challenges faced by the people who will use their applications.&lt;/p&gt;

&lt;p&gt;For example, when building an online government service portal, developers should consider residents who may have limited Internet access, low digital literacy or devices with small screens.&lt;/p&gt;

&lt;p&gt;Instead of designing an application based only on technical requirements, developers should consider how real users will interact with it.&lt;/p&gt;

&lt;p&gt;This helps create accessible, user-friendly and practical software solutions.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Effective Communication Supports the Software Development Life Cycle (SDLC)
&lt;/h2&gt;

&lt;p&gt;Communication is important at every stage of the Software Development Life Cycle.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SDLC Stage&lt;/th&gt;
&lt;th&gt;How communication is applied&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Planning&lt;/td&gt;
&lt;td&gt;Discussing project goals, resources and expectations.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Requirements analysis&lt;/td&gt;
&lt;td&gt;Listening to clients and documenting system requirements.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;System design&lt;/td&gt;
&lt;td&gt;Sharing architecture diagrams and technical specifications.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Development&lt;/td&gt;
&lt;td&gt;Collaborating with developers and sharing code-related information.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Testing&lt;/td&gt;
&lt;td&gt;Reporting bugs and communicating test results.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Informing users and stakeholders about system releases.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maintenance&lt;/td&gt;
&lt;td&gt;Collecting feedback and communicating system improvements.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This demonstrates that software development is not an isolated technical activity. It requires continuous communication between developers, clients, testers, project managers and end users.&lt;/p&gt;

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

&lt;p&gt;Effective communication is one of the most important skills in software development. Programming knowledge helps developers build applications, but communication helps ensure that those applications solve the right problems.&lt;/p&gt;

&lt;p&gt;Clarity helps developers understand requirements, active listening helps them understand users, feedback improves code quality, and empathy helps them build applications that address real-world needs.&lt;/p&gt;

&lt;p&gt;As someone learning software development, I believe that becoming a good developer requires more than mastering programming languages and frameworks. It also requires learning how to listen, explain technical concepts, document solutions and collaborate with others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remember: Good software is built with code, but successful software projects are built through effective communication and teamwork.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>beginners</category>
      <category>community</category>
      <category>microservices</category>
    </item>
    <item>
      <title>Setting Up GitHub SSH Authentication on Windows 11: A Beginner's Guide from Ubuntu to Windows</title>
      <dc:creator>Vincent Tommi</dc:creator>
      <pubDate>Sun, 08 Nov 2026 20:16:00 +0000</pubDate>
      <link>https://dev.to/vincenttommi/setting-up-github-ssh-authentication-on-windows-11-a-beginners-guide-from-ubuntu-to-windows-hmk</link>
      <guid>https://dev.to/vincenttommi/setting-up-github-ssh-authentication-on-windows-11-a-beginners-guide-from-ubuntu-to-windows-hmk</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When moving from Ubuntu to Windows 11, one of the first challenges a developer may encounter is configuring Git and GitHub to work with SSH authentication.&lt;/p&gt;

&lt;p&gt;On Ubuntu, I was already familiar with using the terminal to manage Git repositories, generate SSH keys, and authenticate with GitHub. However, Windows introduced a few differences, particularly when working with Command Prompt (CMD), PowerShell, and the Windows OpenSSH Authentication Agent.&lt;/p&gt;

&lt;p&gt;This article documents some of the challenges I encountered during the transition and explains how to configure GitHub SSH authentication on Windows 11 using CMD.&lt;/p&gt;

&lt;p&gt;The goal is to help beginners understand not just which commands to execute, but also why they are necessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Understanding Git and SSH Authentication
&lt;/h2&gt;

&lt;p&gt;Before configuring anything, it is important to understand the relationship between Git, GitHub, and SSH.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Git:&lt;/strong&gt; A version control system used to track changes in source code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; A cloud-based platform for hosting Git repositories and collaborating with other developers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SSH:&lt;/strong&gt; A secure communication protocol that allows your computer to authenticate with remote services such as GitHub without repeatedly entering your password.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;SSH authentication uses a key pair:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A private key stored securely on your computer.&lt;/li&gt;
&lt;li&gt;A public key added to your GitHub account.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;GitHub uses the public key to verify that your computer possesses the corresponding private key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Never share your private SSH key. Only the public key should be added to GitHub.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Installing and Verifying Git on Windows
&lt;/h2&gt;

&lt;p&gt;The first step is to ensure Git is installed.&lt;/p&gt;

&lt;p&gt;Open Command Prompt and execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git --version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If Git is installed correctly, the command displays its installed version.&lt;/p&gt;

&lt;p&gt;If Windows does not recognise the command, download and install Git for Windows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://git-scm.com/downloads/win" rel="noopener noreferrer"&gt;https://git-scm.com/downloads/win&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After installation, close and reopen CMD before checking again.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Configuring Git Identity
&lt;/h2&gt;

&lt;p&gt;Git needs to know the name and email address associated with your commits.&lt;/p&gt;

&lt;p&gt;On Ubuntu, the commands are the same as on Windows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global user.name "Your Name"
git config --global user.email "your-email@example.com"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To verify the configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global --list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This configuration identifies the author of your commits. It does not authenticate you with GitHub.&lt;/p&gt;

&lt;p&gt;That distinction is important: Git identity and GitHub authentication are two different things.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Understanding the Windows Terminal Environment
&lt;/h2&gt;

&lt;p&gt;One challenge when moving from Ubuntu to Windows is that terminal commands are not always interchangeable.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Ubuntu&lt;/th&gt;
&lt;th&gt;Windows CMD&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;List files&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ls -la&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dir /a&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Show current directory&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pwd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cd&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Display file contents&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cat file.txt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;type file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Copy a file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cp old new&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;copy old new&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Move a file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mv old new&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;move old new&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete a file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rm file.txt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;del file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clear terminal&lt;/td&gt;
&lt;td&gt;&lt;code&gt;clear&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Understanding these differences helps prevent errors when following Linux-based tutorials on Windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Understanding the SSH Agent on Windows
&lt;/h2&gt;

&lt;p&gt;On Ubuntu, developers commonly start an SSH agent using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;ssh-agent &lt;span class="nt"&gt;-s&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Windows handles this differently through a background service called &lt;code&gt;ssh-agent&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The service manages private keys that SSH can use for authentication.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Open CMD as Administrator
&lt;/h3&gt;

&lt;p&gt;Some service-management operations require administrative privileges.&lt;/p&gt;

&lt;p&gt;To open an elevated Command Prompt:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the Windows Start menu.&lt;/li&gt;
&lt;li&gt;Search for &lt;code&gt;cmd&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Right-click Command Prompt.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Run as administrator&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Step 2: Configure the SSH Agent
&lt;/h3&gt;

&lt;p&gt;Execute the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sc.exe config ssh-agent start= auto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This configures the SSH Agent service to start automatically when Windows starts.&lt;/p&gt;

&lt;p&gt;Notice the space after &lt;code&gt;start=&lt;/code&gt;. It is required by the &lt;code&gt;sc.exe&lt;/code&gt; command.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Start the Service
&lt;/h3&gt;

&lt;p&gt;Execute this separately:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;net start ssh-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To check its status:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sc.exe query ssh-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Look for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;STATE              : 4  RUNNING
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This indicates that the service is running.&lt;/p&gt;

&lt;h3&gt;
  
  
  A challenge I encountered: Access is denied
&lt;/h3&gt;

&lt;p&gt;When attempting to configure the service, Windows returned an access-denied error.&lt;/p&gt;

&lt;p&gt;The issue was not necessarily with Git or SSH. The Command Prompt was not running with sufficient administrative privileges.&lt;/p&gt;

&lt;p&gt;The solution was to reopen CMD as Administrator and execute the service commands again.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson:&lt;/strong&gt; Some Windows commands require elevated privileges. Always distinguish between ordinary CMD and Administrator CMD.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Understanding the Difference Between CMD and PowerShell
&lt;/h2&gt;

&lt;p&gt;Another important lesson is that CMD and PowerShell are different command-line environments.&lt;/p&gt;

&lt;p&gt;For example, this PowerShell command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Set-Service&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ssh-agent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-StartupType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Automatic&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;is not a CMD command.&lt;/p&gt;

&lt;p&gt;Running it directly in CMD will produce an error.&lt;/p&gt;

&lt;p&gt;Similarly, combining commands without a separator can cause unexpected errors.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Set-Service&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-Name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ssh-agent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-StartupType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;AutomaticStart-Service&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;ssh-agent&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is incorrect because Windows interprets the combined text as part of the command.&lt;/p&gt;

&lt;p&gt;Instead, execute one command at a time.&lt;/p&gt;

&lt;p&gt;In CMD, the following commands can be used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sc.exe config ssh-agent start= auto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;net start ssh-agent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understanding which terminal you are using makes troubleshooting much easier.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Checking Whether an SSH Key Is Already Loaded
&lt;/h2&gt;

&lt;p&gt;Before generating a new SSH key, check whether one is already loaded in the SSH agent.&lt;/p&gt;

&lt;p&gt;Execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh-add -l
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This lists the SSH identities currently available to the agent.&lt;/p&gt;

&lt;p&gt;A successful result may look similar to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;256 SHA256:EXAMPLE_FINGERPRINT example@example.com (ED25519)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The fingerprint is an identifier for the key, not the private key itself.&lt;/p&gt;

&lt;p&gt;If an identity appears, it means an SSH key is loaded in the agent.&lt;/p&gt;

&lt;p&gt;However, this does not automatically mean that the public key has been registered with GitHub.&lt;/p&gt;

&lt;h3&gt;
  
  
  Display the loaded public key
&lt;/h3&gt;

&lt;p&gt;One useful command is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh-add -L
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This displays the public keys currently loaded in the SSH agent.&lt;/p&gt;

&lt;p&gt;It is particularly helpful when you do not know the original filename or location of your SSH key.&lt;/p&gt;

&lt;p&gt;Remember that the output of &lt;code&gt;ssh-add -L&lt;/code&gt; contains public key material, not private key material.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Finding SSH Keys on Windows
&lt;/h2&gt;

&lt;p&gt;Windows OpenSSH normally stores SSH keys in:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;C:\Users\YOUR_USERNAME\.ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To inspect this directory from CMD, execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dir /a "%USERPROFILE%\.ssh"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A typical directory may contain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;id_ed25519
id_ed25519.pub
known_hosts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The files have different purposes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;id_ed25519&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Private SSH key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;id_ed25519.pub&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Public SSH key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;known_hosts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Records trusted SSH servers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Do not upload or share the private key.&lt;/p&gt;

&lt;p&gt;If your key has a different filename, do not assume that &lt;code&gt;id_ed25519.pub&lt;/code&gt; exists. Use &lt;code&gt;ssh-add -L&lt;/code&gt; to inspect the public key already loaded in the agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Adding the Public Key to GitHub
&lt;/h2&gt;

&lt;p&gt;After identifying the correct public key, the next step is to register it with GitHub.&lt;/p&gt;

&lt;p&gt;You can open the public-key output using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh-add -L
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively, if you know the exact public-key file location:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;type "%USERPROFILE%\.ssh\id_ed25519.pub"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To copy that file's contents to the clipboard:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;clip &amp;lt; "%USERPROFILE%\.ssh\id_ed25519.pub"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Only use the file command if that file actually exists.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub configuration
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Log in to GitHub.&lt;/li&gt;
&lt;li&gt;Open Settings.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;SSH and GPG keys&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;New SSH key&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter a descriptive title, such as &lt;code&gt;Windows 11 Laptop&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Authentication Key&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Paste the public key.&lt;/li&gt;
&lt;li&gt;Save the key.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If GitHub reports that the key already exists, it may already be registered to an account. You do not need to generate another key just because you encountered that message.&lt;/p&gt;

&lt;p&gt;GitHub documentation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh" rel="noopener noreferrer"&gt;https://docs.github.com/en/authentication/connecting-to-github-with-ssh&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Testing the SSH Connection
&lt;/h2&gt;

&lt;p&gt;After registering the public key, test the connection from CMD:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh -T git@github.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On the first connection, SSH may ask whether you trust GitHub's host identity.&lt;/p&gt;

&lt;p&gt;Review the host information and, if it matches GitHub's published SSH host fingerprints, type:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A successful authentication produces a message similar to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hi USERNAME! You've successfully authenticated, but GitHub does not provide shell access.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is not an error.&lt;/p&gt;

&lt;p&gt;It means GitHub has successfully authenticated your SSH key. GitHub does not provide an interactive shell through this connection.&lt;/p&gt;

&lt;h3&gt;
  
  
  What if authentication fails?
&lt;/h3&gt;

&lt;p&gt;If you receive:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Permission denied (publickey).
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Check the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Is the SSH Agent service running?&lt;/li&gt;
&lt;li&gt;Does &lt;code&gt;ssh-add -l&lt;/code&gt; show a loaded key?&lt;/li&gt;
&lt;li&gt;Does &lt;code&gt;ssh-add -L&lt;/code&gt; display the expected public key?&lt;/li&gt;
&lt;li&gt;Is that public key registered with the correct GitHub account?&lt;/li&gt;
&lt;li&gt;Are you connecting using the correct GitHub SSH address?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Avoid generating another key immediately. First identify the source of the authentication problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Cloning GitHub Repositories Using SSH
&lt;/h2&gt;

&lt;p&gt;Once SSH authentication works, you can clone repositories without repeatedly entering GitHub credentials.&lt;/p&gt;

&lt;p&gt;The general command is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone git@github.com:USERNAME/REPOSITORY.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;USERNAME&lt;/code&gt; and &lt;code&gt;REPOSITORY&lt;/code&gt; with the appropriate GitHub account and repository names.&lt;/p&gt;

&lt;p&gt;For an existing project, inspect its remote URL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it uses HTTPS and you want to switch to SSH, execute:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote set-url origin git@github.com:USERNAME/REPOSITORY.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can then verify the change:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git remote -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  12. Important Lessons from the Transition
&lt;/h2&gt;

&lt;p&gt;Moving from Ubuntu to Windows taught me several practical lessons:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Do not assume Linux commands work in CMD.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Although both environments support Git and SSH, their command-line tools and service-management approaches differ.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Understand administrative permissions.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Windows protects system services. Some operations require an elevated terminal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Execute commands separately.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Combining commands accidentally can result in confusing errors. Beginners should execute and verify each command before proceeding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Check for existing SSH keys before generating new ones.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Running &lt;code&gt;ssh-add -l&lt;/code&gt; helps determine whether a key is already loaded. Generating unnecessary keys can create additional confusion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Understand the difference between public and private keys.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The public key belongs in GitHub. The private key must remain securely stored on your computer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Successful Git configuration does not mean successful GitHub authentication.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Configuring &lt;code&gt;user.name&lt;/code&gt; and &lt;code&gt;user.email&lt;/code&gt; identifies commit authorship. SSH authentication establishes a trusted connection with GitHub.&lt;/p&gt;

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

&lt;p&gt;Configuring GitHub SSH authentication on Windows 11 is straightforward once you understand how Windows handles SSH services and how its command-line environment differs from Ubuntu.&lt;/p&gt;

&lt;p&gt;The most important lesson is to understand what each command does rather than copying commands from tutorials without considering the operating system.&lt;/p&gt;

&lt;p&gt;For developers transitioning between Linux and Windows, learning these differences builds confidence and makes everyday development tasks easier.&lt;/p&gt;

&lt;p&gt;Whether you are using Django, Laravel, Spring Boot, React, or another technology, a properly configured Git environment is an important part of your development workflow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next step:&lt;/strong&gt; Explore the official &lt;a href="https://git-scm.com/doc" rel="noopener noreferrer"&gt;Git documentation&lt;/a&gt; and &lt;a href="https://docs.github.com/en/authentication/connecting-to-github-with-ssh" rel="noopener noreferrer"&gt;GitHub SSH authentication guide&lt;/a&gt; to deepen your understanding.&lt;/p&gt;

</description>
      <category>git</category>
      <category>programming</category>
      <category>ubuntu</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Communication Skills in Software Development: Connecting People, Culture, and Technology</title>
      <dc:creator>Vincent Tommi</dc:creator>
      <pubDate>Sat, 07 Nov 2026 21:22:00 +0000</pubDate>
      <link>https://dev.to/vincenttommi/-communication-skills-in-software-development-connecting-people-culture-and-technology-1eg</link>
      <guid>https://dev.to/vincenttommi/-communication-skills-in-software-development-connecting-people-culture-and-technology-1eg</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Software development is not just about writing code, designing databases, or building applications. It also involves communicating with people, understanding their needs, sharing ideas, solving problems, and working together as a team.&lt;/p&gt;

&lt;p&gt;A software developer may have excellent programming skills but still struggle in a project if they cannot communicate effectively with clients, colleagues, project managers, or end users.&lt;/p&gt;

&lt;p&gt;Communication skills help developers understand project requirements, explain technical solutions, participate in meetings, receive feedback, and deliver software that solves real-world problems.&lt;/p&gt;

&lt;p&gt;In this article, we explore important communication concepts and how they relate to software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Oral Communication and Software Development
&lt;/h2&gt;

&lt;p&gt;Oral communication is the exchange of verbal messages between a sender and a receiver.&lt;/p&gt;

&lt;p&gt;In software development, oral communication happens when developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explain how an application works to a client.&lt;/li&gt;
&lt;li&gt;Discuss technical problems with other developers.&lt;/li&gt;
&lt;li&gt;Participate in daily stand-up meetings.&lt;/li&gt;
&lt;li&gt;Present completed features to project stakeholders.&lt;/li&gt;
&lt;li&gt;Ask questions when project requirements are unclear.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine a client wants an online shopping application. During a meeting, the client explains that customers should be able to register, browse products, add items to a cart, and make payments.&lt;/p&gt;

&lt;p&gt;The developer listens, asks questions, and explains how these features can be implemented.&lt;/p&gt;

&lt;p&gt;This conversation helps the developer understand what needs to be built before writing code.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Acculturation and Enculturation in Software Teams
&lt;/h2&gt;

&lt;p&gt;Software development teams often consist of people from different countries, communities, and cultural backgrounds.&lt;/p&gt;

&lt;p&gt;Two important concepts help us understand cultural differences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Acculturation&lt;/strong&gt; is the process of learning and adapting to the rules, values, and norms of a culture different from your own.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enculturation&lt;/strong&gt; is the process of learning and adopting the values, beliefs, customs, and traditions of your own culture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationship with software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A developer working with an international team may need to understand different communication styles, workplace expectations, and professional practices.&lt;/p&gt;

&lt;p&gt;For example, a developer joining a company with an international team may need to adapt to its meeting procedures, feedback culture, and working practices.&lt;/p&gt;

&lt;p&gt;Understanding these cultural differences helps create a respectful and productive working environment.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Evaluation Methods in Software Projects
&lt;/h2&gt;

&lt;p&gt;Evaluation helps determine whether an activity, system, or project has achieved its intended objectives.&lt;/p&gt;

&lt;p&gt;Two commonly discussed evaluation approaches are summative evaluation and impact evaluation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summative evaluation&lt;/strong&gt; examines the overall performance or results of a completed activity or project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Impact evaluation&lt;/strong&gt; examines the changes or effects that result from implementing a project.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationship with software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Consider a company that develops an online banking application.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Summative evaluation can assess whether the completed application meets its requirements, performs correctly, and provides the expected features.&lt;/li&gt;
&lt;li&gt;Impact evaluation can examine whether the application has improved customer convenience, reduced transaction processing time, and increased access to banking services.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Evaluation helps software teams understand whether their solutions are actually delivering value.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Intercultural Communication in Software Development
&lt;/h2&gt;

&lt;p&gt;Intercultural communication involves interacting with people from different cultural backgrounds.&lt;/p&gt;

&lt;p&gt;Effective intercultural communication requires developers to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Adjust their communication styles.&lt;/li&gt;
&lt;li&gt;Respect cultural differences.&lt;/li&gt;
&lt;li&gt;Avoid making assumptions about other people.&lt;/li&gt;
&lt;li&gt;Recognize differences in language and dialect.&lt;/li&gt;
&lt;li&gt;Avoid judging other cultures using their own cultural standards.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Practical example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine a Kenyan software developer working remotely with a client in Japan.&lt;/p&gt;

&lt;p&gt;The client invites the developer to a business-related social gathering after a meeting. The developer may not understand the cultural significance of the invitation.&lt;/p&gt;

&lt;p&gt;Learning about the client's culture and expectations can help the developer respond appropriately and maintain a good professional relationship.&lt;/p&gt;

&lt;p&gt;In software development, understanding cultural differences is especially important when working with international clients and distributed teams.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Meetings and Their Importance in Software Development
&lt;/h2&gt;

&lt;p&gt;Meetings are organized gatherings held to discuss particular issues or matters.&lt;/p&gt;

&lt;p&gt;In software development, meetings help teams coordinate activities, share information, identify challenges, and make decisions.&lt;/p&gt;

&lt;p&gt;Common software development meetings include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Daily stand-up meetings:&lt;/strong&gt; Developers briefly explain what they worked on, what they plan to do, and any challenges they are facing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sprint planning meetings:&lt;/strong&gt; The team discusses the work to be completed during the next development sprint.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sprint review meetings:&lt;/strong&gt; Developers demonstrate completed features to stakeholders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Retrospective meetings:&lt;/strong&gt; Team members discuss what went well, what did not go well, and what can be improved.&lt;/p&gt;

&lt;p&gt;For example, if a developer is experiencing difficulties integrating a payment gateway, they can raise the issue during a team meeting and receive assistance from other developers.&lt;/p&gt;

&lt;p&gt;Meetings help prevent misunderstandings and keep software projects moving in the right direction.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Discussion Questions and Problem-Solving
&lt;/h2&gt;

&lt;p&gt;Discussion questions encourage people to share ideas, analyze situations, and develop solutions.&lt;/p&gt;

&lt;p&gt;One type is a &lt;strong&gt;divergent question&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A divergent question allows participants to explore different possible answers rather than focusing on one fixed answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationship with software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suppose a development team is designing a school management system.&lt;/p&gt;

&lt;p&gt;The project manager asks:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What different ways can we improve the process of student registration?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Team members may suggest:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Online student registration.&lt;/li&gt;
&lt;li&gt;Automated document verification.&lt;/li&gt;
&lt;li&gt;Integration with payment systems.&lt;/li&gt;
&lt;li&gt;Automatic student identification number generation.&lt;/li&gt;
&lt;li&gt;Email and SMS notifications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These suggestions help the team explore different solutions before choosing the most suitable approach.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Planning Discussions to Find Workplace Solutions
&lt;/h2&gt;

&lt;p&gt;A well-planned discussion helps participants focus on a problem and work towards a practical solution.&lt;/p&gt;

&lt;p&gt;One important activity is establishing criteria for a workplace solution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationship with software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine a software team is deciding which database to use for a new application.&lt;/p&gt;

&lt;p&gt;The team can establish evaluation criteria such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Performance.&lt;/li&gt;
&lt;li&gt;Security.&lt;/li&gt;
&lt;li&gt;Scalability.&lt;/li&gt;
&lt;li&gt;Cost.&lt;/li&gt;
&lt;li&gt;Ease of maintenance.&lt;/li&gt;
&lt;li&gt;Compatibility with the existing technology.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The developers can then compare different database solutions using these criteria.&lt;/p&gt;

&lt;p&gt;This makes decision-making more objective and helps the team select technology that meets the project's needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Lecture Discussions and Knowledge Sharing
&lt;/h2&gt;

&lt;p&gt;A lecture discussion combines formal, structured presentations by discussion leaders with opportunities for participants to ask questions and contribute ideas.&lt;/p&gt;

&lt;p&gt;In software development, this approach is useful for technical training and knowledge sharing.&lt;/p&gt;

&lt;p&gt;For example, a senior developer may organize a session to explain how REST APIs work.&lt;/p&gt;

&lt;p&gt;The presentation may cover:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP methods such as GET, POST, PUT, PATCH, and DELETE.&lt;/li&gt;
&lt;li&gt;API authentication.&lt;/li&gt;
&lt;li&gt;Request and response formats.&lt;/li&gt;
&lt;li&gt;Error handling.&lt;/li&gt;
&lt;li&gt;API documentation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After the presentation, junior developers can ask questions and discuss practical implementation challenges.&lt;/p&gt;

&lt;p&gt;This approach helps developers learn from experienced team members and improve their technical knowledge.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Pitch and Its Importance in Technical Presentations
&lt;/h2&gt;

&lt;p&gt;Pitch refers to the highness or lowness of a person's voice.&lt;/p&gt;

&lt;p&gt;It is one of the vocal elements that influences how an audience perceives a speech.&lt;/p&gt;

&lt;p&gt;Other important vocal elements include volume and rate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationship with software development:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Developers often present their work to clients, managers, investors, and other technical teams.&lt;/p&gt;

&lt;p&gt;For example, when presenting a new mobile application, a developer should use an appropriate pitch to communicate confidence, maintain audience interest, and emphasize important information.&lt;/p&gt;

&lt;p&gt;Speaking with a suitable pitch helps make technical presentations more engaging and easier to follow.&lt;/p&gt;

&lt;p&gt;A developer should also avoid speaking in a monotonous voice because it can make even an interesting presentation difficult to follow.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Bringing Communication and Software Development Together
&lt;/h2&gt;

&lt;p&gt;Communication is important throughout the Software Development Life Cycle (SDLC).&lt;/p&gt;

&lt;p&gt;Each stage requires developers to exchange information with different stakeholders.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;SDLC Stage&lt;/th&gt;
&lt;th&gt;Communication Activities&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Planning&lt;/td&gt;
&lt;td&gt;Discuss project objectives, resources, and expectations.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Requirements Analysis&lt;/td&gt;
&lt;td&gt;Interview clients and gather user requirements.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;System Design&lt;/td&gt;
&lt;td&gt;Discuss architecture, databases, and technical decisions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Implementation&lt;/td&gt;
&lt;td&gt;Collaborate with developers and share progress.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Testing&lt;/td&gt;
&lt;td&gt;Report bugs, discuss errors, and communicate testing results.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deployment&lt;/td&gt;
&lt;td&gt;Inform users about system changes and provide instructions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Maintenance&lt;/td&gt;
&lt;td&gt;Receive feedback, investigate issues, and communicate updates.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For example, during requirements analysis, a developer may interview a client to understand how a business currently manages its operations.&lt;/p&gt;

&lt;p&gt;The developer then translates the client's needs into functional and technical requirements.&lt;/p&gt;

&lt;p&gt;Without effective communication, the developer might build a technically functional application that does not solve the actual business problem.&lt;/p&gt;

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

&lt;p&gt;Communication is an essential skill in software development because building successful software requires more than technical knowledge.&lt;/p&gt;

&lt;p&gt;Developers must understand different cultures, participate in meetings, ask meaningful questions, evaluate solutions, share technical knowledge, and communicate effectively with clients and colleagues.&lt;/p&gt;

&lt;p&gt;Concepts such as oral communication, acculturation, enculturation, intercultural communication, discussions, meetings, evaluation, and effective speech all contribute to successful teamwork.&lt;/p&gt;

&lt;p&gt;As an aspiring software developer, I believe that improving communication skills alongside programming skills is important for becoming a well-rounded professional.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key lesson is simple: Good software solves problems, but good communication helps developers understand which problems need to be solved and how to solve them together.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Takeaways
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Oral communication helps developers exchange technical information.&lt;/li&gt;
&lt;li&gt;Acculturation and enculturation help explain cultural learning and adaptation.&lt;/li&gt;
&lt;li&gt;Evaluation helps determine whether software achieves its objectives.&lt;/li&gt;
&lt;li&gt;Intercultural communication promotes effective collaboration across different cultures.&lt;/li&gt;
&lt;li&gt;Meetings help software teams coordinate their activities.&lt;/li&gt;
&lt;li&gt;Discussion questions encourage creativity and problem-solving.&lt;/li&gt;
&lt;li&gt;Establishing criteria helps developers make informed technical decisions.&lt;/li&gt;
&lt;li&gt;Lecture discussions support technical learning and knowledge sharing.&lt;/li&gt;
&lt;li&gt;Pitch and other vocal elements improve technical presentations.&lt;/li&gt;
&lt;li&gt;Communication is necessary at every stage of the SDLC.&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Final Thought
&lt;/h1&gt;

&lt;p&gt;You can learn Python, Java, PHP, Django, Laravel, or React, but your ability to communicate, collaborate, and understand people's needs will also influence your success as a software developer.&lt;/p&gt;

</description>
      <category>community</category>
      <category>beginners</category>
      <category>learning</category>
      <category>backend</category>
    </item>
    <item>
      <title>Understanding Business Concepts as a Software Developer: Connecting Business and Technology</title>
      <dc:creator>Vincent Tommi</dc:creator>
      <pubDate>Sat, 07 Nov 2026 18:50:00 +0000</pubDate>
      <link>https://dev.to/vincenttommi/understanding-business-concepts-as-a-software-developer-connecting-business-and-technology-2h7k</link>
      <guid>https://dev.to/vincenttommi/understanding-business-concepts-as-a-software-developer-connecting-business-and-technology-2h7k</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As software developers, we often focus on writing code, designing databases, building APIs, and developing applications. However, software development is not just about technology. Every successful software product exists to solve a business problem or satisfy a particular customer need.&lt;/p&gt;

&lt;p&gt;Understanding basic business concepts helps developers build software that delivers real value. For example, when developing an e-commerce application, we need to understand customers, marketing, business operations, employees, financial management, and the external business environment.&lt;/p&gt;

&lt;p&gt;In this article, I will explore some fundamental business concepts and explain how they relate to software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Understanding Customer Needs Before Developing Software
&lt;/h2&gt;

&lt;p&gt;A business conducts customer surveys before launching a new service to understand customer needs.&lt;/p&gt;

&lt;p&gt;The same principle applies to software development.&lt;/p&gt;

&lt;p&gt;Before building an application, developers and business analysts need to understand the problems users are experiencing.&lt;/p&gt;

&lt;p&gt;For example, imagine a company wants to develop an online food delivery application. Instead of immediately starting to write code, the development team should first understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What problems do customers experience when ordering food?&lt;/li&gt;
&lt;li&gt;What payment methods do they prefer?&lt;/li&gt;
&lt;li&gt;Do they need real-time order tracking?&lt;/li&gt;
&lt;li&gt;What challenges do restaurants face when receiving orders?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This process is related to &lt;strong&gt;requirements gathering and user research&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Developers can use interviews, surveys, questionnaires, and user feedback to collect requirements before designing the system.&lt;/p&gt;

&lt;p&gt;The goal is to build software that solves actual problems rather than creating features that customers do not need.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Business Mission Statements and Software Project Goals
&lt;/h2&gt;

&lt;p&gt;A mission statement describes the fundamental purpose of an organization.&lt;/p&gt;

&lt;p&gt;In software development, a similar idea applies to project objectives.&lt;/p&gt;

&lt;p&gt;For example, consider a software company developing a property management system.&lt;/p&gt;

&lt;p&gt;Its mission might be to simplify property management by connecting landlords, tenants, and property managers through technology.&lt;/p&gt;

&lt;p&gt;This mission influences the system's features, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Property registration and management.&lt;/li&gt;
&lt;li&gt;Tenant registration.&lt;/li&gt;
&lt;li&gt;Rent payment tracking.&lt;/li&gt;
&lt;li&gt;Maintenance requests.&lt;/li&gt;
&lt;li&gt;Communication between landlords and tenants.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When developers understand the business mission, they can make better technical decisions because they understand what the software is expected to achieve.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Understanding the Business Environment
&lt;/h2&gt;

&lt;p&gt;Businesses operate in environments influenced by internal and external factors.&lt;/p&gt;

&lt;p&gt;Software developers must also understand these factors because they affect how applications are designed, developed, deployed, and maintained.&lt;/p&gt;

&lt;h3&gt;
  
  
  Internal business environment
&lt;/h3&gt;

&lt;p&gt;The internal environment includes factors within an organization, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Employees.&lt;/li&gt;
&lt;li&gt;Management.&lt;/li&gt;
&lt;li&gt;Organizational culture.&lt;/li&gt;
&lt;li&gt;Financial resources.&lt;/li&gt;
&lt;li&gt;Company policies.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, a software development company may have backend developers, frontend developers, UI/UX designers, testers, project managers, and system administrators.&lt;/p&gt;

&lt;p&gt;These employees work together to deliver software projects.&lt;/p&gt;

&lt;p&gt;A lack of communication between these teams can lead to poor requirements, integration problems, and delayed releases.&lt;/p&gt;

&lt;h3&gt;
  
  
  External business environment
&lt;/h3&gt;

&lt;p&gt;The external environment includes factors outside an organization that influence its operations.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Government regulations.&lt;/li&gt;
&lt;li&gt;Economic conditions.&lt;/li&gt;
&lt;li&gt;Technological changes.&lt;/li&gt;
&lt;li&gt;Social and cultural factors.&lt;/li&gt;
&lt;li&gt;Competition.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, a fintech application operating in Kenya must consider applicable financial regulations, data protection requirements, customer expectations, and payment infrastructure.&lt;/p&gt;

&lt;p&gt;Developers must understand these factors when designing secure and compliant systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Market Segmentation and Target Users
&lt;/h2&gt;

&lt;p&gt;Market segmentation involves dividing a larger market into smaller groups of customers with similar characteristics.&lt;/p&gt;

&lt;p&gt;After segmentation, a business selects the group it wants to serve. This group becomes its target market.&lt;/p&gt;

&lt;p&gt;This concept is also important when developing software.&lt;/p&gt;

&lt;p&gt;For example, a company developing an online learning platform might identify different user groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;University students.&lt;/li&gt;
&lt;li&gt;Lecturers.&lt;/li&gt;
&lt;li&gt;School administrators.&lt;/li&gt;
&lt;li&gt;Independent learners.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the company chooses university students as its target market, the application should focus on features that support their learning needs.&lt;/p&gt;

&lt;p&gt;These might include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Course registration.&lt;/li&gt;
&lt;li&gt;Online examinations.&lt;/li&gt;
&lt;li&gt;Assignment submissions.&lt;/li&gt;
&lt;li&gt;Learning materials.&lt;/li&gt;
&lt;li&gt;Academic progress tracking.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding target users helps developers make better decisions about application design, functionality, and user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Marketing and Customer Satisfaction
&lt;/h2&gt;

&lt;p&gt;Marketing mainly focuses on understanding and satisfying customer needs.&lt;/p&gt;

&lt;p&gt;In software development, marketing and customer satisfaction are closely connected to user experience (UX) and product development.&lt;/p&gt;

&lt;p&gt;For example, imagine an e-commerce application with a complicated checkout process.&lt;/p&gt;

&lt;p&gt;Customers may abandon their shopping carts because completing a purchase takes too many steps.&lt;/p&gt;

&lt;p&gt;The development team can improve customer satisfaction by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplifying the checkout process.&lt;/li&gt;
&lt;li&gt;Supporting multiple payment methods.&lt;/li&gt;
&lt;li&gt;Improving application performance.&lt;/li&gt;
&lt;li&gt;Making the interface mobile-friendly.&lt;/li&gt;
&lt;li&gt;Providing clear order confirmation messages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This demonstrates that software quality is not only about whether the code works. It is also about whether the application provides a positive experience for its users.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Management Functions in Software Development
&lt;/h2&gt;

&lt;p&gt;Management involves coordinating people and resources to achieve organizational objectives.&lt;/p&gt;

&lt;p&gt;Four important management functions are planning, organizing, directing, and controlling.&lt;/p&gt;

&lt;p&gt;These functions are also visible in software development projects.&lt;/p&gt;

&lt;h3&gt;
  
  
  Planning
&lt;/h3&gt;

&lt;p&gt;Planning involves setting objectives and deciding how to achieve them.&lt;/p&gt;

&lt;p&gt;In software development, project planning includes identifying requirements, estimating costs, defining timelines, and selecting technologies.&lt;/p&gt;

&lt;p&gt;For example, before developing a school management system, a project manager may prepare a development schedule and assign deadlines for different modules.&lt;/p&gt;

&lt;h3&gt;
  
  
  Organizing
&lt;/h3&gt;

&lt;p&gt;Organizing involves assigning tasks and allocating responsibilities.&lt;/p&gt;

&lt;p&gt;In a software development team, tasks may be divided as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend developers build APIs and database operations.&lt;/li&gt;
&lt;li&gt;Frontend developers build user interfaces.&lt;/li&gt;
&lt;li&gt;UI/UX designers design application interfaces.&lt;/li&gt;
&lt;li&gt;Testers identify bugs and verify functionality.&lt;/li&gt;
&lt;li&gt;Project managers coordinate the development process.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Directing
&lt;/h3&gt;

&lt;p&gt;Directing involves leading, guiding, and motivating employees.&lt;/p&gt;

&lt;p&gt;A technical lead may guide developers, review code, explain technical requirements, and help resolve development challenges.&lt;/p&gt;

&lt;h3&gt;
  
  
  Controlling
&lt;/h3&gt;

&lt;p&gt;Controlling involves comparing actual performance with planned objectives and taking corrective action.&lt;/p&gt;

&lt;p&gt;For example, a project manager may compare completed development tasks against the project timeline.&lt;/p&gt;

&lt;p&gt;If a feature is delayed, the team can investigate the problem and adjust the development schedule.&lt;/p&gt;

&lt;p&gt;These functions help software teams deliver projects efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Employee Training and Technology Adoption
&lt;/h2&gt;

&lt;p&gt;When an organization introduces a new computer system, employees need training to increase their competence.&lt;/p&gt;

&lt;p&gt;For example, a company implementing a new Enterprise Resource Planning (ERP) system must train employees to use it.&lt;/p&gt;

&lt;p&gt;Without proper training, employees may struggle to perform their responsibilities, even if the software is technically correct.&lt;/p&gt;

&lt;p&gt;This demonstrates why software implementation should include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User training.&lt;/li&gt;
&lt;li&gt;Technical documentation.&lt;/li&gt;
&lt;li&gt;User manuals.&lt;/li&gt;
&lt;li&gt;Help and support services.&lt;/li&gt;
&lt;li&gt;System demonstrations.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Software developers should remember that successful implementation depends not only on the technology but also on the people using it.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Business Ethics and Software Development
&lt;/h2&gt;

&lt;p&gt;Business ethics refers to the moral principles that guide business decisions and behaviour.&lt;/p&gt;

&lt;p&gt;Ethics is equally important in software development.&lt;/p&gt;

&lt;p&gt;Developers frequently work with sensitive information, including customer details, financial records, passwords, and personal data.&lt;/p&gt;

&lt;p&gt;Therefore, they have a responsibility to develop systems that protect users.&lt;/p&gt;

&lt;p&gt;Examples of ethical software development practices include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protecting user privacy.&lt;/li&gt;
&lt;li&gt;Avoiding unauthorized access to information.&lt;/li&gt;
&lt;li&gt;Implementing secure authentication.&lt;/li&gt;
&lt;li&gt;Being transparent about data collection.&lt;/li&gt;
&lt;li&gt;Avoiding the misuse of customer information.&lt;/li&gt;
&lt;li&gt;Reporting security vulnerabilities responsibly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, a developer should never expose customer passwords in plain text. Passwords should be securely hashed using appropriate algorithms.&lt;/p&gt;

&lt;p&gt;Business ethics also means refusing bribery, avoiding corruption, and maintaining professional integrity when making business decisions.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Stakeholder Management in Software Projects
&lt;/h2&gt;

&lt;p&gt;The stakeholder approach considers the interests of everyone affected by an organization's decisions.&lt;/p&gt;

&lt;p&gt;In software development, stakeholders include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Customers.&lt;/li&gt;
&lt;li&gt;Developers.&lt;/li&gt;
&lt;li&gt;Project managers.&lt;/li&gt;
&lt;li&gt;Business owners.&lt;/li&gt;
&lt;li&gt;Suppliers.&lt;/li&gt;
&lt;li&gt;Government regulators.&lt;/li&gt;
&lt;li&gt;End users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Consider a county government developing an online service portal.&lt;/p&gt;

&lt;p&gt;Residents need easy access to services, county employees need efficient administrative tools, and the government needs accurate records and secure information systems.&lt;/p&gt;

&lt;p&gt;The development team must consider these different interests when designing the application.&lt;/p&gt;

&lt;p&gt;Ignoring important stakeholders can result in software that technically works but fails to solve the intended business problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Risk Management and Insurance in Software Companies
&lt;/h2&gt;

&lt;p&gt;Businesses use insurance to transfer specified financial risks to insurance companies.&lt;/p&gt;

&lt;p&gt;Software companies also manage different types of risks, although not all risks can be insured.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cybersecurity attacks.&lt;/li&gt;
&lt;li&gt;Data loss.&lt;/li&gt;
&lt;li&gt;System downtime.&lt;/li&gt;
&lt;li&gt;Hardware failure.&lt;/li&gt;
&lt;li&gt;Project delays.&lt;/li&gt;
&lt;li&gt;Financial losses.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, a company may purchase cyber insurance to help manage certain financial losses resulting from covered cyber incidents.&lt;/p&gt;

&lt;p&gt;However, insurance does not eliminate risks.&lt;/p&gt;

&lt;p&gt;Software developers should also implement preventive measures such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Regular database backups.&lt;/li&gt;
&lt;li&gt;Firewalls.&lt;/li&gt;
&lt;li&gt;Access controls.&lt;/li&gt;
&lt;li&gt;Multi-factor authentication.&lt;/li&gt;
&lt;li&gt;Disaster recovery plans.&lt;/li&gt;
&lt;li&gt;Security testing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This shows how business risk management connects with software security and system reliability.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Environmental Sustainability in Software Development
&lt;/h2&gt;

&lt;p&gt;Environmental sustainability involves reducing negative effects on the environment.&lt;/p&gt;

&lt;p&gt;Although software is digital, its development and operation depend on physical infrastructure such as computers, servers, data centres, and networking equipment.&lt;/p&gt;

&lt;p&gt;Software developers can contribute to sustainability by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Optimizing code to reduce unnecessary resource consumption.&lt;/li&gt;
&lt;li&gt;Using cloud infrastructure efficiently.&lt;/li&gt;
&lt;li&gt;Reducing unnecessary data storage.&lt;/li&gt;
&lt;li&gt;Supporting paperless business processes.&lt;/li&gt;
&lt;li&gt;Improving application performance to reduce excessive computing requirements.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, an efficiently designed application may require fewer server resources than a poorly optimized application handling the same workload.&lt;/p&gt;

&lt;p&gt;This can help reduce operating costs and resource consumption.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. Why Business Knowledge Matters to Software Developers
&lt;/h2&gt;

&lt;p&gt;Understanding business concepts helps developers move beyond simply writing code.&lt;/p&gt;

&lt;p&gt;A developer who understands business operations can better identify the problems an application should solve.&lt;/p&gt;

&lt;p&gt;For example, when developing a restaurant management system, technical knowledge helps build the application, but business knowledge helps identify the required functionality.&lt;/p&gt;

&lt;p&gt;The system may need to support:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Menu management.&lt;/li&gt;
&lt;li&gt;Customer orders.&lt;/li&gt;
&lt;li&gt;Inventory tracking.&lt;/li&gt;
&lt;li&gt;Sales reports.&lt;/li&gt;
&lt;li&gt;Employee management.&lt;/li&gt;
&lt;li&gt;Payment processing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without understanding how the restaurant operates, developers may build a system that does not meet the business's actual needs.&lt;/p&gt;

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

&lt;p&gt;Business and software development are closely connected. Businesses use technology to improve operations, satisfy customers, reduce costs, and compete in the market.&lt;/p&gt;

&lt;p&gt;As software developers, understanding concepts such as customer needs, market segmentation, management functions, business ethics, stakeholder management, and risk management helps us build more meaningful software solutions.&lt;/p&gt;

&lt;p&gt;My biggest takeaway is that &lt;strong&gt;good software development starts with understanding the problem, not just choosing a programming language or writing code.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Technology provides the tools, but business understanding helps us determine what to build, why we should build it, and who will benefit from it.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>softwaredevelopment</category>
      <category>buildinpublic</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Moving from Ubuntu 26.04 to Windows: Linux Commands vs PowerShell for Developer</title>
      <dc:creator>Vincent Tommi</dc:creator>
      <pubDate>Sat, 07 Nov 2026 14:03:00 +0000</pubDate>
      <link>https://dev.to/vincenttommi/moving-from-ubuntu-2604-to-windows-linux-commands-vs-powershell-for-developer-40ei</link>
      <guid>https://dev.to/vincenttommi/moving-from-ubuntu-2604-to-windows-linux-commands-vs-powershell-for-developer-40ei</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Recently, I migrated from &lt;strong&gt;Ubuntu 26.04 to Windows&lt;/strong&gt; as my primary development environment. Since I had been using Ubuntu for development, I was already comfortable working with the Linux terminal.&lt;/p&gt;

&lt;p&gt;On Ubuntu, I frequently used commands such as &lt;code&gt;ls&lt;/code&gt;, &lt;code&gt;cd&lt;/code&gt;, &lt;code&gt;mkdir&lt;/code&gt;, &lt;code&gt;touch&lt;/code&gt;, &lt;code&gt;rm&lt;/code&gt;, and &lt;code&gt;cat&lt;/code&gt; when navigating directories and managing project files.&lt;/p&gt;

&lt;p&gt;However, after moving to Windows, I discovered that not all the commands I was familiar with worked in the same way.&lt;/p&gt;

&lt;p&gt;For example, I tried creating an HTML file using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;touch &lt;/span&gt;index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But PowerShell returned an error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;touch&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;The&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;term&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'touch'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;is&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;not&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;recognized&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;as&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;the&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;of&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cmdlet&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="kr"&gt;function&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;script&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;file&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;or&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;operable&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;program.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This made me realise that although Linux and Windows terminals share some similarities, they have different command-line tools and conventions.&lt;/p&gt;

&lt;p&gt;In this article, I will share some of the differences I have encountered and the commands developers can use when transitioning from Ubuntu to Windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Understanding Windows PowerShell
&lt;/h2&gt;

&lt;p&gt;Windows provides different command-line environments, but two common ones are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Command Prompt (CMD):&lt;/strong&gt; The traditional Windows command-line interpreter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PowerShell:&lt;/strong&gt; A more advanced command-line shell designed for system administration, automation, and scripting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I was using PowerShell when I encountered the &lt;code&gt;touch&lt;/code&gt; error.&lt;/p&gt;

&lt;p&gt;Unlike Linux terminals, PowerShell uses cmdlets such as &lt;code&gt;New-Item&lt;/code&gt;, &lt;code&gt;Get-ChildItem&lt;/code&gt;, and &lt;code&gt;Remove-Item&lt;/code&gt; to perform different operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Common Linux Commands and Their Windows Equivalents
&lt;/h2&gt;

&lt;p&gt;Here are some commands I commonly used on Ubuntu and their equivalents in Windows PowerShell.&lt;/p&gt;

&lt;h3&gt;
  
  
  Listing files and directories
&lt;/h3&gt;

&lt;p&gt;On Ubuntu, I would use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In PowerShell, I can also use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;ls&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively, the native PowerShell command is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Get-ChildItem&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both allow you to view files and directories in the current location.&lt;/p&gt;

&lt;h3&gt;
  
  
  Checking the current directory
&lt;/h3&gt;

&lt;p&gt;On Ubuntu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In PowerShell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Get-Location&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This displays the current working directory.&lt;/p&gt;

&lt;h3&gt;
  
  
  Creating a directory
&lt;/h3&gt;

&lt;p&gt;On Ubuntu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;my-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In PowerShell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;New-Item&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;my-project&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ItemType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Directory&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also use the shorter command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;mkdir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;my-project&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Creating a file
&lt;/h3&gt;

&lt;p&gt;This is where I encountered my first issue.&lt;/p&gt;

&lt;p&gt;On Ubuntu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;touch &lt;/span&gt;index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In PowerShell, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;New-Item&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;index.html&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ItemType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;File&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;New-Item&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;style.css&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ItemType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;File&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates an empty CSS file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deleting a file
&lt;/h3&gt;

&lt;p&gt;On Ubuntu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;rm &lt;/span&gt;index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In PowerShell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Remove-Item&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;index.html&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Reading file contents
&lt;/h3&gt;

&lt;p&gt;On Ubuntu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In PowerShell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Get-Content&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;index.html&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Changing directories
&lt;/h3&gt;

&lt;p&gt;On both Ubuntu and PowerShell, you can use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;my-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To move one directory backwards:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ..
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Clearing the terminal
&lt;/h3&gt;

&lt;p&gt;On Ubuntu:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;clear
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In PowerShell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Clear-Host&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;clear&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Linux Commands vs PowerShell Commands vs CMD
&lt;/h2&gt;

&lt;p&gt;It is important to understand that PowerShell and Command Prompt are different environments.&lt;/p&gt;

&lt;p&gt;Here is a quick comparison:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operation&lt;/th&gt;
&lt;th&gt;Ubuntu&lt;/th&gt;
&lt;th&gt;PowerShell&lt;/th&gt;
&lt;th&gt;Windows CMD&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;List files&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ls&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dir&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Current directory&lt;/td&gt;
&lt;td&gt;&lt;code&gt;pwd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Get-Location&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cd&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create directory&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mkdir&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mkdir&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;mkdir&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Create file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;touch file.txt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;New-Item file.txt -ItemType File&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;type nul &amp;gt; file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Delete file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rm file.txt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Remove-Item file.txt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;del file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Read file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cat file.txt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Get-Content file.txt&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;type file.txt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Change directory&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cd folder&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cd folder&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cd folder&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clear terminal&lt;/td&gt;
&lt;td&gt;&lt;code&gt;clear&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;Clear-Host&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cls&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Notice that some commands work across multiple environments, while others require different syntax.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Creating a Simple Web Development Project in PowerShell
&lt;/h2&gt;

&lt;p&gt;Let's say you want to create a simple web development project containing HTML, CSS, and JavaScript files.&lt;/p&gt;

&lt;p&gt;On Ubuntu, I would normally do something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;my-website
&lt;span class="nb"&gt;cd &lt;/span&gt;my-website

&lt;span class="nb"&gt;touch &lt;/span&gt;index.html
&lt;span class="nb"&gt;touch &lt;/span&gt;style.css
&lt;span class="nb"&gt;touch &lt;/span&gt;script.js

&lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In PowerShell, I can achieve the same result using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Create the project directory&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;mkdir&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;my-website&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Navigate into the directory&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;my-website&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Create the HTML file&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;New-Item&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;index.html&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ItemType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;File&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Create the CSS file&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;New-Item&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;style.css&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ItemType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;File&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# Create the JavaScript file&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;New-Item&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;script.js&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-ItemType&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;File&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="c"&gt;# List the project files&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="n"&gt;ls&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The resulting project structure will look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my-website/
│
├── index.html
├── style.css
└── script.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can then open the project in Visual Studio Code using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Do I Need to Abandon Linux Commands Completely?
&lt;/h2&gt;

&lt;p&gt;Not necessarily.&lt;/p&gt;

&lt;p&gt;Windows offers several options for developers who prefer working with Linux commands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Windows Subsystem for Linux (WSL)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;WSL allows developers to run a Linux environment directly on Windows without setting up a traditional virtual machine.&lt;/p&gt;

&lt;p&gt;For example, you can install Ubuntu through WSL and continue using familiar commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;touch &lt;/span&gt;index.html
&lt;span class="nb"&gt;ls
mkdir &lt;/span&gt;my-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Git Bash&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Git Bash provides a Bash-like terminal environment on Windows. It supports many familiar Linux commands, making it useful for developers transitioning from Linux.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PowerShell&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PowerShell is also worth learning because it provides powerful tools for managing files, directories, applications, and development environments on Windows.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Lessons Learned from Migrating to Windows
&lt;/h2&gt;

&lt;p&gt;One thing I have learned from this transition is that changing operating systems does not mean starting my development journey from scratch.&lt;/p&gt;

&lt;p&gt;The underlying development concepts remain the same. What changes is how we interact with the operating system.&lt;/p&gt;

&lt;p&gt;As developers, understanding different terminal environments makes it easier to work across operating systems, collaborate with other developers, and manage development projects.&lt;/p&gt;

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

&lt;p&gt;Migrating from Ubuntu 26.04 to Windows has been an interesting learning experience. My first challenge was discovering that familiar Linux commands such as &lt;code&gt;touch&lt;/code&gt; do not work directly in PowerShell.&lt;/p&gt;

&lt;p&gt;However, learning commands such as &lt;code&gt;New-Item&lt;/code&gt;, &lt;code&gt;Get-Content&lt;/code&gt;, and &lt;code&gt;Remove-Item&lt;/code&gt; has made the transition easier.&lt;/p&gt;

&lt;p&gt;My takeaway is simple: &lt;strong&gt;Don't just memorise terminal commands; understand what they do.&lt;/strong&gt; Once you understand the purpose of a command, learning its equivalent in another operating system becomes much easier.&lt;/p&gt;

&lt;p&gt;As I continue developing on Windows, I also plan to explore PowerShell, WSL, and other tools that can improve my development workflow.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>learning</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to install Windows 11 in English (United states ) on a Lenovo X390 Yoga</title>
      <dc:creator>Vincent Tommi</dc:creator>
      <pubDate>Thu, 05 Nov 2026 06:40:00 +0000</pubDate>
      <link>https://dev.to/vincenttommi/how-to-install-windows-11-in-english-united-states-on-a-lenovo-x390-yoga-af5</link>
      <guid>https://dev.to/vincenttommi/how-to-install-windows-11-in-english-united-states-on-a-lenovo-x390-yoga-af5</guid>
      <description>&lt;p&gt;How to Install Windows 11 in English (United States) on a Lenovo ThinkPad X390 Using Rufus&lt;/p&gt;

&lt;p&gt;Introduction&lt;/p&gt;

&lt;p&gt;Installing Windows 11 on a Lenovo ThinkPad X390 is relatively straightforward, but choosing the correct Windows installation language can sometimes be confusing.&lt;/p&gt;

&lt;p&gt;I recently encountered a situation where the Windows 11 ISO I had downloaded was configured for English (United Kingdom) instead of English (United States).&lt;/p&gt;

&lt;p&gt;If you want your Windows installation to use US English, including the language, regional settings, date formats, and keyboard layout, you need to download the correct ISO before creating your bootable USB.&lt;/p&gt;

&lt;p&gt;In this guide, I'll walk you through downloading the correct Windows 11 ISO, configuring Rufus, and preparing your Lenovo ThinkPad X490 for a clean installation.&lt;/p&gt;

&lt;p&gt;Requirements&lt;/p&gt;

&lt;p&gt;Before getting started, make sure you have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lenovo ThinkPad X390.&lt;/li&gt;
&lt;li&gt;USB flash drive (at least 8GB; 16GB recommended).&lt;/li&gt;
&lt;li&gt;Windows 11 ISO file (English).&lt;/li&gt;
&lt;li&gt;Rufus bootable USB creation tool.&lt;/li&gt;
&lt;li&gt;Internet connection.&lt;/li&gt;
&lt;li&gt;Backup of important files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Warning: Creating a bootable USB using Rufus will erase the existing contents of the USB drive.&lt;/p&gt;

&lt;p&gt;Step 1: Download Windows 11 English (United States) ISO&lt;/p&gt;

&lt;p&gt;The first step is downloading the correct Windows 11 installation image.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Visit the official Microsoft Windows 11 download page:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://www.microsoft.com/software-download/windows11" rel="noopener noreferrer"&gt;https://www.microsoft.com/software-download/windows11&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Scroll down to Download Windows 11 Disk Image (ISO) for x64 devices.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Windows 11 (multi-edition ISO).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Download.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Under Select the product language, choose English.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Confirm.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the 64-bit Download option.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Important: Choose English, not English International. English International is the UK-oriented language option.&lt;/p&gt;

&lt;p&gt;Using the correct ISO helps ensure that your Windows installation uses the intended language.&lt;/p&gt;

&lt;p&gt;Step 2: Download and Open Rufus&lt;/p&gt;

&lt;p&gt;Rufus is a lightweight utility that allows you to create bootable USB drives for installing operating systems.&lt;/p&gt;

&lt;p&gt;Download Rufus from its official website:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rufus.ie/" rel="noopener noreferrer"&gt;https://rufus.ie/&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect your USB flash drive.&lt;/li&gt;
&lt;li&gt;Open Rufus.&lt;/li&gt;
&lt;li&gt;Under Device, select your USB flash drive.&lt;/li&gt;
&lt;li&gt;Under Boot selection, click SELECT.&lt;/li&gt;
&lt;li&gt;Locate and select your downloaded Windows 11 ISO.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 3: Configure Rufus for Lenovo ThinkPad X490&lt;/p&gt;

&lt;p&gt;For the Lenovo ThinkPad X390, I recommend the following configuration:&lt;/p&gt;

&lt;p&gt;Setting| Recommended option&lt;br&gt;
Boot selection| Windows 11 ISO&lt;br&gt;
Partition scheme| GPT&lt;br&gt;
Target system| UEFI (non-CSM)&lt;br&gt;
File system| NTFS, if selected by Rufus&lt;br&gt;
Image option| Standard Windows installation&lt;/p&gt;

&lt;p&gt;The X390 generally supports Windows 11 requirements, so there is normally no need to bypass TPM 2.0 or Secure Boot requirements.&lt;/p&gt;

&lt;p&gt;Step 4: Customize Windows Installation Options&lt;/p&gt;

&lt;p&gt;After clicking START, Rufus displays a Windows User Experience dialog.&lt;/p&gt;

&lt;p&gt;You will see several customization options.&lt;/p&gt;

&lt;p&gt;Here are my recommendations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Remove requirements for 4GB+ RAM, Secure Boot and TPM 2.0&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Leave this unchecked if your laptop meets Windows 11 requirements.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a local account&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Enable this option if you prefer creating a local Windows account instead of signing in with a Microsoft account.&lt;/p&gt;

&lt;p&gt;Enter your preferred username.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Set regional options to the same values as this user's&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Leave this unchecked if you want to configure your regional settings manually during Windows installation.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Disable data collection&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Enable this option if you want to skip certain privacy-related questions during setup.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Disable BitLocker automatic device encryption&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Leave this unchecked if you want Windows to retain the option of automatically encrypting your device. Make sure you securely save your recovery key if encryption is enabled.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;QoL improvements&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Enable this option if you want Rufus to apply its available quality-of-life installation customizations, such as reducing certain forced integrations.&lt;/p&gt;

&lt;p&gt;Once you have selected your preferred options, click OK.&lt;/p&gt;

&lt;p&gt;Rufus will begin creating your bootable USB drive.&lt;/p&gt;

&lt;p&gt;Step 5: Configure Lenovo ThinkPad X390 BIOS&lt;/p&gt;

&lt;p&gt;Before installing Windows, check your BIOS configuration.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Restart your Lenovo ThinkPad X390.&lt;/li&gt;
&lt;li&gt;Press F1 repeatedly to enter BIOS Setup.&lt;/li&gt;
&lt;li&gt;Navigate to the Security section.&lt;/li&gt;
&lt;li&gt;Confirm that TPM 2.0 / Security Chip is enabled.&lt;/li&gt;
&lt;li&gt;Ensure Secure Boot is enabled.&lt;/li&gt;
&lt;li&gt;Under Startup, select UEFI boot mode.&lt;/li&gt;
&lt;li&gt;Save your changes using F10.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The exact menu names may vary depending on your BIOS version.&lt;/p&gt;

&lt;p&gt;Step 6: Boot from the USB Drive&lt;/p&gt;

&lt;p&gt;Now that your bootable USB is ready:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connect the USB drive to your Lenovo ThinkPad X390.&lt;/li&gt;
&lt;li&gt;Restart the laptop.&lt;/li&gt;
&lt;li&gt;Press F12 repeatedly to open the Boot Menu.&lt;/li&gt;
&lt;li&gt;Select your USB storage device.&lt;/li&gt;
&lt;li&gt;Press Enter.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Windows Setup should now load.&lt;/p&gt;

&lt;p&gt;If the USB drive is not detected, check the BIOS boot settings and confirm that the USB was created using the GPT/UEFI configuration.&lt;/p&gt;

&lt;p&gt;Step 7: Select English (United States) During Windows Installation&lt;/p&gt;

&lt;p&gt;When Windows Setup loads, configure the following:&lt;/p&gt;

&lt;p&gt;Installation setting| Selection&lt;br&gt;
Language to install| English (United States)&lt;br&gt;
Time and currency format| English (United States)&lt;br&gt;
Keyboard or input method| US&lt;/p&gt;

&lt;p&gt;Click Next and continue with the installation.&lt;/p&gt;

&lt;p&gt;Note: The language options available during setup depend on the Windows ISO you downloaded. Using the correct English ISO is therefore important.&lt;/p&gt;

&lt;p&gt;Step 8: Complete Windows Installation&lt;/p&gt;

&lt;p&gt;Follow the Windows Setup instructions.&lt;/p&gt;

&lt;p&gt;If you are performing a clean installation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Select Install Windows.&lt;/li&gt;
&lt;li&gt;Choose the appropriate Windows edition that matches your licence.&lt;/li&gt;
&lt;li&gt;Select the installation destination.&lt;/li&gt;
&lt;li&gt;Carefully identify the existing Windows partitions.&lt;/li&gt;
&lt;li&gt;Delete partitions only if you intend to erase the entire Windows installation and have backed up all important data.&lt;/li&gt;
&lt;li&gt;Select the unallocated space and continue.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Windows will copy the installation files and restart several times.&lt;/p&gt;

&lt;p&gt;After installation, complete the initial Windows configuration.&lt;/p&gt;

&lt;p&gt;Step 9: Install Lenovo Drivers and Updates&lt;/p&gt;

&lt;p&gt;Once Windows 11 is installed:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Connect to the internet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run Windows Update.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install available updates and drivers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Visit Lenovo Support:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://pcsupport.lenovo.com/" rel="noopener noreferrer"&gt;https://pcsupport.lenovo.com/&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Search for ThinkPad X390.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download any missing drivers, especially chipset, graphics, audio, Wi-Fi and power-management drivers.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You should also check Device Manager to ensure there are no unidentified devices.&lt;/p&gt;

&lt;p&gt;Common Mistakes to Avoid&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Downloading English International instead of English.&lt;/li&gt;
&lt;li&gt;Using MBR instead of GPT for a UEFI installation.&lt;/li&gt;
&lt;li&gt;Disabling Secure Boot or TPM unnecessarily.&lt;/li&gt;
&lt;li&gt;Forgetting to back up important files.&lt;/li&gt;
&lt;li&gt;Selecting the wrong USB drive in Rufus.&lt;/li&gt;
&lt;li&gt;Deleting the wrong disk partitions during installation.&lt;/li&gt;
&lt;li&gt;Using an unofficial or modified Windows ISO.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;Installing Windows 11 on a Lenovo ThinkPad X390 using Rufus is a manageable process when the correct installation image and boot settings are used.&lt;/p&gt;

&lt;p&gt;The most important lesson is to download the correct English ISO before creating your bootable USB.&lt;/p&gt;

&lt;p&gt;If you want Windows 11 in US English, select English, rather than English International, on Microsoft's official download page.&lt;/p&gt;

&lt;p&gt;With the correct ISO, GPT partition scheme, UEFI boot configuration, and appropriate Rufus customization settings, you can prepare your Lenovo ThinkPad X390 for a clean Windows 11 installation.&lt;/p&gt;

&lt;p&gt;Useful resources:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"Microsoft Windows 11 Download" (&lt;a href="https://www.microsoft.com/software-download/windows11" rel="noopener noreferrer"&gt;https://www.microsoft.com/software-download/windows11&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;"Rufus Official Website" (&lt;a href="https://rufus.ie/" rel="noopener noreferrer"&gt;https://rufus.ie/&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;"Lenovo Support" (&lt;a href="https://pcsupport.lenovo.com/" rel="noopener noreferrer"&gt;https://pcsupport.lenovo.com/&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>microsoft</category>
      <category>learning</category>
      <category>debugging</category>
      <category>beginners</category>
    </item>
    <item>
      <title>How I fixed Windows 11 Installation Errors on Lenovo X390 Yoga</title>
      <dc:creator>Vincent Tommi</dc:creator>
      <pubDate>Wed, 04 Nov 2026 15:52:00 +0000</pubDate>
      <link>https://dev.to/vincenttommi/how-i-fixed-windows-11-installation-errors-on-lenovo-x390-yoga-4ahc</link>
      <guid>https://dev.to/vincenttommi/how-i-fixed-windows-11-installation-errors-on-lenovo-x390-yoga-4ahc</guid>
      <description>&lt;p&gt;Installing Windows 11 from a bootable USB should be straightforward. However, sometimes Windows Setup detects your internal SSD but refuses to proceed with the installation.&lt;/p&gt;

&lt;p&gt;I recently encountered this issue while installing Windows 11 on a Lenovo ThinkPad X390 Yoga. After troubleshooting the bootable USB and BIOS settings, I finally resolved the problem by cleaning the internal SSD and converting its partition table from MBR to GPT.&lt;/p&gt;

&lt;p&gt;In this article, I'll walk you through the problem, what caused it, and how I fixed it.&lt;/p&gt;

&lt;p&gt;The Problem1&lt;/p&gt;

&lt;p&gt;I had created a Windows 11 bootable USB using Rufus. The USB was initially configured with the MBR partition scheme.&lt;/p&gt;

&lt;p&gt;The laptop successfully detected the USB through the F12 boot menu, and Windows Setup loaded successfully.&lt;/p&gt;

&lt;p&gt;However, when I reached the "Select location to install Windows 11" screen, I encountered an installation error.&lt;/p&gt;

&lt;p&gt;Windows Setup detected the following storage devices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Disk 0: Internal SSD (approximately 238 GB).&lt;/li&gt;
&lt;li&gt;Disk 1: Windows 11 bootable USB (approximately 14.6 GB).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Although the internal SSD was detected, Windows Setup identified its main partition as Unknown and refused to install Windows 11.&lt;/p&gt;

&lt;p&gt;Understanding the Cause&lt;/p&gt;

&lt;p&gt;One possible cause of this issue is a mismatch between the disk partition scheme and the firmware boot mode.&lt;/p&gt;

&lt;p&gt;Windows systems support two common partition schemes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;MBR (Master Boot Record): An older partitioning standard commonly associated with Legacy BIOS boot mode.&lt;/li&gt;
&lt;li&gt;GPT (GUID Partition Table): The modern partitioning standard used with UEFI firmware.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a standard Windows 11 installation, GPT with UEFI is the recommended configuration.&lt;/p&gt;

&lt;p&gt;In my case, the internal SSD's partition structure was preventing Windows Setup from proceeding normally.&lt;/p&gt;

&lt;p&gt;Step 1: Access Windows Setup Command Prompt&lt;/p&gt;

&lt;p&gt;When Windows Setup displays the drive selection screen:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Press "Shift + F10" on your keyboard.&lt;/li&gt;
&lt;li&gt;Command Prompt will open.&lt;/li&gt;
&lt;li&gt;Type the following command:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;diskpart&lt;/p&gt;

&lt;p&gt;This launches the Windows DiskPart utility, which allows you to manage disks and partitions.&lt;/p&gt;

&lt;p&gt;Step 2: Identify the Internal SSD&lt;/p&gt;

&lt;p&gt;Run:&lt;/p&gt;

&lt;p&gt;list disk&lt;/p&gt;

&lt;p&gt;This displays all connected storage devices.&lt;/p&gt;

&lt;p&gt;Identify your internal SSD by checking its capacity.&lt;/p&gt;

&lt;p&gt;For my Lenovo ThinkPad X390 Yoga, the internal SSD was approximately 238 GB, while the installation USB was approximately 14.6 GB.&lt;/p&gt;

&lt;p&gt;Important: Identify the correct disk before proceeding. Selecting the wrong disk could erase your bootable USB or another storage device.&lt;/p&gt;

&lt;p&gt;Step 3: Select and Clean the Internal SSD&lt;/p&gt;

&lt;p&gt;Once you've identified the internal SSD, execute:&lt;/p&gt;

&lt;p&gt;select disk 0&lt;/p&gt;

&lt;p&gt;Replace "0" with the correct disk number if your internal SSD has a different number.&lt;/p&gt;

&lt;p&gt;Next, execute:&lt;/p&gt;

&lt;p&gt;clean&lt;/p&gt;

&lt;p&gt;This removes the existing partition information from the selected disk.&lt;/p&gt;

&lt;p&gt;Warning: The "clean" command deletes the partition structure and makes the existing data inaccessible. Back up important files before proceeding.&lt;/p&gt;

&lt;p&gt;Step 4: Convert the Disk to GPT&lt;/p&gt;

&lt;p&gt;After cleaning the disk, execute:&lt;/p&gt;

&lt;p&gt;convert gpt&lt;/p&gt;

&lt;p&gt;This converts the internal SSD to the GPT partitioning scheme.&lt;/p&gt;

&lt;p&gt;Then exit DiskPart:&lt;/p&gt;

&lt;p&gt;exit&lt;/p&gt;

&lt;p&gt;Close Command Prompt by typing:&lt;/p&gt;

&lt;p&gt;exit&lt;/p&gt;

&lt;p&gt;Step 5: Continue Windows 11 Installation&lt;/p&gt;

&lt;p&gt;Return to the Windows Setup screen.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click Refresh to reload the available storage devices.&lt;/li&gt;
&lt;li&gt;Select the unallocated space on Disk 0.&lt;/li&gt;
&lt;li&gt;Click Next.&lt;/li&gt;
&lt;li&gt;Allow Windows Setup to create the required system partitions automatically.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Windows 11 installation should now proceed.&lt;/p&gt;

&lt;p&gt;Recommended Rufus Settings for Windows 11&lt;/p&gt;

&lt;p&gt;If you're creating your installation USB from scratch, these are the recommended settings for a standard UEFI installation:&lt;/p&gt;

&lt;p&gt;Setting| Configuration&lt;br&gt;
Boot selection| Windows 11 ISO&lt;br&gt;
Partition scheme| GPT&lt;br&gt;
Target system| UEFI (non-CSM)&lt;br&gt;
File system| NTFS (where appropriate)&lt;/p&gt;

&lt;p&gt;Make sure your laptop is configured to boot using UEFI mode.&lt;/p&gt;

&lt;p&gt;Lessons Learned&lt;/p&gt;

&lt;p&gt;This troubleshooting experience reinforced a few important points:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Detecting a bootable USB doesn't necessarily mean the internal drive is ready for Windows installation.&lt;/li&gt;
&lt;li&gt;MBR and GPT partitioning schemes serve different boot configurations.&lt;/li&gt;
&lt;li&gt;DiskPart is a powerful Windows recovery and disk-management tool.&lt;/li&gt;
&lt;li&gt;Always identify your internal SSD carefully before executing destructive commands.&lt;/li&gt;
&lt;li&gt;For modern Windows 11 installations, UEFI and GPT are the recommended combination.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;The Windows 11 installation problem on my Lenovo ThinkPad X390 Yoga was resolved by cleaning the internal SSD and converting it to GPT using DiskPart.&lt;/p&gt;

&lt;p&gt;If you encounter a similar issue where Windows Setup detects your SSD but refuses to install the operating system, checking the partition structure and boot mode is a good place to start.&lt;/p&gt;

&lt;p&gt;Hopefully, this guide saves someone a few hours of troubleshooting!&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>learning</category>
      <category>microsoft</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
