<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Frank Oge</title>
    <description>The latest articles on Forem by Frank Oge (@frankdotdev).</description>
    <link>https://forem.com/frankdotdev</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%2F3672503%2Fe5a9ff31-3ece-4a9b-8460-23ee3ccdd95a.jpg</url>
      <title>Forem: Frank Oge</title>
      <link>https://forem.com/frankdotdev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/frankdotdev"/>
    <language>en</language>
    <item>
      <title>The 2026 Playbook: How to Optimize Your LinkedIn to Attract US Tech Recruiters</title>
      <dc:creator>Frank Oge</dc:creator>
      <pubDate>Mon, 02 Mar 2026 21:14:20 +0000</pubDate>
      <link>https://forem.com/frankdotdev/the-2026-playbook-how-to-optimize-your-linkedin-to-attract-us-tech-recruiters-2k02</link>
      <guid>https://forem.com/frankdotdev/the-2026-playbook-how-to-optimize-your-linkedin-to-attract-us-tech-recruiters-2k02</guid>
      <description>&lt;p&gt;You have a perfect GitHub graph. You have mastered React, Node.js, and Python. You build side projects every weekend. Yet, your LinkedIn inbox is completely empty, while other developers are landing remote US jobs paying $80,000+ a year.&lt;br&gt;
​Why? Because US tech recruiters do not look at your GitHub first. They look at your LinkedIn.&lt;br&gt;
​If your profile looks like a generic list of programming languages, you will be ignored. Recruiters search LinkedIn using specific keywords, filters, and risk-assessment metrics. If you want to attract high-paying foreign roles, you need to treat your profile like an SEO-optimized landing page.&lt;br&gt;
​Here is exactly how to optimize your LinkedIn profile to make US recruiters come to you.&lt;br&gt;
​1. The Headline: Your Value Proposition&lt;br&gt;
​Your headline is the most important real estate on your profile. It is the only thing a recruiter sees in the search results alongside your photo.&lt;br&gt;
​Stop using headlines like:&lt;br&gt;
​"Software Developer" (Too broad)&lt;br&gt;
​"Actively looking for roles" (Looks desperate, wastes space)&lt;br&gt;
​"HTML | CSS | JS | React" (Looks like a junior bootcamp grad)&lt;br&gt;
​The Fix: Use the "Title + Niche + Value" formula.&lt;br&gt;
​"Senior Frontend Engineer (React/Next.js) | Building High-Performance SaaS Interfaces | Remote (EST Overlap)"&lt;br&gt;
​2. Address the "Remote Risk" Instantly&lt;br&gt;
​When a US recruiter looks at a profile based in Nigeria or elsewhere in Africa, their immediate internal questions are: "Will timezones be an issue? Can they communicate well asynchronously?"&lt;br&gt;
​You must answer these questions before they even ask.&lt;br&gt;
​Location Strategy: If you are open to global remote work, state your timezone overlaps clearly in your "About" section.&lt;br&gt;
​Example: "Fully equipped for remote work with high-speed redundancy. Comfortable working with async communication and overlapping with EST/PST business hours."&lt;br&gt;
​3. The Experience Section: Metrics Over Duties&lt;br&gt;
​Nobody cares that your duty was to "write code for the backend." That is expected. Recruiters (and Engineering Managers) want to know what happened because you wrote that code.&lt;br&gt;
​Transform your bullet points from tasks to business outcomes:&lt;br&gt;
The Amateur Developer (Tasks) The Senior Engineer (Impact)&lt;br&gt;
Built a new payment gateway. Integrated Stripe API, reducing checkout friction and increasing conversion by 15%.&lt;br&gt;
Fixed database bugs. Optimized PostgreSQL queries, reducing API response time from 2s to 300ms.&lt;br&gt;
Managed the frontend team. Led&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The "About" Section: Speak to the Business
​Do not start your summary with "Ever since I was a child, I loved computers..." Recruiters spend an average of 6 seconds scanning your profile. Give them the facts.
​Format your "About" section like this:
​Who you are: "I am a Backend Engineer with 5 years of experience scaling Node.js/Python applications."
​What you specialize in: "I specialize in system architecture, API design, and cloud deployments (AWS/Vercel)."
​Your current goal: "Currently looking for a remote role with a forward-thinking product team."
​Conclusion
​Recruiters are actively searching for you. But if you hide behind poor formatting, vague headlines, and a lack of business context, they will scroll right past you.
​Optimize your profile for search, prove your communication skills, and highlight your business impact. The DMs will follow.
​Hi, I'm Frank Oge. I build high-performance software and write about the tech that powers it. If you enjoyed this, check out more of my work at frankoge.com&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>The Developer’s ROI: Why Your Chair and Keyboard Matter More Than Your Tech Stack</title>
      <dc:creator>Frank Oge</dc:creator>
      <pubDate>Sun, 01 Mar 2026 22:51:50 +0000</pubDate>
      <link>https://forem.com/frankdotdev/the-developers-roi-why-your-chair-and-keyboard-matter-more-than-your-tech-stack-47j2</link>
      <guid>https://forem.com/frankdotdev/the-developers-roi-why-your-chair-and-keyboard-matter-more-than-your-tech-stack-47j2</guid>
      <description>&lt;p&gt;Developers will happily spend $3,000 on a maxed-out MacBook Pro with an M-series chip. They will spend weeks debating the performance differences between Rust and Go.&lt;br&gt;
​But then, they will sit on a $40 plastic dining chair and type on a flat, mushy laptop keyboard for 10 hours a day.&lt;br&gt;
​This is the ultimate paradox of the modern software engineer. We obsess over the performance of our machines, while completely ignoring the performance bottlenecks of our own bodies.&lt;br&gt;
​If you want a long, highly profitable career in tech, the best investment you can make isn't a new course or a faster CPU. It is an ergonomic chair and a high-quality mechanical keyboard. Change my mind.&lt;br&gt;
​Here is the business case for investing in your physical hardware.&lt;br&gt;
​1. The Chair: Spinal Health is Career Longevity&lt;br&gt;
​Your brain writes the code, but your spine supports the operation.&lt;br&gt;
​When you sit in a cheap chair, your posture collapses. Your shoulders roll forward, your lower back loses its natural curve, and your neck strains to look at the monitor.&lt;br&gt;
​The Cost: Chronic back pain is the silent killer of developer productivity. You cannot focus on complex system design when your L4 vertebra is screaming at you.&lt;br&gt;
​The ROI: A high-end ergonomic chair (like a Herman Miller, Steelcase, or a premium local alternative) is not a luxury purchase; it is a medical investment. It forces your body into an active, supported posture. If a $1,000 chair prevents a single week of lost work due to back spasms, it has already paid for itself.&lt;br&gt;
​2. The Keyboard: Tactile Feedback and RSI Prevention&lt;br&gt;
​The keyboard is your primary interface with the digital world. It is the steering wheel of your career.&lt;br&gt;
​Laptop keyboards and cheap membrane boards require you to "bottom out" (press the key all the way down until it hits the hard plastic) to register a keystroke. Doing this 10,000 times a day sends micro-shocks up your fingers, leading directly to Repetitive Strain Injury (RSI) and Carpal Tunnel Syndrome.&lt;br&gt;
​The Mechanical Advantage: Mechanical keyboards use individual physical switches. You can feel the exact moment the key actuates before it hits the bottom. This tactile feedback allows you to type lighter, faster, and with significantly less strain on your tendons.&lt;br&gt;
​Customization: Whether you prefer the heavy click of a Blue switch or the smooth glide of a linear Red switch, you can tailor the tool to your exact physical mechanics.&lt;br&gt;
​The Professional Setup Breakdown&lt;/p&gt;

&lt;p&gt;Gear The Amateur Setup The Professional Setup&lt;br&gt;
Seating Dining chair / Cheap gaming chair Ergonomic task chair with lumbar support&lt;br&gt;
Input Flat laptop keyboard Mechanical (or ergonomic split) keyboard&lt;br&gt;
Screen Looking down at a 13" laptop Eye-level external monitor&lt;br&gt;
Result Back pain, wrist fatigue, brain fog Deep&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
​You are a professional athlete of the knowledge economy. A Formula 1 driver wouldn't race in a cheap seat with a plastic steering wheel.&lt;br&gt;
​Stop treating your body like a secondary component. Buy the chair. Buy the keyboard. Your 40-year-old self will thank you.&lt;/p&gt;

&lt;p&gt;​Hi, I'm Frank Oge. I build high-performance software and write about the tech that powers it. If you enjoyed this, check out more of my work at frankoge.com&lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>The Hidden Cost of Cheap: Why I Stopped Arguing with Low-Ball Clients</title>
      <dc:creator>Frank Oge</dc:creator>
      <pubDate>Sat, 28 Feb 2026 22:05:43 +0000</pubDate>
      <link>https://forem.com/frankdotdev/the-hidden-cost-of-cheap-why-i-stopped-arguing-with-low-ball-clients-1gi0</link>
      <guid>https://forem.com/frankdotdev/the-hidden-cost-of-cheap-why-i-stopped-arguing-with-low-ball-clients-1gi0</guid>
      <description>&lt;p&gt;It’s the most common objection in the freelance world. You’ve spent an hour on a discovery call, mapped out a technical architecture, and presented a fair quote. Then comes the line:&lt;br&gt;
​"I can find someone on [Freelance Site] to do this for 20% of your price."&lt;br&gt;
​In the past, I would have panicked. I would have started justifying my hourly rate or, worse, offered a discount.&lt;br&gt;
​Today? My answer is simple: "Okay. I understand. Good luck with the project."&lt;br&gt;
​Here is why "Okay" is the most powerful word in a senior developer's vocabulary, and why competing on price is a race to the bottom that you don't want to win.&lt;br&gt;
​1. Price is What You Pay, Cost is What You Endure&lt;br&gt;
​In software, a low initial price is almost always a down payment on future technical debt.&lt;br&gt;
When a client hires the "cheapest" option, they aren't just saving money; they are often buying:&lt;br&gt;
​Brittle Code: Lack of tests and poor architecture that breaks under load.&lt;br&gt;
​Communication Gaps: Endless back-and-forth because the developer doesn't understand the business requirements.&lt;br&gt;
​The "Do-Over" Tax: Eventually, they will have to hire a professional (like you) to delete the cheap code and rebuild it from scratch.&lt;br&gt;
​2. You are an Asset, Not an Expense&lt;br&gt;
​Low-ballers view developers as a "cost center"—like office supplies or electricity.&lt;br&gt;
High-value clients view developers as "revenue generators."&lt;br&gt;
​If your software is going to automate a $100k/year process, it doesn't matter if you charge $5k or $10k. The value is in the result. If a client can't see that, they aren't looking for a partner; they are looking for a pair of typing hands. You don't want that contract.&lt;br&gt;
​3. The Comparison Table&lt;br&gt;
​When a client tries to low-ball you, keep this internal table in mind. It will give you the confidence to say "No."&lt;/p&gt;

&lt;p&gt;The Cheap Developer The Professional Engineer&lt;br&gt;
Focuses on "Features" Focuses on "Business Outcomes"&lt;br&gt;
Writes code that "Works for now" Writes code that is "Maintainable and Scalable"&lt;br&gt;
Needs a micro-managed checklist Needs a high-level goal&lt;br&gt;
Is a liability (Risk) Is an investment (Growth)&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
​When you say "Okay" to a low-baller, you aren't being arrogant. You are protecting your schedule for the clients who actually value high-performance software.&lt;br&gt;
​The best clients don't want the cheapest developer; they want the developer who makes the problem go away the first time.&lt;/p&gt;

&lt;p&gt;​Hi, I'm Frank Oge. I build high-performance software and write about the tech that powers it. If you enjoyed this, check out more of my work at frankoge.com&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>softwaredevelopment</category>
      <category>webdev</category>
    </item>
    <item>
      <title>The 2026 Guide: 3 Ways to Accept USD in Nigeria Without Getting Blocked</title>
      <dc:creator>Frank Oge</dc:creator>
      <pubDate>Fri, 27 Feb 2026 22:43:41 +0000</pubDate>
      <link>https://forem.com/frankdotdev/the-2026-guide-3-ways-to-accept-usd-in-nigeria-without-getting-blocked-4dg7</link>
      <guid>https://forem.com/frankdotdev/the-2026-guide-3-ways-to-accept-usd-in-nigeria-without-getting-blocked-4dg7</guid>
      <description>&lt;p&gt;If you work in tech in Nigeria, you already know the heartbreak. You land a $5,000 contract with a US client, deliver the code, and then the nightmare begins: How do I actually get paid?&lt;br&gt;
​PayPal doesn't let you receive. Payoneer randomly blocks accounts. Direct bank wires take weeks and often convert at terrible, centralized FX rates.&lt;br&gt;
​As a Nigerian developer or SaaS founder, your payment infrastructure is just as important as your tech stack. If you can't collect the money, you don't have a business.&lt;br&gt;
​Here are the 3 most reliable ways to accept USD in Nigeria today, without the fear of waking up to a suspended account.&lt;br&gt;
​1. The Freelancer's Choice: Virtual USD Accounts (Grey / Geegpay)&lt;br&gt;
​If you are a freelancer or contractor, your foreign clients want to pay you the way they pay everyone else: via local bank transfer (ACH in the US, SEPA in Europe).&lt;br&gt;
​The Solution: Platforms like Grey.co or Geegpay provide you with a legitimate, virtual US routing and account number.&lt;br&gt;
​How it works: You put these account details on your invoice. Your client sends an ACH transfer that clears in 1-2 business days. The platform then allows you to swap that USD to Naira at the parallel market rate and withdraw directly to your local Nigerian bank account in minutes.&lt;br&gt;
​Why it wins: Zero friction for the client. They don't need to download new apps; they just do a standard bank transfer.&lt;br&gt;
​2. The Unblockable Route: Stablecoins (USDC / USDT)&lt;br&gt;
​For clients who are forward-thinking, Web3 infrastructure has solved the cross-border payment problem permanently.&lt;br&gt;
​The Solution: Invoicing in USDC (USD Coin) or USDT (Tether) over low-cost networks like Solana, Base, or Polygon.&lt;br&gt;
​How it works: You generate a receiving address from a non-custodial wallet (like Phantom or MetaMask). The client sends the stablecoin.&lt;br&gt;
​The Math: A $3,000 payment settles in 400 milliseconds. The transaction fee is roughly $0.01. No intermediary bank can freeze the transaction, and no weekend delays apply.&lt;br&gt;
​To Naira: You can easily off-ramp your USDC to Naira using trusted P2P exchanges or local platforms like Yellow Card.&lt;br&gt;
​3. The SaaS Founder's Route: The US LLC Setup (Stripe)&lt;br&gt;
​If you are building a SaaS product, you cannot ask 1,000 users to manually send you crypto or wire transfers. You need automated, recurring card payments. You need Stripe or Lemon Squeezy.&lt;br&gt;
​The Problem: Stripe does not support Nigerian-registered businesses directly. If you try to fake your location with a VPN, you will be permanently banned.&lt;br&gt;
​The Solution: Form a US LLC using a service like Stripe Atlas or Firstbase.io.&lt;br&gt;
​How it works: For about $500, these services legally register your company in Delaware or Wyoming, get you a US Employer Identification Number (EIN), and open a US business bank account (like Mercury). With a legitimate EIN and US bank account, you can open a fully compliant Stripe account from Nigeria.&lt;/p&gt;

&lt;p&gt;Method Best For Client Friction Risk of Block&lt;br&gt;
Virtual Accounts (Geegpay/Grey) Freelancers, Agencies Low Low&lt;br&gt;
Stablecoins (USDC/USDT) Forward-thinking clients Medium Zero&lt;br&gt;
US LLC + Stripe SaaS Founders Zero Low (If fully compliant)&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
​Stop losing international clients because of payment friction. The infrastructure exists. Set up your virtual accounts, educate your clients on stablecoins, or incorporate globally. Your code is world-class; your payment stack should be too.&lt;/p&gt;

&lt;p&gt;​Hi, I'm Frank Oge. I build high-performance software and write about the tech that powers it. If you enjoyed this, check out more of my work at frankoge.com&lt;/p&gt;

</description>
      <category>freelance</category>
      <category>stripe</category>
    </item>
    <item>
      <title>The Hourly Trap: Why Freelance Developers Must Switch to Value-Based Pricing in 2026</title>
      <dc:creator>Frank Oge</dc:creator>
      <pubDate>Thu, 26 Feb 2026 22:22:10 +0000</pubDate>
      <link>https://forem.com/frankdotdev/the-hourly-trap-why-freelance-developers-must-switch-to-value-based-pricing-in-2026-1afa</link>
      <guid>https://forem.com/frankdotdev/the-hourly-trap-why-freelance-developers-must-switch-to-value-based-pricing-in-2026-1afa</guid>
      <description>&lt;p&gt;There is a fatal flaw in how 90% of freelance software developers run their businesses: Hourly billing inherently punishes efficiency.&lt;br&gt;
​Think about it. When you were a junior developer, it might have taken you 20 hours to set up a secure authentication flow and a Stripe payment integration. At $50 an hour, you made $1,000.&lt;br&gt;
​Today, you are a senior developer. You have boilerplate code, immense experience, and AI tools like Cursor or Claude 3.5 Sonnet. That exact same Stripe integration now takes you 2 hours. If you still charge $50 an hour, you just made $100.&lt;br&gt;
​You got better, you got faster, and your reward was a 90% pay cut.&lt;br&gt;
​If you want to scale your income in 2026, you have to stop selling your time. You must transition to Value-Based Pricing. Here is exactly how to do it.&lt;br&gt;
​1. What is Value-Based Pricing?&lt;br&gt;
​Value-based pricing means setting your fee based on the financial impact your work has on the client's business, rather than the time it takes you to type the code.&lt;br&gt;
​Clients do not care about your code. They care about what your code does for their business.&lt;br&gt;
​Does it increase revenue?&lt;br&gt;
​Does it reduce churn?&lt;br&gt;
​Does it save their team 40 hours of manual data entry a week?&lt;br&gt;
​If your custom software automates a process that saves a company $100,000 a year, charging them a flat fee of $15,000 is an absolute bargain—even if it only takes you three days to build.&lt;br&gt;
​2. The "Discovery Call" Pivot&lt;br&gt;
​To charge for value, you have to uncover the value. You can no longer start calls by asking, "What tech stack do you want?" You must ask the Money Questions:&lt;br&gt;
​"What is the main business problem this software is trying to solve?"&lt;br&gt;
​"How much is this problem currently costing you in lost revenue or wasted time?"&lt;br&gt;
​"If we build this perfectly, how much new revenue do you expect it to generate in the next 12 months?"&lt;br&gt;
​3. The Proposal Framework&lt;br&gt;
​Once the client admits that the new feature will generate roughly $50,000 in new sales this year, you anchor your price against that number.&lt;br&gt;
​Do not send a proposal that says: "40 hours of React Development @ $100/hr = $4,000." This invites the client to argue about how long things take.&lt;br&gt;
​Instead, frame it around the ROI (Return on Investment):&lt;/p&gt;

&lt;p&gt;Project Phase Business Outcome Investment&lt;br&gt;
Phase 1: Payment Architecture Reduces checkout abandonment by estimated 15%.&lt;br&gt;&lt;br&gt;
Phase 2: Automated Invoicing Saves accounting team 20 hours/week.&lt;br&gt;&lt;br&gt;
Total Investment Positioned to unlock $50k+ in annual value. $8,500 Flat Fee&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
​When you price by the hour, you and the client have opposing goals: You want to work more hours to get paid more, and the client wants you to work fewer hours to keep costs down.&lt;br&gt;
​When you price by value, your goals align perfectly. They want a high-impact solution quickly, and you want to deliver a high-impact solution quickly.&lt;br&gt;
​Stop letting your typing speed dictate your net worth. Become a partner, not a commodity.&lt;br&gt;
​Hi, I'm Frank Oge. I build high-performance software and write about the tech that powers it. If you enjoyed this, check out more of my work at frankoge.com&lt;/p&gt;

</description>
      <category>freelance</category>
    </item>
    <item>
      <title>How Uber Handles Millions of Rides: A System Design Masterclass</title>
      <dc:creator>Frank Oge</dc:creator>
      <pubDate>Thu, 26 Feb 2026 03:08:58 +0000</pubDate>
      <link>https://forem.com/frankdotdev/how-uber-handles-millions-of-rides-a-system-design-masterclass-l35</link>
      <guid>https://forem.com/frankdotdev/how-uber-handles-millions-of-rides-a-system-design-masterclass-l35</guid>
      <description>&lt;p&gt;You open your phone, press "Confirm Ride," and within 3 seconds, a driver is assigned to you.&lt;br&gt;
​As a user, it feels like magic. As a software engineer, you know it is a chaotic symphony of microservices, geospatial indexing, and real-time data streams.&lt;br&gt;
​If you tried to build Uber using a standard monolithic architecture and a SQL database, your server would crash the moment you hit 1,000 concurrent users. You cannot simply run a query like SELECT * FROM drivers WHERE location = 'Lagos' AND distance &amp;lt; 5km. The database would lock up instantly.&lt;br&gt;
​So, how does Uber actually do it? Let's break down the architecture.&lt;br&gt;
​1. The Geospatial Problem: H3 (The Hexagon Grid)&lt;br&gt;
​Uber’s biggest challenge is calculating distance instantly. To solve this, they created and open-sourced H3, a Hexagonal Hierarchical Spatial Index.&lt;br&gt;
​Instead of calculating the exact latitude and longitude of every user against every driver, Uber divides the entire Earth into a grid of hexagons.&lt;br&gt;
​The Magic: When you open the app, Uber instantly knows which "hexagon" you are standing in.&lt;br&gt;
​The Match: It then only searches for drivers who are pinging their location inside your specific hexagon (and the immediate neighboring hexagons). This turns a massive, computationally heavy math problem into a simple, lightning-fast dictionary lookup.&lt;br&gt;
​2. The Data Firehose: Kafka&lt;br&gt;
​Drivers send their GPS coordinates to Uber's servers every 4 seconds. Imagine 1 million drivers online. That is 250,000 write requests per second.&lt;br&gt;
​No standard database can handle that directly.&lt;br&gt;
​The Solution: Uber uses Apache Kafka. Kafka acts as a massive shock absorber. It ingests the millions of GPS pings, queues them up, and streams them to the mapping services and databases without dropping a single packet of data.&lt;br&gt;
​3. The Matchmaker: WebSockets and DISCO&lt;br&gt;
​When you request a ride, your phone establishes a persistent WebSocket connection with Uber’s Dispatch System (internally called DISCO).&lt;br&gt;
​Why WebSockets? HTTP requests are too slow for real-time tracking because they require opening and closing a connection every time. WebSockets keep the tunnel open, allowing the server to push the driver's live location to your screen continuously.&lt;br&gt;
​The Logic: DISCO looks at the active drivers in your H3 hexagon, filters out those already on a trip, and sends a push notification to the closest driver.&lt;br&gt;
​4. The Memory: Cassandra&lt;br&gt;
​Where do you store billions of completed trips, ratings, and driver logs?&lt;br&gt;
Uber uses Apache Cassandra, a highly scalable NoSQL database.&lt;br&gt;
​Cassandra is designed for high-write environments. It allows Uber to store petabytes of trip data across multiple data centers globally, ensuring that even if an entire server farm in Europe goes offline, the app stays up.&lt;br&gt;
​Summary Architecture Table&lt;br&gt;
Component Technology Purpose in the System&lt;br&gt;
Location Tracking H3 (Hexagons) Lightning-fast geospatial lookups.&lt;br&gt;
Data Ingestion Apache Kafka Handling 250k+ GPS pings per second.&lt;br&gt;
Real-Time Comms WebSockets Live map updates without refreshing.&lt;br&gt;
Database Storage Cassandra Highly available, distributed data storage.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
​Uber is not just an app; it is a massive distributed system handling extreme scale. The next time you order a ride and watch that little car move on your screen, you’ll know exactly the data pipeline powering it.&lt;br&gt;
​Hi, I'm Frank Oge. I build high-performance software and write about the tech that powers it. If you enjoyed this, check out more of my work at frankoge.com&lt;/p&gt;

</description>
      <category>systemdesign</category>
      <category>architecture</category>
    </item>
    <item>
      <title>"Web3 is Dead." No, You Just Don't Understand Utility.</title>
      <dc:creator>Frank Oge</dc:creator>
      <pubDate>Tue, 24 Feb 2026 22:22:35 +0000</pubDate>
      <link>https://forem.com/frankdotdev/web3-is-dead-no-you-just-dont-understand-utility-1l57</link>
      <guid>https://forem.com/frankdotdev/web3-is-dead-no-you-just-dont-understand-utility-1l57</guid>
      <description>&lt;p&gt;If you judge the internet solely by the dot-com crash of the early 2000s, you would have called it a failure. If you judge Web3 solely by the cartoon monkey JPEGs and algorithmic stablecoin crashes of the early 2020s, you are making the exact same mistake.&lt;br&gt;
​The media loves to declare Web3 "dead." But as a software engineer building high-performance systems in 2026, I can tell you that Web3 isn't dead. It just graduated.&lt;br&gt;
​The casino is finally closed. The infrastructure phase has begun. Here is why Web3 is quietly powering the next generation of global software, and why you are missing the bigger picture if you ignore it.&lt;br&gt;
​1. The Stablecoin Revolution&lt;br&gt;
​For someone living in New York or London, a bank works just fine. But if you live in Lagos, Buenos Aires, or Istanbul, your local currency is actively losing purchasing power.&lt;br&gt;
​Web3 introduced the most important financial primitive of our decade: The Stablecoin (USDC, USDT).&lt;br&gt;
​The Problem: Getting paid as an African remote developer by a US company used to take 5 days and cost 8% in SWIFT fees and terrible FX rates.&lt;br&gt;
​The Utility: Today, a smart contract on Solana or Base settles a $5,000 USDC payment in 400 milliseconds for a fraction of a cent.&lt;br&gt;
​It is not an investment. It is a utility. It is a superior database for money.&lt;br&gt;
​2. TradFi vs. Web3 Settlement&lt;br&gt;
​Let's look at the actual technical difference between Traditional Finance (TradFi) and Web3 architecture when sending data (value) across borders.&lt;/p&gt;

&lt;p&gt;Feature Traditional Finance (SWIFT/Banks) Web3 Infrastructure (L2s/Solana)&lt;br&gt;
Uptime Monday - Friday, 9 AM to 5 PM. 24/7/365. Never sleeps.&lt;br&gt;
Settlement Time 2 to 5 business days. Under 2 seconds.&lt;br&gt;
Intermediaries 3-4 corresponding banks. Zero. Peer-to-peer.&lt;br&gt;
Transparency Black box. You wait and hope. Public ledger. Fully verifiable.&lt;/p&gt;

&lt;p&gt;When you view blockchain purely as a distributed ledger designed to remove middlemen, the "Web3 is dead" narrative instantly falls apart.&lt;br&gt;
​3. Real World Assets (RWAs)&lt;br&gt;
​We are no longer tokenizing digital art; we are tokenizing reality.&lt;br&gt;
In 2026, the biggest financial institutions are moving into RWAs. This means taking physical assets—like real estate, treasury bills, or agricultural supply chains—and representing them as tokens on a blockchain.&lt;br&gt;
​Fractional Ownership: A developer in Nairobi can now buy $50 worth of tokenized US Treasury bills to hedge against inflation, yielding 5% directly into their wallet.&lt;br&gt;
​Liquid Markets: Assets that traditionally took months to sell (like commercial real estate) can now be traded instantly on decentralized exchanges.&lt;br&gt;
​Conclusion&lt;br&gt;
​Web3 did not die; it just became boring. And in software engineering, "boring" is exactly what you want your infrastructure to be.&lt;br&gt;
​Stop looking at the price of volatile tokens. Start looking at the GitHub commits, the active wallet addresses using stablecoins, and the APIs settling cross-border payments. The hype is gone, but the utility is here to stay.&lt;br&gt;
​Hi, I'm Frank Oge. I build high-performance software and write about the tech that powers it. If you enjoyed this, check out more of my work at frankoge.com&lt;/p&gt;

</description>
      <category>web3</category>
      <category>nft</category>
    </item>
    <item>
      <title>Beyond ChatGPT: The 5 AI Tools I Actually Use to Code 10x Faster</title>
      <dc:creator>Frank Oge</dc:creator>
      <pubDate>Mon, 23 Feb 2026 22:05:54 +0000</pubDate>
      <link>https://forem.com/frankdotdev/beyond-chatgpt-the-5-ai-tools-i-actually-use-to-code-10x-faster-2pl5</link>
      <guid>https://forem.com/frankdotdev/beyond-chatgpt-the-5-ai-tools-i-actually-use-to-code-10x-faster-2pl5</guid>
      <description>&lt;p&gt;Let me be incredibly clear: If your AI coding workflow consists of copying code from your editor, pasting it into a ChatGPT browser tab, and copying the result back... you are doing it wrong.&lt;br&gt;
​That context-switching destroys your flow state. In 2026, AI is no longer just a chatbot; it is deeply integrated into the developer ecosystem. It doesn't replace your logic, but it dramatically accelerates your execution.&lt;br&gt;
​Here are the 5 AI tools I actually use every single day to write, debug, and ship high-performance software.&lt;br&gt;
​1. Cursor: The AI-Native IDE&lt;br&gt;
​I abandoned standard VS Code a long time ago.&lt;br&gt;
Cursor is a fork of VS Code, meaning all your extensions and themes still work, but it has AI built into its core.&lt;br&gt;
​The Magic: It understands your entire codebase. You can press Cmd+K and type: "Update the authentication middleware to use the new Redis schema we defined in db.ts," and it edits the code right in your file.&lt;br&gt;
​Why it wins: Context. It reads your local files, so it doesn't hallucinate variables that don't exist.&lt;br&gt;
​2. Claude 3.5 Sonnet: The Architect&lt;br&gt;
​When I need to design a complex system architecture or refactor a massive monolithic function, I don't use ChatGPT. I use Anthropic's Claude 3.5 Sonnet.&lt;br&gt;
​The Magic: Claude has a massive context window and is objectively better at handling large blocks of code without getting "lazy" or skipping lines.&lt;br&gt;
​Why it wins: If I dump 3,000 lines of spaghetti code into Claude and ask it to break it down into modular SOLID components, it actually does the work.&lt;br&gt;
​3. v0 by Vercel: The Frontend Engineer&lt;br&gt;
​Building UI components from scratch is tedious. Padding, margins, flexbox alignment—it eats up hours.&lt;br&gt;
​The Magic: v0 generates React (Next.js) components styled with Tailwind CSS purely from text prompts.&lt;br&gt;
​Why it wins: I type "A modern pricing table with a toggle for monthly/yearly billing, highlighting the pro tier in purple." In 15 seconds, I have a fully accessible, copy-pasteable Shadcn UI component.&lt;br&gt;
​4. Phind: The Developer Search Engine&lt;br&gt;
​Standard search engines are cluttered with SEO spam and outdated Stack Overflow answers from 2014.&lt;br&gt;
​The Magic: Phind is an AI search engine built explicitly for developers. It browses the live internet to read the latest documentation for frameworks like Next.js or Rust.&lt;br&gt;
​Why it wins: When a library updates its API and the AI models haven't been trained on it yet, Phind reads the live docs and gives you the correct, up-to-date syntax.&lt;br&gt;
​5. Mintlify: The Documenter&lt;br&gt;
​Every developer loves writing code. Every developer hates writing documentation.&lt;br&gt;
​The Magic: Mintlify Writer is an extension that reads your complex functions and automatically generates perfect, readable documentation comments (JSDoc, Python Docstrings, etc.).&lt;br&gt;
​Why it wins: You highlight a block of code, click a button, and it explains exactly what the parameters, return types, and edge cases are. Your codebase stays maintainable with zero extra effort.&lt;br&gt;
​Conclusion&lt;br&gt;
​AI will not replace software engineers. But a software engineer using AI will absolutely replace an engineer who refuses to adapt.&lt;br&gt;
Stop treating AI like a search engine and start treating it like a junior developer who sits inside your terminal.&lt;br&gt;
​Would you like me to write a deep-dive tutorial on how to configure Cursor for a full-stack Next.js/Node environment? Let me know in the comments.&lt;br&gt;
​Hi, I'm Frank Oge. I build high-performance software and write about the tech that powers it. If you enjoyed this, check out more of my work at frankoge.com&lt;/p&gt;

</description>
      <category>ai</category>
    </item>
    <item>
      <title>The "SaaS MVP" Tech Stack: How to Build and Launch in a Weekend</title>
      <dc:creator>Frank Oge</dc:creator>
      <pubDate>Sun, 22 Feb 2026 20:45:27 +0000</pubDate>
      <link>https://forem.com/frankdotdev/the-saas-mvp-tech-stack-how-to-build-and-launch-in-a-weekend-51a3</link>
      <guid>https://forem.com/frankdotdev/the-saas-mvp-tech-stack-how-to-build-and-launch-in-a-weekend-51a3</guid>
      <description>&lt;p&gt;The #1 reason most SaaS ideas die is not because they are bad ideas. It is because the developer spent three months building a custom authentication system, setting up a Kubernetes cluster, and configuring Webpack—all before writing a single line of business logic.&lt;br&gt;
​If you are building a Minimum Viable Product (MVP), your only goal is to answer one question: Will people pay for this?&lt;br&gt;
​To answer that question, you need speed. You need a tech stack that handles the boring stuff (auth, databases, UI components, payments) so you can focus strictly on the feature your users actually care about.&lt;br&gt;
​Here is the proven SaaS MVP Tech Stack that dominated 2025 and remains the absolute standard today.&lt;br&gt;
​1. The Core Framework: Next.js + TypeScript&lt;br&gt;
​You do not have time to build a separate React frontend and a Node.js Express backend. You need everything in one repository.&lt;br&gt;
​Next.js: Gives you a world-class React environment with file-based routing and Server-Side Rendering (SSR) out of the box. More importantly, Next.js API routes let you write your backend endpoints in the exact same codebase.&lt;br&gt;
​TypeScript: Skipping TypeScript to "save time" is a trap. You will spend 10x more time debugging type errors in production. Use it from Day 1.&lt;br&gt;
​2. The Database &amp;amp; Auth: Supabase&lt;br&gt;
​Do not write custom authentication. Do not manage a database server.&lt;br&gt;
​Why Supabase? It is an open-source Firebase alternative powered by a real PostgreSQL database.&lt;br&gt;
​The Magic: It gives you an instant REST/GraphQL API on top of your database, and it handles user authentication (Email/Password, Google, GitHub) out of the box. You just define your tables and start reading/writing data from your frontend.&lt;br&gt;
​3. The UI Layer: Tailwind CSS + Shadcn UI&lt;br&gt;
​Your MVP needs to look trustworthy, but you cannot afford to spend 40 hours tweaking CSS classes.&lt;br&gt;
​Tailwind CSS: Utility-first CSS. You style elements directly in your JSX. It enforces a consistent design system instantly.&lt;br&gt;
​Shadcn UI: This is the secret weapon. It is a collection of beautifully designed, accessible components (Buttons, Modals, Dropdowns) that you can copy and paste directly into your project. It looks like a premium enterprise app out of the box.&lt;br&gt;
​4. Payments: Stripe Checkout&lt;br&gt;
​If you want to validate a SaaS, you need to collect money.&lt;br&gt;
​Stripe: Still the undisputed king. Do not build custom billing pages. Use Stripe Checkout to redirect users to a secure Stripe-hosted payment page, and use Stripe Webhooks to update their subscription status in your Supabase database.&lt;br&gt;
​5. Hosting: Vercel&lt;br&gt;
​Deployment should not be a task; it should be an afterthought.&lt;br&gt;
​Vercel: Because you are using Next.js, Vercel is the natural choice. You connect your GitHub repository, push your code to the main branch, and Vercel automatically builds and deploys your application to a global edge network.&lt;br&gt;
​Summary Table&lt;br&gt;
Layer Technology Why it wins for MVPs&lt;br&gt;
Framework Next.js (TypeScript) Frontend and Backend in one repo.&lt;br&gt;
UI/UX Tailwind + Shadcn Enterprise-grade components, zero CSS files.&lt;br&gt;
Backend/DB Supabase Instant PostgreSQL API + built-in Auth.&lt;br&gt;
Payments Stripe Trustworthy, easy webhook integration.&lt;br&gt;
Hosting Vercel Zero-config, git-push-to-deploy.&lt;/p&gt;

&lt;p&gt;Conclusion&lt;br&gt;
​Stop over-engineering. An MVP is an experiment, not an enterprise monolith. Use this stack, build the core feature this weekend, and launch it on Monday.&lt;br&gt;
​Hi, I'm Frank Oge. I build high-performance software and write about the tech that powers it. If you enjoyed this, check out more of my work at frankoge.com&lt;/p&gt;

</description>
      <category>mvp</category>
    </item>
    <item>
      <title>The Polyglot Trap: Why Mastering Just JavaScript and Python is Your Ultimate Superpower</title>
      <dc:creator>Frank Oge</dc:creator>
      <pubDate>Sat, 21 Feb 2026 22:21:28 +0000</pubDate>
      <link>https://forem.com/frankdotdev/the-polyglot-trap-why-mastering-just-javascript-and-python-is-your-ultimate-superpower-5hij</link>
      <guid>https://forem.com/frankdotdev/the-polyglot-trap-why-mastering-just-javascript-and-python-is-your-ultimate-superpower-5hij</guid>
      <description>&lt;p&gt;Every day, my feed is filled with developers asking the same question:&lt;br&gt;
"Should I learn Rust? Is Go going to replace Node? Do I need to learn Swift for mobile?"&lt;br&gt;
​We have become obsessed with collecting syntax like Pokémon cards. But in 2026, the harsh truth is that nobody cares how many "Hello World" scripts you can write in different languages. The market pays for problem-solving, system architecture, and shipping speed.&lt;br&gt;
​If you want to build high-performance software, launch profitable SaaS products, and make yourself indispensable, stop language-hopping. Master JavaScript. Master Python. That is it.&lt;br&gt;
​Here is why this two-language stack covers 99% of the modern software industry.&lt;br&gt;
​1. JavaScript: The Language of Delivery&lt;br&gt;
​JavaScript (and by extension, TypeScript) has a monopoly on the user interface. It is the only language that runs natively in the browser, making it non-negotiable.&lt;br&gt;
​But it didn't stop there:&lt;br&gt;
​The Frontend: React, Vue, Next.js. You can build world-class web applications.&lt;br&gt;
​The Backend: Node.js allows you to write highly concurrent, non-blocking APIs without switching mental contexts.&lt;br&gt;
​Mobile &amp;amp; Desktop: React Native lets you deploy to iOS and Android. Electron/Tauri lets you build desktop apps.&lt;br&gt;
​If it has a screen, JavaScript can paint on it.&lt;br&gt;
​2. Python: The Language of Intelligence&lt;br&gt;
​If JavaScript is how you interact with the user, Python is how you think.&lt;br&gt;
​We are living in the AI and Data era. Python won this war a decade ago and its dominance is only growing.&lt;br&gt;
​Artificial Intelligence: PyTorch, TensorFlow, and LangChain are built for Python. If you want to integrate LLMs into your app, you need Python.&lt;br&gt;
​Data Processing: Pandas and NumPy handle massive datasets that would make JavaScript choke.&lt;br&gt;
​Automation: Scripting complex cron jobs, scraping the web, and gluing APIs together is effortlessly done in Python.&lt;br&gt;
​3. The Ultimate Architecture: The JS/Python Bridge&lt;br&gt;
​When you stop trying to learn C++ and Ruby, and focus solely on these two, you unlock the perfect modern architecture:&lt;br&gt;
​The Brain (Python): A FastAPI microservice that handles heavy data crunching, background tasks, and AI model inference.&lt;br&gt;
​The Face (JavaScript/TypeScript): A Next.js frontend backed by a Node.js API gateway that handles routing, authentication, and real-time user interactions via WebSockets.&lt;br&gt;
​Conclusion&lt;br&gt;
​A developer who has surface-level knowledge of 8 languages is a Junior. A developer who deeply understands the event loop in JavaScript and memory management in Python is a Senior.&lt;br&gt;
​Stop reading "Top 10 Languages to Learn in 2026" articles. Pick the browser's native tongue and the data scientist's weapon of choice. Then, get back to building.&lt;br&gt;
​Hi, I'm Frank Oge. I build high-performance software and write about the tech that powers it. If you enjoyed this, check out more of my work at frankoge.com&lt;/p&gt;

</description>
      <category>python</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Stop Accepting the "Africa Discount": How to Negotiate Remote Tech Salaries in 2026</title>
      <dc:creator>Frank Oge</dc:creator>
      <pubDate>Fri, 20 Feb 2026 21:10:58 +0000</pubDate>
      <link>https://forem.com/frankdotdev/stop-accepting-the-africa-discount-how-to-negotiate-remote-tech-salaries-in-2026-lm2</link>
      <guid>https://forem.com/frankdotdev/stop-accepting-the-africa-discount-how-to-negotiate-remote-tech-salaries-in-2026-lm2</guid>
      <description>&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%2Fwi7c59l62obthkx1zu7f.jpg" 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%2Fwi7c59l62obthkx1zu7f.jpg" alt=" " width="676" height="1200"&gt;&lt;/a&gt;&lt;br&gt;
You passed the LeetCode tests. You crushed the system design interview. You met the founders, and they loved you. Then the offer letter arrives: $1,500 a month.&lt;br&gt;
​If you live in Lagos, Nairobi, or Accra, $1,500 might sound like a lot of money in local currency. But if the developer doing the exact same job in London is making $8,000 a month, you are not getting a good deal. You are being exploited via the "Africa Discount."&lt;br&gt;
​In 2026, remote work is global, but compensation is still heavily biased. Here is the practical framework to negotiate your salary as an African developer without losing the offer.&lt;br&gt;
​1. Defeating the "Cost of Living" Trap&lt;br&gt;
​When you ask for more money, HR will often say: "Our compensation is adjusted for your local cost of living."&lt;br&gt;
​This is a trap. Do not argue about your rent or the price of groceries.&lt;br&gt;
Your response must pivot the conversation from Cost to Value.&lt;br&gt;
​The Reframe:&lt;br&gt;
"I understand the company uses a geo-adjusted model. However, the code I am writing, the bugs I am fixing, and the features I am shipping bring the same exact value to the company's bottom line as they would if I lived in New York. I am looking for a rate that reflects the global market value of this output."&lt;br&gt;
​2. Research the "Band," Not the Minimum&lt;br&gt;
​Before you name a price, you need data.&lt;br&gt;
Do not look at local Nigerian or Kenyan tech salaries. Look at the company's home market.&lt;br&gt;
​Use levels.fyi or remote-specific job boards to find the salary band for your role in their headquarters.&lt;br&gt;
​If their US band is $100k - $130k, do not ask for $30k just because it's good in Naira or Cedis.&lt;br&gt;
​Aim for the lower-to-middle end of their global band (e.g., $70k - $80k). It is still a massive discount for them, but a life-changing rate for you.&lt;br&gt;
​3. The "Flinch" and The Silence&lt;br&gt;
​When they state their initial lowball offer on a call, do not say "Okay, thank you."&lt;br&gt;
Do not immediately accept.&lt;br&gt;
​Say: "I appreciate the offer. However, based on the responsibilities of this role and the technical depth required, that number is lower than I expected."&lt;br&gt;
​Then, stop talking. Silence makes people uncomfortable. Often, recruiters will immediately reveal that they have wiggle room just to fill the silence.&lt;br&gt;
​4. The Email Script&lt;br&gt;
​If you receive the offer via email, here is a template you can steal:&lt;br&gt;
​"Hi [Name],&lt;br&gt;
​Thank you for the offer. I am incredibly excited about the opportunity to join the team and help scale the backend infrastructure.&lt;br&gt;
​Regarding the compensation, I was expecting a base salary closer to the $X - $Y range. This is based on my 5 years of experience with Node.js/AWS, and the direct impact I expect to have on the Q3 deliverables we discussed.&lt;br&gt;
​Is there flexibility to bring the base salary closer to this range?&lt;br&gt;
​Looking forward to your thoughts."&lt;br&gt;
​Conclusion&lt;br&gt;
​Companies do not pull offers just because you negotiate professionally. Hiring is expensive. If they have chosen you, they want you.&lt;br&gt;
Never let your IP address dictate your net worth. You are a global engineer. Get paid like one.&lt;br&gt;
​Hi, I'm Frank Oge. I build high-performance software and write about the tech that powers it. If you enjoyed this, check out more of my work at frankoge.com&lt;/p&gt;

</description>
      <category>career</category>
      <category>developers</category>
      <category>discuss</category>
      <category>interview</category>
    </item>
    <item>
      <title>The Best Code is No Code: Why Your Codebase is a Liability, Not an Asset</title>
      <dc:creator>Frank Oge</dc:creator>
      <pubDate>Thu, 19 Feb 2026 22:23:12 +0000</pubDate>
      <link>https://forem.com/frankdotdev/the-best-code-is-no-code-why-your-codebase-is-a-liability-not-an-asset-4ggc</link>
      <guid>https://forem.com/frankdotdev/the-best-code-is-no-code-why-your-codebase-is-a-liability-not-an-asset-4ggc</guid>
      <description>&lt;p&gt;When you first learn to program, you feel like a wizard. You write a script, and the computer does what you say. You measure your productivity by the number of lines you commit.&lt;br&gt;
​"I wrote 500 lines of code today!" is the battle cry of the Junior Developer.&lt;br&gt;
​But as you transition into a Senior role, a dark realization sets in: Every line of code you write is a liability. It is something that has to be read, tested, debugged, and eventually updated when dependencies break.&lt;br&gt;
​Do I agree that "Less code = fewer bugs"? Absolutely. But there is a dangerous trap hidden in that statement. Here is how to think about code as a liability without destroying your codebase's readability.&lt;br&gt;
​1. The Maintenance Tax&lt;br&gt;
​Code is not a static asset like a house. It is a living organism that constantly decays.&lt;br&gt;
​Security: More code means a larger surface area for vulnerabilities.&lt;br&gt;
​Cognitive Load: When a new developer joins your team, they have to fit your logic into their brain. A 10,000-line microservice is infinitely harder to grasp than a 1,000-line one.&lt;br&gt;
​The Fix: Before you write a custom utility function, ask yourself: Does the standard library already do this? Can we solve this at the database level instead?&lt;br&gt;
​2. The "Less Code" Trap: Code Golfing&lt;br&gt;
​This is where the "less code" mantra goes wrong.&lt;br&gt;
Some developers take it literally and try to compress complex logic into a single, unreadable line just to save vertical space. We call this "Code Golfing."&lt;/p&gt;

&lt;p&gt;// A "Clever" One-Liner (High Liability)&lt;br&gt;
const getActive = (u) =&amp;gt; u.filter(x =&amp;gt; x.s === 1 &amp;amp;&amp;amp; x.a &amp;gt; 18).map(x =&amp;gt; x.n);&lt;/p&gt;

&lt;p&gt;// Boring, Readable Code (Low Liability)&lt;br&gt;
const getActiveAdultUserNames = (users) =&amp;gt; {&lt;br&gt;
  const activeAdults = users.filter(user =&amp;gt; user.status === 1 &amp;amp;&amp;amp; user.age &amp;gt; 18);&lt;br&gt;
  return activeAdults.map(user =&amp;gt; user.name);&lt;br&gt;
};&lt;/p&gt;

&lt;p&gt;The first example is less code, but it is a higher liability because the next developer to read it will spend 10 minutes trying to decipher what x.s means.&lt;br&gt;
Less code should mean less complexity, not just fewer keystrokes.&lt;br&gt;
​3. The Joy of Deleting Code&lt;br&gt;
​The best pull requests are the ones with negative lines of code.&lt;br&gt;
When you refactor a messy module, delete a deprecated feature, or replace 500 lines of custom logic with a well-tested, open-source library, you are actively removing liability from your organization.&lt;br&gt;
​Conclusion&lt;br&gt;
​Your job as a software engineer is not to write code. Your job is to solve business problems. If you can solve a problem by deleting code, changing a process, or using an existing tool, you have done your job perfectly.&lt;br&gt;
​What is the biggest block of code you’ve ever deleted, and how did it feel? Let me know in the comments below!&lt;br&gt;
​Hi, I'm Frank Oge. I build high-performance software and write about the tech that powers it. If you enjoyed this, check out more of my work at frankoge.com&lt;/p&gt;

</description>
      <category>career</category>
      <category>codequality</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
