<?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: Walter G.</title>
    <description>The latest articles on Forem by Walter G. (@thatsoftwaredude).</description>
    <link>https://forem.com/thatsoftwaredude</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%2F757849%2F4b3eefcf-5c85-4491-b234-63c6a3c47771.jpg</url>
      <title>Forem: Walter G.</title>
      <link>https://forem.com/thatsoftwaredude</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/thatsoftwaredude"/>
    <language>en</language>
    <item>
      <title>Why developers can't get interviews in 2026</title>
      <dc:creator>Walter G.</dc:creator>
      <pubDate>Thu, 12 Mar 2026 18:07:03 +0000</pubDate>
      <link>https://forem.com/thatsoftwaredude/why-developers-cant-get-interviews-in-2026-3jke</link>
      <guid>https://forem.com/thatsoftwaredude/why-developers-cant-get-interviews-in-2026-3jke</guid>
      <description>&lt;p&gt;You've applied to 47 jobs. You've tweaked your resume countless times. You've written cover letters that felt genuinely thoughtful. You've hit "Submit" dozens of times and watched the applications disappear into the void. You've refreshed your inbox and still nothing. Not even a rejection letter.&lt;/p&gt;

&lt;p&gt;And this is happening everywhere and to everyone these days. At least that's what it would seem like if you read all the headlines. But just how widespread of an issue is it, and is it sign of the software development doomsday we've been facing for 20+ years now?&lt;/p&gt;

&lt;p&gt;This isn't an article about a broken job market. It's a story about a market that is drowning in noise. Noise created by large layoffs, vast automation, career pivots, and tools that have made applying for a job as frictionless as ordering takeout. And understanding where the noise comes from is the first step to cutting through it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Numbers Are Staggering
&lt;/h2&gt;

&lt;p&gt;Let's start with scale. &lt;a href="https://www.jobscan.co/blog/fortune-500-use-applicant-tracking-systems/" rel="noopener noreferrer"&gt;According to Jobscan's 2025 ATS Usage Report&lt;/a&gt;, corporate job postings attract an average of 250 applicants and only 4 to 6 of those will be called for an interview. That's the average. &lt;/p&gt;

&lt;p&gt;For well-known companies, it's far worse. Jobscan, a resume optimization company, reported receiving over 1,400 applications for a single visual designer role they posted.&lt;/p&gt;

&lt;p&gt;I can attest that this is very much true. On average, during the past several years we've received from 200 to 400 applications for a single job posting. And this was true whether we were looking for an intern or for a full time developer or product manager.&lt;/p&gt;

&lt;p&gt;For reference, during my corporate years I would often be tasked with reviewing resumes for potential hires to the team, and back then I was looking at maybe 12-15 resumes max for any given candidate. The number of prospects was so manageable that we could easily schedule an interview with each of them. And this was less than 10 years ago.&lt;/p&gt;

&lt;p&gt;And it's getting more challenging. &lt;a href="https://blog.hiringthing.com/2025-job-application-statistics-updated-data-you-need-to-know" rel="noopener noreferrer"&gt;Research shows that many applicants now submit anywhere from 32 to over 200 job applications&lt;/a&gt; before receiving an offer, with only 0.1% to 2% of cold applications resulting in a job offer. Read that again: at the low end, cold applications succeed at a rate of one in a thousand.&lt;/p&gt;

&lt;p&gt;The average time-to-hire has expanded to around 42 days, meaning even if your application does land somewhere, you're waiting over a month to find out. The process is longer, harder, and less transparent than it's been in years.&lt;/p&gt;

&lt;h2&gt;
  
  
  The FAANG Fallout
&lt;/h2&gt;

&lt;p&gt;After years of pandemic-fueled hypergrowth, the largest tech companies in the world overcorrected dramatically. &lt;a href="https://techcrunch.com/2024/05/01/a-comprehensive-archive-of-2023-tech-layoffs/" rel="noopener noreferrer"&gt;The mass layoffs of 2023 saw over 262,000 employees lose their jobs&lt;/a&gt; across tech companies, with Google, Meta, Amazon, and other industry giants among the biggest cutters.&lt;/p&gt;

&lt;p&gt;It didn't stop there. In 2025, around &lt;a href="https://news.crunchbase.com/startups/tech-layoffs/" rel="noopener noreferrer"&gt;127,000 U.S. tech workers were laid off&lt;/a&gt;, and cuts have continued into 2026.&lt;/p&gt;

&lt;p&gt;These weren't fringe employees or underperformers. These were the core teams that built the products you use every day.&lt;/p&gt;

&lt;p&gt;The companies framed these cuts as necessary corrections. Some, especially those in e-commerce, had nearly doubled their headcount to meet pandemic demand, and later found themselves overstaffed as daily life returned to normal.&lt;/p&gt;

&lt;p&gt;Others pointed to investor pressure around a metric called revenue per employee: when headcount rises faster than revenue, investors push for cuts and the moment FAANG companies announced layoffs, their stock prices began to rise.&lt;/p&gt;

&lt;p&gt;So while layoffs are a part of the corporate game and shouldn't shock anyway, mass corporate layoffs are something else entirely, because these people need to go somewhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Did All Those Workers Go?
&lt;/h2&gt;

&lt;p&gt;Here's what didn't happen: those hundreds of thousands of laid-off workers did not quietly exit the labor force.&lt;/p&gt;

&lt;p&gt;The median time to a first job offer for laid-off tech workers &lt;a href="https://blog.theinterviewguys.com/state-of-job-search-2025-research-report/" rel="noopener noreferrer"&gt;increased 22% to 68.5 days in 2025&lt;/a&gt;, meaning they were back in the market, competing directly with everyone else, for months at a time.&lt;/p&gt;

&lt;p&gt;But it also means that a massive wave of experienced, credentialed, often overqualified workers re-entered the job market and started competing for roles they might not have previously considered.&lt;/p&gt;

&lt;p&gt;The FAANG exodus accelerated a trend that was already underway: workers moving laterally across industries and roles, not just up or down. In 2024, &lt;a href="https://blog.hiringthing.com/2025-job-application-statistics-updated-data-you-need-to-know" rel="noopener noreferrer"&gt;1 in 3 U.S. workers changed jobs&lt;/a&gt;, a clear indication that employees are actively exploring new opportunities rather than staying in roles for the sake of stability.&lt;/p&gt;

&lt;p&gt;This created a flood across every category of role. A senior engineer laid off from Meta isn't just applying for senior engineering jobs, they're applying for technical program management, AI product roles, startup positions, and consulting gigs simultaneously.&lt;/p&gt;

&lt;p&gt;Entry-level roles are getting applications from people with a decade of experience trying to break into a new vertical. Mid-level roles are overwhelmed from both directions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Algorithm That Stands Between You and a Human
&lt;/h2&gt;

&lt;p&gt;Even if your experience and credentials are a strong match for a role, you probably won't be evaluated by a human first.&lt;/p&gt;

&lt;p&gt;More than 90% of employers now &lt;a href="https://www.selectsoftwarereviews.com/blog/applicant-tracking-system-statistics" rel="noopener noreferrer"&gt;use automated systems&lt;/a&gt; to filter or rank job applications, and 88% of companies employ some form of AI for initial candidate screening.&lt;/p&gt;

&lt;p&gt;Nearly 98% of Fortune 500 companies &lt;a href="https://www.jobscan.co/blog/fortune-500-use-applicant-tracking-systems/" rel="noopener noreferrer"&gt;use an Applicant Tracking System (ATS) as of 2025&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;These systems scan resumes for keywords, credentials, and formatting compliance before a recruiter ever sees them. The problem is that they're imperfect filters at best. Research suggests that &lt;a href="https://www.skillademia.com/statistics/resume-statistics/" rel="noopener noreferrer"&gt;75% of qualified candidates are rejected&lt;/a&gt; by ATS because the system can't read the resume correctly, often for trivial reasons like the wrong file format or missing keywords.&lt;/p&gt;

&lt;p&gt;So everyone knows the filter is broken. Employers know it. Candidates know it. And yet the volume problem is so severe that no one can process applications manually at scale, so the broken filter stays in place.&lt;/p&gt;

&lt;p&gt;The candidates who do clear the ATS aren't necessarily the most qualified either. They've learned to game the inputs. The process selects for optimization, not talent.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Made the Volume Problem Exponentially Worse
&lt;/h2&gt;

&lt;p&gt;If the ATS problem was bad before, AI tools turned it into a crisis. On two different fronts.&lt;/p&gt;

&lt;p&gt;On the one side you have AI-powered ATS tools that may or may not know exactly what a company is looking for and may leave many a good candidate out in the rain.&lt;/p&gt;

&lt;p&gt;On the other hand, you now have more "perfect" looking resumes and cover letters circulating the web fuzzing up the hiring landscape.&lt;/p&gt;

&lt;p&gt;The spray-and-pray approach to job hunting, once limited by the sheer time and effort required to write individualized applications, is now nearly frictionless. Tools exist that can generate customized cover letters and tweak resumes for specific job descriptions in seconds. The result is that application volumes have exploded while the signal quality has collapsed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Entry-Level Squeeze
&lt;/h2&gt;

&lt;p&gt;If you're early in your career, the situation is particularly worse.&lt;/p&gt;

&lt;p&gt;New graduates in 2025 face the most constrained entry-level labor market in five years, according to &lt;a href="https://www.cengagegroup.com/news/press-releases/2025/cengage-group-2025-employability-report/" rel="noopener noreferrer"&gt;Cengage Group's 2025 Graduate Employability Report&lt;/a&gt;. 33% of 2025 graduates and 20% of 2024 graduates are unemployed and actively seeking work. Only 30% of 2025 graduates find jobs in their field.&lt;/p&gt;

&lt;p&gt;The reasons are structural, not cyclical. Entry-level roles are now competing with a broader applicant pool than ever, experienced workers who are willing to take a step back to break into a new industry, or who simply need a paycheck while they regroup.&lt;/p&gt;

&lt;p&gt;The unemployment rate for recent graduates hit a high of 5.3%, the highest it had been in three years.&lt;/p&gt;

&lt;p&gt;Meanwhile, the skills gap is real as well. &lt;a href="https://blog.hiringthing.com/2025-job-application-statistics-updated-data-you-need-to-know" rel="noopener noreferrer"&gt;48% of recent graduates feel unprepared to apply for entry-level positions&lt;/a&gt;, and 56% of those who feel unprepared cite job-specific skills as their biggest gap.&lt;/p&gt;

&lt;p&gt;That's genuinely good news for career changers though. It's cold comfort for fresh graduates who graduated expecting their degree to open doors and are finding it's no longer enough on its own.&lt;/p&gt;

&lt;h2&gt;
  
  
  So What Actually Works Now?
&lt;/h2&gt;

&lt;p&gt;The honest answer is that volume-based job searching, the spray-and-pray approach, is close to dead at this point. The math doesn't work in your favor. Thirty focused, customized applications will outperform three hundred generic ones every single time. Here's what the data and practitioners consistently point to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Get a referral.&lt;/strong&gt; This has always been the single most effective path to an interview, and the advantage has only grown. An internal referral doesn't just help your odds, it bypasses the algorithmic screening entirely and puts your application in front of a human being before the ATS has a chance to reject you for a formatting quirk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lead with evidence, not credentials.&lt;/strong&gt; A portfolio, a GitHub repo, a case study, a published article, a project with measurable results, anything that lets a recruiter understand in ten seconds what you actually do. In a world where everyone has a degree and a list of job titles, tangible evidence of output is a rare differentiator.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be visible before you're applying.&lt;/strong&gt; The best interview conversations start before a role is ever posted. Writing in public, speaking at events, being active in professional communities, building a reputation in your specific niche, these create relationships that turn into referrals, warm introductions, and direct outreach from hiring managers. The goal is to be the person they already want before they post the job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Target aggressively, apply sparingly.&lt;/strong&gt; Know the companies you want to work for. Understand their business problems. Customize every application as if it's the only one you're sending. Generic is invisible. Specific is memorable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Treat the ATS as a first exam, not a bureaucratic obstacle.&lt;/strong&gt; Mirror language from the job description. Use standard formatting. Make sure your resume can be parsed cleanly. Recognize that the first reader of your application is a machine, and machines need clear inputs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Looking Forward
&lt;/h2&gt;

&lt;p&gt;None of this is happening in isolation. The Bureau of Labor Statistics projects the U.S. economy will add &lt;a href="https://www.bls.gov/emp/" rel="noopener noreferrer"&gt;5.2 million jobs&lt;/a&gt; from 2024 to 2034, with healthcare and social assistance growing fastest, and professional and technical services including AI-related roles close behind. Jobs are being created. The market isn't contracting.&lt;/p&gt;

&lt;p&gt;What's contracting is the signal-to-noise ratio. The same technological forces that are displacing jobs are also making it easier than ever to apply for them, flooding the system with volume that no hiring process was designed to handle.&lt;/p&gt;

&lt;p&gt;The tools that were supposed to make hiring more efficient (ATS, AI screening, one-click applications) have instead created a new layer of chaos that disadvantages everyone: companies that can't find great candidates, and candidates who can't get in front of the humans making decisions.&lt;/p&gt;

&lt;p&gt;The job market in 2026 is noisy. The candidates getting interviews have figured out how to be a clear signal in a sea of static, through relationships, through evidence, through specificity.&lt;/p&gt;

&lt;p&gt;The only question now is how long it will take before more people change how they search. And how many opportunities they'll miss in the meantime.&lt;/p&gt;

</description>
      <category>career</category>
    </item>
    <item>
      <title>Every Developer Is Essentially Always On-Call</title>
      <dc:creator>Walter G.</dc:creator>
      <pubDate>Tue, 07 Oct 2025 20:18:50 +0000</pubDate>
      <link>https://forem.com/thatsoftwaredude/every-developer-is-essentially-always-on-call-4lnl</link>
      <guid>https://forem.com/thatsoftwaredude/every-developer-is-essentially-always-on-call-4lnl</guid>
      <description>&lt;p&gt;I've recently come across several articles and videos titled "What it's like to be an on-call software developer" or "The harsh truths of being on-call." That framing puzzles me a bit.&lt;/p&gt;

&lt;p&gt;Throughout my 20+ year career, being on-call has been an implicit expectation of the role, irrespective of employment contracts, company policies, holidays, or weather conditions.&lt;/p&gt;

&lt;p&gt;Because despite what your employment contract says about "standard business hours", as a developer, issues don't wait for you to clock in.&lt;/p&gt;

&lt;p&gt;Not officially, not contractually, not morally or ethically, but practically and inevitably, you are always on call.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Myth of the 9-to-5
&lt;/h2&gt;

&lt;p&gt;Remember when you could clock out at 5 PM and genuinely disconnect from any and all work? Neither do I, because as far back as I can remember, work has never been done.&lt;/p&gt;

&lt;p&gt;And this isn't "new" or simply just an artifact of a broken employment system. College and university required all-nighters in the computer labs. High school gave rise to bizarre sleep schedules for most everybody. We've always had a rough relationship with our work and the professional world isn't any different.&lt;/p&gt;

&lt;p&gt;Here's what actually happens in the modern dev ecosystem:&lt;/p&gt;

&lt;p&gt;A critical bug that surfaces at 10 PM on a Friday, one that's leaking customer data or impacting conversion rates, doesn't wait for Monday morning.&lt;/p&gt;

&lt;p&gt;It demands attention regardless of your plans, and often before anyone else has even noticed it.&lt;/p&gt;

&lt;p&gt;In my experience, most developers instinctively do the right thing. I've responded to countless off-hours incidents myself, and long before I took on that responsibility, I watched senior developers around me addressing issues around the clock as a matter of course.&lt;/p&gt;

&lt;p&gt;The real question is never whether to address it, but when. Does this need to be resolved in the next five minutes, or can it wait a few hours until you're at your desk?&lt;/p&gt;

&lt;p&gt;I frequently get pinged on my phone at 3am letting me know that one of the many servers I run is down and can't get up. I think it has something to do with maintenance tasks that run after midnight (of course). And there's only been a handful of times where I've pretended I was dreaming and went back to sleep.&lt;/p&gt;

&lt;p&gt;Most of the time, I mechanically reach my hand over to the table next to my bed, and I open up my fast-booting laptop and I reset the server.&lt;/p&gt;

&lt;h2&gt;
  
  
  The New Social Contract
&lt;/h2&gt;

&lt;p&gt;This article isn't about toxic work culture though. It's about the fundamental nature of software development in 2025. We've built systems so complex and interconnected that the traditional boundaries between "work time" and "personal time" have become artificial constructs.&lt;/p&gt;

&lt;p&gt;Consider this: When AWS goes down, do their engineers say "sorry, I'll look at this Monday morning", while the entire north-east quadrant of the country goes down? When your startup's payment processing fails during a product launch, do you tell your CEO it'll have to wait until business hours? Of course not.&lt;/p&gt;

&lt;p&gt;We're professionals and that carries a certain responsibility.&lt;/p&gt;

&lt;p&gt;The moment you became the person who "knows how the authentication service works" or "understands the deployment pipeline," you became the human single point of failure. Your expertise created an invisible tether to the systems you've built.&lt;/p&gt;

&lt;p&gt;And that's not a bad thing. Rising the ranks and climbing the corporate ladder means exactly this. You become the point of contact for a software system and your role is indispensable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Uncomfortable Economics
&lt;/h2&gt;

&lt;p&gt;Let's talk money, because that's what makes this really controversial.&lt;/p&gt;

&lt;p&gt;Most developers are paid salaries, not hourly wages. Theoretically, this means you're compensated for getting the job done, not for punching a time clock. But here's the kicker: tech salaries are premium precisely because the role includes this implicit around the clock availability.&lt;/p&gt;

&lt;p&gt;You're not just paid to write code from 9-5. You're paid to own the problem.&lt;/p&gt;

&lt;p&gt;That's why a senior developer makes $150K+ while other professions with similar education requirements top out at $80K. The salary premium isn't just for your technical skills, it's hazard pay for being perpetually on standby.&lt;/p&gt;

&lt;p&gt;Companies know this, even if they won't say it explicitly. The unspoken deal is: "We'll pay you well above market rate for other jobs, and in exchange, you'll care about our systems like they're your own."&lt;/p&gt;

&lt;p&gt;Again, this isn't something that you're aware of during your first job. But you will pick up on it relatively quickly. Particularly if you are working on a complex system that generates substantial revenue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Modern Phones Don't Help
&lt;/h2&gt;

&lt;p&gt;Git notifications, Slack alerts, PagerDuty pings, server monitoring dashboards, they're all in your pocket, all the time. You can ignore them for a little while, but you can't forget about them forever. That little red notification badge isn't just an alert, it's a psychological weight.&lt;/p&gt;

&lt;p&gt;And the more skilled you become, the deeper you fall into this trap. Junior developers can legitimately say "I don't know how to fix that." and they'll usually be left alone. Senior developers can't. With great power comes great responsibility, and with great responsibility comes great sleep deprivation.&lt;/p&gt;

&lt;p&gt;You know that weird bug in the legacy codebase. You understand the quirks of the CI/CD pipeline. You're the one who can diagnose why the cache is behaving strangely. This knowledge makes you valuable, irreplaceable, and perpetually accountable.&lt;/p&gt;

&lt;p&gt;When I quit my first programming job, it wasn't long before my old managers rang me up because they couldn't figure out where the morning scheduled tasks were hosted. I was on-call, even when not working there anymore.&lt;/p&gt;

&lt;h2&gt;
  
  
  But Wait, There's More
&lt;/h2&gt;

&lt;p&gt;Here's where I'll really lose some of you: &lt;strong&gt;This isn't a bad thing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The always-on nature of development has created unprecedented opportunities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rapid iteration cycles that let us ship features in days, not months&lt;/li&gt;
&lt;li&gt;Global collaboration that accelerates innovation&lt;/li&gt;
&lt;li&gt;Remote work flexibility that lets you live anywhere&lt;/li&gt;
&lt;li&gt;High compensation that reflects your true value to the organization&lt;/li&gt;
&lt;li&gt;Continuous learning that keeps the job intellectually stimulating&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The traditional 9-to-5 job offers security and boundaries, but it also offers stagnation and limited upside. The always-on developer lifestyle offers chaos and responsibility, but also growth and outsized rewards.&lt;/p&gt;

&lt;p&gt;The world can only enjoy the many innovations that we have today, because engineers worldwide stayed the extra hours, had one more cup of coffee and pushed towards that advancement.&lt;/p&gt;

&lt;p&gt;Every developer is essentially always on call because we've built a world that depends on software, and software depends on developers. Fighting this reality is like fighting gravity, you'll tire yourself out and change nothing.&lt;/p&gt;

&lt;p&gt;The question isn't whether you're always on call (you are), but whether you're okay with that trade-off. Because it is a trade-off: traditional work-life boundaries in exchange for intellectual stimulation, high compensation, global opportunities, and the chance to build things that matter.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Some of us thrive in this environment. Others burn out. Neither response is wrong, they're just different.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But let's stop pretending that development is a 9-to-5 job. It's not, it never was, and it never will be. Once we accept that reality, we can start having honest conversations about compensation, boundaries, sustainability, and what it really means to be a professional software developer in 2025.&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Why "It Works on My Machine" Is The Biggest Lie We Tell Ourselves</title>
      <dc:creator>Walter G.</dc:creator>
      <pubDate>Fri, 08 Aug 2025 06:09:00 +0000</pubDate>
      <link>https://forem.com/thatsoftwaredude/why-it-works-on-my-machine-is-the-biggest-lie-we-tell-ourselves-2f49</link>
      <guid>https://forem.com/thatsoftwaredude/why-it-works-on-my-machine-is-the-biggest-lie-we-tell-ourselves-2f49</guid>
      <description>&lt;p&gt;After 20+ years as a software developer, I can attest that "it works on my machine" is still one of my most used catchphrases, even when I have a slight hint as to its inaccuracy. It's become a safety blanket in a sea of uncertainty and poorly refactored code.&lt;/p&gt;

&lt;p&gt;This five-word phrase has become the ultimate shield in code reviews, bug reports, and failed live demos. And for a good reason. It actually works.&lt;/p&gt;

&lt;p&gt;Most non-developers staring at a developers workstation will see a combination of IDE's, console windows, database monitoring tools and hidden YouTube videos slightly off screen. That chaos mixed with "it works on my machine" give off this aura of elevated complexity that most people would rather not be a part of.&lt;/p&gt;

&lt;p&gt;So 9 out 10 times, people will believe the excuse and assume that some cryptic ghost in the machine is the main cause of the issue and they'll leave us be. And our reward is that we save face and keep our hard earned credibility. At least until the next error springs up.&lt;/p&gt;

&lt;p&gt;However, let's be honest, most of the time, this statement is not actually true. And even when it is technically accurate, it's usually masking a deeper problem that we're too embarrassed or rushed to admit.&lt;/p&gt;

&lt;p&gt;We sometimes suck at testing.&lt;/p&gt;

&lt;p&gt;Let's start with the obvious. When you say "it works on my machine," what you often mean is "it worked on my machine that one time I tested the happy path with the expected variables." Did you test edge cases? Error conditions? Different input sizes? Network failures?&lt;/p&gt;

&lt;p&gt;Probably not...&lt;/p&gt;

&lt;p&gt;The truth is that most of us have a very generous definition of "works." We run our code a few times, see it produce the expected output for our carefully crafted test case, and declare victory. Meanwhile, there are seventeen different ways it could fail that we never even considered.&lt;/p&gt;

&lt;p&gt;And yes, this is where testing libraries and QA teams are worth their weight in gold. But these things aren't guaranteed at every workplace. I've only worked at 1 company that had a dedicated QA team and most codebases that I've had the pleasure of working on, were void of any test-driven development.&lt;/p&gt;

&lt;p&gt;More often than not, you are the sole tester. And that level of pressure is why "it works on my machine" is so popular. Because having to do thorough edge to edge testing takes a considerable amount of time and typically it isn't scheduled in to the weekly task list.&lt;/p&gt;

&lt;p&gt;Most developers working on mature codebases have to contend with hundreds of thousands of lines of code, written by 5-10 people throughout the years, poorly written documentation and an agile scrum meeting in the next few hours where they have to showcase yet another new feature that may or may not see the light of day.&lt;/p&gt;

&lt;p&gt;We're usually under pressure, juggling multiple tasks, and genuinely believe our changes are safe. At least safe enough for a deployment.&lt;/p&gt;

&lt;p&gt;The biggest issue isn't that code sometimes doesn't work. Because that's expected in any development environment. The biggest issue is that "it works on my machine" has become a conversation stopper instead of a conversation starter.&lt;/p&gt;

&lt;p&gt;When we say this phrase, we're essentially saying: "The problem is with your setup, not my code." It shifts responsibility away from us and onto the person reporting the issue. It's defensive rather than collaborative.&lt;/p&gt;

&lt;p&gt;And truth be told, in a world of Docker containers, CI pipelines, and cloud-based everything, “my machine” doesn't matter all that much anymore. Unless your machine is production, which, if it is, we have bigger problems. Then it’s irrelevant. The real question should always be: Does it work in the environment that actually matters?&lt;/p&gt;

&lt;p&gt;At its core, this excuse exposes something deeper about our craft though, and that's how fragile modern software can be. How a slight version mismatch in a dependency or a config file not checked into source control can bring the whole thing down. We're building with Lego bricks on top of Jenga towers, and every deploy is a dice roll.&lt;/p&gt;

&lt;p&gt;Still, maybe that’s the opportunity here. Instead of letting “it works on my machine” be the end of the conversation, we can treat it like a starting point. "Okay, it works locally. What’s different about staging? About production? Let’s dig." That turns a dead-end phrase into a debugging mindset.&lt;/p&gt;

&lt;p&gt;Because let’s be honest: the more times we say "it works on my machine," the more we train ourselves not to look deeper and to get sloppier with our deployments. And when the stakes are high, production outages, customer impact, reputation hits, that little phrase can go from harmless excuse to costly crutch.&lt;/p&gt;

&lt;p&gt;So maybe it's time we retire the phrase, or at least say it with an asterisk. “It works on my machine*, but let me actually help you figure out why it doesn’t on yours.”&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>softwaredevelopment</category>
      <category>watercooler</category>
    </item>
    <item>
      <title>You Can Still Succeed Without a FAANG Job</title>
      <dc:creator>Walter G.</dc:creator>
      <pubDate>Mon, 23 Jun 2025 19:18:07 +0000</pubDate>
      <link>https://forem.com/thatsoftwaredude/you-can-still-succeed-without-a-faang-job-3eml</link>
      <guid>https://forem.com/thatsoftwaredude/you-can-still-succeed-without-a-faang-job-3eml</guid>
      <description>&lt;p&gt;After more than two decades as a professional software developer, I've never set foot inside a FAANG company. When I taught at a coding bootcamp years ago, however, it seemed to be all some of my students could think about, the ultimate destination, the golden ticket that would validate their career pivot.&lt;/p&gt;

&lt;p&gt;I've received the recruiter emails, tackled the coding challenges, and even entertained the idea on multiple occasions. Yet each time an opportunity arose, I ultimately chose to walk away. This wasn't some contrarian stance or attempt to be different, I simply took an alternative path organically and decided to stay on it.&lt;/p&gt;

&lt;p&gt;And overall, I've found great success in doing so without having to battle it out with tens of thousands of candidates fiending for my position.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building Experience in the Corporate Trenches
&lt;/h2&gt;

&lt;p&gt;My journey led me through over a decade in traditional corporate environments, working with real teams on real products under real deadlines. I wasn't living the digital nomad lifestyle, building passion projects from exotic locations. I was in the trenches, doing the daily work of software development, just not at one of the Big Five.&lt;/p&gt;

&lt;p&gt;The opportunities to make the leap did present themselves. Recruiters reached out regularly, interviews were scheduled, and colleagues would occasionally ask, "Have you ever thought about Google?" But nothing ever compelled me to pull the trigger.&lt;/p&gt;

&lt;p&gt;The closest I came was an initial screening with a recruiter who outlined the gauntlet ahead: three months of interviews if I wanted to be considered for the position.&lt;/p&gt;

&lt;p&gt;He even sent me a giant list of coding challenges and data structure questions to brush up on. At this point, I was already 6-7 years into the field and had worked on various large scale applications. I was a senior developer for all intents and purposes. And the idea of having to sit through a barrage of linked list questions was not appealing in the least.&lt;/p&gt;

&lt;p&gt;Perhaps it was a cultural mismatch, or the prospect of becoming another cog in an enormous, hyper-efficient machine. Maybe I simply didn't want to start over in an environment where the rules were established by people I'd never meet and couldn't influence.&lt;/p&gt;

&lt;p&gt;Whatever the underlying reason, I remained where I was and built a career that I'm genuinely proud of.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Corporate Advantage: What You Gain Outside FAANG
&lt;/h2&gt;

&lt;p&gt;Working in traditional corporate environments offers a different kind of experience. One that even the most prestigious tech companies can't always replicate, at least not easily.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;End-to-end project ownership&lt;/strong&gt; becomes the norm. Rather than building isolated microservices, you're developing complete features and sometimes entire applications. &lt;/p&gt;

&lt;p&gt;You see projects through from conception to deployment, gaining a holistic understanding of the development lifecycle.&lt;/p&gt;

&lt;p&gt;In most jobs where I was hired as a senior developer, I typically found myself being the only developer on that particular website.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Versatility becomes essential.&lt;/strong&gt; One sprint you're debugging production issues, the next you're collaborating with the marketing team on feature requirements.&lt;/p&gt;

&lt;p&gt;This constant context-switching accelerates learning and builds a broader skill set than hyper-specialization ever could.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Individual impact is amplified.&lt;/strong&gt; You're not one developer among 200 React specialists, you're often &lt;em&gt;the&lt;/em&gt; developer for your domain. This pressure, while sometimes intense, forces rapid professional growth and builds confidence in your abilities.&lt;/p&gt;

&lt;p&gt;During one of my software developer jobs, I was the only C# developer in a pool of 200 developers, where most were specialized in PHP. Anytime the company acquired a new web application written in C#, I was brought in to be a part of that team temporarily to make sure that everything was up and running.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cross-departmental collaboration is standard.&lt;/strong&gt; Regular interaction with stakeholders outside engineering provides crucial business context.&lt;/p&gt;

&lt;p&gt;You understand how your code translates into business value and customer outcomes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Work-life balance remains intact.&lt;/strong&gt; Professional growth doesn't require grinding LeetCode problems after hours or sacrificing personal time to stay competitive.&lt;/p&gt;

&lt;p&gt;If you're currently &lt;strong&gt;the&lt;/strong&gt; sole engineer on a 20 million dollar application, you're more than likely catching more attention than someone who knows how to balance red black trees.&lt;/p&gt;

&lt;p&gt;Truth be told, at most &lt;em&gt;normal&lt;/em&gt; software companies where I've worked, I've rarely had to solve any cryptic riddles or niche algorithm challenges that never appear in real life.&lt;/p&gt;

&lt;p&gt;At most jobs, my experience was the forefront. What I've built, how I built it and how I manage and maintain those applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rapid iteration and feedback loops&lt;/strong&gt; characterize the development process. Your work goes live quickly, you see immediate results, and you learn faster through this shortened cycle.&lt;/p&gt;

&lt;p&gt;On the negative side though, you also tend to break more things on production, because of the lack of this formal scaffolding that big tech teams spend years optimizing.&lt;/p&gt;

&lt;p&gt;While some FAANG teams certainly offer similar experiences, they typically come with significant caveats and constraints.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Trade-offs of Scale
&lt;/h2&gt;

&lt;p&gt;In organizations with tens of thousands of employees, the fundamental nature of software development shifts. Everything becomes more segmented, more process-heavy, and more diluted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scope becomes artificially narrow.&lt;/strong&gt; You're hired to work on one specific slice of a larger system, and that's precisely where you stay. The breadth of experience that comes from working across multiple domains is sacrificed for deep specialization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feedback loops extend dramatically.&lt;/strong&gt; You implement a bug fix and then... wait. Layers of process, approval workflows, and rollout procedures create distance between your work and its impact. &lt;/p&gt;

&lt;p&gt;This extended cycle can be frustrating for developers who thrive on seeing immediate results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Process often supersedes speed.&lt;/strong&gt; More systems mean more approvals, which means more meetings. The infrastructure is undeniably robust and the colleagues are brilliant, but autonomy, visibility, and development velocity often become casualties.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Interview Industrial Complex
&lt;/h2&gt;

&lt;p&gt;Then there's the hiring process itself, a multi-stage marathon that has evolved into its own specialized discipline. Algorithmic whiteboarding sessions, system design panels, behavioral interviews, and culture-fit assessments all stand between candidates and positions that might involve maintaining internal tooling or fixing CSS bugs.&lt;/p&gt;

&lt;p&gt;Contrast this with the straightforward hiring processes common in traditional corporate environments. My first development role? A single thirty-minute conversation with the IT director, a handshake, and a start date the following week.&lt;/p&gt;

&lt;p&gt;Despite this streamlined entry point, I still became a capable engineer. I shipped products, resolved production outages, architected scalable systems, and mentored junior developers. No binary tree inversions were harmed in the making of this career.&lt;/p&gt;

&lt;p&gt;The FAANG interview process optimizes for test-taking ability rather than real-world engineering competence. Personally, I never had the bandwidth, or the inclination, to train for assessments so disconnected from the work I already knew how to do well.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choosing Your Own Path
&lt;/h2&gt;

&lt;p&gt;FAANG companies aren't inherently problematic. For the right person at the right moment in their career, they can provide extraordinary opportunities for growth, learning, and impact. The compensation is undeniably attractive, the technical challenges can be fascinating, and the networking opportunities are unparalleled.&lt;/p&gt;

&lt;p&gt;For me, however, the trade-offs never aligned with my priorities. I wasn't chasing external validation or industry prestige. I was focused on building a sustainable career on my own terms, with autonomy, variety, and direct impact on the products I helped create.&lt;/p&gt;

&lt;p&gt;And twenty years later, I remain comfortable with that choice.&lt;/p&gt;

&lt;p&gt;Would love to hear your thoughts.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>career</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Remote Work Leaves Junior Developers Behind</title>
      <dc:creator>Walter G.</dc:creator>
      <pubDate>Mon, 02 Jun 2025 18:31:43 +0000</pubDate>
      <link>https://forem.com/thatsoftwaredude/remote-work-leaves-junior-developers-behind-954</link>
      <guid>https://forem.com/thatsoftwaredude/remote-work-leaves-junior-developers-behind-954</guid>
      <description>&lt;p&gt;My very first gig as a professional software developer was around 2008 for a medium sized publishing agency. During the interview process I had to meet with the IT Director as one of the last bosses to land the job and his very last question before he signed off on it (or not) is a question that I still talk about today:&lt;/p&gt;

&lt;p&gt;"You know you have to show up everyday, right?"&lt;/p&gt;

&lt;p&gt;I thought it was a silly question for the most part. Of course I know that, it's a job. But the reason why he asked was because I had no prior work experience. Zero. This was my very first job of any kind. And the hesitation in his tone was clear. And he explained it as such.&lt;/p&gt;

&lt;p&gt;He said committing to showing up on time every single day for years on end isn't something younger employees really understood. And boy was he right.&lt;/p&gt;

&lt;p&gt;From day 1, there was so much more to my 'Developer' job than just development. In fact, I didn't really touch any code for weeks in the beginning. First I had to meet the other departments that I would inevitably end up working with. I had to read hundreds of pages of documentation, attend meetings, take notes, become support for non-technical departments, etc.&lt;/p&gt;

&lt;p&gt;But eventually I was allowed to start to contribute code and to have my commits accepted. And it made much more sense after having gone through this introductory phase.&lt;/p&gt;

&lt;p&gt;What I didn’t realize at the time was how much I was learning just by being there. Not just from the tasks themselves, but from proximity.&lt;/p&gt;

&lt;p&gt;I watched how senior developers handled requests under pressure. I overheard how product managers communicated deadlines. I learned how to read between the lines when QA flagged a “maybe-bug.” None of that was part of a formal onboarding doc. It was ambient learning, absorbed just by being in the room.&lt;/p&gt;

&lt;p&gt;Now imagine trying to get all of that through Slack and Zoom. It doesn’t happen as easily.&lt;/p&gt;

&lt;p&gt;That’s the gap I see growing in the remote era. We gave junior devs the same tools, but not the same access. Not to human behavior, not to decision-making processes, not to context. And without those, you’re not really learning how to be a developer, you’re learning how to be a ticket-closer.&lt;/p&gt;

&lt;p&gt;When I got stuck, I didn’t file a ticket or schedule a 30-minute sync. I stood up, walked five feet, and said, “Hey, can I show you something real quick?”&lt;/p&gt;

&lt;p&gt;That simple act, turning confusion into collaboration in seconds, is nearly extinct in remote-first environments. Today, junior developers might hesitate to “bother” someone that they can't directly see. They might sit on a bug for hours, second-guessing their approach, or draft a carefully worded Slack message only to get a reply the next morning: “Looks fine to me.”&lt;/p&gt;

&lt;p&gt;That delay compounds. Not just in productivity, but in confidence. You second-guess yourself more. You move slower. And worst of all, you stop asking questions.&lt;/p&gt;

&lt;p&gt;It’s not that remote work can’t support junior developers, it’s that most teams haven’t done the hard work of redesigning the mentorship layer. We tossed out proximity and didn’t replace it with anything close to being as effective as being in person.&lt;/p&gt;

&lt;p&gt;And no, weekly check-ins and Notion onboarding portals don’t cut it. You don’t get better at coding by reading about someone else’s architecture decisions. You get better by being inside the conversation when it’s happening.&lt;/p&gt;

&lt;p&gt;Looking back, I realize that what helped me grow the most in those early years wasn’t coding tasks or assigned tickets. It was everything that wasn’t in the job description: shadowing senior developers, picking up on team habits, and learning how a real software team functions day to day.&lt;/p&gt;

&lt;p&gt;Remote work has its place, absolutely. For mid-levels and seniors, it’s often more of a blessing than a curse. But for juniors? It can be a maze with no map.&lt;/p&gt;

&lt;p&gt;If we want remote work to actually work for them, we can’t just hand them a laptop and a Slack login. We need to rebuild the mentorship scaffolding from scratch. That means intentional pairing, real-time collaboration, visibility into decision-making, and a culture where asking questions is frictionless.&lt;/p&gt;

&lt;p&gt;Otherwise, we’re not really training the next generation of great software engineers. We're just waiting for them to slowly burn themselves out and to become disenfranchised with this technical craft.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>discuss</category>
      <category>career</category>
    </item>
    <item>
      <title>How Do You Actually Get Promoted to Senior Programmer?</title>
      <dc:creator>Walter G.</dc:creator>
      <pubDate>Mon, 12 May 2025 18:25:13 +0000</pubDate>
      <link>https://forem.com/thatsoftwaredude/how-do-you-actually-get-promoted-to-senior-programmer-4de7</link>
      <guid>https://forem.com/thatsoftwaredude/how-do-you-actually-get-promoted-to-senior-programmer-4de7</guid>
      <description>&lt;p&gt;The typical answer to the question of “How do I become ‘x’?” is more often than not a blank statement that sounds good on paper, but that doesn’t really give you any direct instructions.&lt;/p&gt;

&lt;p&gt;For example, you want to become a senior programmer? Well then, buckle down and show up daily and do the hard work and you will get there one day.&lt;/p&gt;

&lt;p&gt;None of that is wrong. You should do all of those things and more every single day. But more than likely you were already doing those things to some degree by default. So, while it sounds like useful advice, there is a good chance that it didn’t help you in any real way.&lt;/p&gt;

&lt;p&gt;So I won’t be reiterating those concepts here. I want to give real-world steps and processes that any developer can follow and that I myself followed as well in my 20 year career as a software engineer. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/thatsoftwaredude/its-not-ai-junior-developers-have-always-struggled-to-code-26gc"&gt;I’ve been a junior developer&lt;/a&gt; and I’ve been a senior developer and the path from one to the other isn’t exactly clear, but there have been common patterns that I've noticed in climbing my way up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Stand Out More
&lt;/h2&gt;

&lt;p&gt;To start, if you want to climb that corporate ladder and eventually get that Sr. prefix attached to your title, then you need to stand out in some shape, way or form. People at the top need to know your name, somehow.&lt;/p&gt;

&lt;p&gt;When you are first starting out as a programmer, this can be very difficult. For one, you’re new to a company, so odds are you won’t be getting the top-tier high profile projects in your to do list just yet.&lt;/p&gt;

&lt;p&gt;I know I didn’t. At my very first programming job right out of college, the projects assigned to me were essentially the tasks that none of the other developers had time to get to. &lt;/p&gt;

&lt;p&gt;That involved documentation, preparing reports for meetings, testing and debugging and not much else. I pretty much was under the radar for the first 6 months. And my documenting skills weren’t sharp enough to make up for it.&lt;/p&gt;

&lt;p&gt;I needed to stand out. At some point during my stay there, a new project began to make its appearance around the office and since all of the other developers were busy with their own work, I was asked if I wanted to take it on. &lt;/p&gt;

&lt;p&gt;I’ll say now, this was a large project with the CEO’s direct involvement and I would be the only person working on it for the course of 1 month. But it felt like if I wanted to break free of the tedious work assigned to me, that I needed to accept this request. And so I did.&lt;/p&gt;

&lt;p&gt;You can read about that challenging experience &lt;a href="https://www.thatsoftwaredude.com/content/8550/my-most-difficult-programming-task-to-date" rel="noopener noreferrer"&gt;over on my blog here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This wasn’t without risk of course. If you can finish the work in the allotted time and everything goes as planned, then for sure your name will circulate around the office and you might be able to consider yourself an office hero for some time.&lt;/p&gt;

&lt;p&gt;But if you fall short and the project is late for any reason, or even worse, if you fail to complete it, then your name might still circulate around the office, just not for the right reasons.&lt;/p&gt;

&lt;p&gt;I personally did manage to finish this project and the company thanked me with extra paid time off and several congratulations from various managers and developers. From that moment on whenever a high profile project appeared on the managers desk, my name was on the list to work on it.&lt;/p&gt;

&lt;p&gt;I wasn't quite "senior" yet, but the foundation was being laid.&lt;/p&gt;

&lt;p&gt;But if you think that one month of hard work will propel you to the VIP meetings at your company, then you might still be missing the mark. Not every project will go smoothly and get your name placed on the leader board. &lt;/p&gt;

&lt;p&gt;At some point, you will miss deadlines or delete a database or bring the company website down. I’ve done all those things, to some extent. So there’s still more work that needs to be done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Be a Team Player
&lt;/h2&gt;

&lt;p&gt;Besides taking on more and more complex assignments and tasks in the hopes that managers begin to remember your name, you also need to get your team to know that they can rely on you when things get tough. Like with any partnership, that takes time and work.&lt;/p&gt;

&lt;p&gt;The best way to show that you are a team player is to actively be a part of your group. That may sound obvious, because it is. But I’ve worked with plenty of developers in my day that would show up at 9am and that would be out the door by 4:59pm without hesitation. They wouldn’t stay to socialize and working any extra time was not in the cards.&lt;/p&gt;

&lt;p&gt;There is nothing wrong with that of course. We are all free to do as we wish. But when the servers go down at 4pm on a Friday evening, I can assure you that senior developers and lead developers are probably sitting back down to find the issue without hesitation. &lt;/p&gt;

&lt;p&gt;In my career, I’ve found it incredibly fruitful to be one of those that stays behind to help out (even if you can't). Not only because you might be helping the other senior developers in some small way, but because you also get more exposure to parts of an application that you wouldn’t otherwise get.&lt;/p&gt;

&lt;p&gt;And it’s that extra supplemental knowledge that really turns someone from a junior into a more experienced senior developer at the end of the day. I still remember the first time that I volunteered to stay late with my team during a late night deployment. I didn’t do much in terms of the actual work, as I was still relatively new. But I helped where I could with testing and debugging and people remembered me more for that reason.&lt;/p&gt;

&lt;p&gt;This ties in to what I mentioned earlier as well. The more your name circulates around the office, the more opportunities that you will have when it comes to taking on projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Jack of all Trades
&lt;/h2&gt;

&lt;p&gt;And lastly, a senior developer has to have a substantial amount of knowledge in a wide range of areas, not just programming in a specific language. This includes database management, server management, fundamental networking concepts and even project management skills. And that right there, takes time.&lt;/p&gt;

&lt;p&gt;I personally did not get any real server management experience until my second job as a web developer. During my first job, a dedicated system admin handled most of those requests and I wasn't allowed near any server.&lt;/p&gt;

&lt;p&gt;I did however spend a fair amount of time working with databases during my first job. And because of my experience with database management and reporting, I was frequently brought in to different departments at my second job to help fill in the knowledge gaps where I could.&lt;/p&gt;

&lt;p&gt;I was also fairly skilled at ASP.NET Deployments, due to my first job being .NET heavy. And this knowledge made me a fan favorite at my second job, where most developers were working with PHP and Apache.&lt;/p&gt;

&lt;p&gt;All to say, that the more experience you have in different facets of software development, the more visibility you will have in a company setting.&lt;/p&gt;

&lt;p&gt;I started off this article by stating that buckling down, showing up daily and doing the work is essentially a must for any kind of career growth, but that few people actually explain what those words mean. &lt;/p&gt;

&lt;p&gt;I hope that I was able to convey a bit more meaning behind those often spoken phrases that we hear so often.&lt;/p&gt;

&lt;p&gt;In this particular case, it means taking on more complex projects whenever possible, risking looking bad if things go south and helping out your team as often as you can in order to help both them and yourself. And more importantly to learn as much as you can during those critical early years.&lt;/p&gt;

&lt;p&gt;If you follow those steps, inevitably the senior prefix will get associated with your name and once that happens it’s yours to keep for as long as you work in this field.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>career</category>
    </item>
    <item>
      <title>How Do You Really Become a Senior Programmer?</title>
      <dc:creator>Walter G.</dc:creator>
      <pubDate>Mon, 17 Mar 2025 18:30:22 +0000</pubDate>
      <link>https://forem.com/thatsoftwaredude/how-do-you-really-become-a-senior-programmer-58m0</link>
      <guid>https://forem.com/thatsoftwaredude/how-do-you-really-become-a-senior-programmer-58m0</guid>
      <description>&lt;p&gt;Most career advice sounds great on paper but lacks actionable steps.&lt;br&gt;
The typical answer to the question of “How do I become a senior developer?” is more often than not a blank statement that doesn’t really give you any direct instructions.&lt;/p&gt;

&lt;p&gt;For example, you want to become a senior programmer? Well then, buckle down and show up daily and do the hard work and you will get there one day.&lt;/p&gt;

&lt;p&gt;None of that is wrong. You should do all those things and more. But more than likely you were already doing those things to some degree. So, while it sounds like useful advice, there is a good chance that it didn’t help you in any real way.&lt;/p&gt;

&lt;p&gt;So I won’t be reiterating those concepts here. I want to give real-world steps and processes that any developer can follow and that I myself followed as well in my 20 year career as a software engineer. &lt;/p&gt;

&lt;p&gt;I’ve been a junior developer and I’ve been a senior developer and the path from one to the other isn’t exactly clear, but there have been common patterns in how I’ve managed to work my way up.&lt;/p&gt;

&lt;h2&gt;
  
  
  You need to stand out
&lt;/h2&gt;

&lt;p&gt;Climbing the corporate ladder isn’t just about showing up. It’s about getting noticed. If you want that Sr. prefix next to your name, you need to make an impact.&lt;/p&gt;

&lt;p&gt;But here’s the catch, when you're first starting out, you're at the bottom of the totem pole. High-profile projects? Those are usually handed to the senior developers. Instead, you’ll likely get the leftover tasks.&lt;/p&gt;

&lt;p&gt;At my very first programming job right out of college, the projects assigned to me were essentially the tasks that none of the other developers had time to get to. &lt;/p&gt;

&lt;p&gt;That involved documentation, preparing reports for meetings, testing and debugging and not much else really. I pretty much was under the radar for the first few months. And my documenting skills weren’t sharp enough to make up for it.&lt;/p&gt;

&lt;p&gt;I had to stand out.&lt;/p&gt;

&lt;p&gt;Then came my chance. A new project surfaced in the office, and every senior developer was already swamped. No one had the bandwidth to take it on. So, I stepped up.&lt;/p&gt;

&lt;p&gt;This wasn’t just any project though. It had direct CEO involvement, and I was the only developer assigned to it. One month. No safety net. And to top things off, I had zero experience in the tech stack chosen by my higher ups.&lt;/p&gt;

&lt;p&gt;The stakes? High. Nail it, and my name would be all over the office, in a good way. Mess it up? Well, my name would still be all over the office… just for the wrong reasons.&lt;/p&gt;

&lt;p&gt;I did manage to finish this project and the company thanked me with extra paid time off and several congratulations from various managers and developers. &lt;/p&gt;

&lt;p&gt;From that moment on whenever a high profile project appeared on the managers desk, my name was on the list to work on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Being a team player
&lt;/h2&gt;

&lt;p&gt;One big project won’t rocket you into VIP meetings. Success isn’t just about landing high-profile work but more about consistency.&lt;/p&gt;

&lt;p&gt;Because here’s the truth. You will mess up. You’ll miss deadlines. You might even delete a database or take down the company website (I've done those things). And when that happens, what really matters isn’t the mistake, it’s how your team sees you afterward.&lt;/p&gt;

&lt;p&gt;Becoming a senior developer isn’t just about tackling bigger challenges, it’s about being someone your team can count on. When things go sideways, do they turn to you? Or do they see you as just another dev punching the clock?&lt;/p&gt;

&lt;p&gt;Building that trust takes time, effort, and showing up when it counts.&lt;/p&gt;

&lt;p&gt;The best way to show that you are a team player is to actively be a part of your team. That may sound obvious, because it is. But I’ve worked with plenty of developers in my day that would show up at 9am and that would be out the door by 4:59pm without hesitation. &lt;/p&gt;

&lt;p&gt;They wouldn’t stay to socialize and working any extra time was not in the cards.&lt;/p&gt;

&lt;p&gt;There is nothing wrong with that. We are all free to do as we wish. But when the servers go down at 4pm on a Friday evening, I can assure you that senior developers and lead developers are probably sitting back down to find the issue without hesitation. &lt;/p&gt;

&lt;p&gt;In my career, I’ve found it incredibly fruitful to be one of those that stays behind to help out. Not only because you might be helping the other senior developers in some small way (maybe), but because you also get more exposure to parts of your company that you wouldn’t otherwise get.&lt;/p&gt;

&lt;p&gt;And it’s that extra supplemental knowledge that really turns someone from a junior into a more experienced senior developer at the end of the day.&lt;/p&gt;

&lt;p&gt;I still remember the first time that I volunteered to stay late with my team during a late night deployment. I didn’t do much in terms of the actual work, as I was still relatively new. But I helped where I could with testing and debugging and people remembered me more for that reason.&lt;/p&gt;

&lt;h2&gt;
  
  
  Master of none (but knows a bit of everything)
&lt;/h2&gt;

&lt;p&gt;A senior developer isn’t just a coding machine. To truly level up, you need to understand the bigger picture. That being databases, servers, networking and even project management.&lt;/p&gt;

&lt;p&gt;And here’s the kicker. You won’t learn it all at once.&lt;/p&gt;

&lt;p&gt;I didn’t touch server management until my second job. My first company had a dedicated sysadmin, so I never had to deal with it. But I did spend a lot of time knee-deep in databases, which ended up being just as valuable.&lt;/p&gt;

&lt;p&gt;Often times when a second pair of eyes were needed in another department in order to debug an issue, I would also volunteer myself, just to see if I could either help or if I could learn something new in the process.&lt;/p&gt;

&lt;p&gt;Your learning speed isn’t always about how hard you work but is often shaped by your company's structure. Some places throw juniors into the deep end, while others keep them in a bubble. The key? Stay curious.&lt;/p&gt;

&lt;p&gt;Volunteer for things outside your comfort zone. The more you branch out, the faster you'll grow.&lt;/p&gt;




&lt;p&gt;I started off this article by stating that buckling down, showing up daily and doing the work is a must for any kind of career growth, but that few people actually explain what those words mean. I hope that I was able to convey a bit more meaning behind those often spoken phrases that we hear so often.&lt;/p&gt;

&lt;p&gt;In this particular case, it means taking on more complex projects whenever possible, risking looking bad if things go south and helping out your team as often as you can in order to help both them and yourself.&lt;/p&gt;

&lt;p&gt;And more importantly to learn as much as you can during those critical early years.&lt;/p&gt;

&lt;p&gt;If you follow those steps, inevitably the senior prefix will get associated with your name and once that happens it’s yours to keep for as long as you work in this field.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>career</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
    <item>
      <title>A Beginner's Guide to Prompt Engineering</title>
      <dc:creator>Walter G.</dc:creator>
      <pubDate>Mon, 10 Mar 2025 15:59:28 +0000</pubDate>
      <link>https://forem.com/thatsoftwaredude/a-beginners-guide-to-prompt-engineering-4hih</link>
      <guid>https://forem.com/thatsoftwaredude/a-beginners-guide-to-prompt-engineering-4hih</guid>
      <description>&lt;p&gt;For the past few years people in the AI community have been promoting that prompt engineering is the future and the only career option you'll soon have. And if you don't learn it now, you're going to be out of luck when finding a job.&lt;/p&gt;

&lt;p&gt;As someone who's been spending the past few months working on a new AI startup, I can say that it definitely is a complex skill to acquire and to get good at.&lt;/p&gt;

&lt;p&gt;So in this post I'll break down much of what I've learned. The more technical side of prompt engineering that often doesn't get talked about. We're talking structured schemas, tokenization, temperature and parameter configurations. The fun stuff.&lt;/p&gt;

&lt;h2&gt;
  
  
  What people think it is
&lt;/h2&gt;

&lt;p&gt;Let's start here, because I often talk to many people that proclaim they are prompt engineering, but really, they're just typing prompts into ChatGPT and then storing them in an Excel sheet.&lt;/p&gt;

&lt;p&gt;Technically not 'wrong', but I'd consider that maybe a Jr. level prompt engineer. The following is indeed a prompt that I engineered.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Write a JavaScript function that validates an email :)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And on the more complex side, you often times see massive prompts that span thousands of tokens with the hope that the output is somehow 100% perfect.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Modern Next.js Portfolio Site Template

Please create a modern, responsive portfolio website using Next.js 14
 with the following specifications:

## Project Structure
- Use the Next.js App Router
- Implement TypeScript for type safety
- Structure the project with the following directories:
  - app/ (for routes and layouts)
  - components/ (reusable UI components)
  - lib/ (utility functions and configurations)
  - public/ (static assets)
  - styles/ (global styles and CSS modules)
...hundreds of lines more...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There's a chance that you'll actually end up with a more accurate response in the simple prompt above than the complex one. I've seen plenty of long-form prompts online that claim to do miracles, like build and launch an entire SaaS product in an hour. But when you actually go and paste that prompt into any model, the results are random and chaotic at best.&lt;/p&gt;

&lt;p&gt;Now that we've covered the common misconceptions, let's dive into the core technical components that truly define prompt engineering&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the models
&lt;/h2&gt;

&lt;p&gt;Every AI company implements their own models, versions, and modalities. Some offer multimodal capabilities spanning text, speech, and image recognition, while others specialize in text-only processing but may excel in particular domains.&lt;/p&gt;

&lt;p&gt;Context window sizes vary dramatically between models—some only accept up to 4,096 tokens, while others handle 100,000 or more. However, a larger context window doesn't automatically guarantee better results. Smaller context models can sometimes deliver more focused responses for specific tasks, while larger models can maintain comparable accuracy while processing much more information.&lt;/p&gt;

&lt;p&gt;When comparing model quality, specialization matters. Domain-specific models trained on relevant data often outperform general-purpose models on targeted tasks, even with fewer parameters or smaller context windows.&lt;/p&gt;

&lt;p&gt;Pricing structures also differ significantly across providers. More expensive models don't necessarily deliver higher accuracy; sometimes you're paying for faster inference times, higher reliability, specialized knowledge, or enhanced capabilities rather than raw performance. &lt;/p&gt;

&lt;p&gt;The optimal choice depends on your specific use case, required response quality, and operational constraints.&lt;/p&gt;

&lt;h3&gt;
  
  
  Costs
&lt;/h3&gt;

&lt;p&gt;If you're doing all of your prompt engineering on a browser client, like ChatGPT or Claude or Gemini, then your costs are essentially the monthly subscription fee.&lt;/p&gt;

&lt;p&gt;If your using any of the API's however, then pricing can get tricky. Most providers offer different tiers of pricing depending on the specific model that you use.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.anthropic.com/en/docs/about-claude/models" rel="noopener noreferrer"&gt;Anthropic API models and pricing&lt;/a&gt;&lt;br&gt;
&lt;a href="https://openai.com/api/pricing/" rel="noopener noreferrer"&gt;OpenAI models and pricing&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And pretty much every provider charges based on the number of tokens that you're using per request. For most developers just getting started, the pricing is typically so low that you won't have to stress too much.&lt;/p&gt;

&lt;p&gt;As an example, running a few dozen tests per day with moderate token sizes costs me a few cents on average.&lt;/p&gt;

&lt;p&gt;But if you know that you're going to be pushing volume at some point, then you definitely need to take this into consideration when creating your prompts.&lt;/p&gt;

&lt;p&gt;Most people don't realize that the input prompt goes towards your token limit, meaning if you have a 2000 token prompt, then you only have 2096 tokens left for output (on a 4096 max model).&lt;/p&gt;
&lt;h3&gt;
  
  
  Tokenization
&lt;/h3&gt;

&lt;p&gt;Tokenization is how AI models break down text into processable units called tokens. These tokens serve as the fundamental building blocks that language models can understand and manipulate.&lt;/p&gt;

&lt;p&gt;From a technical standpoint, tokens vary significantly across models. A token might represent a single character, a complete word, a word fragment, or even punctuation. This variability stems from each model's specific tokenization algorithm, which is designed to optimize processing efficiency and language understanding.&lt;/p&gt;

&lt;p&gt;For example, the sentence "I love programming" might be tokenized as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;["I", " love", " programming"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;While a complex word like "unbelievable" might be broken down as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;["un", "believ", "able"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understanding tokenization becomes crucial when working with models that have token limits. These limits constrain how much text you can include in a single prompt (input) and how much the model can generate in response (output).&lt;/p&gt;

&lt;p&gt;English text typically averages about 0.75 tokens per word, but this ratio varies by language and writing style. Technical content with specialized terminology often consumes more tokens than conversational text.&lt;/p&gt;

&lt;p&gt;Token usage directly impacts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Costs&lt;/strong&gt;: Most commercial AI services charge by token count&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Response time&lt;/strong&gt;: Longer prompts generally take more time to process&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Context utilization&lt;/strong&gt;: Effective use of available context window&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Prompt engineers often need to balance comprehensiveness with conciseness, crafting prompts that provide sufficient guidance while minimizing token consumption. This becomes particularly important when working with complex tasks requiring detailed instructions or when processing large documents within token limitations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Temperature
&lt;/h3&gt;

&lt;p&gt;Temperature is a key parameter that controls the randomness and creativity in AI-generated text. Ranging typically from 0 to 1 (or sometimes 0 to 2), this setting fundamentally alters how the model selects its next tokens when generating responses.&lt;/p&gt;

&lt;p&gt;At a &lt;strong&gt;low temperature&lt;/strong&gt; (0-0.3):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The model becomes highly deterministic, consistently selecting the most probable tokens&lt;/li&gt;
&lt;li&gt;Responses are more predictable, factual, and conservative&lt;/li&gt;
&lt;li&gt;Ideal for tasks requiring accuracy and consistency: factual Q&amp;amp;A, technical documentation, or logical reasoning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At a &lt;strong&gt;medium temperature&lt;/strong&gt; (0.4-0.7):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The model balances predictability with variety&lt;/li&gt;
&lt;li&gt;Outputs maintain coherence while introducing some creative elements&lt;/li&gt;
&lt;li&gt;Well-suited for conversational interfaces, explanations, and general-purpose applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At a &lt;strong&gt;high temperature&lt;/strong&gt; (0.8-1.0+):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The model explores lower-probability token selections&lt;/li&gt;
&lt;li&gt;Responses become more diverse, surprising, and creative&lt;/li&gt;
&lt;li&gt;Excellent for creative writing, brainstorming, poetry, and unconventional thinking&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Temperature doesn't just affect creativity. It impacts the risk profile of your applications. Higher temperatures can produce more engaging content but may also increase the likelihood of errors, logical inconsistencies, or off-topic diversions.&lt;/p&gt;

&lt;p&gt;The optimal temperature setting depends heavily on your specific use case and quality requirements. For mission-critical applications, consider implementing human review for high-temperature outputs or using multiple generation attempts with varied temperatures and selecting the best result.&lt;/p&gt;

&lt;h3&gt;
  
  
  Handling Edge Cases in AI Systems
&lt;/h3&gt;

&lt;p&gt;Edge cases represent the boundary conditions where AI systems are most likely to fail or produce unexpected results. While your prompt engineering might work flawlessly 90% of the time, that remaining 10% can significantly impact user experience, reliability, and the overall viability of your application.&lt;/p&gt;

&lt;p&gt;For production-grade applications with substantial user bases, addressing these edge cases becomes critical. Consider implementing:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt Guardrails:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Include explicit instructions to handle known problematic patterns&lt;/li&gt;
&lt;li&gt;Provide clear format specifications: "Return only JSON with these exact keys..."&lt;/li&gt;
&lt;li&gt;Set boundaries on content: "Provide exactly three recommendations, no more and no less"&lt;/li&gt;
&lt;li&gt;Add fail-safe instructions: "If you're uncertain about any answer, acknowledge this uncertainty"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Post-Processing Validation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implement programmatic validation of AI outputs before displaying them to users&lt;/li&gt;
&lt;li&gt;Verify structural integrity (JSON parsing, expected fields)&lt;/li&gt;
&lt;li&gt;Check content against business rules and constraints&lt;/li&gt;
&lt;li&gt;Sanitize outputs to remove potentially harmful or malformed content&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Robust Error Handling:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Develop graceful fallback mechanisms when the AI response doesn't meet quality thresholds&lt;/li&gt;
&lt;li&gt;Consider multi-pass approaches where initial outputs are refined through follow-up prompts&lt;/li&gt;
&lt;li&gt;Implement automatic retry logic with modified prompts when failures are detected&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Remember that even with extensive guardrails, some edge cases will inevitably emerge in production. &lt;/p&gt;

&lt;p&gt;Design your systems with the assumption that AI components will occasionally fail, and ensure these failures don't compromise the core user experience or system integrity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contextual priming
&lt;/h2&gt;

&lt;p&gt;Priming is a technique used to guide an AI models responses by providing some kind of relevant background information that it may need. It's important to remember that AI models don't have memory by default, and your prompt should contain any and all data needed in order to produce a specific output.&lt;/p&gt;

&lt;p&gt;So if you're writing a prompt that helps someone to learn quantum physics, instead of writing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Explain quantum physics"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You would rather prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"Explain quantum physics to a high school 
student using simple language and focus on superposition"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first prompt above might return an overly complex explanation that gives a bad user experience, while the more specific prompt primes the model ahead of time, in order to produce a more directive response.&lt;/p&gt;

&lt;p&gt;You can also prime the model by giving it a specific persona as well, such as a known figure or a known role:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Take on the role of a quantum physics 
professor, who uses humor to teach complex topics.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Few-shot learning
&lt;/h2&gt;

&lt;p&gt;Few-shot learning is a technique used to improve the accuracy of a response by giving the model a few examples in order to teach it how to output content in a specific way.&lt;/p&gt;

&lt;p&gt;The more examples that you give, the better the chance that you'll get a response closer to what you are looking for.&lt;/p&gt;

&lt;p&gt;And you can do so by specifying any sample input that's required, and the expected output of that sample input, followed by the real data and a placeholder for the output.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sample Transcript: "The CEO emphasized the importance 
of customer satisfaction. 
A new product line will be introduced 
in Q2, and employees are encouraged 
to share ideas for innovation."
Key Points:

Customer satisfaction is a top priority.
A new product line will be launched in Q2.
Employees are encouraged to contribute innovative ideas.
Transcript: {transcript}
Key Points:"*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the snippet above, the sample transcript and the key points after it are not at all related to the real output values. They are just used to show the model what it should be generating.&lt;/p&gt;

&lt;p&gt;You then provide the model with the real information and the model assumes what it must do next.&lt;/p&gt;

&lt;p&gt;It's definitely a clever technique that can help you get more exact with how you want to return data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Chain of thought thinking
&lt;/h2&gt;

&lt;p&gt;Chain-of-thought prompting is a technique where the AI model is encouraged to "think step-by-step" by explicitly guiding it through intermediate reasoning steps before arriving at a final answer.&lt;/p&gt;

&lt;p&gt;This method is particularly effective for tasks that require logical reasoning, complex problem-solving, or multi-step calculations.&lt;/p&gt;

&lt;p&gt;Instead of asking the model for a direct answer, you structure the prompt to encourage a progressive breakdown of the problem. The intermediate steps provide a clearer pathway for the model, improving its reasoning and accuracy.&lt;/p&gt;

&lt;p&gt;For example, if you wanted to ask a simple math question without chain of thought thinking, you might prompt something like the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prompt: "If a store has 7 apples and sells 3, 
how many are left?"
 Response: 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;With chain-of-thought thinking, your prompt might look something like the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Prompt: "A store has 7 apples. It sells 3 
apples. First, determine how many 
apples are sold. Then subtract that 
number from the total apples. 
How many are left?"

Response: The store starts with 7 apples. It sells 3 apples. Subtracting 3 from 7 gives 4 apples left.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;By specifying the particular steps that you want the model to follow, you are able to get a more detailed and accurate response.&lt;/p&gt;

&lt;p&gt;This technique might be more beneficial in cases where you have to process user input in a very specific way in order to get an exact response.&lt;/p&gt;

&lt;h2&gt;
  
  
  Response formatting
&lt;/h2&gt;

&lt;p&gt;Most people are used to AI models responding to a prompt in a single response output and mainly as a giant string of text.&lt;/p&gt;

&lt;p&gt;The latest models however are able to respond in more complex ways, such as structured JSON schemas that you yourself specify in the prompt.&lt;/p&gt;

&lt;p&gt;For example, let's say that you were working on an app that generated random coding questions for people to practice with. It would be difficult if a model responded with a giant string that you would then have to parse yourself.&lt;/p&gt;

&lt;p&gt;Instead, you can specify the JSON schema that you would like the response in and tell the model to only return the data in that format.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Generate 3 technical programming questions and 
return then in JSON with the following schema:
[{title: 'title goes here', question: 'question goes here'}]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is really the heart of prompt engineering. In a real-world application, you're going to need structured data in order to do anything with the UI/UX.&lt;/p&gt;

&lt;p&gt;If you're building someone a resume using AI then you need to know what data corresponds to their past experience, education, skills, etc.&lt;/p&gt;

&lt;p&gt;Do note though, that this isn't guaranteed to work 100% of the time either. From my experiments so far, it works 'most' of the time. But on occasion, the model might respond with a "You got it. Here's the data! [{...". Which will make it difficult to parse out.&lt;/p&gt;

&lt;p&gt;But most of these edge cases can also be fixed by specifying to the model that it shouldn't return anything else except for valid JSON. But again, this seems to work 'most' of the time.&lt;/p&gt;

&lt;h2&gt;
  
  
  A few last words
&lt;/h2&gt;

&lt;p&gt;Prompt engineering is evolving rapidly. The rules change as models improve, meaning that the best engineers are those who stay adaptable and continuously refine their methods.&lt;/p&gt;

&lt;p&gt;Being able to craft concise input strings for an AI model in order to generate exact and accurate data on the other end is going to be huge in the near future as people interact more and more with artificial intelligence.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>promptengineering</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Code, Context, and AI: Why Human Developers Still Matter</title>
      <dc:creator>Walter G.</dc:creator>
      <pubDate>Fri, 07 Mar 2025 19:18:04 +0000</pubDate>
      <link>https://forem.com/thatsoftwaredude/code-context-and-ai-why-human-developers-still-matter-579c</link>
      <guid>https://forem.com/thatsoftwaredude/code-context-and-ai-why-human-developers-still-matter-579c</guid>
      <description>&lt;p&gt;This year has been somewhat of a wake up call to the developer community in terms of A.I. It seems like each and every month now a new tool comes out that can produce code faster and more accurately than the models before it.&lt;/p&gt;

&lt;p&gt;Needless to say, this is going to keep happening for the foreseeable future. And many newer developers find themselves at a crossroads.&lt;/p&gt;

&lt;p&gt;Do they continue to invest time and money into a field of study that's going to evaporate in the next decade? Or do you pivot now and save yourself the headaches?&lt;/p&gt;

&lt;p&gt;Let's separate the hype from reality. Because after two decades of supposed "developer extinction events," I've learned something important about our industry's evolution and why human developers aren't going anywhere (yet).&lt;/p&gt;

&lt;h2&gt;
  
  
  What's really going on
&lt;/h2&gt;

&lt;p&gt;Every few months, a headline declares that programmers are becoming obsolete. The latest AI model generates a todo app in seconds, and social media floods with predictions about the end of software development careers.&lt;/p&gt;

&lt;p&gt;You're also starting to see articles claiming that A.I. coding assistants are making junior developers worse, so they should stop using them. I would argue that &lt;a href="https://dev.to/thatsoftwaredude/its-not-ai-junior-developers-have-always-struggled-to-code-26gc"&gt;the junior developer struggle is perfectly normal&lt;/a&gt; and that most companies are aware of the fact and are willing to work with younger developers.&lt;/p&gt;

&lt;p&gt;Many of these articles are way over-simplified and most are written by non-developers unfortunately. Because there's a lot missing to their narrative.&lt;/p&gt;

&lt;p&gt;So before junior developers abandon their learning paths or seniors consider career changes, let's separate the hype from reality.&lt;/p&gt;

&lt;h3&gt;
  
  
  A.I. is still very limited
&lt;/h3&gt;

&lt;p&gt;Today's AI coding tools are impressive but they are still very limited. They excel at generating boilerplate code, suggesting completions for repetitive patterns, and implementing well-defined features in familiar frameworks.&lt;/p&gt;

&lt;p&gt;What they lack is genuine understanding of business contexts, architectural trade-offs, and system-wide implications of design decisions. They also lack the ability to make financial decisions, which is a key part of corporate development.&lt;/p&gt;

&lt;p&gt;You might be responsible for an API that costs a company $100 a month based on usage and so you keep those constraints in the back of your mind. A.I. can't quite manage your books just yet.&lt;/p&gt;

&lt;p&gt;When an AI model generates a React component or a Python function, it's drawing on patterns it's seen in training data—code written by human developers.&lt;/p&gt;

&lt;p&gt;It can mimic structure and syntax remarkably well, but struggles with novel problems that it has never encountered.&lt;/p&gt;

&lt;h3&gt;
  
  
  It still lacks training data
&lt;/h3&gt;

&lt;p&gt;Much of the software that exists in production today is relatively old, and it's kept that way on purpose. Mainly because the code is stable and presumably generating some form of income for a company. Most companies won't disrupt that unless there's some return on investment on the other side of things.&lt;/p&gt;

&lt;p&gt;When I personally worked on a Classic ASP project years ago, my job wasn't to modernize it or to convert it to React. It was to figure out how it worked and to make sure that no matter what it kept running.&lt;/p&gt;

&lt;p&gt;Much of the code was outdated, archaic, less secure and even deprecated (to some extent). But being a human developer, I knew those limitations and I was able to work around them.&lt;/p&gt;

&lt;p&gt;I also worked with a very talented Classic ASP developer who had decades of experience and who knew the entire framework by heart. His personal 'training data' was much more abundant than any A.I. model at the time.&lt;/p&gt;

&lt;p&gt;Currently, there's a high chance that most modern coding models are not well trained on older programming languages and frameworks. Simply because there's just less of them in public repos.&lt;/p&gt;

&lt;p&gt;This makes them less than ideal for code generation as there's a good chance that hallucinations would be higher.&lt;/p&gt;

&lt;h3&gt;
  
  
  Limited capabilities
&lt;/h3&gt;

&lt;p&gt;Take this scenario as an example. You meet with your product manager to discuss a new feature that they designed. A custom sticker feature like the ones you would see on a social media site.&lt;/p&gt;

&lt;p&gt;As a developer (of the human kind), you know that this involves a new database schema, some form of image management (or even A.I. image generation) and an admin to manage all of the data.&lt;/p&gt;

&lt;p&gt;You might even need to integrate it with your companies in-house asset management service which serves images to every website the company owns. This would be a very unique workflow that only a handful of people would know.&lt;/p&gt;

&lt;p&gt;This might even involve creating a new Amazon S3 Bucket or possibly even storing images as Blob's in the database. Maybe you discuss it with your project manager to see what the budget is.&lt;/p&gt;

&lt;p&gt;And you might even discuss it with your DBA (database administrator) to figure out what the best approach is when it comes to the database.&lt;/p&gt;

&lt;p&gt;Most of these steps, A.I. can't do. At least not right now. It would need real-time data on the entire companies inner workings and it would require the input from multiple people in order to successfully build this feature out.&lt;/p&gt;

&lt;p&gt;And this feature isn't even really that complex or innovative. So imagine having to build something that requires the input of even more people in real-time and that is constantly having its requirements changed on an hourly basis.&lt;/p&gt;

&lt;h3&gt;
  
  
  A.I. still needs code reviews
&lt;/h3&gt;

&lt;p&gt;Furthermore, AI tools frequently produce code that looks correct at first glance but contains subtle bugs, security vulnerabilities, or inefficiencies that only become apparent during testing or production.&lt;/p&gt;

&lt;p&gt;The ability to critically evaluate generated code and to know whether a solution is merely functional or truly optimal remains a distinctly human skill.&lt;/p&gt;

&lt;p&gt;What we're witnessing right now isn't the replacement of developers but the evolution of development workflows.&lt;/p&gt;

&lt;p&gt;The most successful engineers aren't fighting against AI tools but incorporating them as accelerators and using them to handle routine tasks while focusing their human creativity and problem-solving abilities on higher-level challenges.&lt;/p&gt;

&lt;p&gt;This relationship between developer and AI amplifies productivity rather than diminishing the developer's role.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's the best thing developers can do?
&lt;/h2&gt;

&lt;p&gt;First and foremost, don't panic. If you read an article telling you that your job is in danger because ChatGPT wrote a 200 line to-do list application, then find a different news source.&lt;/p&gt;

&lt;p&gt;If you're currently studying Computer Science, continue your studies and try your best to build a strong foundation on core programming principles.&lt;/p&gt;

&lt;p&gt;The more AI tools evolve, the more important it becomes to understand core computer science concepts. Deep knowledge of data structures, algorithms, and system design isn't just academic—it's what helps you evaluate and optimize AI-generated code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Embrace AI as a tool
&lt;/h3&gt;

&lt;p&gt;Instead of viewing AI as competition, learn to leverage it effectively. Use AI coding assistants for what they're good at—generating boilerplate code, suggesting refactoring options, or helping with documentation.&lt;/p&gt;

&lt;p&gt;But maintain a critical eye and understand that you're the pilot, and AI is your co-pilot.&lt;/p&gt;

&lt;h3&gt;
  
  
  Focus on system integration and architecture
&lt;/h3&gt;

&lt;p&gt;Complex systems integration, microservices architecture, and cloud infrastructure decisions require deep understanding of business needs, security implications, and performance trade-offs.&lt;/p&gt;

&lt;p&gt;These high-level architectural skills are far beyond current AI capabilities and will remain valuable for years to come.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stay adaptable
&lt;/h3&gt;

&lt;p&gt;More importantly though, be fluid with your learning and with your career options. Things are going to change, as they always have.&lt;/p&gt;

&lt;p&gt;In my past career, I was a Windows Desktop developer, an X++ developer, a Classic ASP developer and an ASP.NET Web Forms developer.&lt;/p&gt;

&lt;p&gt;All deprecated and forgotten technologies. But they were still invaluable in my career growth.&lt;/p&gt;

&lt;p&gt;Now I mainly focus on React and other JavaScript based frameworks, because that's where the market is. And there's a chance that in the future, I will be looking back at React the way that I look back at Classic ASP.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future is Collaborative
&lt;/h2&gt;

&lt;p&gt;The future of software development isn't about AI replacing developers—it's about developers who can effectively collaborate with AI tools outperforming those who don't. By focusing on these areas, you'll position yourself to thrive in this evolving landscape.&lt;/p&gt;

&lt;p&gt;Remember: every major technological advancement in our field has been predicted to make programmers obsolete. Instead, each one has created new opportunities for those willing to adapt and grow.&lt;/p&gt;

&lt;p&gt;AI will be no different and it's not an ending, but a new beginning for those who embrace it wisely.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>It’s Not A.I. — Junior Developers Have Always Struggled to Code</title>
      <dc:creator>Walter G.</dc:creator>
      <pubDate>Mon, 03 Mar 2025 17:16:23 +0000</pubDate>
      <link>https://forem.com/thatsoftwaredude/its-not-ai-junior-developers-have-always-struggled-to-code-26gc</link>
      <guid>https://forem.com/thatsoftwaredude/its-not-ai-junior-developers-have-always-struggled-to-code-26gc</guid>
      <description>&lt;p&gt;AI, as of late, is taking the blame for making junior developers “worse” at writing code, but in my 20 years of experience—junior devs have always struggled to code &lt;em&gt;well&lt;/em&gt;. &lt;em&gt;Well&lt;/em&gt; being the keyword. It’s not a new problem. The difference? AI is just simply just highlighting the fact.&lt;/p&gt;

&lt;p&gt;For decades, junior devs have relied on Stack Overflow, online tutorials, and helpful senior engineers to guide them in their day to day work. AI tools like Copilot aren’t replacing deep learning—they’re just streamlining what has always been a part of the learning process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before the time of A.I.
&lt;/h2&gt;

&lt;p&gt;I started coding before Stack Overflow existed. Back then, we had 10-20lb textbooks, binders full of half-legible notes, and forums where getting an answer could take days.&lt;/p&gt;

&lt;p&gt;In 2003, this was the way. And for the most part, we made it work. You weren’t going to become the #1 ranked programmer in the world overnight, but you were going to learn about algorithms, data structures, operating systems, and a bit of SQL (a bit).&lt;/p&gt;

&lt;p&gt;Then Stack Overflow came along—and guess what? It faced the same scrutiny that AI tools are facing today. Developers were supposedly getting lazy. Universities banned it. People claimed it would make engineers worse because they didn’t have to struggle as much to find answers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did enforced struggle make better developers?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Maybe. It’s hard to say. And honestly, whatever my feelings are on the subject might be way too subjective to define &lt;em&gt;all&lt;/em&gt; developers.&lt;/p&gt;

&lt;p&gt;But I will say this—even with all that “pure” learning, I was still a terrible junior developer.&lt;/p&gt;

&lt;p&gt;And nobody I worked with was surprised or resented me for it. Because that’s just how learning works.&lt;/p&gt;

&lt;p&gt;Companies don't normally give 20 million dollar projects to the new guy who struggled to configure his dev environment. That takes time and alot of trust.&lt;/p&gt;

&lt;p&gt;Once I entered the corporate workforce though StackOverflow was everywhere. It was refreshing that we didn't have to read 10 year old forums written in a different language in order to find out how to use a function properly.&lt;/p&gt;

&lt;p&gt;Did reading StackOverflow daily make me a better developer? Did it make me worse, because I was relying on somewhat opiniated answers? I don't know. Maybe the answer is a bit of both.&lt;/p&gt;

&lt;p&gt;But the fact is, I normally just copy and pasted whatever answer I found and modified it until it worked for my use case. As did many of the other developers surrounding me.&lt;/p&gt;

&lt;p&gt;The goal wasn't to master a programming language at the end of the day. It was to check off our to-do lists for the week and hope that we worked well enough to provide some value.&lt;/p&gt;

&lt;h2&gt;
  
  
  The role of senior engineers
&lt;/h2&gt;

&lt;p&gt;For the first five years of my career, I relied heavily on the guidance of senior developers. Not just because they could code better than me—though they definitely could—but because that was only one part of the equation.&lt;/p&gt;

&lt;p&gt;They had experience. They had done things with code that I was never asked to do in college or in any tutorial. And when it came down to actually getting my work done, that’s what I was missing.&lt;/p&gt;

&lt;p&gt;I still remember the first time I had to remote log into a Linux server to configure some obscure network parameters for a website migration.&lt;/p&gt;

&lt;p&gt;I was two years into my career. I had never remote logged into anything. The acronyms my manager was throwing at me might as well have been an ancient language. And my only response was "You got it!".&lt;/p&gt;

&lt;p&gt;Lucky for me, a senior developer was sitting two feet behind me. He walked me through the entire process, step by step, after he saw me sweating in my chair for 2 hours.&lt;/p&gt;

&lt;p&gt;And this pattern repeated itself alot through my early years.&lt;/p&gt;

&lt;p&gt;There were even days where high priority tasks were due within hours, and my lead developer would take the chair, start typing at lightning speed, all while dictating their every move. While I sat there confused wishing the clock would strike 12pm.&lt;/p&gt;

&lt;p&gt;All to say, that whether you're using StackOverflow, ChatGPT, Copilot or a forum post from 2001, it's all the same thing. It's a tool to help you get some task done.&lt;/p&gt;

&lt;p&gt;The real learning and experience really comes from repetition and from the person sitting 3 feet away that's done what you've never done, and that will gladly take their time and show you the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is A.I. Hurting or Helping More
&lt;/h2&gt;

&lt;p&gt;I think the answer to that question depends entirely on the developer using it and what their goals are.&lt;/p&gt;

&lt;p&gt;Not every developer wants to memorize every search algorithm, data structure, or encryption cipher. Many just want to build cool things, to the best of their ability, while earning a paycheck.&lt;/p&gt;

&lt;p&gt;And that’s fine.&lt;/p&gt;

&lt;p&gt;The truth is, AI doesn’t make bad developers worse—it just exposes gaps that were always there. A good developer will use AI as a tool to accelerate learning, automate the tedious, and improve efficiency. A bad developer will copy-paste blindly, just like they always have, whether from AI or Stack Overflow.&lt;/p&gt;

&lt;p&gt;The difference between the two? Experience. Curiosity. A willingness to learn.&lt;/p&gt;

&lt;p&gt;AI won’t replace real-world experience. It won’t teach you why something works or save you from a debugging nightmare at 2 AM. And it definitely won’t replace the senior engineer sitting next to you, showing you how things actually get done.&lt;/p&gt;

&lt;p&gt;So is AI hurting or helping?&lt;/p&gt;

&lt;p&gt;That’s not up to the tool. That’s up to the developer.&lt;/p&gt;

&lt;p&gt;Originally published at &lt;a href="https://www.thatsoftwaredude.com" rel="noopener noreferrer"&gt;https://www.thatsoftwaredude.com&lt;/a&gt; on February 24, 2025.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>It’s Not A.I. — Junior Developers Have Always Struggled to Code</title>
      <dc:creator>Walter G.</dc:creator>
      <pubDate>Mon, 03 Mar 2025 17:05:00 +0000</pubDate>
      <link>https://forem.com/thatsoftwaredude/its-not-ai-junior-developers-have-always-struggled-to-code-d57</link>
      <guid>https://forem.com/thatsoftwaredude/its-not-ai-junior-developers-have-always-struggled-to-code-d57</guid>
      <description>&lt;p&gt;AI, as of late, is taking the blame for making junior developers “worse” at writing code, but in my 20 years of experience—junior devs have always struggled to code &lt;em&gt;well&lt;/em&gt;. &lt;em&gt;Well&lt;/em&gt; being the keyword. It’s not a new problem. The difference? AI is just simply just highlighting the fact.&lt;/p&gt;

&lt;p&gt;For decades, junior devs have relied on Stack Overflow, online tutorials, and helpful senior engineers to guide them in their day to day work. AI tools like Copilot aren’t replacing deep learning—they’re just streamlining what has always been a part of the learning process.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before the time of A.I.
&lt;/h2&gt;

&lt;p&gt;I started coding before Stack Overflow existed. Back then, we had 10-20lb textbooks, binders full of half-legible notes, and forums where getting an answer could take days.&lt;/p&gt;

&lt;p&gt;In 2003, this was the way. And for the most part, we made it work. You weren’t going to become the #1 ranked programmer in the world overnight, but you were going to learn about algorithms, data structures, operating systems, and a bit of SQL (a bit).&lt;/p&gt;

&lt;p&gt;Then Stack Overflow came along—and guess what? It faced the same scrutiny that AI tools are facing today. Developers were supposedly getting lazy. Universities banned it. People claimed it would make engineers worse because they didn’t have to struggle as much to find answers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Did enforced struggle make better developers?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Maybe. It’s hard to say. And honestly, whatever my feelings are on the subject might be way too subjective to define &lt;em&gt;all&lt;/em&gt; developers.&lt;/p&gt;

&lt;p&gt;But I will say this—even with all that “pure” learning, I was still a terrible junior developer.&lt;/p&gt;

&lt;p&gt;And nobody I worked with was surprised or resented me for it. Because that’s just how learning works.&lt;/p&gt;

&lt;p&gt;Companies don't normally give 20 million dollar projects to the new guy who struggled to configure his dev environment. That takes time and alot of trust.&lt;/p&gt;

&lt;p&gt;Once I entered the corporate workforce though StackOverflow was everywhere. It was refreshing that we didn't have to read 10 year old forums written in a different language in order to find out how to use a function properly.&lt;/p&gt;

&lt;p&gt;Did reading StackOverflow daily make me a better developer? Did it make me worse, because I was relying on somewhat opiniated answers? I don't know. Maybe the answer is a bit of both.&lt;/p&gt;

&lt;p&gt;But the fact is, I normally just copy and pasted whatever answer I found and modified it until it worked for my use case. As did many of the other developers surrounding me.&lt;/p&gt;

&lt;p&gt;The goal wasn't to master a programming language at the end of the day. It was to check off our to-do lists for the week and hope that we worked well enough to provide some value.&lt;/p&gt;

&lt;h2&gt;
  
  
  The role of senior engineers
&lt;/h2&gt;

&lt;p&gt;For the first five years of my career, I relied heavily on the guidance of senior developers. Not just because they could code better than me—though they definitely could—but because that was only one part of the equation.&lt;/p&gt;

&lt;p&gt;They had experience. They had done things with code that I was never asked to do in college or in any tutorial. And when it came down to actually getting my work done, that’s what I was missing.&lt;/p&gt;

&lt;p&gt;I still remember the first time I had to remote log into a Linux server to configure some obscure network parameters for a website migration.&lt;/p&gt;

&lt;p&gt;I was two years into my career. I had never remote logged into anything. The acronyms my manager was throwing at me might as well have been an ancient language. And my only response was "You got it!".&lt;/p&gt;

&lt;p&gt;Lucky for me, a senior developer was sitting two feet behind me. He walked me through the entire process, step by step, after he saw me sweating in my chair for 2 hours.&lt;/p&gt;

&lt;p&gt;And this pattern repeated itself alot through my early years.&lt;/p&gt;

&lt;p&gt;There were even days where high priority tasks were due within hours, and my lead developer would take the chair, start typing at lightning speed, all while dictating their every move. While I sat there confused wishing the clock would strike 12pm.&lt;/p&gt;

&lt;p&gt;All to say, that whether you're using StackOverflow, ChatGPT, Copilot or a forum post from 2001, it's all the same thing. It's a tool to help you get some task done.&lt;/p&gt;

&lt;p&gt;The real learning and experience really comes from repetition and from the person sitting 3 feet away that's done what you've never done, and that will gladly take their time and show you the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is A.I. Hurting or Helping More
&lt;/h2&gt;

&lt;p&gt;I think the answer to that question depends entirely on the developer using it and what their goals are.&lt;/p&gt;

&lt;p&gt;Not every developer wants to memorize every search algorithm, data structure, or encryption cipher. Many just want to build cool things, to the best of their ability, while earning a paycheck.&lt;/p&gt;

&lt;p&gt;And that’s fine.&lt;/p&gt;

&lt;p&gt;The truth is, AI doesn’t make bad developers worse—it just exposes gaps that were always there. A good developer will use AI as a tool to accelerate learning, automate the tedious, and improve efficiency. A bad developer will copy-paste blindly, just like they always have, whether from AI or Stack Overflow.&lt;/p&gt;

&lt;p&gt;The difference between the two? Experience. Curiosity. A willingness to learn.&lt;/p&gt;

&lt;p&gt;AI won’t replace real-world experience. It won’t teach you why something works or save you from a debugging nightmare at 2 AM. And it definitely won’t replace the senior engineer sitting next to you, showing you how things actually get done.&lt;/p&gt;

&lt;p&gt;So is AI hurting or helping?&lt;/p&gt;

&lt;p&gt;That’s not up to the tool. That’s up to the developer.&lt;/p&gt;

&lt;p&gt;Originally published at &lt;a href="https://www.thatsoftwaredude.com" rel="noopener noreferrer"&gt;https://www.thatsoftwaredude.com&lt;/a&gt; on February 24, 2025.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>programming</category>
    </item>
    <item>
      <title>The importance of having good folder structure in your code</title>
      <dc:creator>Walter G.</dc:creator>
      <pubDate>Mon, 22 Nov 2021 19:28:14 +0000</pubDate>
      <link>https://forem.com/thatsoftwaredude/the-importance-of-having-good-folder-structure-in-your-code-34mf</link>
      <guid>https://forem.com/thatsoftwaredude/the-importance-of-having-good-folder-structure-in-your-code-34mf</guid>
      <description>&lt;p&gt;Folder structure is something that most developers usually take for granted because often times it is something that is already present when you join a project.&lt;/p&gt;

&lt;p&gt;When you start work at a new company, the projects are typically already set up with whatever structure the original developer came up with. If you clone a project from GitHub, then you also don't have to worry about such things.&lt;/p&gt;

&lt;p&gt;But if you are starting a project from scratch with zero code, then coming up with correct file structure can be the most important step in the whole thing. And the most difficult as well.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes bad structure?
&lt;/h2&gt;

&lt;p&gt;In order to figure out what makes a good file environment, let me first discuss what makes for a bad one. Because there's quite a few things.&lt;/p&gt;

&lt;p&gt;The most notable being the lack of any consistency in terms of capitalization and special characters. The following for example isn't an ideal scenario.&lt;/p&gt;

&lt;p&gt;__ main&lt;/p&gt;

&lt;p&gt;__Src&lt;/p&gt;

&lt;p&gt;__Image_Files&lt;/p&gt;

&lt;p&gt;__ More-Image-Files&lt;/p&gt;

&lt;p&gt;__evenMoreFiles&lt;/p&gt;

&lt;p&gt;For one, depending on the OS that you are hosting your files on, some of these might not be valid at all. But assuming that they were valid, they still lack any form or order. If you are going to go lowercase, then ensure every directory is lowercase. If you want to use the underscore as a separator, then avoid having camel casing.&lt;/p&gt;

&lt;p&gt;Decide early on and then stick with it through the course of the project.&lt;/p&gt;

&lt;p&gt;This will ensure that you won't have to write any kind of special code later on in order to access directories, since they will all be following the same conventions throughout the entire project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What makes for good structure?
&lt;/h2&gt;

&lt;p&gt;Having a good naming scheme is only the beginning. There's also the issue of having too many deeply nested folders, making it both difficult to reference files in your code and also difficult to find what you are looking for.&lt;/p&gt;

&lt;p&gt;This would look something like the following:&lt;/p&gt;

&lt;p&gt;__src&lt;/p&gt;

&lt;p&gt;______pages&lt;/p&gt;

&lt;p&gt;__________accounts&lt;/p&gt;

&lt;p&gt;______________registration&lt;/p&gt;

&lt;p&gt;Again, this is totally valid and allowable in pretty much every OS. But the real issue happens when you continue to create more and more child directories time after time. Eventually you will end up with hundreds of folders, some with only 1 or 2 files, and a directory structure that a newcomer would easily be lost in.&lt;/p&gt;

&lt;p&gt;Remember, you are not the only one that will be looking at the code. Typical convention aims to have a maximum of 3 levels when it comes to child folders. And if you find yourself needing to nest folders 10 layers deep, then maybe there's another issue that needs to be addressed causing that complexity.&lt;/p&gt;

&lt;p&gt;And one last point to mention. This is one that I've personally encountered frequently in the corporate world. And that's too many files in a single directory.&lt;/p&gt;

&lt;p&gt;The theoretical maximum number of files that you can add to a folder on Windows is around 4 billion. That's alot. And there's a good chance that you will probably never see that limit reached. But you don't need to hit the max to begin to have issues.&lt;/p&gt;

&lt;p&gt;Because having even 10,000 files in a folder is a giant headache for a developer. For one, it becomes increasingly slower and slower to load those directories the more data they accumulate. Especially if these are large files. And secondly, it's just hard to find anything inside of them.&lt;/p&gt;

&lt;p&gt;I've mainly seen this happen with image folders, dealing with a website that had around 80,000 image files in a single directory. Opening that folder on its native machine was pretty much an impossible task as it would hang for minutes at a time and taking a huge chunk of the performance.&lt;/p&gt;

&lt;p&gt;On a few rare occasions, it even took the website down. Mind you this was on an older server, but still.&lt;/p&gt;

&lt;p&gt;The solution to this problem is to pretty much split the files into more folders. Not children of each mind you. Just siblings. And that would look something like the following:&lt;/p&gt;

&lt;p&gt;__images&lt;/p&gt;

&lt;p&gt;__1&lt;/p&gt;

&lt;p&gt;__ 2&lt;/p&gt;

&lt;p&gt;__3&lt;/p&gt;

&lt;p&gt;Essentially, sub directories with the appropriate numeric paging, splitting each folder into a set number of files. You would need to store the numeric value of the directory that the particular file finds itself in.&lt;/p&gt;

&lt;p&gt;This only applies if you are hosting the files on your own servers of course. If you are using a cloud storage provider like Amazon S3, you can avoid much of this hassle.&lt;/p&gt;

&lt;p&gt;I hope this post gave you an idea of the trouble that folder and file structure can bring, even before you write a single line of code. But it is something that should be planned out and built accordingly for your particular needs. It's pretty much where everything starts.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
