Monday, October 15, 2012

SSH vs HTTP posting for GIT: What it means to be Artistically Technical

Acronyms, right? Do you know what SVN is? GIT? SSH? HTTP?

Tagging People

When a person in my industry self-identifies, they usually give them-self some sort of appellation  There's an adjective, a tag in there. A person may be a Business Person, an Artistic Person, a Technical Person, a Communications Person, a Managerial Person, etc. These aren't related to a person's job, or place in the company- well, not by causation, anyway.  An Artistic Person thinks with the right side of the Cerebrum. A Technical Person thinks with the left side of the Cerebrum. A Business Person thinks with the Cerebellum.

Okay, that was mean. But you get the point.

But as a Game Developer, I find that I get no part of the brain assigned to me. Depending on the phase of the moon and the disposition of the client, I am a Technical Person, an Artistic Person, or a Business Person. There really doesn't appear to be any 'Developer Person' role.

This presents a problem, because, as a Game Developer, I have a totally different purpose than someone who sits soundly within one of these predefined tags. If you just arbitrarily call me an Artistic Person because you know I can draw (a little), it seems then as if I become a FULL ARTISTIC PERSON, bound by the metrics and expectations that that post encapsulates.

Role-playing Metaphors

Let's use a DND Metaphor. This is like there are only three classes that anyone ever talks about, "Warrior," "Cleric," and "Rogue," and then me rolling up a Ranger. After that, give that I can fight, cast a little magic, and sneak around, you call me a Warrior, Cleric, or Rogue respectively, depending on what you need at the time. But doing this is going to frustrate our relationship: I can't live up to any of those three classes. In fact, my purpose is totally different from all three of them. Like I have a pet bear following me around, for starters.

So let me tell you what I'm actually good at. First of all, I can wear a lot of different hats. But second of all, the hats I DO wear, are different from the ones your straight-discipline guys wear.

I wear the hat of leadership. Ordinarily this would mean I'd know how to motivate people and seize the day. But specifically to me, I trade off some of the specialty leadership would ordinarily afford and exchange it for a competent and fairly detailed understanding of the development  process as a whole. A pure-blooded "Leadership Class" person has spent a lot more time learning how to manage time, keep on target, and set goals than I have.

But my derivation of the "Leadership Class" is synergistic with all of my other 'Development' hats. I've traded off some time I could have spent purely on leadership for a set of different skills that affect me in many ways. I know how to talk to programmers, to artists, to writers, to business people. I understand the relationships between the different parts of the whole, and where fractures can cause an entire company's development process to ground to a halt. And a totally self-contained "Leadership Class" couldn't do that.

My Two Hats

Now if you asked me, I wear about two hats. The first hat has to do with Leadership/ Production/ Management /Networking/ Business. This hat is newer, and I'm still working on developing it and integrating it with the rest of myself.

The second hat, much older and more established, is the Artistic/Technical hat. Right now, if you asked me what I am, and 'Designer' or 'Developer' wasn't a good enough answer for you, I'd tell you that I am an Artistic Technician.

Artistic Technician

So what does it mean to be an Artistic Technician? I am obviously not an Engineer or Computer Scientist. I'm not even a Computer Programmer. But I am also not a Writer, not an Artist, not a 3D Modeler, Texturer, or Character Concept Artist.... What exactly is it I do? Certainly I can do SOME of all the above tasks, but none as well as a specialist. To fill in their boots is to be a Ranger filling in the role of an absent Warrior.

Where's the bear that follows me around?

An Artistic Technician's strength comes from their ability to apply a wide variety of unrelated disciplines to a seemingly unrelated problem. We are cross-disciplinary creative problem solvers. At first this sounds like I'm saying I can solve Artistic Problems, but I only have half the Artistic Tools- and that I can solve Programming Problems, but I still only have half the Programming Tools.

Not so!

The real value of an Artistic Technician is that I can solve Artistic Problems with Neurology Tools, and Engineering Problems with Interior Design Tools. Here's a case in point: an Engineer has written a piece of software that can do unusual computations. Right now, he is working on trying to find the perfect technology for programming a computer to drive a car. Everything going on in his mind is related to camera vision. His narrow focus means that he is able to reach out very far in one direction, but simultaneously he is aware of few disciplines outside his own. He can neither pull nor push ideas to or from those other disciplines.

As a Artistic Technical person, I don't have the in-depth understanding of camera vision to program very sophisticated vision software. In fact, I'm not even up to date on all the technical jargon for the discipline  or the latest algorithms. But I have the baseline tools. That is, I have the access tool that allow me to peer into any discipline and follow a quick path from no understanding of a given subject to a functional understanding of a given subject in a very quick period of time. For any discipline.

So although I'm currently designing a game for children that involves spelling, I can A) translate a game problem into generic terms, B) go out, research, and find a few disciplines that may be able to yield solutions to my generic-ified game problem, C) find the engineering paper on computer vision, D) read and comprehend the paper sufficiently, and E) take his work across a wide variety of disciplines and apply it to video games totally unrelated to computer vision, who merely use the technique in order to augment the 'fun' factor.

And likewise I can take anything a fashion designer knows about how the human eye registers distinct visual objects, and talk to the Engineer about it in terms he'll understand. My knowledge might change the way he thinks about the problem he's trying to solve, and inspire a solution from an entirely new angle.

So What are SSH, HTTP, and GIT?

Lately I've been working with Social Coding frameworks in order to make my coding process smoother and more intuitive, and so that I can develop simultaneously on multiple machines. I had never done this before, and so ran into a lot of hiccups as I struggled with alien terminology and command lines.  Of course, the process of working with the Social Coding framework has probably taken up more time than it would have saved- but that's only for this specific six week project. Now that I have an understanding of how social coding works, I am going to be able to understand similar paradigms forever- really useful given that odds are most of the teams I'll ever work on will use some form of Social Coding framework.

A network person might laugh in my face at the difficulties I had. After all, countless thousands of people out there all use Social Coding. It's not like I discovered a new planet, here.  But the issue at hand here is that those people are usually working IT jobs. I'm a Technical Artist. Am I just fooling around with stuff I shouldn't have to know, ignoring my true discipline? Heavens, no!

Just imagine down the line when the IT department and Art department are arguing over an asset that has gone 'missing' in a network Commit, and no one can seem to make the other side understand exactly what the 'problem' is.

My talent is not in understanding everything. I trade off having an in-depth internal library of knowledge concerning every one subject in exchange for having the baseline tools to understand just about anything. And then I only learn tools as I need them. I am an interpreter, not a compiler. And I like that word 'interpret.' Because not only do I absorb skills precisely in the order they become useful, but I also interpret between different disciplines.

 I cannot stress how important this is: because usually the different disciplines of the world all 'know' certain things that they've never shared with other disciplines- things that would make everyone's life a lot easier, and advance technology a lot faster. Imagine if your teacher actually understood how to use all the technical tools available to them through the school. Imagine if they knew how to use every feature of blackboard, and had a thriving internet metropolis of ideas flowing about online as a result. Imagine if the guys who build blackboard could actually talk to the teachers, and redesign the system for increased usability.

Cross-discipline problem solving is everything. For the everyday layman, every technological problem they could ever have has already been solved by someone out there- they just don't know how to find that info or what to do with it if they find it. I'm the missing link.

For games? For one of the most interdisciplinary jobs on this planet?

Cross-discipline problem solving is probably the most valuable skill a developer could have.

Git, Plz

So what did I do? Simple on the face of it. My GIT repository for social coding was having difficulty accepting HTTP posts that exceeded a certain size. Although I was pushing <50MB, the system was slowing down and hanging and the remote server was hanging up unexpectedly. Part of the issue may have been when I re-imported my Spartan King prefab from the Asset store in order to get back some animations that had gone missing along the line.

I simply upgraded my system to use SSH keys, which all in all took about two hours with some setup and troubleshooting guides and an alternative .bashrc script I found on Stackoverflow while Googling. Then it worked like magic and I've been pushing fine ever since.

If you understood a word of that, you still might not understand why my skill set is so valuable because you underestimate the difficulty of what it is you already understand, and you also have no way to gauge how difficult other aspects of my job are, like designing this so that it stretches properly in the Unity 3D engine:

For those of you who didn't really understand a word: rejoice! I exist as a point of communication between you and the tech guys, and I can report back simply this:

I put together a system so you can download the latest version of our project from any computer in the world. It's always up-to-date. We got a bug in the system when the project started getting too big. I fixed it this morning. This means it is going to be easier to back up and archive our art from now on.

No comments:

Post a Comment