One of the advantages of having to live with JUnit for 8 years is now we can look back and see which decisions we made worked nicely and which we would have done differently.
Don't document bad code - rewrite it.
Don't hurry your code. Make sure it works well and is well designed. Don't worry about timing.
All the PHP code I've seen in that experience has been messy, unmaintainable crap. Spaghetti SQL wrapped in spaghetti PHP wrapped in spaghetti HTML, replicated in slightly-varying form in dozens of places.
It's hard to tune heavily tuned code.
"Legacy code" often differs from its suggested alternative by actually working and scaling.
My favorite language for maintainability is Python. It has simple, clean syntax, object encapsulation, good library support, and optional named parameters.
It's easy to make mistakes that only come out much later, after you've already implemented a lot of code. You'll realize Oh I should have used a different type of data structure. Start over from scratch.
In programming when you're making a change you have to know all the affected places, and you have to be able to model in your head what the performance impact will be.
Extreme programming is an emotional experience.
I have the ability to get code done, but I'm impatient, and it's scrappy as a result. Maybe that helped me with 'Minecraft,' as it came quickly. But, well, at some point, I'd like to actually become a good programmer.
Nobody actually creates perfect code the first time around, except me. But there's only one of me.
Building technical systems involves a lot of hard work and specialized knowledge: languages and protocols, coding and debugging, testing and refactoring.
Even for the very best programmers ah, sometimes you'll see someone else's program or somebody will come along and they'll show you what can be done in a simpler way.
Good programmers know what to write. Great ones know what to rewrite (and reuse)
You have to develop your whole game to completion.
The mark of a mature programmer is willingness to throw out code you spent time on when you realize it's pointless.
Program construction consists of a sequence of refinement steps.
The way that NetBeans is architected, it's not so much a tool as a tool environment.
Code is followed by commentary, and commentary by revision, and thus the task is never done.
Renaming a class at one level is really easy; you just change the name. But how do you change all the references to that class and all the imports?