- It is well-defined in terms of behavior/functionality.
- It requires integration of a service and a service client library.
- It requires some knowledge of control statements, types and higher-level data structures.
- It has a well-defined set of tests.
4 min read
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: