Great products are built by people who find meaning in them

Adir Duchan
HiredScore Engineering
5 min readDec 30, 2019
Photo by Alice Achterhof on Unsplash

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).

http://steam.cryotank.net/

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:

Touch typing hand placement practice — Pinterest

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!

Typing Speed Test

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

--

--