Intent, Software, Experience, and Architecture

 | 
June 8, 2022
Aug 11, 2022
 | 
Read time: 
30
 min
Intent, Software, Experience, and Architecture

A guide in thought for your next software project.

This article was originally published on Medium.

TL;DR

I was sitting in my office drinking coffee and staring at a mostly default project that was open on my computer screen. I was in the middle of building a game with Unity on one screen and I had drafts of content open in a browser on my other screen. I had worked on this idea for months and had concept art, story ideas, notes on mechanics, and links to YouTube videos that I thought may be helpful along the way.

Things to keep in mind at every step as you develop your next (or current) application:

  • Who am I building this for?
  • Why is this good for that community?
  • How will this be used by the humans that will use it?
  • What will the end product look like, be known for, or be easily defined as?

---

As I took another sip of my coffee, I started feeling my focus drift and take a turn down some alleys off the main road. On my way back to the original route I thought, “I need to talk this out with someone.”

After looking around the internet for forums and communities, I had an idea.

“Why don’t I make my own community? Somewhere focused where people can freely share their thoughts on game development.”

With this in mind, I got to work on designing my new application. I know this was just an excuse to get away from the void staring back at me in the form of the empty project, but I imagined that I could create something that could not only help me and my writers block, but help others too. So I got to work.

When I began working on the website, I thought about architecture first. I considered that the experience could be designed around a solid, scalable, foundation and that way I could focus on the UI. This was a great idea. Or was it?

Once I had a rough draft of the architecture, I talked to some coworkers and got their input. One of the wisest responses I got was something along the lines of, “why are you designing this architecture to handle one million users when you don’t even have the site yet? It takes time to build your base. Get the experience right and build your architecture around your use case.”

When I heard this I mumbled about a half dozen excuses quoting software architecture methodologies and well-architected software white papers before I realized, “Damnit, they’re right. I’ll go broke before I have a single user.”

I eventually let my ego go and asked my colleague what I should do and they suggested that I build with good patterns but only for what’s needed. My mind rang out with, “Duh! I used to do that when I was younger. I knew better somehow when I knew so much less about what I was doing. What happened? When did I get so scared?”

As developers it’s easy to get caught up in chasing the numbers and searching for some objective anchor for our software to be built around. We want it to be bullet proof like a circuit board: mathematically driven and impossible to fault. But what we’re really creating are platforms for humans. That is not usually an objective thing, and this is especially true when getting started. You can guess at metrics all day but, until you have data, you can’t make assumptions. You’ll end up designing a rocket ship that goes to the grocery store.

“Our intent for our creation is everything.” This is what I learned to keep telling myself. To succeed we need to go back to why we began the project, how it is different, and why it is needed in the world. This is our intent. This is the seed and our goal at the same time. If your intent bookends your project in this way, you’ll be more consistent in your design and implementation. “Begin with the end in mind” as Covey would say. Architecture built otherwise is designed selfishly despite the justifications.

This is not to say that we can’t adjust our vision over time or pivot around the original idea. The core just never changes. If it does, you’ve started a whole new project and need to start over (which is completely ok and happens sometimes). Just check your intent with each step you take.

There is a simple formula that we all recite but are rarely consistent with when we put it into practice:

  • Who am I building this for?
  • Why is this good for that community?
  • How will this be used by the humans that will use it?
  • What will the end product look, be known for, or be easily defined as?

Keeping these questions at the forefront of your work will help steer your backlog, your user experience, and your architecture. It is the core of your intent and can lead to a better product.

Now, as I watch my website grow into something, I can feel more confident that I am using my time wisely and will build something people will enjoy. I hope to release it someday soon and get back to work on the game that brought us to this point in the first place and complete this crazy journey.

Scapes uses his Innovation Hours to develop his game website along with other passion projects.