<?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: Stephen Omotto</title>
    <description>The latest articles on DEV Community by Stephen Omotto (@somotto).</description>
    <link>https://dev.to/somotto</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2092670%2F3ded8fd8-7ccf-4bf3-b3cb-065abfdd870a.jpg</url>
      <title>DEV Community: Stephen Omotto</title>
      <link>https://dev.to/somotto</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/somotto"/>
    <language>en</language>
    <item>
      <title>Learning AWS Cloud Computing Practitioner - Cloud Concepts Overview</title>
      <dc:creator>Stephen Omotto</dc:creator>
      <pubDate>Thu, 03 Jul 2025 21:18:47 +0000</pubDate>
      <link>https://dev.to/somotto/learning-aws-cloud-computing-practitioner-cloud-concepts-overview-157g</link>
      <guid>https://dev.to/somotto/learning-aws-cloud-computing-practitioner-cloud-concepts-overview-157g</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction to Cloud Computing&lt;/strong&gt;&lt;br&gt;
This is basically the on-demand delivery of computing power, database, storage, applications and other IT resources via the internet with pay-as-you-go pricing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud Service models&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Infrastructure as a services(IaaS)&lt;/li&gt;
&lt;li&gt;Platform as a Service(PaaS)&lt;/li&gt;
&lt;li&gt;Software as a Service(SaaS)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;IaaS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is the basic building block for the cloud information technology&lt;/li&gt;
&lt;li&gt;Provides access to networking features,computers whether its virtual or dedicated&lt;/li&gt;
&lt;li&gt;Provide storage space&lt;/li&gt;
&lt;li&gt;Provides highest level of flexibility and control over IT resources&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;PaaS&lt;/strong&gt;&lt;br&gt;
It removes the need to manage the underlying infrastructure(hardware and OS). It does it through automation and allows you to focus on the deployment and management of your applications as opposed to the provisioning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SaaS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provides a complete product that is run and managed by the service provider&lt;/li&gt;
&lt;li&gt;Refers to end-user applications&lt;/li&gt;
&lt;li&gt;You don't have to think about how the software is maintained or how your infrastructure is managed.You have less control over IT resources.&lt;/li&gt;
&lt;li&gt;You only need to use that particular piece of software.
Example of SaaS is web-base email application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cloud Computing deployment models&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cloud&lt;/li&gt;
&lt;li&gt;Hybrid&lt;/li&gt;
&lt;li&gt;On-premises&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advantage of Cloud Computing&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;1. Trade capital expense for variable expense&lt;/strong&gt;&lt;br&gt;
Instead of buying expensive servers upfront, you only pay for the computing resources you actually use, like paying for electricity based on consumption rather than buying a power plant.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Benefits from massive economies of scale&lt;/strong&gt;&lt;br&gt;
Because of aggregate usage from all customers, AWS can achieve higher economies of scale and pass savings onto customers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Stop guessing capacity&lt;/strong&gt;&lt;br&gt;
You don't have to guess how much server power you'll need - the cloud automatically adjusts up or down based on actual demand, so you never run out of resources or waste money on unused capacity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Increase speed and agility&lt;/strong&gt;&lt;br&gt;
You can launch new applications and services in minutes instead of weeks, since cloud resources are instantly available without waiting for hardware procurement and setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Stop spending money on running and maintaining data centers&lt;/strong&gt;&lt;br&gt;
You eliminate the costs of building, powering, cooling, and staffing your own data centers by using someone else's infrastructure instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Go global in minutes&lt;/strong&gt;&lt;br&gt;
You can deploy your application in multiple AWS regions around the world with just a few clicks. As a result, you can provide lower lower latency and better experience for your customer simply and at a minimal cost.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introduction to AWS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A web service is any piece of software that makes itself available over the internet and uses a standardized format- such as Extensible Markup Language(XML) or Javascript Object Notation(JSON)- for the request and response of an application programming interface(API) interaction.
AWS is a secure cloud platform that offers a broad set of global cloud-based products.&lt;/li&gt;
&lt;li&gt;AWS provides you with on demand access to compute, storage, network,database and other IT resources and management tools.&lt;/li&gt;
&lt;li&gt;It offers flexibility - Its environment can be reconfigured, updated on demand, scaled up or down automatically to meet usage patterns and optimize spending.
Its services becomes an operational expense instead of a capital expense. Its services also works as a building blocks.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Categories of AWS services&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Analytics&lt;/li&gt;
&lt;li&gt;Application
Integration&lt;/li&gt;
&lt;li&gt;AR and VR&lt;/li&gt;
&lt;li&gt;Blockchain&lt;/li&gt;
&lt;li&gt;Business
Applications&lt;/li&gt;
&lt;li&gt;Compute&lt;/li&gt;
&lt;li&gt;Cost
Management&lt;/li&gt;
&lt;li&gt;Customer
Engagement&lt;/li&gt;
&lt;li&gt;Database&lt;/li&gt;
&lt;li&gt;Developer Tools&lt;/li&gt;
&lt;li&gt;End User
Computing&lt;/li&gt;
&lt;li&gt;Game Tech&lt;/li&gt;
&lt;li&gt;Internet
of Things&lt;/li&gt;
&lt;li&gt;Machine
Learning&lt;/li&gt;
&lt;li&gt;Management and
Governance&lt;/li&gt;
&lt;li&gt;Media Services&lt;/li&gt;
&lt;li&gt;Migration and
Transfer&lt;/li&gt;
&lt;li&gt;Mobile&lt;/li&gt;
&lt;li&gt;Networking and
Content Delivery&lt;/li&gt;
&lt;li&gt;Robotics&lt;/li&gt;
&lt;li&gt;Satellite&lt;/li&gt;
&lt;li&gt;Security, Identity, and
Compliance&lt;/li&gt;
&lt;li&gt;Storage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Choosing a service&lt;/strong&gt; will depend on your business goals and technology requirements.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Services that you'll cover at CCP level&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Compute services&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon EC2&lt;/li&gt;
&lt;li&gt;AWS Lambda&lt;/li&gt;
&lt;li&gt;AWS Elastic Beanstalk&lt;/li&gt;
&lt;li&gt;Amazon EC2 Auto Scaling&lt;/li&gt;
&lt;li&gt;Amazon ECS&lt;/li&gt;
&lt;li&gt;Amazon EKS&lt;/li&gt;
&lt;li&gt;Amazon ECR&lt;/li&gt;
&lt;li&gt;AWS Fargate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Storage services&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon S3&lt;/li&gt;
&lt;li&gt;Amazon S3 Glacier&lt;/li&gt;
&lt;li&gt;Amazon EFS&lt;/li&gt;
&lt;li&gt;Amazon EBS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Security, Identity, and&lt;br&gt;
Compliance services&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS IAM&lt;/li&gt;
&lt;li&gt;Amazon Cognito&lt;/li&gt;
&lt;li&gt;AWS Shield&lt;/li&gt;
&lt;li&gt;AWS Artifact&lt;/li&gt;
&lt;li&gt;AWS KMS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Networking and Content&lt;br&gt;
Delivery services&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon VPC&lt;/li&gt;
&lt;li&gt;Amazon Route 53&lt;/li&gt;
&lt;li&gt;Amazon CloudFront&lt;/li&gt;
&lt;li&gt;Elastic Load Balancing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Database services&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon RDS&lt;/li&gt;
&lt;li&gt;Amazon DynamoDB&lt;/li&gt;
&lt;li&gt;Amazon Redshift&lt;/li&gt;
&lt;li&gt;Amazon Aurora&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Management and&lt;br&gt;
Governance services&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Trusted Advisor&lt;/li&gt;
&lt;li&gt;AWS CloudWatch&lt;/li&gt;
&lt;li&gt;AWS CloudTrail&lt;/li&gt;
&lt;li&gt;AWS Well-Architected Tool&lt;/li&gt;
&lt;li&gt;AWS Auto Scaling&lt;/li&gt;
&lt;li&gt;AWS Command Line Interface&lt;/li&gt;
&lt;li&gt;AWS Config&lt;/li&gt;
&lt;li&gt;AWS Management Console&lt;/li&gt;
&lt;li&gt;AWS Organizations&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AWS Cost Management&lt;br&gt;
services&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS Cost &amp;amp; Usage
Report&lt;/li&gt;
&lt;li&gt;AWS Budgets&lt;/li&gt;
&lt;li&gt;AWS Cost Explorer&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Three ways to interact with AWS Ecosystem&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Aws management console - Easy-to-use graphical interface&lt;/li&gt;
&lt;li&gt;Command line interface(AWS CLI) - Access services by discrete commands or scripts&lt;/li&gt;
&lt;li&gt;Software Development Kits(SDKs) - Access services directly from your code such as java, python e.t.c&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Moving to the AWS Cloud - The AWS Cloud Adoption Framework(AWS CAF)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AWS CAF provides guidance and best practices to help organizations build a comprehensive approach to cloud computing across the organization and throughout the IT lifecycle to accelerate successful cloud adoption.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;It is organized into six perspectives, namely:-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Business&lt;/li&gt;
&lt;li&gt;People&lt;/li&gt;
&lt;li&gt;Governance&lt;/li&gt;
&lt;li&gt;Platform&lt;/li&gt;
&lt;li&gt;Security&lt;/li&gt;
&lt;li&gt;Operations&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;These perspectives consist of sets of capabilities, ie,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Business, People and Governance focus on business capabilities&lt;/li&gt;
&lt;li&gt;Platform, Security and Operations focus on technical capabilities&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

</description>
      <category>cloudcomputing</category>
      <category>aws</category>
      <category>programming</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Understanding Java's WORA: Write Once, Run Anywhere</title>
      <dc:creator>Stephen Omotto</dc:creator>
      <pubDate>Thu, 05 Jun 2025 07:30:30 +0000</pubDate>
      <link>https://dev.to/somotto/understanding-javas-wora-write-once-run-anywhere-78a</link>
      <guid>https://dev.to/somotto/understanding-javas-wora-write-once-run-anywhere-78a</guid>
      <description>&lt;h2&gt;
  
  
  A Deep Dive into Platform Independence and the Java Execution Model
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Java's "Write Once, Run Anywhere" (WORA) vision transformed my understanding of software portability. The principle behind the theory is that Java code written in one platform will execute seamlessly in another platform without modification or recompilation. But, How is this magic achieved?&lt;/p&gt;

&lt;h3&gt;
  
  
  The Traditional Programming Challenge
&lt;/h3&gt;

&lt;p&gt;Before Java, developers had a severe issue: programs developed for an operating system could not be run on another with significant modifications. A Windows-executable program would not be run under Linux, and a Linux-executable program would not be run under Windows. This was because:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Direct Hardware Interaction:&lt;/strong&gt; Programs communicated directly with the OS&lt;br&gt;
&lt;strong&gt;Platform-Specific APIs:&lt;/strong&gt; Every operating system used specific system calls and libraries&lt;br&gt;
&lt;strong&gt;Architecture Dependencies:&lt;/strong&gt; Programs were compiled into processor-native machine code&lt;br&gt;
&lt;strong&gt;Binary Incompatibility:&lt;/strong&gt; Executable programs for each platform&lt;/p&gt;

&lt;p&gt;This would mean having several codebases per platform, which would contribute towards development expense and complexity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Java's Revolutionary Solution: The Abstraction Layer&lt;/strong&gt;&lt;br&gt;
Java solved the problem by introducing an abstraction layer between the application and the operating system. Instead of compiling into native machine code, Java introduces an intermediate step that generates platform-independent bytecode.&lt;/p&gt;
&lt;h3&gt;
  
  
  The Java Execution Stack: From Hardware to Application
&lt;/h3&gt;

&lt;p&gt;How Java works across the entire computing stack:&lt;br&gt;
&lt;strong&gt;Layer 1: Hardware Foundation&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;┌─────────────────────────────────────┐
│           HARDWARE LAYER            │
│  CPU &lt;span class="o"&gt;(&lt;/span&gt;x86, ARM, SPARC, PowerPC&lt;span class="o"&gt;)&lt;/span&gt;     │
│  Memory &lt;span class="o"&gt;(&lt;/span&gt;RAM, Cache&lt;span class="o"&gt;)&lt;/span&gt;                │
│  Storage &lt;span class="o"&gt;(&lt;/span&gt;HDD, SSD&lt;span class="o"&gt;)&lt;/span&gt;                 │
│  I/O Devices                        │
└─────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Layer 2: Operating System&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;┌─────────────────────────────────────┐
│         OPERATING SYSTEM            │
│  Windows | Linux | macOS | Solaris │
│                                     │
│  • Process Management               │
│  • Memory Management                │
│  • File System                      │
│  • Device Drivers                   │
│  • System Calls                     │
└─────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Different operating systems provide different interfaces and system calls. Traditional languages must adapt to these differences, but Java applications remain isolated from these variations.&lt;br&gt;
&lt;strong&gt;Layer 3: Java Runtime Environment (JRE)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;┌─────────────────────────────────────┐
│      JAVA RUNTIME ENVIRONMENT       │
│                                     │
│  ┌─────────────────────────────┐    │
│  │     JAVA VIRTUAL MACHINE    │    │
│  │                             │    │
│  │  ┌─────────────────────┐    │    │
│  │  │   Execution Engine  │    │    │
│  │  │  • Interpreter      │    │    │
│  │  │  • JIT Compiler     │    │    │
│  │  └─────────────────────┘    │    │
│  │                             │    │
│  │  ┌─────────────────────┐    │    │
│  │  │   Memory Areas      │    │    │
│  │  │  • Heap             │    │    │
│  │  │  • Method Area      │    │    │
│  │  │  • Stack            │    │    │
│  │  │  • PC Registers     │    │    │
│  │  └─────────────────────┘    │    │
│  │                             │    │
│  │  ┌─────────────────────┐    │    │
│  │  │   Class Loader      │    │    │
│  │  └─────────────────────┘    │    │
│  └─────────────────────────────┘    │
│                                     │
│  ┌─────────────────────────────┐    │
│  │      JAVA API LIBRARIES     │    │
│  │  • java.lang.&lt;span class="k"&gt;*&lt;/span&gt;              │    │
│  │  • java.util.&lt;span class="k"&gt;*&lt;/span&gt;              │    │
│  │  • java.io.&lt;span class="k"&gt;*&lt;/span&gt;                │    │
│  │  • javax.&lt;span class="k"&gt;*&lt;/span&gt;                  │    │
│  └─────────────────────────────┘    │
└─────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The JRE is the crucial abstraction layer that enables WORA. It consists of:&lt;br&gt;
Java Virtual Machine (JVM): The core runtime engine that executes Java bytecode&lt;br&gt;
Java API Libraries: Standard libraries providing common functionality across all platforms&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 4: Java Application&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;┌─────────────────────────────────────┐
│        JAVA APPLICATION             │
│                                     │
│  ┌─────────────────────────────┐    │
│  │      BYTECODE FILES         │    │
│  │     &lt;span class="o"&gt;(&lt;/span&gt;.class files&lt;span class="o"&gt;)&lt;/span&gt;          │    │
│  │                             │    │
│  │  MyApp.class                │    │
│  │  Utils.class                │    │
│  │  DataProcessor.class        │    │
│  └─────────────────────────────┘    │
└─────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Java Compilation and Execution Process
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Source Code Creation&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;// HelloWorld.java
public class HelloWorld &lt;span class="o"&gt;{&lt;/span&gt;
    public static void main&lt;span class="o"&gt;(&lt;/span&gt;String[] args&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        System.out.println&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Hello, World!"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Developers write Java source code in .java files using human-readable Java syntax.&lt;br&gt;
&lt;strong&gt;Step 2: Compilation to Bytecode&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;javac HelloWorld.java
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Java compiler (javac) translates source code into bytecode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Source Code &lt;span class="o"&gt;(&lt;/span&gt;.java&lt;span class="o"&gt;)&lt;/span&gt;  →  Java Compiler &lt;span class="o"&gt;(&lt;/span&gt;javac&lt;span class="o"&gt;)&lt;/span&gt;  →  Bytecode &lt;span class="o"&gt;(&lt;/span&gt;.class&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What is Bytecode?&lt;/strong&gt; Bytecode is an intermediate representation that's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Platform-independent: Not tied to any specific hardware or OS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compact:&lt;/strong&gt; More efficient than source code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Secure:&lt;/strong&gt; Can be verified before execution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimizable:&lt;/strong&gt; Can be further optimized at runtime&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3: JVM Execution Process&lt;/strong&gt;&lt;br&gt;
When you run java HelloWorld, the following happens:&lt;br&gt;
&lt;strong&gt;3.1 Class Loading&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   .class file   │ → │   Class Loader   │ → │   Method Area   │
│   &lt;span class="o"&gt;(&lt;/span&gt;Bytecode&lt;span class="o"&gt;)&lt;/span&gt;    │    │                  │    │   &lt;span class="o"&gt;(&lt;/span&gt;Memory&lt;span class="o"&gt;)&lt;/span&gt;      │
└─────────────────┘    └──────────────────┘    └─────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Class Loader subsystem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Loading:&lt;/strong&gt; Reads .class files and creates binary data in memory&lt;br&gt;
&lt;strong&gt;2. Linking:&lt;/strong&gt; Verifies bytecode integrity and resolves symbolic references&lt;br&gt;
&lt;strong&gt;3. Initialization:&lt;/strong&gt; Executes static initializers and initializes static variables&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.2 Bytecode Verification&lt;/strong&gt;&lt;br&gt;
The JVM verifies bytecode to ensure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Type safety&lt;/li&gt;
&lt;li&gt;No stack overflow/underflow&lt;/li&gt;
&lt;li&gt;Valid bytecode instructions&lt;/li&gt;
&lt;li&gt;Proper access control&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3.3 Execution Engine Processing&lt;/strong&gt;&lt;br&gt;
The Execution Engine converts bytecode to native machine code through two methods:&lt;br&gt;
&lt;strong&gt;Interpretation:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Bytecode → Interpreter → Native Machine Code → Execution
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Reads bytecode line by line&lt;/li&gt;
&lt;li&gt;Converts each instruction to native code&lt;/li&gt;
&lt;li&gt;Slower but uses less memory
&lt;strong&gt;Just-In-Time (JIT) Compilation:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Bytecode → JIT Compiler → Optimized Native Code → Execution
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Compiles frequently used bytecode to native code&lt;/li&gt;
&lt;li&gt;Stores compiled code for reuse&lt;/li&gt;
&lt;li&gt;Faster execution after initial compilation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Abstraction Magic&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;┌─────────────────────────────────────────────┐
│                APPLICATION                  │
│           &lt;span class="o"&gt;(&lt;/span&gt;Same Everywhere&lt;span class="o"&gt;)&lt;/span&gt;                 │
├─────────────────────────────────────────────┤
│                 BYTECODE                    │
│           &lt;span class="o"&gt;(&lt;/span&gt;Same Everywhere&lt;span class="o"&gt;)&lt;/span&gt;                 │
├─────────────────────────────────────────────┤
│                   JVM                       │
│         &lt;span class="o"&gt;(&lt;/span&gt;Platform Specific&lt;span class="o"&gt;)&lt;/span&gt;                 │
├─────────────────────────────────────────────┤
│              OPERATING SYSTEM               │ 
│         &lt;span class="o"&gt;(&lt;/span&gt;Platform Specific&lt;span class="o"&gt;)&lt;/span&gt;                 │
├─────────────────────────────────────────────┤
│                 HARDWARE                    │
│         &lt;span class="o"&gt;(&lt;/span&gt;Platform Specific&lt;span class="o"&gt;)&lt;/span&gt;                 │
└─────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Memory Management in the JVM&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Heap Memory Structure&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;┌─────────────────────────────────────────┐
│                 HEAP                    │
│                                         │
│  ┌─────────────┐  ┌─────────────────┐   │
│  │   Young     │  │      Old        │   │
│  │ Generation  │  │   Generation    │   │
│  │             │  │                 │   │
│  │ ┌─────────┐ │  │                 │   │
│  │ │  Eden   │ │  │                 │   │
│  │ └─────────┘ │  │                 │   │
│  │ ┌─────────┐ │  │                 │   │
│  │ │Survivor │ │  │                 │   │
│  │ │   S0    │ │  │                 │   │
│  │ └─────────┘ │  │                 │   │
│  │ ┌─────────┐ │  │                 │   │
│  │ │Survivor │ │  │                 │   │
│  │ │   S1    │ │  │                 │   │
│  │ └─────────┘ │  │                 │   │
│  └─────────────┘  └─────────────────┘   │
└─────────────────────────────────────────┘

┌─────────────────────────────────────────┐
│              METHOD AREA                │
│  • Class metadata                       │
│  • Method information                   │
│  • Constant pool                        │
│  • Static variables                     │
└─────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Performance Implications of WORA&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Initial Execution Overhead&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Traditional Compiled Language:
Source → Native Code → Execute &lt;span class="o"&gt;(&lt;/span&gt;Fast&lt;span class="o"&gt;)&lt;/span&gt;

Java:
Source → Bytecode → JVM → Native Code → Execute &lt;span class="o"&gt;(&lt;/span&gt;Initial Overhead&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Runtime Performance Benefits&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;JIT Optimization:&lt;/strong&gt; Hot code paths get optimized beyond static compilation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Garbage Collection:&lt;/strong&gt; Automatic memory management&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime Profiling:&lt;/strong&gt; JVM learns application behavior and optimizes accordingly&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Real-World WORA Examples&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Enterprise Application Deployment&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Development Environment &lt;span class="o"&gt;(&lt;/span&gt;Windows&lt;span class="o"&gt;)&lt;/span&gt;:
MyApp.java → MyApp.class

Production Environment &lt;span class="o"&gt;(&lt;/span&gt;Linux&lt;span class="o"&gt;)&lt;/span&gt;:
Same MyApp.class → Runs without modification
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Microservices Architecture&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Container 1 &lt;span class="o"&gt;(&lt;/span&gt;Alpine Linux&lt;span class="o"&gt;)&lt;/span&gt;: Java App A
Container 2 &lt;span class="o"&gt;(&lt;/span&gt;Ubuntu&lt;span class="o"&gt;)&lt;/span&gt;: Java App B  
Container 3 &lt;span class="o"&gt;(&lt;/span&gt;CentOS&lt;span class="o"&gt;)&lt;/span&gt;: Java App C
All running identical JAR files
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Limitations and Considerations&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;When WORA Might Not Apply&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Native Code Integration:&lt;/strong&gt; JNI calls to platform-specific libraries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;File System Differences:&lt;/strong&gt; Path separators, case sensitivity&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Environment Variables:&lt;/strong&gt; Platform-specific configurations&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hardware-Specific Features:&lt;/strong&gt; Direct hardware access requirements&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best Practices for True WORA&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use Java Standard APIs:&lt;/strong&gt; Avoid platform-specific libraries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Abstract File Operations:&lt;/strong&gt; Use File.separator instead of hardcoded paths&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Configuration Management:&lt;/strong&gt; Externalize environment-specific settings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing Across Platforms:&lt;/strong&gt; Verify behavior on target platforms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Java's WORA  principle is a fundamental shift in software development philosophy. Through the JVM as an abstraction layer, Java provides for the ability to write once and run anywhere, reducing development and maintenance costs by a tremendous amount.&lt;br&gt;
Magic is enabled by the careful orchestration of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Compilation to bytecode&lt;/strong&gt; instead of machine-native code&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;JVM as a platform-specific interpreter&lt;/strong&gt; that translates bytecode to native instructions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Standardized APIs&lt;/strong&gt; that have uniform interfaces between platforms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Runtime optimization&lt;/strong&gt; that can compete with conventional compiled language performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Understanding this architecture is crucial for Java programmers, as it not only explains how Java works, but also why certain design decisions were taken and how to really write portable programs.&lt;/p&gt;

&lt;p&gt;The journey from source code to run time via hardware, operating systems, the JRE, bytecode, and ultimately the running program demonstrates the elegance of the engineering that makes Java's "Write Once, Run Anywhere" vision a reality in software today.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>java</category>
      <category>programming</category>
      <category>wora</category>
    </item>
    <item>
      <title>Unlocking Agile: Beyond the framework</title>
      <dc:creator>Stephen Omotto</dc:creator>
      <pubDate>Fri, 04 Oct 2024 07:01:32 +0000</pubDate>
      <link>https://dev.to/somotto/unlocking-agile-beyond-the-framework-59e5</link>
      <guid>https://dev.to/somotto/unlocking-agile-beyond-the-framework-59e5</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;AGILE&lt;/strong&gt;&lt;/em&gt; is a collection of techniques and approaches that improves decision-making, productivity, and thinking skills within your team.&lt;br&gt;
All aspects of traditional software engineering, such as project management, software design and architecture, and process optimization, are covered by these techniques. To make them as simple to implement as feasible, they are composed of procedures that have been streamlined and optimized.&lt;/p&gt;

&lt;p&gt;Because an appropriate mindset can significantly impact how well a team applies the techniques, &lt;strong&gt;&lt;em&gt;AGILE&lt;/em&gt;&lt;/strong&gt; is also a mindset. This mindset facilitates information sharing among team members so that important project choices can be made collectively rather than by a manager acting as the decision-maker in isolation. Embracing an agile mentality involves including the entire team in planning, design, and process optimization. Every member of an agile team participates in the application of the techniques and shares the same information as the group as a whole.&lt;/p&gt;

&lt;p&gt;For many teams that have not experienced as much success, agile has turned out to be very different from what it promised, and a big part of that variance is frequently the attitude the team brings to every project. Most software development businesses have dabbled in agile, and while many of them have found success, some teams have produced less-than-ideal outcomes. They’ve made some progress in how they run their projects—enough to make the effort to embrace agile worth it—but they haven’t seen the major changes that they feel agile promised them. This is the main idea behind the mentality shift: "going agile" refers to assisting the team in developing a productive mindset.&lt;br&gt;
However, what exactly does "mindset shift" mean? Working on a software team entails planning, designing, developing, and releasing software on a daily basis. What connection does "mindset" have to that? It turns out that how you and your teammates approach them affects a lot of the procedures you employ in your day-to-day work.&lt;br&gt;
Here's an illustration. The &lt;strong&gt;&lt;em&gt;daily standup&lt;/em&gt;&lt;/strong&gt;, a gathering when team members discuss their goals and issues, is one of the most popular agile methods used by teams. We keep the meeting brief by having everyone stand the entire time. Adding a daily standup to a project has shown to be quite successful for numerous teams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Understanding Agile values(Agile manifesto)&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Individual and interactions over processes and tools&lt;/li&gt;
&lt;li&gt;Working software over comprehensive documentation&lt;/li&gt;
&lt;li&gt;Customer collaboration over contract negotiation&lt;/li&gt;
&lt;li&gt;Responding to change over following a plan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;KEY POINTS ON AGILE VALUES&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;• The Agile Manifesto contains common values and ideas that lead to effective teams.&lt;br&gt;
• “Individuals and interactions over processes and tools” means the team should focus on the people on the team and how they communicate first, and the tools and practices that they use second.&lt;br&gt;
• “Working software over comprehensive documentation” means that delivering software that does what users need is more important than delivering a specification that describes it.&lt;br&gt;
• Working software means software that delivers value to the company.&lt;br&gt;
• “Customer collaboration over contract negotiation” means treating everyone like they’re on the same team.&lt;br&gt;
• Many effective agile teams treat the product owner as a member of the project team to collaborate with, rather than a client or customer to negotiate with.&lt;br&gt;
• “Responding to change over following a plan” means recognizing that plans become inaccurate, and that it’s more important to deliver the software than it is to work the plan.&lt;br&gt;
• A task board is an agile planning tool in which user stories are attached to a board and categorized into columns based on their status in the current project or iteration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The 12 Principles of Agile Software&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Our highest priority is to satisfy the customer through early and continuous delivery of valuable software- The customer is always right.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage. It means:&lt;br&gt;
&lt;strong&gt;a.&lt;/strong&gt; Nobody gets in "trouble" when there's a change.&lt;br&gt;
&lt;strong&gt;b.&lt;/strong&gt; We're all in this together.Everybody is collaborating.&lt;br&gt;
&lt;strong&gt;c.&lt;/strong&gt; We don't sit on change until it's too late.&lt;br&gt;
&lt;strong&gt;d.&lt;/strong&gt; We stop thinking of change as mistakes.&lt;br&gt;
&lt;strong&gt;e.&lt;/strong&gt; We learn from the changes. This is the most effective way for a team to grow and get better at building software together.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. By using time-boxed iteration to deliver working software frequently, agile teams constantly adjust the project so that it delivers the most value to the customer&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. When people on the team don't communicate on a face to face basis, they may agree on the broad strokes, but end up working toward different goals. Comprehensive documentation can make this worse by making it easy to introduce ambiguity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Collaboration between business analysts and developers on a daily basis throughout the project yields greater efficiency. This is due to the fact that business professionals must wait until the very end of the project to review and provide input on the team's performance, and finalizing modifications at this point in the project is far more costly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Working software is the primary measure of progress.It is better than progress reports for giving everyone the latest update on the project’s status, because it’s the most effective way for the team to communicate what they’ve accomplished. This is one reason why agile teams use iterative development. By delivering working software at the end of each iteration, and by doing a real product demonstration that shows everyone exactly what the team did, they keep everyone up to date on the progress of the software in a way that is almost impossible to misread.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continuous attention to technical excellence and good design enhances agility.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Simplicity—the art of maximizing the amount of work not done—is essential.Agile teams keep their solutions as simple as possible by avoiding building unnecessary features or overly complex software.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The best architectures, requirements, and designs emerge from self-organizing teams.Self-organizing teams share responsibility for all aspects of the project, from conceiving the product to project management to design and implementation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.By taking the time to look back and talk about lessons they learned after each iteration and also at the end of the project, agile teams constantly get better at building software.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;POPULAR AGILE METHODOLOGIES&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just a brief definitions of them:&lt;br&gt;
Scrum,extreme programing(XP), Lean and Kanban&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;1. Scrum and Self-organizing teams&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Scrum is a potent framework that emphasizes incremental progress, continuous improvement, and cooperation in Agile project management. Scrum assists organizations in navigating the complexity and uncertainty of product development by emphasizing the delivery of value in small increments and cultivating a strong team dynamic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;2. Extreme programing(XP)&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
A strong Agile methodology, Extreme Programming places a strong emphasis on close client and developer cooperation as well as technical quality. Through the use of techniques like pair programming, TDD, and continuous integration, XP supports teams in producing high-caliber software that satisfies user needs in a setting that is changing quickly. With its emphasis on feedback, simplicity, and communication, it works especially well for projects whose requirements change often.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;3. Lean&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Within Agile, the Lean methodology emphasizes efficiency, continuous improvement, and customer satisfaction while delivering maximum value with little waste. Teams can improve their ability to collaborate, respond more quickly to changing needs, and streamline their operations by implementing Lean concepts and practices. This method works well with the Agile principles of flexibility and customer-focused development, which makes it a potent tactic in contemporary software development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;4. Kanban&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Effective Agile methodology Kanban places a strong emphasis on efficiency, visual management, and ongoing development. Through the implementation of Kanban boards and concepts, teams may improve workflow management, foster collaboration, and increase customer value delivery. Because of its adaptability and emphasis on flow, it works especially effectively in settings where priorities and requirements shift regularly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm1aotvbeop7e1vufv13c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm1aotvbeop7e1vufv13c.png" alt="A pie chart showing 40% responded " width="800" height="584"&gt;&lt;/a&gt;&lt;br&gt;
The figure above shows how Scrum, XP, and Lean all have the agile values at their core, and share some values, ideas, and practices with each other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;The Agile Software Development Life Cycle&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Agile SDLC is the structured series of stages that a product goes through as it moves from beginning to end. It contains six phases: &lt;br&gt;
&lt;strong&gt;&lt;em&gt;1. Concept:&lt;/em&gt;&lt;/strong&gt; Define the project scope and priorities&lt;br&gt;
&lt;strong&gt;&lt;em&gt;2. Inception:&lt;/em&gt;&lt;/strong&gt; Build the Agile team according to project requirements &lt;br&gt;
&lt;strong&gt;&lt;em&gt;3. Iteration:&lt;/em&gt;&lt;/strong&gt; Create code factoring in customer feedback &lt;br&gt;
&lt;strong&gt;&lt;em&gt;4. Release:&lt;/em&gt;&lt;/strong&gt; Test the code and troubleshoot any issues. When all of this is complete, the product’s final iteration can then be released into production.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;5. Maintenance:&lt;/em&gt;&lt;/strong&gt; Provide ongoing tech support to ensure the product remains serviceable&lt;br&gt;
&lt;strong&gt;&lt;em&gt;6. Retirement:&lt;/em&gt;&lt;/strong&gt; The end of the product lifespan, which often coincides with the beginning of a new one. The product will enter this phase if it is being replaced with new software, or the system itself has become obsolete or incompatible with the organization over time.The software development team will first notify users that the software is being retired. If there is a replacement, the users will be migrated to the new system. &lt;/p&gt;

&lt;p&gt;Depending on the project management approach a team chooses, the Agile life cycle will differ slightly. Scrum teams, for instance, operate in brief intervals called sprints, which are comparable to iterations. Additionally, they have distinctly defined roles—like Scrum master. Kanban teams, on the other hand, operate more like continuous flows without roles that are necessary. Extreme Programming is another example, where teams prioritize engineering techniques and work in shorter iterations. However, the goal of all software development teams is the same: to deliver working software to users on time.&lt;/p&gt;

</description>
      <category>go</category>
      <category>javascript</category>
      <category>github</category>
      <category>agile</category>
    </item>
  </channel>
</rss>
