informa
4 min read
News

Opinion: Re-Education (Through Leaderboards)

Agora Games' lead engineer David Czarnecki describes how developers looking for change in their work can try to repeatedly solve problems in different ways, in this #altdevblogaday-reprinted opinion piece.
[Agora Games' lead engineer David Czarnecki describes how developers looking for some change in their work can find it in trying to repeatedly solve problems in different ways, in this #altdevblogaday-reprinted opinion piece.] In the last two weeks I've ported my leaderboard library, originally written in Ruby, to PHP and Java. It has been an extremely fulfilling endeavor for a number of reasons. Let's face it, we've all been on epic e-mail threads where someone poses a problem, e-mail armchair development ensues, and people argue back and forth about what will and what won't work, and at the end of the thread, the original author is left with more questions than answers, more what could be than what should be. That happened to me about two weeks ago. It all started with a Friday evening e-mail to engineering, "We have a vexing leaderboard issue I'm opening up for suggestions." It was for a property we didn't write, but one that was in dire need of help. The thread was 20 e-mails in before I responded at 9 AM the next day with (paraphrasing here): "I made this for you. Use it or don't. At the very least, it can be tested right now as a potential solution." And so the php-leaderboard library was born. I had unleashed PHP unto this world. But, it was fully tested. And I also went through the steps to ensure that other developers could find it via the PearHub package system (php_leaderboard package). If it had turned out, given the constraints, that php-leaderboard wasn't going to be a viable solution, it really wasn't going to phase me. I learned some PHP. I was like Jojo the idiot circus boy with a pretty new pet. Now the pet is my possible solution. "Oh, my pretty little pet, I love you. And then I stroke it, and I pet it, and I massage it. Hehe, I love it, I love my little naughty pet, you're naughty! And then I take my naughty pet and I go …" Wait … what? The point is I found some inspiration to try something new and to present a reasonably complete solution to the problem at hand. You could say that after the PHP port, I developed shpillka in my ganektagazoink, but that's besides the point. No, that is the point. I had the bug. The bug to learn new languages and re-learn old languages. So, before coming to Ruby, I developed in Java for nearly 15 years, with a three year stint of C# in there as well. And so this past weekend I ported the leaderboard library to Java and the java-leaderboard library was born. I also took the steps there to figure out how to properly release that as a library that other Java developers could integrate using Maven. Thankfully, after 3 or 4 days of what seems like more process than progress to me, I was able to get the java-leaderboard library out to the world. Search for it and you'll find it. The PHP port was also inspiration for two colleagues to release the python-leaderboard package. It felt really good to work in a new language and to re-connect with an old language. And for whatever reason, I need that mental disruption to continue. And so it shall. My current in-progress ports of the leaderboard library are to NodeJS and Go. Porting the leaderboard library works for me because of a number of factors:
  1. It is well-defined in terms of behavior/functionality.
  2. It requires integration of a service and a service client library.
  3. It requires some knowledge of control statements, types and higher-level data structures.
  4. It has a well-defined set of tests.
I've had to become comfortable with being uncomfortable. New syntax, new packaging, new test framework, new release mechanism. Conformity be damned! I would encourage anyone who feels they're set in their ways or in need of a change to undertake a similar endeavor. I can imagine this applies to any number of disciplines in the video game industry. Find a well-defined, testable problem that you've solved again and again and solve it differently. It's that simple. You can find more hilarity over on my Twitter account, @CzarneckiD. [This piece was reprinted from #AltDevBlogADay, a shared blog initiative started by @mike_acton devoted to giving game developers of all disciplines a place to motivate each other to write regularly about their personal game development passions.]

Latest Jobs

Treyarch

Playa Vista, California
6.20.22
Audio Engineer

Digital Extremes

London, Ontario, Canada
6.20.22
Communications Director

High Moon Studios

Carlsbad, California
6.20.22
Senior Producer

Build a Rocket Boy Games

Edinburgh, Scotland
6.20.22
Lead UI Programmer
More Jobs   

CONNECT WITH US

Register for a
Subscribe to
Follow us

Game Developer Account

Game Developer Newsletter

@gamedevdotcom

Register for a

Game Developer Account

Gain full access to resources (events, white paper, webinars, reports, etc)
Single sign-on to all Informa products

Register
Subscribe to

Game Developer Newsletter

Get daily Game Developer top stories every morning straight into your inbox

Subscribe
Follow us

@gamedevdotcom

Follow us @gamedevdotcom to stay up-to-date with the latest news & insider information about events & more