About this blog
Readme. Software development, business, technology, and my projects.
Entries in this blog
It's new. It's shiny. It's finally here.
I encourage everyone to dig through all the menus and buttons available to you in this new version. A major shift in the new site is more focus on community-oriented features and better ways to find content that matters to you, and you now have a lot more capability than you had before to help you in these areas.
Over the next few days we'll be posting some "tips" to help you get reacquainted with the new site, so keep an eye out for that. In the meantime, definitely spend some time exploring. You just might be surprised.
A lot of GDC pictures are going to the GameDev.net Flickr account. Definitely check out at the photostream at http://www.flickr.com/photos/gamedevnet/.
While I have a press pass and am supposed to provide coverage as much as possible, Thursday turned into a day of booth duty with the expo staff pass. I have a feeling Friday is going to be very much the same. We simply never had enough people working the booth to where I could go away for an extended period of time. I only wish I had known I would need to work the booth more than press coverage, so I could have planned accordingly.
On the positive side, I used the time to take pictures of people as they visited the booth to present a sort of "Faces of GameDev.net" photo series. Some have never heard of GameDev.net, others slightly knew about it, and others are regular or long-time visitors. The Flickr set link of these pictures is http://www.flickr.com/photos/gamedevnet/sets/72157623477780353/. I'll continue to take more shots and post them through the rest of the time I'm at the booth.
I did manage to attend the 9:00 session yesterday on Agile development and wrote up some good notes. Hopefully I'll get around to posting that as well as the rest of my Serious Games coverage sometime today.
(Oh, and I'm tired)
I was kindly kicked out of the second Serious Games Summit Keynote a few minutes ago by what appears to be the CA-in-charge of the room (CA is Conference Associate). Kind of funny, really. In our 9 or 10 years of GDC coverage we have never been denied entry to an event. I asked where the directive came from since there has never been precedence for this. I was told it was by the Director of GDC.
Drew is on top of it. I'll be curious to find out how that happened. I don't really think it's a big deal as far as coverage goes since I can still get good notes, but it's the principle of the situation. As media we can respect when we are not allowed in an area, but if it's a situation where that is the case, then we need to be informed ahead of time. From the sounds of it so far, this may have just been a mistake by the CA in charge of the room.
Serious Games Summit has taken a turn for the worse this morning. The first session has been from the Games For Learning Institute to discuss their research on design patterns for educational games. If you read the session description, it sounds incredibly interesting, as if they're going to spend the whole time discussing the design patterns they've discovered.
It's been more about the research process. Very academic. Unfortunately for them, GDC isn't an academic conference.
As I say that we get some slides on results...
The first day of GDC is complete. As you can tell from previous posts, my coverage has been of the Serious Games Summit.
The Summit has been focused more on serious game design than in years past, where it focused more on procurement and getting into the serious games space as a business. I think the result is a much more engaging discussion on the finer details of making a good product. Surprisingly, attendance is down for the Serious Games - way down. The space taken up by the summit is somewhere between 1/3 and 1/2 of what it was before.
As a result I've been trying to gauge whether conference attendance is down overall. It would make sense if it is. I have heard a lot of discussion about trouble finding jobs, developers leaving big-name companies, and the emergence of social online media, which appears to be changing the landscape of the games industry altogether.
It's interesting to look back at the evolution of the industry in just the last 7 years I've been to GDC. Back then it was focused heavily on 3D rendering for desktop applications, then mobile gaming was the next big thing, and now it's the online/social media space that is the next big buzz. The great question is, where next? Wherever it is, I'm sure it'll be on the edge of the next information technology wave.
Today continues my venture in the Serious Games Summit. I also hope to get some more pictures and perhaps swing by the expo floor to check on our booth.
Soren Johnson presented the first Serious Games Summit keynote entitled "Theme is Not Meaning". What follows is a brain dump of notes from his talk.
Who decides what a game is about? It's not just player vs designer (although it's the player, btw) - oftentimes the designer might want it to be one thing, but once the player is involved it actually becomes something else. Remember, the player is always right.
Theme vs. mechanics - which one defines the game?
Mechanics are the rules of the game, everything that is mechanical about the process and defines how you play the game.
Theme is the skin of the game, the experience, the context.
Another way to look at the question - what is Warcraft's descendant? Is it Starcraft or World of Warcraft?
WoW uses the same theme (characters, storylines) but is a fundamentally different game. Starcraft has the same mechanics, but a completely different theme.
"Ticket to Ride" mechanics - train game, draw cards and use cards to claim routes across country. Score points by creating super routes. (mechanics)
"Ticket to Ride" theme - in the manual you see the Objective: to see who could travel by rail to the most cities in north America - in just 7 days. So it's a game about traveling the routes, not creating the routes.
Problem here is theme and mechanics don't match up. Example, why do routes close up after a player buys them? Why can routes be built in any order? Then why would the longest matter? What does it feel like?
Feels like 1830, Eurorails, Age of Steam. Ticket to Ride is a stripped down version of these games, but they gave it a very different theme.
Who decides what a game is about? Most people who play Ticket to Ride will think they're a rail baron, not traveling the country.
A game's mechanics give it meaning. It fundamentally doesn't matter how you theme it, mechanics determine what the game is about.
Risk vs. Diplomacy
Similar mechanics - world conquest, territorial control, army tokens
Key differences - risk has sequential turns, diplomacy has simultaneous turns (written down on piece of paper, submit turns together to game master, who then figures out what everyone wanted to do and what actually happens) - leads to a much different feel for the game
Risk has probabilistic combat using dice. Diplomacy has deterministic combat, meaning every single situation you could create is handled somehow in the rules deterministically. No luck whatsoever.
So Risk is about risk, and Diplomacy is about diplomacy. Mechanics give meaning.
What is Spore about? Might get a lot of answers to this question. One of the answers has been that it is about evolution. This is how it was sold to the market.
But... (shows top 20 creatures created in Sporepedia by Spore users) This says Spore was really a game about creativity. People enjoy it because they can express their creativity and view others' creativity.
Is there a game out there today about evolution?
World of Warcraft. Paladin Natural Selection. As mechanics of paladin have been explored over time, players have learned how to use paladin in a variety of ways.
A game's mechanics give it meaning.
Super Mario Bros is about Timing, not plumbers.
Peggle is about chaos theory, not unicorns.
Battlefield 2 is about teamwork, not modern combat
Left 4 Dead is about teamwork, not zombies. Betwee Battlefield and L4D we have two different games with same mechanics and different themes. L4D used zombies to get thematic license to come up with interesting mechanics.
X-com is about limited information, not aliens. Tactical, turn-based shooter. Most of map is black at start.
Gears of War is about cover, not aliens. Combat tactics must be used to move through levels.
StarCraft about asymmetry, not aliens. Three races that were fundamentally different but balanced. Matched with design paradigm in RTS's. Players that rush (attack focus), boom (economy focus), and turtles (defense focus). Rock-paper-scissors triangle created through design.
Galaga is about pattern matching, not aliens.
Why are so many games alien-themed? Because it's easy to map mechanics onto an alien theme since there's unlimited opportunity for theme.
Example, Civilization vs. Alpha Centauri
Barbarians became mind worms
Spies became probe teams
Wonders became secret projects
What happens when a game's mechanics don't match its theme?
What is Bioshock about? An important question it tried to raise is a moral one. The ethics of rescue or harvest with little girls (kill, but get power)? Problem is the game mechanics doesn't reflect this. (shows graph showing that the more little girls you rescue, the less it's good for you - kind of a pat on the back)
Mechanics don't support the story in Bioshock. Players can see through this.
What about Spore? Science magazine quote by John Bohannon in Oct '08 hit on how Spore's scientific themes did not hold up. Problem is that Spore's theme is evolution, but it's mechanics are creativity. Internal running joke: Is Spore about intelligent design?
What about Civilization? Problem is that the theme is world history, but mechanics is "be god-king". Leads to The Agency Problem. In order for Civ to work, some things must be true -
- consequences must be fair and clear
- top-down decision making only - player decides what happens with his civ
- eternal china syndrome - at some point the game no longer looks like history - states in game don't change - experimented with decentralized gov't in Civ4
- the "revolution" button
In the end, Civ4 is not about scholarship, but can games be scholarship?
Guns, Germs, and Steel by Jared Diamond - what Civ should be (?)
(from twitter) Soren Johnson at Serious Games Summit: "I read Guns, Germs, and Steel b4 I worked on Civ3 and it led to some really bad ideas..."
The Incan Question - start with Incan civilization on World Map, and starting position is difficult. Surrounded by mountains and jungles.
Major Axes of the Continents - concept described by Diamond. Agriculture is something that can spread easily east to west, but doesn't spread as easily north to south (warm-cold climate changes).
Most domesticated animals came from Eurasia. Only llama was large scale dom animal from the Americas.
Basically the Incans were doomed. Geographic determinism may be good scholarship but it's bad game design. Complaints about Civ4 - resource distribution
Can Civ's mechanics match its theme? Can we make a game that is fun and about world history in a meaningful way? Maybe not? Similar story for other media, though.
Instead, play a life with a game. Put the player in the shoes of someone who really existed and have tough decisions to make with real tradeoffs. Example, railroad tycoon.
Art matters if the experience enlightens us. A game matters if the mechanics enlighten us. IT's why we play games, especially serious games. A game's theme only matters if the mechanics enlighten us about it.
Are there games that do this well? Yes, sports games. Management games. Tactile games (rock band, wii sports).
Dan Bunten (M.U.L.E. and Seven Cities of Gold) - Seven Cities was inspired because he got lost in the Ozarks, he thought about how Conquistadors get lost.
Realism is not the key. Example: Gran Turismo vs. Mario Kart. Which is more about racing? Mario Kart is more about racing because the mechanics give the most meaning.
Theme does still matter. Grand Theft Auto III and Crackdown. Open world games, actions matter. GTA didn't have to be about crime, but world perceives it as such. It's really a game about open world, action consequences.
Put player in the role of an actual character. If we play a life, can we play evil? Yes. Gerrymandering game (Redistricting).
Mechanics must deliver on the theme's promise.
Attended "Developing a Seriously Entertaining Surgery Game" by Tim Laning and Dr. Jetse Goris. Case study focuses on Laparoscopy surgery.
The problem - A Dutch health report found many mistakes are being made due to a lack of training in the motor skills required from surgeons for Laparoscopy.
The solution in theory was to get mandatory training and certification through simulators. In practice, residents don't practice enough on simulators. Possible explanations include busy schedules, time away from the workplace, most simulators are boring and not challenging and require maintenance.
Article - "The impact of video games on training surgeons of the 21str ce" (2007) Rosser e.a. - basically says that the motor skills of video games are the same motor skills required by Laparoscopy and that gaming can help train these skills.
Grendel Games decided to use the Wii Motion Plus as the platform to make game to teach surgeons the appropriate motor skills. Grendel develops mostly medical serious games.
Challenges to address in game's development
- practice work with passive and active hand
- increasing depth perception
- working under dimly lit conditions
- making it entertaining (so player feels involved and responsible) - don't feel like doing extra hours on a simulation after working surgeries all day
- making it competitive
- making sure both male and female audiences are interested in the game by subject, aesthetics, and game play
Created a game that doesn't even look like surgery - takes you away from the entire real world but focuses on the movements you need for laparascopy surgery. Shows the ability of games to teach without the player knowing he/she is being taught.
Demonstration shown using Wii Motion Plus with game.
Budget comes from medical institutions/government instead of publishers/investors.
Attended the first presentation of the Serious Games Summit called Prototyping for Engagement and Metaphor, presented by Borut Pfeifer from Plush Apocalypse Productions.
Premise: Using the prototyping process prevalent through games industry and applying it to serious games.
Definition of "Engage": to attract and hold fast
Definition of "Metaphor": using game mechanics to express your theme
Presented a game called The Unconcerned, based on Iran post-election riots. Purpose is to convey empathy with Iranian people, informing others about the political/social situation through engaging gameplay.
(He's really talking too fast, but we suspect it's because the presenters are squeezing hour presentations into about 30 minutes.)
Why do prototyping and iteration? To quickly get the information you need for creative decisions.
There are different prototype axes:
- experiment (test) vs. exploratory (generate ideas))
- aesthetic vs. mechanic (rules of game) vs. both (try to avoid]
The thematic statement
- Use it to clarify the core message of the game
- It is not a pitch statement, only for you
- The Unconcerned thematic statement - "Only by looking to everyone as individuals can we move past group/systemic struggles and save ourselves"
- Fail fast - use short prototype cycles
- Build it to throw away
- Constraints stimulate creativity
- Don't develop story
- Produces simple mechanics - not thematically deep
- Can prototype gameplay that will never work in functional context
- Making wrong prototype - reject mechanics that would work
Want to avoid aesthetic prototypes but still need to evaluate scale, speed, and timing. The look of the game needs to be representative but lo-fi. Visual feedback must be easy to distinguish in serious games.
Mechanic prototypes/gameplay development must have clear player goals, give feedback on progress, and player feedback on available actions (what actions can they take to achieve goals, how effective will those actions be?).
Serious game mechanics - metaphorical mechanics fail when...
- simplistic mechanics - can trivialize the subject
- over-generalized - applies a stereotype
- mismatched - conveys additional unwanted elements
- poorly skinned - slapped on existing game
- used in repetitive context - also trivializes
The Unconcerned game play prototyping
- interleave engaging with serious elements
- analyze mechanics
Gave a prototype case study of the gameplay mechanic of finding daughter
- goal relatively clear
- effects of asking not clear w/ randomization
- more clear/less random makes it over-generalized
- results not what wanted
Went through various examples of using prototyping in The Unconcerned. Flying through the complexities of the prototyping tradeoffs, but basic idea is using prototyping to develop gameplay mechanics that ensures rules of serious games mechanics do not fail.
- understand purpose of prototype
- thematic statement focuses decisions
- refine feedback of player goals, progress, and actions
- avoid oversimplified (list of serious games mechanics)
- learn and fail fast
Game site: http://plushapocalypse.com/theunconcerned
GDC 2010 officially kicks off tomorrow, although from looking at the streets of San Francisco GDC has already taken over the town.
Tuesday and Wednesday I'll be attending the Serious Games Summit. Watch this space for coverage of the sessions. I prefer live-blogging these things instead of trying to write up an article. Articles miss out on the one-liners and the golden nuggets of information that really make these sessions educational and inspirational, but that you catch best when you're typing the quotes as they talk.
It also looks like I'll be working our booth part of the time and taking on some photographer duties throughout the show.. between meetings and sessions, of course. If you're at GDC this year, stop by the booth for a GDNet shot glass that you can use for a drink at our mixer at Jillian's this Friday.
I'm trying to savor the quiet tonight. It's going to be a busy week.
Cross-posted at Code.Implant.
My intuition was right. The free Unity engine release was just the beginning of a new trend in the world of game engines as Epic has now released the equivalent of Unreal Engine 3 without the source code.
The world is changin', and I'm sure this trend will continue. I can even see some sort of engine-product revenue sharing model pop up with these free versions (think royalty-based sharing with products built using a free engine). My only question at this point is, "Who's next?"
Cross-posted at Code.Implant.
Now this is cool stuff: the Unity engine is now free.
Granted, it's the equivalent of the Indie version, but they were offering that version of the engine for $199 USD. That's $199 I no longer have to worry about spending if I want to use the basic engine to prototype ideas (and maybe sell them).
My intuition is telling me this is a huge deal, not just for Unity but for the industry as a whole, particularly for the hobbyist, scientific, and independent developer.
Cross-posted at Code.Implant
It's been a while, but I'm alive. I needed to take a break from software things. I got a little burned out as I wasn't balancing out life enough.
On the positive side I think I've picked up a new addiction hobby that may or may not turn into something one day: golf. I've realized I need a competitive outlet of some kind, and golf is one of those sports that I can compete against myself as much as I can other people. It's a bonus that I'm turning out to be pretty decent at the game too.
Anyway, that has nothing to do with software or this blog right now. Bottom line is I'm alive and starting to get software itches again, so this blog should come back to life as well.
A few days ago I saw a documentary on Discovery HD Theater called "BMW: An Expression of Joy" where artist Robin Rhode attached paint spray nozzles to the tires of a BMW Z4 and used the vehicle as a paintbrush on a large canvas. You can see the result and more info on this at the Expression of Joy website.
After watching the documentary I decided I wanted to do the same thing. How cool would it be to drive a vehicle that painted with its tires? What kind of artwork could I come up with?
Not wanting to take forever on the project, I moved quickly to create a gameplay prototype. The first problem I ran into, though, was that to reuse my existing 3D codebase would require more work than I wanted to spend on a prototype, particularly since I needed to integrate a physics engine to get the effect I wanted for the vehicle dynamics.
So, I took a look at Flash, noticed that there were a few 3D render engines and a few physics engines, and figured "why not?" Granted, I've never used Flash before, but I went to Adobe's site, downloaded the Flash 30-day trial, and went to town.
A few days later, and I have a prototype of CarPaint: http://www.gamesunplugged.net/CarPaint3D.html. If you check it out, be sure to click the Help button to see the controls and instructions.
It turns out that BMW also created an iPhone App off this idea - something I just found that out as I searched for the name of that documentary for this post. I'm going to download it and check it out. In the meantime, I'm going to let the Flash version cook for a little bit as I look at porting it over to a Windows-based application using my engine - and of course consider I'll consider the iPhone App route.
Well, my coverage sure went to crap once the Expo began on Wednesday. My only excuse is that I was manning the GameDev.net booth quite a bit, which turned out to be a good thing, even if it was boring due to crap attendance - and I threw too many frisbees. I also didn't touch my netbook after Tuesday, so that made it sort of difficult to post.
I do have a few things to post articles on, so I'll be working to get those up this week. I'm also planning something on conference etiquette, because, well, people attending GDC could have a bit more respect for their fellow attendees and speakers.
As for now, I'm using today to catch up on life and recover from exhaustion. Oh, and it was good to see everyone again this year, and I appreciate the effort our GameDev.net Press Corps put into making our coverage the best.
And don't forget, Cooking Mama Kills Animals.
In case you can't see the GDC page - because the link hasn't been placed on the front page - you can get to it at https://www.gamedev.net/columns/events/gdc2009.
Did you know that Cooking Mama Kills Animals?
Monday lunch just concluded. After talking with some people who went to the AI Summit, the mood from there appears to be one of a direction toward AI in character behaviors more than just pathfinding and such. Also a sense of movement toward dealing with destructible environments.
Also heard that the Microsoft XNA day was going pretty well, but no details. A panel of 3 is about to discuss "Election Games 2008". And they're already off to confusion - forgot to show some slides before starting the panel discussion. True politicians.
To kick things off at GDC this year, I sat through the morning sessions of the Serious Games Summit. If I could get wifi access I would have transcribed my notes directly into the blog for your perusal, but such is the life of a GDC attendee.
In any case, the notes I took will be posted here sometime today. First I need to complain about UBM Technology's inexcusable slight against GameDev.net.
GameDev.net has been a media partner of the Game Developer's Conference for the last 3 or 4 years, but this year the GDC/Gamasutra/ThinkServices group decided to drop GameDev.net from the media partner list.
So my question to the person who made the decision and waited until we realized we were never contacted, only to then reject us for media partnership when we brought it up, despite the previous 3 or 4 year relationship: what's the deal?
Are we not providing good enough coverage? Who in your media list - besides the Game Developer sibling Gamasutra - provides as-good-as coverage of GDC as GameDev.net? Only a handful in the list can provide the right exposure for the conference to your target audience.
Did you get poor results from the highly-beneficial-to-GDC (and free) ad campaigns we've provided in the past?
Or are you just playing hardball?
GameDev.net is a very accomodating and flexible group, so to drop a relationship with us without prior notification is a pretty low blow. It certainly isn't appreciated.
I know it's been a little while, but I'm alive. For personal reasons, this isn't an easy time of year for me and I just needed a break from a few things in life - and blogging was one of them.
Tomorrow I depart for the Game Developer's Conference in San Francisco, CA. Watch this blog space throughout the week as I'll be posting here often and may even "live blog" some sessions.
Cross-posted at Code.Implant.
Jeff Atwood of the Coding Horror blog posted his latest on reuse with an article entitled "Don't Reinvent The Wheel, Unless You Plan on Learning More About Wheels", in which Atwood advocates reinventing the wheel as a "call to arms for deeply educating yourself about all the existing solutions".
I don't think anyone is saying that you should avoid reinventing the wheel at all costs. The reality is that there are times when rolling your own is desirable. As Joel Spolsky said:
Bottom line: the issue of reuse is not nearly as black and white polarizing as the Coding Horror blog wants to make it.
There are times to reuse and times to reinvent the wheel - knowing the difference is one of the keys to being a good software developer. Even beyond that, it really goes back to basic engineering tradeoffs.
In most cases, however, the software developer who embraces reuse as much as possible will be in a better position and have better opportunity than the software developer who likes to reinvent wheels. It's often a missed fact that invention and innovation occurs only through an iterative process of work built on top of prior work, which quite frankly is pretty much the definition of reuse.
Besides, as Jesse, a commenter in the Coding Horror blog post said, "Doing something that you know can be done is not invention."
Cross-posted at Code.Implant.
I believe in software reuse. A lot. If you want to finish a product in today's world then I believe it's too costly to not reuse as much software and technology as you can within your given context.
Granted, reusing software is not always the best solution, but more often than not it is a very strong candidate. I believe that if an engineer or organization is not going to reuse software then the onus is on them to provide a strong enough rationale why not. And if the engineer or organization can't defend their rationale with good reasoning? Then the argument against reuse is not strong enough.
Unfortunately, not everyone thinks this way. Not surprising. Engineers like to do fun stuff and reusing software or technology takes away some of that fun stuff. I get it. I like to do fun stuff too. I used to write my own rendering engines and XML parsers and Winsock code, but then one day I woke up from this comatose state.
My world changed when I stopped looking at software development at the technology level and started looking at the end state of the product. In doing so, adding value to the product became my number one priority. The how and technology used were still important, but they were driven by adding value.
Now, there are times when reuse shouldn't be used: new technology research, education opportunities, and so on. But most of us live in a world run by businesses that build products for customers and minimizing cost and schedule are important to the business, and reuse is a way to ensure cost and schedule are minimized.
So, when in this world of business I hear something against reuse I just shake my head. Some developers just need to go away. Really. They make the world a less productive place.
To cap this off, here are some actual excuses I have heard against reuse - along with my own thoughts on the excuses.
Mr. No Reuse: Software ABC doesn't provide every feature we need and won't be just a drop-in for us, so we can't use it.
Me: I hope you're joking. Not every piece of software can be written to your liking.
Mr. No Reuse: Our product has special needs.
Me: Special needs? Such as, minimizing cost and schedule so we can make money? No problem or product is so special that we should limit our reuse. We should maximize it.
Mr. No Reuse: I want to learn about XYZ technology and this is the best opportunity for me to do that.
Me: Good for you. I support continuing education. Now go start your own business and you can do that all you want.
Mr. No Reuse: In Software ABC, I don't like the API or how they do things.
Me: I'm sorry they didn't ask for your opinion when they designed it; however, it does the job and thousands of other developers use it already without complaint.
Unfortunately, people like this really exist. Don't be one of them.
Cross-posted at Code.Implant.
This guy rocks. I like his direct, no-bullshit style. His message? Love what you do. Have passion. You will succeed. Look and listen. He's a living example of his message.
Gary Vaynerchuck of Wine Library TV: ://www.google.com/reader/view/&feature=player_embedded">view the video (kinda sucks you can't embed YouTube videos on GameDev.net, huh?)
h/t Jeff Tunnell
I'm a fan of analogies. While sometimes they can be like a bad joke, othertimes they can be an effective means for communicating a complex topic.
Software Development is one such topic, and I often deal with trying to communicate the challenges of software with those who have little or no experience in it, so finding good analogies is always helpful for me.
Bernie Thompson took one such shot at an analogy in a post entitled "Software Development is like golf...". His premise is that your chosen path to the pin is always the problem, and to succeed you have to weigh your capabilities (people), the course (technology), and the conditions (the market).
As a (very) amateur golfer, I can agree with this analogy and it's one I may even use myself. The only disagreement I have with it is that this analogy can be applied to most engineering disciplines. That is what engineering is about anyway: balancing factors and making tradeoffs.
Still, it's a good analogy. In engineering you can't always "go big, or go home" as I like to call it on the golf course, and to be successful you have to be willing to adapt to changing conditions in your design, market, and customers.
In fact, in most sports the most successful teams and individuals are the ones that can adapt to the evolving situation of the game, and the way to adapt to the situation is to constantly assess tradeoffs like the ones Thompson chose to address in the game of golf.
Cross-posted at Code.Implant.
I'm trying to document some basic, yet ever-important software design principles into a list that I can reference and expand on in the future. You often see these principles discussed individually, but I believe that they need to be considered collectively.
So, this is what I have so far:
The KISS principle - Keep It Simple Stupid
Iterate early, often
Create Functions that fit on one screen (20-25 lines max)
Create Classes with one role and purpose
Usefulness first, usability later
Plugins for extensibility when possible
It's nothing groundbreaking, but it's a start of basic principles software developers should consider. Any others?
Cross-posted at Code.Implant.