Telefilm Canada has launched The Great Canadian Video Game Competition. This competition will see selected small development teams (10 in round one) supported and shepherded through the process of bringing a video game from concept to retail, seeing them mentored by some heavyweights of the Canadian game development market, along with some very substantial "prizes" (e.g. up to $250,000 to create a "playable prototype", and then up to $500,000 in matching funds, apparently matching private investors, to bring it to market).
As a taxpayer, I have mixed feelings about this. Not only is the Canadian game development industry already relatively strong, this seems like a very precarious contest for a government agency to be involved with: Telefilm would be eviscerated by the party of the day if they brought a game like Going Postal or Grand Theft Auto.
It's not my industry, so I haven't read the guidelines, but perhaps they have a "family friendly" disclaimer in the requirements (explicitly or selectively).
Speaking of video games, in the earlier days of software development, every clever developer generally dreamed of riches in the realm of video games. The hacker itch was generally scratched by making a cool new technology demos (I recently reminisced with the Steem Atari ST emulator, and some of the demos -- then running against an 8Mhz processor with limited external supporting chips, unlike PCs today which have tremendous parallel processing with hugely powered I/O, graphics, audio, networking, and support chipsets themselves vastly eclipsing the original power of the ST -- are impressive even today), though few developers had the follow-through to build a complete game. Still, there was a seeming endless onslaught of hundreds or thousands of games every month. People like John Carmack naturally released their hacker urges by buildings games like Commander Keen.
Now the amateur/beginner game market is mostly dead (yeah it still exists, but it is nothing compared to what it was in the 80s or 90s). If you're a clever programmer now, your dreams of riches are that you'll create the next Reddit or Slashdot or Fark, and most of the hacker focus is on "AJAX" or PHP or Python or .NET.
Quite a remarkable shift, and in many ways it's a tragedy.
I'm in it for the money.
Don't get me wrong: I love software development. I love finding the smallest, most elegant solution to a problem (I become truly giddy when speaking of the most elegant code structures). I love embracing and exploiting new advances in the industry. I love refactoring code towards perfection.
I love solving people's problems and making systems better and doing neat things and being respected and thought of as intelligent.
Yet in the end, what matters to me most is the compensation: The wage, the bonus, the equity, the benefits. And then some.
There, I've gone and admitted it. Now I'm just a coding mercenary, right?
Contrast that with the recent claims that there are Nine Things Developers Want More Than Money, or that money is a bad motivator, or that "One thing that programmers don't care about...They don't care about money".
This we-don't-want-no-stinkin'-money thing is becoming a bit of a meme, both by those with the fat wallet who want to keep as much as possible, trying to convince you that you should agree, and developers who want to demonstrate that somehow they must be really good and passionate and great because, they claim, they don't care about the money. Somehow their lack of greed, we are to believe, must make their work more pure.
I call shenanigans.
Some who claim that they aren't in it for the money are outright lying through their teeth: Instead of rich compensation up front, they're hoping that a short period of poverty will be followed by an embarrassment of riches and influence. You can find this in many startups and open source projects where pseudo-idealistic developers will give the speech about how little money matters, but eventually will detail how their labour of love is going to net them millions months down the road. That's a story that I've heard play out far too many times, and it's just entirely disingenuous and misleading.
It's common for developers (and even just pundits) in the open source market to build as much namespace as they can. Often it pays off, and they get recruited into lucrative senior positions at megacorps, making lucrative dough acting as a bridge to the open source community.
It's like giving a moralizing speech about the irrelevance of money while waiting your turn in the lottery ticket line.
Others are basically young and naive (and usually just out of college), believing that the project they're working on is for the greater good, or that unspoken or vaguely promised compensation will pay off big-time later (again the short-term "money doesn't matter!" creed is a facade of selflessness). They're often the backend developer working away developing the product, and then getting punted when it hits the big leagues.
"Sorry, gus, but we just sold out to MegaCorp, and they're going to port the data over to their platform and migrate the user list. You're not needed anymore."
Then there are those who truly in it for passion alone. This is a very rare individual, and while many try to present themselves as this sort of person, they are astonishingly rare in real actions and motivations.
Money is freedom.
A John Carmack interview -- one of the best developers this industry has seen -- from back in 2000 has always stuck with me-
John: I have sufficient money that I don't need to work anymore; I really don't have to. That's a nice freedom, the freedom from anyone having the ability to have any leverage over you, as long as you've got the money to take care of yourself and you aren't wrapped up in having more and more money. There are a lot of people even though they have a lot of money, they can still be manipulated by the carrot of having more money.
His money is the freedom to do what he wants, when he wants to. It is the freedom to say "screw you" to excessive demands (John works overtime because he is so into it, not because someone hangs the axe of job security over his head), and to have the mobility and versatility that such financial means bring.
Many will read this far and see a seeming contradiction in what I just quoted: Isn't John saying that the benefit of having so much money is that he isn't manipulated by the carrot of money, while I'm advocating basically being enticed by said carrot?
Exactly.
The difference is that John is already there, contrasted with the reality that many of us not there are fighting to pay the monthly bills, desperately fearful that we demand too much or present the image of underworking or ask too many questions.
Many developers aren't seeking the carrot of money, but rather they're threatened by the spiked-tipped bludgeon that is the lack of money (aka loss of job). If you think people do the wrong things for extra money, realize that they do far, far worse to avoid the lack of money.
The goal of amassing net wealth is the freedom and confidence that comes with the ability to control your own destiny. It's the ability to live in a nice home, and have children if you want (without desperately clutching onto whatever spin comes out claiming that the lack of choice is a benefit), and actually take a couple of months to go traveling if you wanted. It's the ability to decide to start a business, and to have the leverage and means to do it with minimal stress or risk. This was tip #3 in "5 Tips for Enjoying the Software Development Profession".
And most any activity is much more enjoyable when it's optional. It can be fun "slumming" when you're wealthy, or working in the soup kitchen when you're volunteering, or cleaning garbage on Earth day, while none of those are quite as enjoyable when you have no other choice.
[It should be mentioned that income alone isn't enough, and those who are cursed to spend more than they take in will forever be running to stand still (or go backwards), but I'm speaking to those who have reasonable financial knowledge to efficiently use wealth for quality of life while maximizing their leverage in doing so]
This isn't to say that other things don't matter, and I'm not saying that I'd sit on a slimy rock in the pouring rain punching in market numbers for 16 hours a day if it paid well. It also doesn't mean that I'd risk future earning potential working on outdated platforms or working on trainwreck projects or acting as a maintenance programmer when some middle managers sell the executives on the idea of buying an outsourced insurance platform. Yet the importance of compensation can't be underestimated.
It does mean that I'll happily do jobs that aren't sexy or glamorous or superficially interesting (I say superficially because most any programming task of consequence can be challenging and interesting if approached in the right way. Just because it's a P2P app or a first person shooter doesn't mean that it's going to be interesting or rewarding work, just as it isn't intrinsic that Wall Street/Bay Street apps B2B are going to be monotonous, unchallenging, or boring). It doesn't mean that I'll do work that is criminal or morally repulsive.
All I'm presenting here is a bit of a counterpoint, and a bit of advice: Look out for #1, because that's exactly what many of the people you are dealing with are doing (and of course #1 to them is them). Make sure that equity positions are solid, and that the financial rewards align with the risks. Make sure that you're paid enough that you can build enough cushion that you don't become a financial slave, easily controlled and abused.
The CYA Application Security Model is the practice of implementing so-called security obstructions primarily to absolve the vendor from blame if something goes awry during everyday operations. This model is usually sold under the pretense of improving user education, or encouraging safer application usage, but that's of minimal actual concern (in reality the opposite outcome -- more risky application usage -- is probable).
An example of the CYA ASM in action is one that pops up a seemingly endless stream of confirmation "Are you really sure you want to do that?" dialog boxes, warning the user against doing what should be completely normal, benign activities.
This pestering, progress-inhibiting assault of a million warnings and confirmations application behaviour is certain to cause the user to enable a "turn off all security" mode (for instance adding every site to "trusted sites" in Internet Explorer), paradoxically making the security situation infinitely worse, but for the vendor this often the desired outcome: At least then they can smirk and blame it on the userbase if what should be a harmless activity compromises their machine.
Didn't you heed the "The Internet could be harmful to security!" dialog box when you attempted to connect to the internet?
A while back I posted a complaint about the lack of native spellchecking in the major browsers, stating-
In the forum and blogging world, it would be beneficial if more tools supported convenient and efficient automatic spell-checking (the fact that no major browser has incorporated native TEXTAREA spell-checking thus far is a travesty. Any of them could have a killer feature if they simply added Word-like squiggly underlining of suspect words, with easy alternative corrections). As it is, many tools have nothing at all, and the few that do often host a ridiculously unintuitive, hacked-in partial solution.
For those who like release-quality software, salvation is at hand: Grab yourself a copy of the just released Firefox 2; an already brilliant browser that now also supports native data entry spellchecking, with little squiggly (or at least dotted) lines under suspect text, and a suggested list of alternatives.
Finally!
Hopefully this improves the quality of spelling on the net.

And to head off the inevitable comments, no, the lack of spellchecking clearly hasn't somehow improved spelling (usually argued under the "it makes you work harder at it, therefore growing spell-muscles" explanation). Given that our brains learn spelling by example, even those of us who care are misled by a constant stream of misspellings. With the addition of finger-wagging little squiggle-lines, perhaps the purity of the language will improve.
It doesn't analyze grammar, pointing out errant uses of too or to, whether it's a possessive apostrophe rather than a contraction, or help in the endless "that isn't ironic!" debate, but at least it's a start.
The best browser gets even better.
The well-known Hanlon's razor states-
Never attribute to malice that which can be adequately explained by stupidity.
While it's a seemingly pessimistic perspective on the capacity of one's fellow human, it is an undeniable truth that we often mistake carelessness, thoughtlessness, or outright ignorance as malicious intent.
Yet it's a more serene existence -- to the benefit of one's lifespan -- to simply assume that the person who dangerously cut you off on the road, for instance, is just a moron deserving a bit of sympathy, rather than considering him or her a roadway foe challenging you to a deadly battle of wills.
From a software development perspective, however, I think an inverted variation would serve the industry well.
Never blame others until adequately considering the possibility of your own (negligence | carelessness | stupidity).
As a general rule, the denizens of the software development profession -- it certainly isn't limited to this profession, but given that it's the general focus of this blog it's the one I comment upon -- have a tremendous capacity for assuming the worst of others, far before considering the unsavoury prospect that maybe -- just maybe -- it's actually their own mistake or lack of knowledge that's the cause of the issues they face.
It is far too common to cast a wide net of blame, declaring that Microsoft's products are screwing up, the documentation is all wrong, the server is malfunctioning (maybe because of cosmic ray particles toggling memory bits), the installation tool is a dud, and one's coworkers are surely idiots insidiously and maliciously changing code just to make one's brilliant code poetry fail to achieve its momentous glory.
After such hand-waving, blame-weaving dramatics, in most cases the developer realizes that they skipped an obvious step in the instructions, or they forgot to get latest of the entire branch, or they were copying the wrong file or looking at the wrong folder or running the wrong executable, or they were using the class entirely wrong, or they completely misunderstood how the operating system security system works, or they set a global setting a week back that completely changed how the application functions, or they ignored the email and documentation and group meeting detailing system changes, and so on.
They quietly retreat -- don't expect a retraction -- until they repeat the same mistake the next time something doesn't go exactly as imagined.
I've met these people in the industry. I've worked with these people. I've been one of these people.
I think we can all relate to situations where we've railed against a company, a product or a person, only to have the embarrassing realization that we were simply doing something dumb.
And it's not even that doing something dumb is noteworthy: We're humans, and we're bound to make mistakes. The problem is that we often don't even give a moment of time to even the possibility that we could be at fault, instead just assuming the worst of others.
It's far more beneficial to both productivity and team morale to have a little bit of self-doubt in these situations: Assume the worst of yourself before assuming the worst in others.
After hashing out this entry, I wondered why it wasn't appearing on the public blog. After berating various products and services, I remembered that I recently outsourced my DNS (for the reasons described here, using the service recommended by a reader), and forgot to add an entry for the FTP server. Whoops.
As a completely offtopic aside, one of the reasons I switched DNS providers was to have support for a domain SPF record. While it does nothing to stop the tide of pump-and-dump investment scam spams, at least it allows those recipients utilizing the service to immediately dump-bin those that claim to come from yafla (I get about 100 bounces a day, and who knows how more actually get through), knowing that the from: address was forged.
We -- specifically the humans among us -- are a very uncreative bunch.
While we excel at refining existing ideas and solutions, we're extraordinarily poor at creative, original thought.
And I'm not just talking about business, scientific or engineering creativity: Even in the realm of the creative arts (writing, art, music), many practitioners are simply absorbing (being "inspired by") what others are doing and then making it their own.
In a way we're all unintentional, subconscious plagiarists, and while we often don't even realize it, many of our "original" ideas are nothing more than refinements (or degradations) of those that we've come across elsewhere at some point in our time on this Earth.
Other times it's completely accidental.
Many of the great inventions in science, mathematics, medicine, and healthcare, for instance, weren't scientifically pursued with an engineering discipline, but were rather accidental discoveries (usually stumbled upon while searching for a slightly better way of building a different mousetrap).
And sometimes confused communications yields innovation.
Many of my best ideas weren't the result of quiet time in deep contemplation -- in fact I've found intentional, focused thought to be terribly unproductive -- but rather were the wonderful benefit of the bad habit of not paying complete attention to presentations or media.
Quite a few times I've glanced over an article or casually listened to a presentation while distracted; drawing inferences and conclusions based upon what I think is being presented to me. As my mind casts it into a workable solution, I've often found that what I visualized bears little correlation with what was actually described. A few inputs, and the presumption that it's a logical solution, fooled my brain into creating new solutions out of nowhere, in a way that I could never have done otherwise.
This, I suppose, is the foundation for brainstorming sessions. It's the reason why it's often productive to randomize all sorts of product or business ideas and them merge them into seemingly bizarre combinations (I created this "How Will You Get Rich?" tool as a joke, but was surprized to find me actually stopping on some of the supposedly joke suggestions, imaginary scenarios where they would work).
How do you
innovate? How do you engage the lateral thinking part of your
brain, thinking up creative and novel solutions to
problems?