<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>The Modern Developer</title>
    <subtitle>Comments and Essays for software development professionals. All Typos Engineered by Hand</subtitle>
    <link rel="self" type="application/atom+xml" href="https://modern-developer.com/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://modern-developer.com"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-03-19T00:00:00+00:00</updated>
    <id>https://modern-developer.com/atom.xml</id>
    <entry xml:lang="en">
        <title>The Advanced Beginner</title>
        <published>2026-03-19T00:00:00+00:00</published>
        <updated>2026-03-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              dylan
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://modern-developer.com/blog/the-advanced-beginner/"/>
        <id>https://modern-developer.com/blog/the-advanced-beginner/</id>
        
        <content type="html" xml:base="https://modern-developer.com/blog/the-advanced-beginner/">&lt;p&gt;Good developers must constantly be learning. At some point, the Modern Developer
will find themselves in a position where what one &lt;em&gt;knows&lt;&#x2F;em&gt; is no longer enough, and
expansion into what is &lt;em&gt;not known&lt;&#x2F;em&gt; is needed. Some
people are natural learners of course, and as long as they have time they will be
able to apply what they have learned about themselves over their lifetime. Others
are not as lucky: they will need to develop an &lt;em&gt;autodidactic structure&lt;&#x2F;em&gt;. This will
be different for everyone, of course. Visual learners will have different and non-compatible
structures to readers, and so on.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;time&quot;&gt;Time&lt;&#x2F;h2&gt;
&lt;p&gt;The first step is carving out time. This is usually seen as the biggest barrier:
There is a perception that no one wants you to set aside time. I have
seen this in companies that have strict education budgets: the employee feels that
they cannot get time even if the manager is encouraging or, in one case, prescribing
education time! But let’s assume the reader doesn’t have a sanctioned budget, and
wants to become a more learned developer.&lt;&#x2F;p&gt;
&lt;p&gt;I recommend 20 minutes every week-day, at a time where your brain is at peak.&lt;&#x2F;p&gt;
&lt;p&gt;20 minutes is controversial: some will point out it’s barely time to setup a new environment,
or read a single page. This is true: The art is in stacking these &lt;em&gt;daily&lt;&#x2F;em&gt; so that
it might take 19 minutes to get started the first day, and then 1 minute to pick
up the second day.&lt;&#x2F;p&gt;
&lt;p&gt;20 minutes is often such a small slice of time, most managers will not oppose it. If one
is in a meeting-heavy environment, it may be more noticeable: fixing the meetings
is probably more important.&lt;&#x2F;p&gt;
&lt;p&gt;You may be able to go more or less, and the length that you start with may not
be what you end up with: you can fiddle with the duration, days, and start time.&lt;&#x2F;p&gt;
&lt;p&gt;5 minutes is probably not enough and 60 minutes may be too much.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;plan&quot;&gt;Plan&lt;&#x2F;h2&gt;
&lt;p&gt;Once you have agreed with yourself on timing, the next step is to plan what to do
in that time. This will depend on who you are of course. The routine is something like:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Find a topic (or list of topics). These can be nebulous (“Learn AI”) or specific (“Study SSR Hydration Errors in Next.js”)&lt;&#x2F;li&gt;
&lt;li&gt;Make a plan of where you are and how to get to where you want to be (“Gap Analysis”). The result should be a list&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Don’t worry about how long it takes to go through the plan.&lt;&#x2F;li&gt;
&lt;li&gt;Find the next item to study&lt;&#x2F;li&gt;
&lt;li&gt;Study it in your way until the timer goes off. Leave yourself a note on what you learned.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Some will look at that and think “rubbish!” The point of course is that only you know
you.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;finally&quot;&gt;Finally …&lt;&#x2F;h2&gt;
&lt;p&gt;There are a few important things to conclude with:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Doing&lt;&#x2F;em&gt; is important: reading a &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;doc.rust-lang.org&#x2F;book&#x2F;&quot;&gt;book on rust&lt;&#x2F;a&gt; will not
teach you rust, but executing the examples will.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;em&gt;Regularity&lt;&#x2F;em&gt; is important.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;h2 id=&quot;footnotes&quot;&gt;Footnotes&lt;&#x2F;h2&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Consider the following prompt: &lt;em&gt;I am currently an intermediate Next.JS developer, and I would like to study how to fix and prevent SSR Hydration errors. Can you give me a list of topics where I can experiment and study different aspects to become an expert?&lt;&#x2F;em&gt; &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Don&#x27;t Fear the Void</title>
        <published>2026-03-19T00:00:00+00:00</published>
        <updated>2026-03-19T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              dylan
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://modern-developer.com/essays/dont-fear-the-void/"/>
        <id>https://modern-developer.com/essays/dont-fear-the-void/</id>
        
        <content type="html" xml:base="https://modern-developer.com/essays/dont-fear-the-void/">&lt;p&gt;It is interesting thinking about the career path that a Modern Developer may
have. Perhaps what seems like not all that long ago, sitting in a classroom
studying algorithms, before that maybe making a robot whirrr in Scratch in
middle school. Sometimes it is the puzzle solving that draws folks into
computer science. Sometimes it is the instant gratification: &lt;em&gt;Look at what &lt;strong&gt;I&lt;&#x2F;strong&gt; Built!&lt;&#x2F;em&gt;.
On occasion, the lure of money.&lt;&#x2F;p&gt;
&lt;p&gt;But now, that same developer may feel that things are bleak. Half a million
layoffs in the past two years. The inevitable promise that all programmers
will be replaced with a subscription to some AI company that doesn’t require
benefits. Those skills that one worked so hard to shape and polish are now
embedded in a chat interface and accessible by 12-year olds: those who should
be building robots that dance are instead vibe-coding DeFi Apps, whatever the
hell that means.&lt;&#x2F;p&gt;
&lt;p&gt;One may realize at this point that the future of the developer is quite bleak.
Any effort we may engage in is meaningless, like annotating our code changes
with “fixing typoe [sic]” that was rebased out of history, never to be seen.
Or the emotional toil that somehow, generating hundreds of checkins with minor
variations guessed in panic, will simply be reduced to an emotionless “fixing bug”
line and forgotten forever. There is no sweat or tears in commit history (or
any fluids, thankfully). So much we have given to the void and &lt;em&gt;yet&lt;&#x2F;em&gt; it takes
everything, regardless.&lt;&#x2F;p&gt;
&lt;p&gt;For younger folks, it might be possible to “pivot” as they say, and maybe
pursue other endeavors that are far away from the stretching silicon hands
that grasp for our livelihoods. Mining, for instance, and spear-fishing. But older
folks may think that toiling in a mine is a young man’s game, and spear-fishing
likely requires a different pre-workout routine than we are accustomed to.&lt;&#x2F;p&gt;
&lt;p&gt;Some developers are seeing themselves as elevator operators, descending both in
economic necessity and self worth. This feels like a different form of meaninglessness.
At one point, computer-science was considered a “write your own ticket” scenario
and now we are pondering a dark, grim future. Perhaps this should be pondered over &lt;a rel=&quot;external&quot; href=&quot;https:&#x2F;&#x2F;www.reed.edu&#x2F;reed-magazine&#x2F;articles&#x2F;2014&#x2F;sartre-food-diary.html&quot;&gt;an omelette&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Any notion that we can return to the past is ridiculous of course. The only way
out is &lt;em&gt;through&lt;&#x2F;em&gt; the void, somehow, and whatever that means.&lt;&#x2F;p&gt;
&lt;p&gt;But I don’t think it is as bad as it looks. It does not appear as if there will
be hundreds of Python developers floating about highway intersections with cardboard
signs begging for bugs to fix, or like the old joke, “Please help, my paradigm shifted.”&lt;&#x2F;p&gt;
&lt;p&gt;In the early days of computing, software had to be re-wired: as I hear it, unplugging
everything and re-wiring the system for a new task could take weeks. Likely each
operator had a specific pre-workout routine to prevent injury. As time progressed, we
saw &lt;em&gt;machine code&lt;&#x2F;em&gt;, then &lt;em&gt;assembly language&lt;&#x2F;em&gt; which was assembled in to machine code,
and then high level languages that are compiled (either into machine code or assembly).
It wasn’t that &lt;em&gt;long&lt;&#x2F;em&gt; ago
that there was a little bit of an expectation that application developers could
understand disassembled code. Today, there are still positions where being able to
write and read assembly is required. For the most part, it is a rather arcane magic
that is left to specialized wizards and engineering students, but it still has uses.
This means that the introduction of high-level languages did not render knowledge of
the lower stuff obsolete. Err, at least not &lt;em&gt;totally&lt;&#x2F;em&gt; obsolete.&lt;&#x2F;p&gt;
&lt;p&gt;I suspect that some reading this will observe that they have never written software
in assembly. And this is fine of course: if you are writing software that runs in
a browser then the super-tricky speedy stuff was already written!&lt;&#x2F;p&gt;
&lt;h2 id=&quot;attention-space&quot;&gt;Attention Space&lt;&#x2F;h2&gt;
&lt;p&gt;This uncovers an interesting trend: the more focused our attention is, the narrower
our output is. Assembly is super focused, it depends on different computer and CPU
architectures. Different CPUs have different assembly languages (SPARC vs. x86). Meanwhile,
Javascript is &lt;em&gt;broad&lt;&#x2F;em&gt;: the same program can run on a myriad of browsers. In the amount of time it
takes for me to write an assembly program that targets a single machine, I could write
an in-browser program that can run on every phone, tablet, and personal computer in the world.&lt;&#x2F;p&gt;
&lt;p&gt;I am not suggesting that assembly programming is more difficult than Javascript
development. Both skills require knowledge of the environment, syntax, and fundamental
computer science. In both cases it’s also about knowing what &lt;em&gt;not&lt;&#x2F;em&gt; to do rather
than how to do something. The idea is that Javascript and Front-end development &lt;em&gt;on average&lt;&#x2F;em&gt;
requires more breadth but less depth than bare-metal assembly programming. The
&lt;em&gt;on average&lt;&#x2F;em&gt; part is important! If you are writing a javascript engine you will need
to go a lot deeper than someone hacking a React application.&lt;&#x2F;p&gt;
&lt;p&gt;Of course we won’t be able to replace our assembly with Javascript. In the times we
still need to talk to the bare metal, we need specific attention to the hardware and
a very narrow output that is only for specific hardware&lt;sup class=&quot;footnote-reference&quot; id=&quot;fr-1-1&quot;&gt;&lt;a href=&quot;#fn-1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The idea of narrow attention = narrow output holds in “backend” computing as
well. The ability to write a database driver requires specific level of detail that
using a database driver does not require, but one can write a Spring Boot application
that targets several different databases with only superficial knowledge of any
particular database.&lt;&#x2F;p&gt;
&lt;p&gt;So let’s call this stuff that you have to think about to get your job done “Attention Space”.&lt;&#x2F;p&gt;
&lt;p&gt;When we fold LLMs into “attention space” we see that Generative AI from Large-Language
Models is the next level: we are now expected to think very broadly both in
our vocation (programming, or building software) and our domain (what we’re building
and what it does).  This is a bit of a shift. It changes our understanding
of how we build things. It may look superficial though; after all, software engineering
itself hasn’t changed. But there are more tools, and the tools don’t behave the
same way from person to person, or week to week. These tools are changing rapidly, and
may approach the point where the author of software only needs to focus their attention
the “what”, not the “how” of an application.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-it-means-for-the-gainfully-employed&quot;&gt;What it means for the gainfully employed&lt;&#x2F;h2&gt;
&lt;p&gt;The point of such a shift in Software Engineering isn’t that generative tools will
replace software engineers, it’s that our attention can expand, and that means that
so can our output. But one should immediately ask what “expanded attention” means
because it sounds absolutely fake. Some would also suggest that “more” is not always
“better.”&lt;&#x2F;p&gt;
&lt;p&gt;Let’s pretend for a moment that there is a company that refuses to hire generalists. Any
programmer can only do one thing (but they are really good at it) So a front-end developer
can only work code that ends up on the website, and the backend developers can only work
on APIs that are called by the front-end. Mysteriously, both teams are equally apt at
disparaging the company’s implementation of “Agile” but that is not strictly a programming
skill.&lt;&#x2F;p&gt;
&lt;p&gt;At any rate, as time passes, the members of these teams become masters of their
technical vocations. Given enough time (perhaps an infinite amount of time), they would
absorb all accumulated knowledge on this subject and become something of a monk, maybe
even the kind that floats. But the work that they did, and the output that they made, would
not grow.&lt;&#x2F;p&gt;
&lt;p&gt;But if this pretend company were to break the barriers in a way where the programmers are
actually empowered to work across their previous boundaries, then they would be able to
expand their technical attention, and thus be able to build bigger things (front-end and backend!),
and their output would increase.&lt;&#x2F;p&gt;
&lt;p&gt;So this means that the Modern (Existentialist) Developer ought to be embracing this. We
still need to know the details of what we make and how it works, but when building we
can spend our attention at a higher level: higher than the programming language, at least.&lt;&#x2F;p&gt;
&lt;p&gt;There is a warning sign though: just like there were occasional compiler bugs in the 90s,
today’s Large Language Models are not infallible. Sometimes they generate esoteric or anachronistic
patterns, and who would be able to tell that if they are not already experts in the field? There
is also a matter of every tool behaving slightly differently. I believe this causes a discrepancy
among opinions: two different users getting very different results.&lt;&#x2F;p&gt;
&lt;p&gt;Guard-rails help: instructing agents to generate integration and unit tests, and to use those
as a feedback loop, will improve the trustworthiness of the code. Also helpful is to write test-critics
that examine and report on the usefulness of these tests.&lt;&#x2F;p&gt;
&lt;p&gt;Giving agents short, sweet instructions rather than massive one-off fantasies is also effective.
Broadly scoped tasks can be broken up.&lt;&#x2F;p&gt;
&lt;p&gt;While the paradigm might be shifted, traditional software development techniques are tried-and-true
for the past 100 years, give or take, and should be celebrated even if our attention is elsewhere.&lt;&#x2F;p&gt;
&lt;p&gt;■&lt;&#x2F;p&gt;
&lt;h1 id=&quot;but-what-if-i-m-wrong&quot;&gt;But what if I’m wrong&lt;&#x2F;h1&gt;
&lt;p&gt;Most of this assumes a “Spherical Programmer” if you will, where ideally they are able to perform
at the top of their vocational level always. But this is obviously not the case: There are always
discussions on what to build, and how to build it, and those take up time and space for actually
writing code. This is probably a good thing because a company that makes “Product X” would want
developers to work on “X”. But it also means that there is a practical limit that a single programmer
will be able to achieve, unless they work in multiple business domains.&lt;&#x2F;p&gt;
&lt;p&gt;It should be noted that technical acumen does not predict productivity.&lt;&#x2F;p&gt;
&lt;p&gt;The term “output” is treated as a single dimension, but in reality there are lots of things that
compose output: fitness and quality are the ones I consider but there are others.&lt;&#x2F;p&gt;
&lt;p&gt;There is also a note on how Large Language Models work where we have to assume that the output
is not that of the top-tier programmer, and that assumption is because most of the code that
is in its corpora is not written by top-tier programmers. This could make novel programming
with LLMS difficult as there will be an attractor to a prior solution. Or so it would seem.&lt;&#x2F;p&gt;
&lt;section class=&quot;footnotes&quot;&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn-1&quot;&gt;
&lt;p&gt;Note that there are folks that suggest LLVM IR instead of assembly for some cases. And you can probably imagine an LLVM front-end in whatever language you are aching for. So maybe your next browser’s Javascript engine will be written in Javascript! &lt;a href=&quot;#fr-1-1&quot;&gt;↩&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;&#x2F;section&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Hello, World</title>
        <published>2026-03-17T00:00:00+00:00</published>
        <updated>2026-03-17T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              dylan
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://modern-developer.com/blog/hello/"/>
        <id>https://modern-developer.com/blog/hello/</id>
        
        <content type="html" xml:base="https://modern-developer.com/blog/hello/">&lt;p&gt;Welcome to the Modern Developer! This is a blog for folks that work
day-to-day to write software. It is a collection of ideas that started
when a junior developer once asked the best way to stay on top of the
industry. That is tricky! Especially now, as I write this in Spring
2026, the skills expected of the everyday engineer are growing exponentially.
It is not always clear where to start and what skills are actually required.
The amount of time most can spend on learning and self-enrichment is
limited.&lt;&#x2F;p&gt;
&lt;p&gt;The goal of this blog is to expand the toolset of programmers specifically, but
also adjacent technology workers.&lt;&#x2F;p&gt;
&lt;p&gt;“Expanding the toolset” means “Exposure.” There are others that are dedicated
to particular resources, those will be linked when it is responsible to do
so.&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
