Great products are built by people who find meaning in them
When I was Ten, or, Twelve… or… Fifteen…ish? (man, that part of my childhood is very vague).
Our Computer Science teacher gave us our mid-year projects, We would pick subjects out of a list, or come up with our own ideas.
Picking a project:
I remember looking at the list, and feeling… well… nothing. 😐
Zero ambition, zero motivation, zero inspiration, (zero + zero) * zero = zero.
I wasn’t the type of kid who’d create another CLI or a basic calculator (no offense to numbers).
I needed a goal, a reason, something. What’s the point of creating anything if you don’t believe in its value?
And then it hit me 💡 — I found my motivation.
Unreal Tournament:
Back in the day I used to play Unreal Tournament online, (like a lot).
And for those of you who can relate, you know the hassle of trying to stay focused during a chaotic Capture The Flag tournament.
Dodging, shooting, switching weapons, all the while communicating with your teammates on the console. You have to multi-task, you have to react fast,
And you have to… have to… HAVE TO — touch-type.
A split millisecond you glance at your keyboard looking for the “T” key,
And you get hit in the face by a rocket launcher.
Newbie.
So I figured, Hey, If I improve my typing skills, I improve my gaming skills — Now that’s how you inspire a kid! 💪
Defining the project:
Now that I had the goal of learning how to touch-type, I needed to define some guidelines to the project ✍
- ✅ It needed to improve typing skills.
- ✅ It needed to be fun.
- ✅ It needed to be adaptive, as both beginners and skilled users should be able to improve their typing skills.
Design process:
Armed with the spec, I started figuring out the design:
- “I place a character on the screen, user types it, it disappears , score is calculated based on reaction time.” — Ok, it’s a start, that will probably improve eye-hand coordination, but might not get far as touch typing.
- “Ok, multiple characters, different sizes, changing colors.” — That’s just plain chaotic, where’s the fun?
- “Characters are moving from left to right, if one reaches the end of the screen, game over.” — Nice, maybe more dynamic?
- “…At random speeds.” — Great. but users have different level types.
- “…Speed is based on user level, at increasing rate, eventually getting so fast you have to look at the screen.” — Jackpot. 👍
Implementation process:
The whole thing took around three months.
I ended up building the whole thing on top of the old C GUI.
Not an easy task to say the least.
But after hard work, countless sobbing, and sleepless nights — I had a demo running! 🎉
Don’t get too excited though, this scripted beauty had one main function, tons of patches and crazy bugs, I mean, if programs were people, mine was a pirate. No joke, every several runs the program would run into an infinite loop so bad I had to restart the computer. 🤖
Bad robot.
But what did I know back then? I was a kid, I wouldn’t recognize a design pattern if it hit me in the face, All I knew was that my program wasn’t perfect, but it worked, and it was mine — all of it. The good, the bad, the key learnings, and the results. 🤩
I created something meaningful from start to finish, that solved an actual problem in my life.
Outcome:
Did I reach my goal? Absolutely. ⭐
Not only did I get better playing Unreal Tournament, I was also accepted to one of the top 3 clans in the country! (*geeky-high-five*)
Today, there are plenty of these touch-typing games available online, the best I found were TypingClub, Kerbr, Typing Speed Test — go check them out!
Final Thoughts:
We as Software Engineers should encourage ourselves to work on things that are meaningful to us.
But here comes the tricky part, ready? — we’re not kids anymore.🐣
We have real world constraints — deadlines, meetings, goals, sprints, versions, Adults are basically tall children with responsibilities.
So how can you stay fulfilled while still meeting company expectations?
First, try looking for common goals:
- If it’s an existing bug you’ve been wanting to solve.
- A cool project you’re interested to take part in.
- A tech debt that can be solved by a technology you’ve been wanting to explore.
Or in python:
practical_goals = your_goals.intersection(company_goals)
Can’t find a common ground at the moment? stay positive and be pre-emptive:
- Initiate discussions around topics you care about, it sometimes create a ripple effect.
- Have an opinion and share your aspirations internally, once your superiors know what drives you, they could hand you projects that better suit you.
- Be aware of your surrounding, your colleagues might be working on something amazing, and you are welcome to pair.
It’s a win-win situation. 🥇
I believe great products are built by people who find meaning in them.
So when you do things that are meaningful to you, everyone benefits — You, your company, the product, and your users. 🙏
Sincerely yours,
Adir Duchan