13 January 2012
Coding skill and the decline of stagnation

notch:

I am a decent programmer. I know a decent amount of computer science theory, I can type correct code fairly easy. I don’t let my classes expand too much. But I still struggle some with math, and I have a tendency to have too many cross-dependencies in my code.

I used to think I was an awesome programmer. One of the best. After I made a game in the first programming lesson in school, I got told to don’t bother showing up for the rest. I was the one who taught all my friends what big O notation is and how it’s useful, or why hashmaps can have an effective constant speed if used right.
When someone told me I was a bad programmer, I got upset. My identity was based on being The Best Programmer, and being accused of not being one was a huge insult. Of COURSE I wrote bad code sometimes, but that was just sloppyness or part of some grand scheme, or some other weak excuse.

When doing a programming test for a large US based game developer, I did well on most tests. After the programming test, they told me it was obvious that I was intelligent, but also that I was self-taught. I had to work on programming more carefully and think things through before diving in, or I’d have a hard time working in a large group. Externally, I nodded politely. Internally, I was stunned and confused.

That kind of woke me up. Ever since, I’ve been working on improving my coding skill. During my work on Minecraft, I never really got a chance to try out new things, or play with new tools, but these days I’m really trying to learn new things and pick up better habits as much as I can. And as a result, I’m having even more fun with the programming. At the moment, I’m trying to tame GIT, playing around with MongoDB, trying out some static code analysis tools, and have started working on making my code even more modular and reusable.

The more I learn, the more I realize how little I know.

But. I still stubbornly believe the whole “private members accessed via accessors” thing in java is bullcrap for internal projects. It adds piles of useless boilerplate code for absolutely no gain when you can just right click a field and chose “add setter/getter” if you NEED an accessor in the future.

Point is, SOPA sucks.

I’m glad to say I never felt like I was an awesome coder - and I still don’t. I definitely now have the confidence to know what I’m capable of, but I know there’s still quite a bit to learn. My major weakness is understanding how other languages work. Until recently, I had no idea you had to be in a “studio” environment to make some languages. That, in fact, your IDE makes the program for you. I still dislike programs and the concept of “platforms”. I can’t imagine making something and having it simply unable to run on anything in the world. The closest I’ll accept is some design elements being unable to be displayed due to browser support.

I think my code right now is very decent. I’ll be getting incredibly familiar with object-oriented principles (OOP) soon enough, and I hope that the whole of game 3’s engine will be in OOP. At any rate, I look forward to progressing as a developer in the years to come, whether I learn python for fun or not.

← Read More