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.

Miami.

On Lincoln Road in Miami, sitting down for pizza. You jelly?

Holiday travels

Well, I’m leaving on a jet plane, in the words of John Denver. But unlike him, I know when I’ll be back again.

This year’s version of the holiday rush entails traveling to three different cities: Miami, the DC area, and Philadelphia (or thereabouts). Rather than staying with my mom’s family, I am going to see my dad’s side. It’s been a while for me; since they live along the east coast, it’s not often I get to see them. They’re a fun bunch, and I always enjoyed visiting them as a kid, even if they held their reservations about me. But I’ve matured, and I hope their opinion of me has as well. Family can be funny sometimes.

I’m sitting on a bus headed for the O’Hare airport writing this, with my younger brother by my side. He’s an okay guy, and definitely the type of person who tries to get out of my shadow a bit too much. But he’s my brother, you know? Again, family.

Much of my time this trip will be spent working on school and work projects; my algorithms and AI courses need labs completed, I have a couple of tasks assigned for the SDL project I’m on (a web-based robot controller for Santa Clara University), and I also want to create some documentation for the MSOE FCRO Control System, the robot and driver station framework that FCRO implemented last year. We are modifying the same system into this year’s system, and having our work documented will help us improve it for this year. Also, I will be working with my roommate, Karl, to implement a web application for claims tracking for the company he works for, as a personal consultant. I don’t know how much I can say about that. And this is all in addition to the stuff I’m doing for my own internship at Fastek. And they wonder why MSOE has such a low graduation rate.

Anyway, I’m going to wrap up this long-winded post pretty soon, to avoid TL;DR issues. Wish me luck in my travels, and pray that the Arduino in my suitcase isn’t mistaken as a bomb… I know I’ll be able to prove that it isn’t, but I don’t want the hassle. Adios!

Inspiration, motivation, stress, and abandonment

notch:

A normal project for me goes through three stages. I will summarize and review them because I’m waiting for a very slow script to finish and have nothing better to do! :D

Inspiration!
Ah! A new idea! I think I know how I could do an awesome thing, or there’s a new aspect I want to try with an existing feature. Development speed is amazingly high and new ideas get thrown around. Some of it might not be perfect, and there’s a significant risk of abandoning the project at this stage.

Fun: 5/5
Usefulness: 2/5
Fulfillment: 5/5
Productivity: 4/5

Motivation!
After the initial stage of inspiration, the project moves into the motivation driven phase. Features get tweaked and polished, and the overall design gets a final overhaul. Some boring things get pushed up until later, if possible.

Fun: 3/5
Usefulness: 3/5
Fulfillment: 3/5
Productivity: 5/5

Stress!
Suddenly I realize I need to finish the feature! Doubt sets in, and some deadline starts looming. Is it good enough? Is it even usable? Productivity drops suddenly, and the major motivator becomes just getting it done before the deadline. This usually leads to last minute work. Despite this, much of the work ends up being actually very good.

Fun: 1/5
Usefulness: 3/5
Fulfillment: 2/5
Productivity: 1/5

Abandonment!
Eventually, the project is considered “good enough”, or the deadline passes, and whatever is there will just have to serve as the final version. Sure, I could spend infinitely more time working on it, but new projects are either deemed more important, or some new inspiration sets in. The project is wrapped up and released.

Fun: 3/5
Usefulness: 5/5
Fulfillment: 4/5
Productivity: 3/5


Yes, I’m talking about the ender dragon fight. ;)

Ah, yes. I’m currently being distracted by the fruits of your labor to the point where I’ve entered stage 3 on Physics assignments. I’m rapidly approaching stage 4, but a few words of cheering-on couldn’t hurt.

And yes, I’m a studying game developer and I love your work and all that other crap that goes along with a fan speaking with/at someone they are a fan of. Just get out of my life for the next 3.33 (repeating, of course) hours. I have physics labs to finish. Thank you.