Happy Projects Are SMART Projects

You might have heard of SMART goals.

You might even have heard of smart working.

Today, I bring you SMART projects: a five points mnemonic to ensure your next software project goes amazing!

Ok, maybe I’m exaggerating. But it’s still solid advice, in my opinion. And I found this cool acronym, so I had to share.

S: Start Small

You have an idea. You think, “ah, I could build that”.

You start your editor, make a couple of scaffolding classes, and before you know it you’re implementing FIPS authentication, CSS animations, containerized microservice deployments for scale, and a companion app (for both iOS and Android).

How do I know? Been there, done that. How many projects did you finish, that way? I know I have delivered zero.

Ignore the sweet sweet song of adding features before you launch, and keep it small.

You can always improve your nimble, working, released thing as you go.

M: Make a Plan

Look, you don’t need a 15 page business plan or a UML-based architecture diagram.

Giving some thought to the steps you will take and how are you going to implement things before you go write thousands of lines of code will help you not get sidetracked or end up stuck in some corner.

A simple bullet pointed list, kind of like a Todo list, and some notes and sketches will make all the difference.

And remember that your plan is not written in stone: you can always change it and adapt it to the evolving situation.

A: Always Deploy

Whenever you complete a feature, as small and insignificant as it might be, deploy it.

Yeah, I know, that’s super scary. Do it anyway. There’s no better way than throwing all things out as soon as you can. It will teach you things about your product as your customers use it and give you all kinds of feedback.

Make sure you can rollback easily, and just ship it.

R: Remember Your Users

The curse of the software engineer is they love technology.

What about trying to incorporate that cool new library? Maybe rewrite the whole thing in that new cool programming language you read about? Oh, I know! Let’s incorporate Chat GPT!

That’s all cool and fun, and I might have the same hobby occasionally. But does it matter to your users? Spoiler alert: your user give zero fucks about libraries, programming languages, or AI integrations. They care about the functionality you provide.

Have fun with tech, but focus on the features. Remember to keep your users in the center (even if you’re the only user).

T: Take it Easy

As the saying goes, developing software products is a marathon, not a sprint.

Take your time, and treat it as an artisan would. Know your limits and work around them. Don’t get flustered, take a break when stuff doesn’t work.

You got this.