I am robots.

RSS

Coding skill and the decline of stagnation; a response.

notch:

I am a decent programmer. [Next portion removed for clarity]

Agreed. I’ve seen you write code for the Ludum Dare competition. It blew me out of the water, and I’ve been noted for my own software development capabilities as far back as sophomore year of high school.

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.

This is very interesting to me, since I was originally self-taught, and from that point, I worked through an IT introductory course load in high school, before enrolling in a Software Engineering program. The approaches are significantly different, having seen both sides; things like Software Requirements, Architecture, and Design Patterns, as well as Personal Software Process and Team Software Process, are among the most valuable things I’ve encountered in college so far, and none of them (except Design Patterns, perhaps) involve actual programming.

Now, it’s true that the tools of software engineering are significantly useful, but they also have a small tendency to make a project either too complex in terms of time, or just fail to be necessary or applicable in the field of game development, as I’m sure you’re aware. When it comes to macro-scale gaming applications, such as MMOs, the incorporation of a team-based design process can significantly help a project avoid DNF status (“Duke Nukem Forever” or “Did Not Finish”, take your pick), since it identifies the things that are likely to become issues with the process before they occur.

However, in games with a significantly more artistically-driven development, or in other situations where the software-development group is small and specialized, I can see the trappings of a strict software development process clashing with the artistic development processes, or simply impeding forward progress on the project. In terms of Minecraft, and the Ludum Dare competitions, since they were started as one-man efforts, writing any sort of detailed documentation or following a strict pattern would have simply wasted valuable time otherwise spent on prototyping or developing features.

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.

I love this, but I feel it’s not quite accurate. I would change “coding” to “software development”, since in fact, version control software, code analysis tools, and knowledge of modular design patterns and strategies isn’t really coding, it’s more of the other aspects of software engineering and development. 

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

I often feel this way myself. I hope you’ll forgive me for sounding bold in stating my own opinions on this, since I am still just a student, of both software engineering and life in general. However, I’ve seen that the more I discuss these things with others, the more I am able to take away as knowledge, advice, and experience. Understand that I’m simply stating my beliefs on the subject of coding vs. software engineering, and facilitating a conversation on the topic from an outside point of view, if you would care to continue.

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.

Agreed; I’ve been working with the DataTurbine API for a school project, and I am astonished at the amount of accessor bloat I’m encountering with what should be domain-model data objects (the ChannelMap class, for those familiar), coupled with entirely suboptimal documentation, even for an open-source version of a previously closed-source project. However, consider that an originally-internal project like Minecraft is now being retrofitted with a public modding API (well, I hope…), and people expect public APIs to have fairly consistent, well-documented interfaces, with a proper level of security and separation of functionality.

Point is, SOPA sucks.

Again, agreed; I’ve been watching the reaction to the legislature since September.