Ideally you want a schedule that’s accommodating and flexible but when it comes to paying the bills and working in a business, that’s rarely a luxury programmers have.
I have been fortunate to have the grace of Steve McConnell and Frederick Brooks to tell me what to do if I want to screw up my project and I take their work seriously.
And yet there are still times when your back is against the wall and you need to speed up the work. What are some ‘tweaks’ to your process you’ve used to speed up delivery without sacrificing quality? Is this even possible?
I consider learning good practices to be of higher value than learning the actual code so no ‘be a better coder’ answers. That’s a given.
Arrange my tasks in some sort of list of small independent tasks (or, tasks where the dependencies are already taken care of in the order). Then, just sit down and clear one task off my plate after another. Anything where I have to coordinate with someone else, ask a question, etc. is punted forward; I just sit and code with no distractions, until I get to a place where I need some sort of outside interaction. Then I deal with all of my coordination with other people, re-planning, and so on in one batch, and go heads down into straight coding again.
Also, prioritize and cut everything that’s optional. If you get the required stuff done in time, then go back to the optional stuff, but do what is absolutely required first. This may be relaxed slightly if there are tasks that are easier to do when you’re in the right context, but on the whole, try to keep the optional parts to a minimum.
Oh, and don’t make these judgement calls while you’re coding. When you’re coding, just take one task off your list, do it, and move on to the next. As I said, batch up all of the non-coding work into chunks so it doesn’t slow your coding down.
Anyhow, that’s what I do when I’m up against a wall. Not sure how well it works for anyone else.