A Manifesto for Progressive Software Development

I’ve been thinking a lot about how I develop projects and what makes my projects uniquely mine. As of November 2023, I have four sites that I am actively working on: Binary Moon, Brush Ninja, Ninja Puzzles, and WPBriefs. Despite working mostly in the evenings and being a one-person team, I manage to update all these sites every week (often multiple times). How do I do it? Let me share my approach with you.

Release Early, Release Often

Perfect is the enemy of good

My strategy is to release early and release often. This means adopting an iterative development process where I continuously refine and improve my projects. Rather than waiting until everything is perfect before releasing it. I believe in getting something out there as soon as possible. This allows me to gather feedback from users and make useful adjustments along the way; as opposed to guessing what would be useful and spending a long time making something people don’t want.

Embrace Minimalism

In addition to iterative development, I keep everything as minimal as possible. Not only in terms of functionality but also from a technical standpoint. Why? Because I want development to be quick and easy. By stripping away unnecessary complexities, I can focus on delivering value efficiently.

My website designs tend to be almost brutal. I use ElementalCSS for all my projects and try to steer clear of fancy animations and other unnecessary bells and whistles.

My code is not fancy either. All of my sites are static html, css and JavaScript. This keeps hosting costs down, ensures scalability, and makes it easier & quicker to maintain.

Automation is Key

Automation plays a vital role in my workflow. Whenever possible, I automate repetitive tasks so that they don’t consume unnecessary time and effort. For instance, I build small local tools that help speed up various processes. These tools act as shortcuts, enabling me to complete work more rapidly without compromising quality.

For example I have created my own code for generating related posts. Because I have a consistent tech stack I can use exactly the same code for all my sites, and any improvements I make will automatically propogate across all projects.

Consistency Matters

Consistency is essential when working on multiple projects simultaneously. One example of this is that I name things consistently across different projects. One example is that all of my projects have a deployment script called deploy.sh. By standardizing aspects of my workflow, I don’t have to remember how to do similar tasks across projects. In this instance deploying a project is the same regardless of which project I am working on.

Stick to What Works

Using the same boring technology stack across all projects has proven beneficial for me. It saves time by allowing me to leverage my existing knowledge and experience. It allows me to reuse code easily. Additionally, it ensures consistency in the codebase, making maintenance and updates more straightforward.

Document Everything

My documentation comprises lots of code comments. I make sure all functions/ methods have docblocks and there are comments throughout the codebase. This ensures I can jump between projects and get up to speed quickly.

Harnessing the Power of AI

Modern tools like AI offer incredible potential for boosting productivity. While I don’t rely on AI to do the work for me, I use it to my advantage by leveraging its capabilities to find shortcuts and speed up certain tasks.

Recently I have used AI to help me optimize my code. I use ChatGPT to identify areas of my codebase that could be improved. I also use AI to help me generate content for my websites.

By embracing technology, I can complete the boring work more quickly and focus on the things I enjoy while still maintaining control over the creative process.

With these strategies in mind, I’ve crafted a manifesto for progressive software development:

A Manifesto for Progressive Software Development

  1. Start Small, Improve Fast: Deliver the basic user experience first, then make quick improvements.
  2. Share Resources Wisely: Use resources smartly across projects for efficiency and consistency.
  3. Focus on Users: Puts users first, align design and features to their needs.
  4. Be Unique, Not Trendy: Prioritize familiar tools over short-lived trends for speed and efficiency.
  5. Always Learn: Keep growing personally and professionally.
  6. Keep It Simple: Opt for simple design, features, and language to boost user understanding.
  7. Document with Purpose: Create clear and strategic documentation for smooth collaboration and onboarding.

By adhering to these principles, I believe I can create software that is efficient, user-friendly, and adaptable to the ever-changing needs of my users.

Was it good/ useful/ a load of old rubbish? Let me know on Mastodon, or BlueSky (or Twitter X if you must).

Link to this page

Thanks for reading. I'd really appreciate it if you'd link to this page if you mention it in your newsletter or on your blog.

Related Posts

27 Feb 2013

Designing Perfection – A Waste of Time?

I know it’s a little bit old but I read an article on Dustin Curtis blog recently about how perfection is a make or break element of a performance or product – and craftsmanship has been lost… and I don’t...
01 Apr 2015

The State of WordPress Themes #wcldn

I recently spoke on a panel at WordCamp London 2015e. Lance – who used to be the Theme Team lead at WordPress.com – asked me if I wanted to speak on a panel with him at WordCamp London 2015. I’ve...
28 Sep 2021

Creating Generative Art with PHP

These last few weeks I’ve been experimenting with Generative Art, using PHP. You can see the evolution of my latest series on Twitter. Generative Art is creating artworks through programming. Generative art has a few different names, Procedural art and...
19 Dec 2023

My Creative Process

In writing about creativity and AI recently, I started reflecting on my own creative process. While I love making things, I’ve always questioned whether or not I’m truly creative. However, I’ve come to realize that my creativity stems from gathering...
27 May 2013

WordPress: 10 Years Young, What Does The Future Hold?

WordPress is now 10 years old. I started using wordpress 9 years ago – which means I joined the WordPress community early on. The reason I chose WordPress is simply because of the fabled 5 minute install process – I...