On Pride and Programming [NP]

NOTE: Posts marked with [NP] (as in "Not Pinball") are posts on subjects other than pinball. I've marked them in this way so that those uninterested in such tangents can skip past them. - SDC

A few passing comments on software development that aren't really relevant to the main forum. Some minor drama took place when one of FarSight's developers commented on the relative civility of the forums here as opposed to the TPA Facebook page; after some further uproar (and a righteous ban of one Facebook invader), he posted this:

I should probably clarify...there are many great fans on the facebook page. However there are a handful of trolls, that constantly post negative comments. It seems every time I go to the facebook page I read dozens of insults, which really just turns me off to the page all together. Unfortunately this means that any legitimate issues posted there I won't see personally. I feel bad for Rob when he has to read through all of that.

Calling the developers (me included) incompetent, lazy, or stupid isn't someone I would consider a fan.

I don't mind being told about bugs, in fact I want to know whats wrong so we can fix it. Being insulted on the other hand isn't a great feeling when you put hard work into any project.

I'd like to thank all our fans out there who continue to support us. And know that we understand frustrations with delays and bugs, as we all play games here.
Very well, FarSight would prefer not be characterized as incompetent, lazy and stupid; no big surprise there. But how did they come to accumulate such a well of pathological haters on their Facebook page? And why should we, over here in our sanctuary at Pinball Arcade Fans, care? But first, the obligatory...

DISCLAIMER: I am not employed by FarSight, not representing FarSight, and nothing in this post should be construed as the Official Opinion[SUP]TM[/SUP] of FarSight Studios or its development staff.

So much for all that. Moving on, being good at software programming/coding/engineering/architecture/buzzword-of-the-week involves four primary factors:

  • Knowledge - This includes not only knowledge of the particular programming language(s) you're using, but also of your development environment and tools (literally, the programs you use to write programs), of design patterns and best practices, of security, etc.
  • Creativity - You are literally trying to create something out of nothing. You can create dinner by slavishly following a recipe out of a cookbook, but no one will mistake the result for the work of a great chef. It's the same with coding. You can cut-and-paste a little code from site A, from book B, from open-source app C, etc., but the result is not likely to be ideal, especially since it's unlikely A, B or C were created to deal with exactly the same need you have. This sort of creatio ex nihilo, of reaching into the darkness and magicking functioning code out of the void, is very much an art form.
  • Innate Talent - It's not polite to say so in today's egalitarian world, but not everyone can program well, just like not everyone can play baseball or soccer (pardon, football) well. Software development requires meticulous mental organization and powers of concentration almost unheard of in today's multitasking society. This can be learned to a certain extent, but the best programmers can actually enter a transcendental state where they are completely and totally focused on The Problem and all external stimuli are blocked. This state - which has various names, I called it "high priest mode" (because interrupting me while I was in this state brought down the same amount of wrath upon the offender as a high priest whose religious rituals have been disturbed), some others call it "wizard mode" (!) - is where all your eureka! moments happen, where your thorny problems get untangled, etc. This state is also getting harder to achieve as software developers are increasingly asked to take on non-programming functions...like participating in fan forums, for example. ;)
  • Communication - Due to the size of today's applications (even a relatively simple game like The Pinball Arcade - simple in the sense that's not something like Skyrim - is hundreds of thousands of lines of code), one programmer working alone is not enough. So software developers must also be able to communicate effectively with other coders and non-coders (management, marketing, sales, etc.) to be successful.
Finding this combination of four factors in a single individual is fairly uncommon. Finding this combination of factors in the co-presence of other useful traits like the ability to work to deadline, time management skills, ability to accept constructive criticism (because your code will have bugs, and your initial design will be suboptimal in at least one aspect), etc., is quite rare.

It turns out that programming effectiveness is strongly influenced by the programmer's state of mind. On some level, this is obvious: a happy, healthy developer is going to produce more and higher-quality code than one who is sick and tired. This much is true in all areas of human endeavor. But due to the intense concentration required, a programmer's effectiveness varies much more than you would expect: factors of 100 or more are not unheard of. (To use a personal example, one day I had produced approximately 8,000 lines of relatively error-free code for a project, the next day after some family drama only saw about 100 lines of vastly inferior code.) If the programmer cannot block external distractions from her mind (and now's as good a time as any to point out that not all software developers are men); if she's worried about this, that or the other; then she cannot focus, she cannot reach that transcendental state, her creativity will not kick in, and the day's output will be more or less (usually less) a waste. It may still be usable; it might even be good enough - but it will not be as good as it could have been.

So if you've gone through the trouble to assemble a team of software developers (like a certain company in southern California) and have set them to work on an ambitious project (like TPA), you will want them to be happy or at least in a neutral frame of mind as much as possible. What you do not want is them repeatedly running across a bunch of people dismissing their work as that of incompetent, lazy and stupid programmers, which brings us, finally, to the Facebook page.

Now, we're not sissies. Most software developers can take a certain amount of emotional punishment before it starts affecting their work, some more than others. All of us have occasionally encountered people who are dismissive of our work; most commonly in the form of a salesperson or manager who doesn't really understand that code is not a commodity good - that is, just because the team produced a piece of software in 2 weeks does not mean that all software projects or even all similar software projects can be done in 2 weeks. (The traditional rule of software estimation for the time to complete a project is to take the initial estimated time, double it, and round up to the next highest unit of time. Thus 2 weeks becomes 4 months. This is not at all as facetious as it sounds.) Or sometimes they don't appreciate that the laws of physics render their request impossible. At any rate, we don't live in a bubble, and most of us have adapted to not living in a bubble.

That being said, had I been faced with the noise storm FarSight has faced for as long as they've faced it, I would probably have made a far more "interesting" statement than Mike did, and yes, I probably would have lost my job for it, but that's not the point. One of the human needs after basics such as food, shelter, etc., have been taken care of is the need for recognition of one's worth. Self-esteem is roughly around this area, so is pride, self-worth, etc. The occasional rude or insulting comment can be shrugged off - some people are just jerks, such is life - but to have your flagship project relentlessly mocked, slandered, libeled and worse on the Internet by a bunch of people who wouldn't know what a line of code was if it knocked them arse over tit, much less actually be able to do a better job themselves, is demoralizing and degrading. Eventually this leads to (mostly subconscious) thoughts of "no one likes our project, it's going to fail, I'll be out of a job, how will I find another in today's economy?" and so forth, and this in turn eventually starts ruining the developer's concentration, leading to a loss of productivity. If this goes on long enough it can actually develop into a crisis of confidence, where the afflicted programmer literally cannot code - his mind is no longer in enough command of itself to even comprehend the tasks at hand. I've been there once - it's not pretty.

I do not mean to suggest that FarSight's development team in general, or Mike in particular, is anywhere near this point. What I do want to suggest is that these Facebook "fans" are actually hurting their own cause (assuming that they actually want a better TPA, which is highly questionable for at least some of them) by slowly eroding the mental state of the developers and wearing them down, thus making them less productive.

I'm approaching the 10,000-character limit on blog posts, which is the sign I need to stop and get some sleep, but hopefully this has given readers some insight into the mental/emotional side of software development. Feel free to ask questions and share your own experiences in the comments section.
 

Matt McIrvin

New member
Jun 5, 2012
801
0
I've worked on publicly visible projects that got flak from users on fan sites and places like Gizmodo. It's a weird and sometimes dismaying situation to be in. At some point you just have to either tune it out or develop a thick skin; it's part of the job.

Fortunately, it wasn't our primary channel for learning about bugs.
 

Matt McIrvin

New member
Jun 5, 2012
801
0
...Also, I don't think most people on the forums realize how unusual it is to even allow the coders in the trenches to talk to users. In the situations I mentioned, I certainly never would have posted anything to those fora in my professional capacity as a company employee.

Usually all this is handled through company spokespeople, and there's some effort to insulate the coders from direct interaction with the public. That's both to ensure that the people making the code can maintain the concentration you talked about, and to make sure the company is sending out consistent messages. From a customer's perspective, of course, this can be frustrating.

Now Farsight is obviously a very small company, and they may also just have a looser corporate culture. But I still find it kind of surprising that some of their employees have the public presence that they do.
 

Members online

Members online

Top