I can only think of so many good ideas in a week. Having other people contribute makes my life easier.
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
If you’re a technical lead, you need to be coding.
Comprehensiveness is the enemy of comprehensibility.
A pattern is an idea that has been useful in one practical context and will probably be useful in others.
One of the big dangers is to pretend that you can follow a predictable process when you can’t.
Now I’m a pretty lazy person and am prepared to work quite hard in order to avoid work.
When to use iterative development? You should use iterative development only on projects that you want to succeed.
So I hope I’ve made clear that imposing agile methods is a very red flag.
I find that writing unit tests actually increases my programming speed.
I’ve learned to always avoid saying “always”
In almost all cases, I’m opposed to setting aside time for refactoring. In my view refactoring is not an activity you set aside time to do. Refactoring is something you do all the time in little bursts.
Never in the annals of software engineering was so much owed by so many to so few lines of code.
The biggest issue on software teams is making sure everyone understands what everyone else is doing.
One of the things I’ve been trying to do is look for simpler or rules underpinning good or bad design. I think one of the most valuable rules is avoid duplication. “Once and only once” is the Extreme Programming phrase.
I can’t choose whether someone is offended by my actions. I can choose whether I care.
Why is composing symphonies tough? I don’t know. It’s just very few people in the world can do it well. And I think that’s the case with upfront design. It is very hard to do well.
Comparing to another activity is useful if it helps you formulate questions, it’s dangerous when you use it to justify answers.