<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Sean H</title>
    <description>The latest articles on DEV Community by Sean H (@headzoo).</description>
    <link>https://dev.to/headzoo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4004524%2F60817505-fdeb-4031-bb14-d3cfca3dbb9d.jpg</url>
      <title>DEV Community: Sean H</title>
      <link>https://dev.to/headzoo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/headzoo"/>
    <language>en</language>
    <item>
      <title>The Most Valuable Skill in Software Development</title>
      <dc:creator>Sean H</dc:creator>
      <pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate>
      <link>https://dev.to/headzoo/the-most-valuable-skill-in-software-development-3180</link>
      <guid>https://dev.to/headzoo/the-most-valuable-skill-in-software-development-3180</guid>
      <description>&lt;p&gt;The most valuable skill in software development is not React, Rust, Kubernetes, TypeScript, AI prompting, or whatever tool is currently being called "the future" by someone with a newsletter and a suspiciously clean demo app.&lt;/p&gt;

&lt;p&gt;It is learning fast enough that the industry does not leave you behind.&lt;/p&gt;

&lt;p&gt;Yeah, that sounds like motivational poster advice. Put it under a photo of a mountain and it immediately gets worse.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fheadzoo.github.io%2Fimages%2Fmotivational-poster-learning-fast.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fheadzoo.github.io%2Fimages%2Fmotivational-poster-learning-fast.png" alt="Mock motivational poster showing a dramatic mountain sunrise with the caption Learning Fast" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But in software, it is annoyingly practical. Specific technical knowledge is valuable. It also expires faster than people like to admit.&lt;/p&gt;

&lt;p&gt;I started writing software professionally around 2005. Since then, web development has gone through enough eras to deserve one of those "Top 10 Moments That Changed Everything" headlines. Except there are seven here, because history refused to pad the list for SEO.&lt;/p&gt;

&lt;p&gt;So here is the web development speedrun: seven periods where the ground moved, everyone updated their resume, and yesterday's "obvious best practice" quietly became a museum exhibit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2000: Server Pages Ran The Show&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The old web was easy to explain. The browser asked for a page. The server queried the database, generated HTML, and sent it back. PHP, ASP, JSP, Apache, IIS, MySQL, SQL Server. You could draw the architecture on a napkin and still have room for coffee stains.&lt;/p&gt;

&lt;p&gt;JavaScript existed, but it mostly had a summer job. Validate a form. Open a popup. Swap an image. Maybe make snow fall across the page because a client had recently discovered Christmas.&lt;/p&gt;

&lt;p&gt;The lesson was simple: the server owned the application. The browser displayed the receipt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2005: AJAX Made Pages Feel Alive&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then AJAX showed up and made the web feel less like submitting tax forms through a fax machine. A page could talk to the server without reloading the whole screen. Google Maps was the big "oh, this is different" moment. Drag the map, new data appears, no white flash, no tiny loading bar asking you to reconsider your choices.&lt;/p&gt;

&lt;p&gt;Browser programming was still a swamp, so libraries came to the rescue: Prototype, MooTools, Dojo, and eventually jQuery. For a while, jQuery basically was frontend development. Write a selector, do a thing, move on with your life.&lt;/p&gt;

&lt;p&gt;The lesson changed too: the browser was not just a document viewer. It could participate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2010: The SPA Shift&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Around 2010, participation turned into occupation. The browser stopped helping the application and started becoming the application.&lt;/p&gt;

&lt;p&gt;Servers sent JSON. The client handled routing, templates, state, data fetching, validation, and enough JavaScript to make your laptop sound like it was preparing for takeoff. Backbone, Knockout, and AngularJS gave structure to the pile.&lt;/p&gt;

&lt;p&gt;This was a real career split. Frontend stopped meaning "the person who knows CSS" and started meaning "the person who owns a full application runtime that happens to live inside Chrome."&lt;/p&gt;

&lt;p&gt;The lesson was that moving work to the client buys responsiveness, but it also buys state management, build tooling, cache invalidation, and the sort of bug that only happens after a user clicks Back twice while holding a salad.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2013: Components Became The Unit Of UI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Then React changed the conversation. Not because nobody had ever thought about components before, but because React made a lot of developers think about UI as a tree of reusable pieces instead of a page you manually poked with DOM updates.&lt;/p&gt;

&lt;p&gt;Instead of "find this element and change it," the pitch became "describe the UI for this state." That sounds small until your application has more than four screens and a user who insists on doing things in the wrong order, which is to say, a user.&lt;/p&gt;

&lt;p&gt;React, Angular, Vue, Svelte, JSX, virtual DOM debates, state libraries, CSS-in-JS, build systems, bundlers, linters, formatters. Frontend became software engineering with worse naming and more tabs open.&lt;/p&gt;

&lt;p&gt;The lesson: architecture had reached the interface. UI code was not garnish anymore. It was the meal.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2018: Frameworks Became Platforms&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By 2018, the framework was no longer just a library you used to render views. It wanted to own routing, compilation, deployment, data fetching, optimization, image handling, code splitting, server rendering, static generation, and occasionally your sense of proportion.&lt;/p&gt;

&lt;p&gt;Next.js is the obvious example, but the broader shift was everywhere. Nuxt, Gatsby, SvelteKit, Remix, Astro. The framework became the place where frontend, backend, build system, and hosting assumptions started shaking hands.&lt;/p&gt;

&lt;p&gt;Meanwhile the backend was expanding too. Cloud services, queues, caches, Docker, Kubernetes, serverless, observability, IAM policies. "I write application code" quietly turned into "I also understand enough infrastructure to be dangerous in three consoles."&lt;/p&gt;

&lt;p&gt;The lesson: tools were not just helping you build the app. They were deciding what an app was.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2024: Server And Client Recombined&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After years of pulling the frontend and backend apart, the industry started putting them back together with a straight face.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fheadzoo.github.io%2Fimages%2Fare-you-freaking-kidding-me.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fheadzoo.github.io%2Fimages%2Fare-you-freaking-kidding-me.jpg" alt="Rage comic meme with the caption Are you freaking kidding me" width="446" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Server components, server functions, loaders, actions, edge rendering, islands, partial hydration. The exact terms depend on which framework's docs you are reading and how recently they renamed the feature.&lt;/p&gt;

&lt;p&gt;The funny part is the shape. In 2000, PHP queried the database, generated HTML, and sent it to the browser. In 2024, a server component can query the database, generate UI, and send it to the browser. To be fair, the details are very different. Streaming, caching, hydration, edge execution, shared types, and partial rendering all matter.&lt;/p&gt;

&lt;p&gt;Still. Come on. It is at least a little funny.&lt;/p&gt;

&lt;p&gt;The lesson: software rarely moves in a straight line. It moves in spirals. We reject an old idea, discover the replacement has its own problems, then bring the old idea back wearing better shoes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2026: AI And Beyond&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now AI is changing the workflow around all of this. Code completion became chat. Chat became agents. Agents became multi-agent workflows. Models can read repositories, write plans, edit code, run tests, and then explain why the bug they introduced was actually a nuanced tradeoff.&lt;/p&gt;

&lt;p&gt;This is not just another framework. It changes how developers interact with every framework. Ironically, that makes learning more important, not less.&lt;/p&gt;

&lt;p&gt;If implementation gets cheaper, more of the job moves into judgment. What should we build? How should it work? Which architecture makes sense? What are the tradeoffs? Is the generated code correct? Where is the model confidently wrong?&lt;/p&gt;

&lt;p&gt;AI can produce code. It cannot remove your responsibility for knowing whether the code belongs there.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Actual Skill&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Look back at those eras and the pattern is obvious. The tool names change faster than the underlying problems. HTTP still matters. Databases still matter. State still matters. Caching, latency, concurrency, debugging, and understanding users still matter, even when the users are doing their best to make that difficult.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fheadzoo.github.io%2Fimages%2Falways-has-been-fundamentals.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fheadzoo.github.io%2Fimages%2Falways-has-been-fundamentals.png" alt="Always has been meme: wait, it's HTTP, databases, and state? Always has been." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That is the real career insurance: understand the durable problems, notice when something is a real shift, and learn it without turning your identity into a sticker on your laptop.&lt;/p&gt;

&lt;p&gt;The landscape will change again. Another architecture. Another deployment model. Another abstraction. Another tool that makes today's workflow look like we were banging rocks together. That is not a reason to panic. It is the job.&lt;/p&gt;

&lt;p&gt;The developers who last are rarely the ones who knew the most about yesterday's tools. They are the ones who can become a beginner without staying one for very long.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>AI and the Rebound Effect</title>
      <dc:creator>Sean H</dc:creator>
      <pubDate>Sat, 08 Aug 2026 13:53:22 +0000</pubDate>
      <link>https://dev.to/headzoo/ai-and-the-rebound-effect-40dh</link>
      <guid>https://dev.to/headzoo/ai-and-the-rebound-effect-40dh</guid>
      <description>&lt;p&gt;Apparently AI was supposed to make developers work less.&lt;/p&gt;

&lt;p&gt;That was the idea, anyway. Write code faster. Automate the boring parts. Finish the same feature in half the time. Close the laptop at 2 p.m. and go become the kind of person who owns hiking shoes for reasons other than taking out the trash.&lt;/p&gt;

&lt;p&gt;That is not what happened.&lt;/p&gt;

&lt;p&gt;A lot of developers are working more with AI, not less. Not because AI is useless. The problem is almost the opposite. AI is useful enough that it makes more work feel worth doing.&lt;/p&gt;

&lt;p&gt;There is a name for this kind of thing: the rebound effect.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Rebound Effect
&lt;/h2&gt;

&lt;p&gt;The rebound effect is what happens when something becomes cheaper or easier, and people respond by doing more of it instead of simply enjoying the savings.&lt;/p&gt;

&lt;p&gt;You make cars more fuel efficient, and people drive more. You make lighting cheaper, and people light more buildings, more streets, and more screens. You make code cheaper to produce, and, well, look around.&lt;/p&gt;

&lt;p&gt;The washing machine is the easy example. It did make laundry easier. No question. But it did not simply delete laundry from household life. Standards changed. Clothes got washed more often. People owned more clothes. Clean clothes every day became normal instead of fancy.&lt;/p&gt;

&lt;p&gt;Historian Ruth Schwartz Cowan wrote about this in &lt;em&gt;More Work for Mother&lt;/em&gt;. Labor-saving technology often saves labor on the individual task, then quietly raises the standard for how much of that task everyone is expected to do.&lt;/p&gt;

&lt;p&gt;AI looks a lot like that, except the laundry is software and the hamper is Jira.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Developers Are Working More
&lt;/h2&gt;

&lt;p&gt;The real difference with AI is that it lowers the activation energy of programming.&lt;/p&gt;

&lt;p&gt;Before AI, a lot of ideas died in the parking lot. You would think, "I could build that," and then immediately remember the setup, the docs, the boilerplate, the weird library behavior, the test data, the CSS problem hiding under the couch, and the two hours you were about to lose to some TypeScript error that looks like it was generated by a cursed obelisk.&lt;/p&gt;

&lt;p&gt;So you would do the healthy thing and ignore the idea.&lt;/p&gt;

&lt;p&gt;Now you can ask an AI to scaffold the project, explain the library, write the first pass, generate the test cases, fix the annoying bug, and summarize the docs you did not want to read. The idea that used to feel like a weekend suddenly feels like something you can try before dinner.&lt;/p&gt;

&lt;p&gt;That sounds great, and it is great. But it changes the math.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Instead of eight hours of work becoming four hours of work and four hours of leisure, it becomes eight hours of work with twice as many things attempted.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Or ten hours, because now you are on a roll.&lt;/p&gt;

&lt;p&gt;This is where the rebound effect shows up. AI lowers the cost of doing software work, so more software work clears the bar.&lt;/p&gt;

&lt;p&gt;The side project becomes reasonable. The refactor becomes reasonable. The docs become reasonable. The "quick" prototype becomes reasonable. The little polish pass becomes reasonable. The feature nobody asked for but you can suddenly imagine shipping by Friday becomes, unfortunately, reasonable.&lt;/p&gt;

&lt;h2&gt;
  
  
  More Things Become Worth Doing
&lt;/h2&gt;

&lt;p&gt;This is the key shift: AI does not just make existing tasks faster. It changes which tasks feel worth starting.&lt;/p&gt;

&lt;p&gt;A task that used to be obviously too much work now sits right on the line. Maybe it is not worth two days. But is it worth forty minutes with an AI assistant? Maybe. And once enough tasks move into that category, your day fills back up.&lt;/p&gt;

&lt;p&gt;The TODO list does not shrink. It mutates.&lt;/p&gt;

&lt;p&gt;You close one ticket and notice three adjacent improvements. You fix one bug and ask the AI to search for similar bugs. You write one endpoint and decide the client library should probably be updated too. You generate tests, then notice the tests could be better, then notice the code could be easier to test.&lt;/p&gt;

&lt;p&gt;This is not laziness. It is not hustle culture either, at least not always. A lot of developers genuinely like building things. AI removes enough friction that the part of your brain that says "eh, tomorrow" gets quieter.&lt;/p&gt;

&lt;p&gt;Economists have a related extreme called Jevons paradox. Make something more efficient, and total use can go up instead of down. Steam engines got better at using coal, and coal use increased. Programming tools get better at producing software, and we produce more software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Companies Will Not Invent the Four-Day Week for You
&lt;/h2&gt;

&lt;p&gt;To be fair, this is not only a personal problem. There is a company version too, and it is not subtle.&lt;/p&gt;

&lt;p&gt;If one developer with AI can produce what three developers previously produced, companies are unlikely to say, "Great news. Everyone can work Tuesday and Wednesday and spend the rest of the week making soup."&lt;/p&gt;

&lt;p&gt;They are more likely to say, "Great news. Imagine how much software we can ship now."&lt;/p&gt;

&lt;p&gt;Then competitors adopt the same tools. Expectations adjust upward. Yesterday's impressive output becomes tomorrow's baseline. The washing machine did not eliminate laundry. It helped make daily clean clothes feel ordinary. AI may do something similar to software.&lt;/p&gt;

&lt;h2&gt;
  
  
  Leisure Is a Choice, Not an Automatic Dividend
&lt;/h2&gt;

&lt;p&gt;None of this means AI is bad. I am not interested in pretending that writing boilerplate by hand was some kind of character-building exercise. Getting unstuck faster is good. Exploring more ideas is good. Spending less time fixing infuriating bugs is very good.&lt;/p&gt;

&lt;p&gt;The issue is what happens after the savings show up.&lt;/p&gt;

&lt;p&gt;Technology can create surplus time, but surplus time does not automatically turn into leisure. Usually it gets spent. Sometimes by your employer. Sometimes by the market. Sometimes by your own ambition at 11:30 p.m. when you really should know better.&lt;/p&gt;

&lt;p&gt;So if you feel busier with AI than without it, you are not imagining things. AI made you faster, and then your backlog immediately noticed.&lt;/p&gt;

&lt;p&gt;The real trick is not learning how to use AI to do more work. Most of us figured that out pretty quickly. The trick is deciding when not to.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>The Evolution of a Software Engineer</title>
      <dc:creator>Sean H</dc:creator>
      <pubDate>Sat, 11 Jul 2026 00:18:06 +0000</pubDate>
      <link>https://dev.to/headzoo/the-evolution-of-a-software-engineer-2hjc</link>
      <guid>https://dev.to/headzoo/the-evolution-of-a-software-engineer-2hjc</guid>
      <description>&lt;h3&gt;
  
  
  The first year
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;HelloWorld&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;[])&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// Displays "Hello World!" on the console.&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World!"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The second year
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
* Hello world class
*
* Used to display the phrase "Hello World" in a console.
*
* @author Sean
*/&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;HelloWorld&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="cm"&gt;/**
* The phrase to display in the console
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="no"&gt;PHRASE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Hello World!"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="cm"&gt;/**
* Main method
*
* @param args Command line arguments
* @return void
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;[])&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// Display our phrase in the console.&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;PHRASE&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The third year
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
* Hello world class
*
* Used to display the phrase "Hello World" in a console.
*
* @author Sean
* @license LGPL
* @version 1.2
* @see System.out.println
* @see README
* @todo Create factory methods
* @link https://github.com/sean/helloworld
*/&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;HelloWorld&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="cm"&gt;/**
* The default phrase to display in the console
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="no"&gt;PHRASE&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Hello World!"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="cm"&gt;/**
* The phrase to display in the console
*/&lt;/span&gt;
&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;hello_world&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="cm"&gt;/**
* Constructor
*
* @param hw The phrase to display in the console
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;HelloWorld&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;hw&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="n"&gt;hello_world&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hw&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/**
* Display the phrase "Hello World!" in a console
*
* @return void
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;sayPhrase&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// Display our phrase in the console.&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;hello_world&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/**
* Main method
*
* @param args Command line arguments
* @return void
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;[])&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="nc"&gt;HelloWorld&lt;/span&gt; &lt;span class="n"&gt;hw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;HelloWorld&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;PHRASE&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;hw&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sayPhrase&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Do nothing!&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The fifth year
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
* Enterprise Hello World class v2.2
*
* Provides an enterprise ready, scalable buisness solution
* for display the phrase "Hello World!" in a console.
*
* IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED
* TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER
* PARTY WHO MAY MODIFY AND/OR REDISTRIVUTE THE LIBRARY AS
* PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING
* ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
* DAMAGES ATRISING OUT OF THE USE OR INABILITY TO USE THE
* LIBRAY (INCLUDING BUT LIMITED TO LOSS OF DATA OR
* DATA BEINT RENDERED INACCURATE OR LOSSES SUSTAINED BY
* YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO
* OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER
* OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGES.
*
* @author Sean
* @license LGPL
* @version 2.2
* @see System.out.println
* @see README
* @see license.txt
* @todo Test of OS compatibility
* @link https://github.com/sean-inc/helloworld
*/&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;HelloWorld&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="cm"&gt;/**
* The first phrase
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="no"&gt;PHRASE_HELLO&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Hello"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="cm"&gt;/**
* The second phrase
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kd"&gt;final&lt;/span&gt; &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="no"&gt;PHRASE_WORLD&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"World"&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="cm"&gt;/**
* The first word in our phrase
*/&lt;/span&gt;
&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;Word&lt;/span&gt; &lt;span class="n"&gt;hello&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="cm"&gt;/**
* The second word in our phrase
*/&lt;/span&gt;
&lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;Word&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="cm"&gt;/**
* Constructor
*
* @param hello First word to display in the console
* @param world Second word to display in the console
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nf"&gt;HelloWorld&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Word&lt;/span&gt; &lt;span class="n"&gt;hello&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;Word&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;hello&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;hello&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;world&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;world&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/**
* Display the phrase "Hello World!" in a console
*
* @return void
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;sayPhrase&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// Display our phrase in the console.&lt;/span&gt;
&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;first&lt;/span&gt;  &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;hello&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toString&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;second&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;toString&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;first&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;" "&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;second&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="s"&gt;"!"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/**
* Sets the phrase to use for hello
*
* @param h The first phrase
* @return void
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setHello&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;hello&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setWord&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;h&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/**
* Gets the phrase to use for hello
*
* @return Word
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Word&lt;/span&gt; &lt;span class="nf"&gt;getHello&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;hello&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/**
* Sets the phrase to use for world
*
* @param w The second phrase
* @return void
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;setWorld&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;world&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setWord&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/**
* Gets the phrase to use for world
*
* @return Word
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="nc"&gt;Word&lt;/span&gt; &lt;span class="nf"&gt;getHello&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;world&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="cm"&gt;/**
* Main method
*
* @param args Command line arguments
* @return void
*/&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;[])&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="c1"&gt;// Create a new dic so we can display our phrase on the&lt;/span&gt;
&lt;span class="c1"&gt;// command line.&lt;/span&gt;
&lt;span class="no"&gt;DIC&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nl"&gt;DependencyInjectionContainer:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;factory&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="nc"&gt;HelloWorld&lt;/span&gt; &lt;span class="n"&gt;hw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;hw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;newInstance&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;HelloWorld&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;DICInstanceException&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;err&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"There was an error creating an instance of HelloWorld."&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;hw&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setHello&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;PHRASE_HELLO&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;hw&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;setWorld&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="no"&gt;PHRASE_WORLD&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
        &lt;span class="n"&gt;hw&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;sayPhrase&lt;/span&gt;&lt;span class="o"&gt;();&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;IOException&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;err&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"There was an IO error."&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;ConsoleException&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;err&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"There was a console error."&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;Exception&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;err&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"There was an unknown error."&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;beans&lt;/span&gt; &lt;span class="na"&gt;xmlns=&lt;/span&gt;&lt;span class="s"&gt;"http://www.framework.org/schema/beans"&lt;/span&gt;
&lt;span class="na"&gt;xmlns:xsi=&lt;/span&gt;&lt;span class="s"&gt;"http://www.w3.org/2001/XMLSchema-instance"&lt;/span&gt;
&lt;span class="na"&gt;xsi:schemaLocation=&lt;/span&gt;&lt;span class="s"&gt;"http://www.framework.org/schema/beans
http://www.framework.org/schema/beans/beans-2.5.xsd
http://www.framework.org/schema/context
http://www.framework.org/schema/context/context-2.5.xsd"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;context:annotation-config&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;bean&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"HelloWorldBean"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"com.sean-inc"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;property&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"hello"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Word"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;property&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"world"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Word"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/bean&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/beans&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The tenth year
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="cm"&gt;/**
* Used to display the phrase "Hello World!" in a console
*
* @author Sean
* @see README
*/&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;HelloWorld&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;[])&lt;/span&gt;
&lt;span class="o"&gt;{&lt;/span&gt;
&lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello World!"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As software engineers gain experience they turn trivial code into over-documented, over-abstracted enterprise systems, just to come back around to where they started from in the end.&lt;/p&gt;

&lt;p&gt;Reprinting from my blog &lt;a href="https://headzoo.io/2017/06/18/evolution-of-a-software-engineer.html" rel="noopener noreferrer"&gt;https://headzoo.io/2017/06/18/evolution-of-a-software-engineer.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>beginners</category>
      <category>architecture</category>
    </item>
    <item>
      <title>Is Programming Art?</title>
      <dc:creator>Sean H</dc:creator>
      <pubDate>Sat, 27 Jun 2026 17:25:09 +0000</pubDate>
      <link>https://dev.to/headzoo/is-programming-art-313f</link>
      <guid>https://dev.to/headzoo/is-programming-art-313f</guid>
      <description>&lt;p&gt;Christopher Pitt asked a simple question: &lt;a href="https://medium.com/@assertchris/can-a-developer-be-called-a-creative-f43f2278ba05" rel="noopener noreferrer"&gt;Can a developer be called a creative?&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I am talking about whether systems architects or PHP developers (like me!) can be called a creative, even though we predominantly deal with code, and our grasp of colours, layout and iconography is limited to the unicode characters we appropriate for console and log messages.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To be honest it never crossed my mind that programming was anything but a creative pursuit, and I’m happy to call myself an artist to anyone that will listen, but I understand why civilians (non-programmers) could see things differently.&lt;/p&gt;

&lt;p&gt;A girlfriend once told me programming “looks boring” when I suggested learning a bit of JavaScript and HTML, and many years ago I was roommates with a painter, who, on hearing me proclaim my code was artwork, replied with a condescending, “Yeah, uh huh, sure!”&lt;/p&gt;

&lt;p&gt;Yes, I get it. To the casual observer it may appear terribly dreary staring at a monitor all day and night, with the steady drone of click, click, click coming from a keyboard, and I understand why a classic artist (writer, painter, musician) may scoff at the idea of programming as an art form. No one is going to look at my finished work in a gallery, and discuss the artist’s soul while sipping expensive wine.&lt;/p&gt;

&lt;p&gt;What people don’t see is the explosion of activity happening in my head while I stare at those bright monitors with my bloodshot eyes. I’ve never surfed the waves of Hawaii, but I get an adrenaline rush from conquering problems. I’ve never played a hit single to a crowed of adoring fans — and certainly never had a hot groupie throw their bra at me — but I know the feeling of being taken to a higher conscience level when I get into a groove.&lt;/p&gt;

&lt;p&gt;I know passion and excitement, and I know what it’s like to feel drained, exhausted, high, and elated when a project is finished. Most importantly though, I know how nerve-racking it can be to finally give my work to the world. Will people love it or hate it? Will people understand and appreciate the nuance of my work, or will they think it’s boring and stupid?&lt;/p&gt;

&lt;p&gt;Make no mistake about it, programming is a creative pursuit, and I am an artist. I may work with a keyboard and IDE instead of a paint brush or guitar, but I have the same passion and dreams as an artist, and I live and die by the acceptance or rejection of my work by fans. My work may never be seen in a Soho art gallery, but it will be seen by millions of people.&lt;/p&gt;

&lt;p&gt;Heck, I even occasionally sit back and admire my code while sipping expensive wine.&lt;/p&gt;

</description>
      <category>developer</category>
      <category>discuss</category>
      <category>php</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Case for Standardizing the Design of Websites</title>
      <dc:creator>Sean H</dc:creator>
      <pubDate>Sat, 27 Jun 2026 15:32:28 +0000</pubDate>
      <link>https://dev.to/headzoo/the-case-for-standardizing-the-design-of-websites-e95</link>
      <guid>https://dev.to/headzoo/the-case-for-standardizing-the-design-of-websites-e95</guid>
      <description>&lt;p&gt;People complain that websites are all starting to look the same. They are not entirely wrong. A lot of modern websites do look alike. They have familiar navigation bars, predictable layouts, large hero sections, cards, and responsive grids. Buttons look like buttons. Forms look like forms.&lt;/p&gt;

&lt;p&gt;But, I would argue that's a good thing. Software is supposed to feel familiar.&lt;/p&gt;

&lt;p&gt;A website is not a painting. It is not a brand mood board. A website is usually a tool that someone is trying to use to accomplish something. They want to read, buy, search, compare, book, or solve a problem. And when people are trying to get something done, originality is not always a virtue.&lt;/p&gt;

&lt;h3&gt;
  
  
  Familiarity Is a Feature
&lt;/h3&gt;

&lt;p&gt;Jakob's Law says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Users spend most of their time on other sites. This means that users prefer your site to work the same way as all the other sites they already know.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Users do not arrive at your website as blank slates. They bring expectations from every other website and app they have used. They expect the logo to link home. They expect navigation to be near the top or side. They expect search to look like search. They expect account settings under an avatar or profile menu. They expect mobile navigation to collapse into a menu.&lt;/p&gt;

&lt;p&gt;When your site follows those expectations, users can spend their mental energy on the task instead of the interface. That is the point. Good design reduces cognitive load. It does not force users to relearn basic interaction patterns just because a company wanted to look different.&lt;/p&gt;

&lt;h3&gt;
  
  
  Different Is Not Automatically Better
&lt;/h3&gt;

&lt;p&gt;There is a common mistake in web design: confusing distinctiveness with quality. A site can be visually unique and still be frustrating to use. It can win design awards while annoying the actual people who need to navigate it.&lt;/p&gt;

&lt;p&gt;Novelty has a cost. Every unusual layout, hidden interaction, custom scroll behavior, strange menu, or clever visual metaphor asks the user to stop and figure out what is going on.&lt;/p&gt;

&lt;p&gt;If you are building a portfolio, an art project, a game, an interactive story, or a highly expressive brand experience, originality may be the product. In those cases, the interface itself is part of the message.&lt;/p&gt;

&lt;p&gt;But most websites are not that. Most websites are closer to software. They exist to help users do something. And software benefits from conventions. Nobody complains that every desktop app has menus, windows, buttons, scrollbars, keyboard shortcuts, and settings screens. Nobody wants each text editor to invent a new way to save a file. Nobody wants every checkout flow to completely reinvent how payment forms work.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Early Web Was More Like a Brochure
&lt;/h3&gt;

&lt;p&gt;Part of the reason people expect websites to look different is historical. In the early days of the web, most websites were not applications. A company website was often a digital brochure: a homepage, an about page, a contact page, maybe a product page, maybe some animated graphics. The web was a publishing medium first. It was closer to a magazine rack than an app store.&lt;/p&gt;

&lt;p&gt;So companies treated websites like marketing materials. The goal was to express the brand. Be memorable. Look different. That made sense at the time.&lt;/p&gt;

&lt;p&gt;But the web changed. Today, websites are often full applications. Banking, email, project management, analytics, design tools, developer tools, ecommerce, healthcare portals, tax software, maps, calendars, document editors, CRMs, dashboards, admin panels, and social platforms all run in the browser.&lt;/p&gt;

&lt;p&gt;From a user experience standpoint, these things should not behave like brochures. They should behave like software. And software works best when users can transfer knowledge from one tool to another.&lt;/p&gt;

&lt;h3&gt;
  
  
  Standardization Helps Users Move Faster
&lt;/h3&gt;

&lt;p&gt;When websites share common design patterns, users get faster. They know where to look. They know what to click. They know what will happen next. They can predict the system. That predictability creates confidence.&lt;/p&gt;

&lt;p&gt;This is especially important for functional websites. A developer using an API dashboard does not want to decode an experimental interface. A shopper checking out does not want to hunt for the cart. A patient using a medical portal does not want a creative navigation system. A small business owner using accounting software does not want the invoice editor to be a visual puzzle.&lt;/p&gt;

&lt;p&gt;They want clarity. Standard layouts are not lazy. They are respectful. They tell the user, "You already know how this works." That is powerful.&lt;/p&gt;

&lt;h3&gt;
  
  
  Responsiveness Pushes Designs Toward Similarity
&lt;/h3&gt;

&lt;p&gt;There is another practical reason websites are starting to look alike: responsive design. A modern website has to work on large desktop monitors, laptops, tablets, foldables, and phones. It has to handle different screen widths, input methods, font sizes, accessibility settings, and network conditions.&lt;/p&gt;

&lt;p&gt;That naturally pushes designers toward patterns that survive across contexts. A three-column desktop layout becomes a single-column mobile layout. Navigation collapses. Cards stack. Tables become lists. Buttons become full-width. Sidebars move behind menus. Content is broken into modular sections. Interfaces become more grid-based and component-driven.&lt;/p&gt;

&lt;p&gt;Once you design for responsiveness, some choices become obvious because they are durable. Cards are popular because they adapt well. Navigation bars are popular because users understand them. Responsive grids are popular because they scale. Reusable components are popular because they keep interfaces consistent across pages and devices.&lt;/p&gt;

&lt;p&gt;A wildly unique desktop design may look impressive in a mockup. Then it falls apart on a phone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Standardization Is Not Boring. It Is Useful.
&lt;/h3&gt;

&lt;p&gt;A lot of complaints about websites looking the same come from people who spend a lot of time looking at websites as objects. Designers look at websites. Developers look at websites. Marketers look at websites. Founders look at competitors' websites. We notice patterns. We get bored. We want something fresh.&lt;/p&gt;

&lt;p&gt;But users are not usually studying websites as creative artifacts. They are trying to get something done. For them, sameness can be a relief. Familiarity means less thinking, fewer mistakes, faster decisions, and lower frustration. That is not boring. That is good design.&lt;/p&gt;

&lt;p&gt;The web has grown up. Websites are no longer just digital brochures. They are tools, workspaces, stores, dashboards, editors, communication systems, and applications. And applications should be predictable.&lt;/p&gt;

&lt;p&gt;So yes, many websites are starting to look the same. Good. That means the web is slowly learning what software has known all along: users do not want every tool to be a new adventure. They want it to work.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>marketing</category>
      <category>ux</category>
      <category>design</category>
    </item>
  </channel>
</rss>
