My wife told (read “forced”) me to start going to the gym. I was becoming too “skinny”, which was a result of us working on our new house. I used to be quite averse to picking up something heavy, putting it back down, repeating that a few times, and then repeating that repetition with small interspersed breaks.
Being the good husband that I try to be, I agreed to join her at the gym she had started going to — The Box in Paceville. To condense this, somewhat irrelevant, part of the story down to the essentials, I enjoyed the CrossFit classes and continued to attend.
To book a class was simple, send a message on the group Messenger chat mentioning the time of the class you wanted to attend. Christina, the owner and trainer, would respond with a confirmation or state that the class was full. Being an obsessively organised person, this system frustrated me. I couldn’t understand how Christina could handle all these booking through Messenger. I asked her about it. She said it was tiring. I wanted to solve this for her. This gave me the opportunity to play around with a new platform we had been using for smaller web projects.
What was going to be a side project experiment that solved a problem for a friend became something that kept my sanity balanced. Maybe I’m putting too much weight on it, as is the CrossFit way, but let me explain why it became one of my favourite projects to work on.
The makings of a perfect project
Firstly, let me apologise to any of my other clients, it’s not you, it’s me. But, you’ll soon understand why there’s no reason to be offended.
I wanted to understand why I enjoyed working on this project so much. Why I arrived home from work and wanted to potter around with the system and make small optimisations where I could. So I made a list.
- The result directly affected me
- I had the freedom to do what I felt was best
- I had a specific problem I needed to solve
- The client was directly affected by the result
- It relieved much of my everyday stress
- I finished it in such a short time
The result directly affect me
Being a member of the gym meant that I would have to use whatever I created. Being the designer, developer, and end user is a fun position to find yourself in. It allows you to think about what you would like to have, and then quickly implement it, test it, gain user feedback, and continue the cycle.
I’ve built several projects for myself or for work. From a back office helper to organise our management documents and create project estimates, to Google Spreadsheets to manage finances for my house, wedding, company, holidays, the list goes on.
For each of these projects, the more effort I put in to them, the more I could see the results. The easier it made my life. This is the intended feeling I want to give to my client whenever I start a project for them.
I was free to do what I felt was best
Christina didn’t ask for this. I offered to build it for her. This may be the reason why she left me to do what I thought would be best for the system. She had no requirements, other than make it easier to handle bookings.
This is rarely the case with client projects, and I understand the reason. Clients have made an investment. They want to see this investment pay off. They are likely the ones who know best about their business and should be the ones driving the business logic decisions. Sometimes, however, the client’s control leaks into the design or development areas of the project. Because this is something they are commissioning for their own business, I can’t fault them for wanting that control.
This project was different though. This project had a simple goal and I was free to accomplish that goal however I felt necessary. It was not my ego as a designer or developer. It was not my drive to have something impressive on our portfolio. It was not my eagerness to find easy solutions in order to finish the project quickly. It was the simplicity of working on something and not having to “sell” my reasoning.
I had a specific problem I needed to solve
The reason for this project was clear — reduce the complexity of handling booking. This could be done by settings up a booking system and that’s it. No work needed to be done. But that would be boring, and only boring people like boring things.
I wanted to solve this problem without creating an overhead for Christina or the members of the gym. I also wanted to use it as an experiment for Webflow, the platform we’re using to build websites that don’t require us to build custom solutions.
My goal needed to coincide with the goal set out for the client. This unified goal served as a beacon to work towards.
It should be assumed that all projects have a specific problem that needs to be solved. I wish this were the case. Sometimes the problem is unclear, or it is artificial. It can change during the course of the project. It could happen that the assumed problem isn’t even the cause of the issue and there is a more pressing problem elsewhere. A good start to any project is to define the problem that is being solved. This project had the most clear problem to solve — make her life easier by reducing the time needed to manage bookings.
The client was directly affected by the result
I’ve mentioned this several times already, Christina needed an easier way to manage bookings. Creating a solution for this would save hours during her week. Knowing that the client will be directly affected, hopefully in a positive manner, is great motivation.
The result wasn’t a response to a superficial request to a non-problem. The result was something that made a difference. This is incredibly important for a project. If the resulting solution makes no difference to the client, their business, or their customers, then what’s the point of doing it?
It relieved much of my everyday stress
During the time when I was working on this project, the rest of my team were busy working on something else. They had been working on a large project for about five months. This other project was important, and, as with most software projects, taking more time than expected.
I had been working on other, slow moving, projects. They kept me busy and had interesting problems I needed to solve. They just didn’t scratch that brain itch.
In the same way that going to classes at The Box exhausted my body, this project exhausted my brain. It relieved some of my stress from the large project taking so long. It became a distraction when I wanted to work on something different. It showed me quick, but valuable, results that are required to keep you motivated.
I finished it in such a short time
From the moment I told Christina that I’m going to build something for her, to the moment I told her that it was ready, was probably about one month. Condensing the time down to working hours, it won’t go over 15 hours. This includes the time for research, experimentation, designing, building, testing, launching, and documentation.
There is no other project that I finished in less time.
The solution might not be the best solution created for The Box. If the rest of the team were to work with me on the project, maybe we would have come up with a better solution. It could also be that the result would have been exactly the same, with fewer lines of code (Alexey would have made sure of that). But that’s not important.
This project was a great success for me. It was a distraction for when I needed one. It provided a better solution for a friend. An unexpected side-effect was that it helped me understand the types of projects I should strive to work on and what other people should also seek to work on. To reiterate, these are:
- Find something that could resonate with you. You may not need to be the end user, but caring about the result is important.
- Have a mutual understanding with the client that you’re working on creating a solution for their problem, together. All parties should take their egos out of it and guide each other with reasonings as to why things are being done or why they are needed.
- Clearly define the problem that needs to be solved. Use this definition as the goal to what you’re working towards.
- Be sure that the result will positively affect the client and users. If the result is neutral, was the effort really worth it?