DEV Community

Cover image for Constant Refactoring: Refactoring my refactored Website
Ingo Steinke, web developer
Ingo Steinke, web developer Subscriber

Posted on

Constant Refactoring: Refactoring my refactored Website

Constant deprecation and breaking changes in npm packages cause "software rot" even for content-focused frontend micro-sites like my personal portfolio website. Thanks to progressive enhancement and static site building using Eleventy's JAMStack framework, I can still update my content and run my existing npm build jobs, but that's not the biggest problem, anyway.

I've come a long way, from Notepad++, Dreamweaver, Flash and Perl to the ever-channging modern frontend-focused full-stack web development and a diverse range of conceptual approaches, including

  • Tutorial-Driven Development (we're all beginners at some point)
  • Invoice-Driven Development (driven by customer demands)
  • Content-Driven Development (focusing on marketing and SEO)
  • Emotion-Driven Development (getting upset about WordPress and Shopware)
  • Test-Driven Development (better quality control)
  • Test-Assisted Development (a more pragmatic compromise)
  • CV-Driven Development (React Recap, Astro, TypeScript, Tailwind)

My personal portfolio project saw a major relaunch in 2021, replacing its initial placeholder-business-card predecessor from 2012.

It's still mostly in the same state, a little less concise and more accessible, thanks to some half-hearted minor updates. The tech stack includes JavaScript/ES6, Babel, ESLint, HTML 5, CSS 3, PostCSS, Stylelint, Eleventy (11ty), Liquid, Netlify (for cloud hosting), CodeceptJS and BrowserStack (for testing), Git and GitHub for versioning and project management, and npm to update most of this software.

Tech stack logos: JavaScript, HTML5, CSS3, ES6, PostCSS, Liquid, Netlify, 11ty, Git, GitHub, npm, ESLint, Babel, BrowserStack, Stylelint, EditorConfig, CodeceptJS

Not explicitly listed: http-server for a local preview, PHP for some simple back-end tasks, esbuild as a lightweight alternative to Webpack, and JSDoc as a lightweight alternative to TypeScript.

Having neglected to maintain my personal portfolio website project for a while, it proves that there can be technical debt even in a very small project.

Upgrading and refactoring a portfolio web project

  • improve test coverage before anything else
  • fix navigation inconsistencies
  • fix graphic and typographic inconsistencies
  • fix inconsistent code
  • upgrade outdated software components
  • add case studies
  • revise landing pages for specific audiences
    • end-customers (startups, small businesses, preferably with an ethcial focus)
    • recruiters and "agencies" (B2B web development companies)
    • fellow developers to collaborate with
    • designers to collaborate with.

While this is still mostly focused on design, content and marketing, the "non-functional" aspects include

  • ensure and improve accessibility and usability
  • ensure and improve "web performance" (loading speed)
  • ensure and improve maintainablility (decrease "technical debt")
  • follow modern coding best practices.

Strategies and Synergies

Strategies for better maintainability and coding assistance:

  • use popular mainstream tools
    • replace Codecept by Cypress or Playwright
    • evaluate if Eleventy is still a good choice
  • verify that the code still follow current best practices
  • verify that LLM-based AI tools can "understand" my code

As a part of my professional marketing strategy,

  • ensure that my content is consistent across

Business cards of Ingo Steinke, Creative Web Developer

Atomic Steps

Prioritize, avoid perfection, and split work it into small, actionable units, and use a straightforward tool like GitHub projects to track and organize.

Top comments (10)

Collapse
 
srbhr profile image
𝚂𝚊𝚞𝚛𝚊𝚋𝚑 𝚁𝚊𝚒

I believe GitHub Projects could be improved to be more useful. It's just not there yet. I'm a linear enjoyer.

But yea, this reminds me I need to do some plumbing and fixing on my websites as well.

Collapse
 
kurealnum profile image
Oscar

CV Driven Development

I think I've been doing that lately xD

Collapse
 
prime_1 profile image
Roshan Sharma

Nice approach
Constant refactoring keeps the code healthy, and adding some automated tests could make it even more maintainable.

Collapse
 
ben profile image
Ben Halpern

Great post

Collapse
 
mark_norman_22b130294390b profile image
Mark Norman

"avoid perfection" ... great advice @ingosteinke

If I try to make an AI agent produce higher-quality code than an average engineer and be more deterministic than an average human being, yet the agent costs under $100 a month to run, am I being an idiot?

Collapse
 
ingosteinke profile image
Ingo Steinke, web developer

If someone would make an AI agent constantly producing quality code, even on the level of senior engineers, that would be a huge step forward beyond the unreliable and undeterministic hype agents and assistants that everyone keeps discussion right now. So, no, you've got a good goal in the right direction, I guess.

Collapse
 
mark_norman_22b130294390b profile image
Mark Norman

That was actually intended to be a rhetorical question @ingosteinke, but reading my post again I can see I failed that writing task :) What I meant to say is that I sometimes find myself trying to reach perfection when creating my agents. Then I step back and realize I'm already saving a ton of money and trying to perfect the agent is not gaining me much.

Collapse
 
tanelith profile image
Emir Taner

Many insights, thank you for sharing!

Collapse
 
mofadlalla profile image
Mohamed Fadlalla

That's an interesting perspective. Thanks for sharing 😊

Some comments may only be visible to logged-in visitors. Sign in to view all comments.