Anyways, I was thinking the other day about who the audience is for the code I write and I came up with the following. Bear in mind I live by the principles of KISS (Keep It Simple, Stupid) and YAGNI (You Ain't Gonna Need It). I developed these attitudes after reading tons of other people's code (as well as my own code 6-12 months down the line.
So in descending order...
1. The UserObviously you are writing code for someone to use (or a service to consume). I am not going to go into UX or HCI at this stage, just that as far as priority goes, this guy is the top. Make sure the user gets good and timely feedback for everything he does and that the steps he has to take make sense to him.
2. The Compiler/Interpreter
The code you write has to be compiled or interpreted by a computer before the user can use it. Don't worry too much about optimization at first (YAGNI, remember?) but don't write code that you know will perform badly off the bat. Try and stay away of O of N types of loops which could blow up in complexity, follow good OO techniques, and write tests where possible.
3. Your coworkers (or you, 6+ months down the line)
Whenever I come up with a "clever" solution, I ask myself, "Will someone else understand this code without me explaining it to them?". Of course the caveat is that that someone else is also a coder and not a plumber, but I normally think of the most junior developer in the team (in terms of experience, not necessarily age) and whether or not he will comprehend it. Sometimes that person is me (ok, most of the time). The other thing I learnt is that code you wrote 6 months ago, is no longer yours. Someone else who looks a lot like you wrote it, but for all practical purposes it was not you.