Since becoming a software developer, more times than I can remember I’ve been in meetings where I’ve been blindsided by my manager’s requests. Usually my manager says something like, “We really need someone to take on $GIANT_PROJECT and think you should do it!” I used to be so stunned at first I couldn’t say no to it. I felt like I was getting roped in. I was so overwhelmed with my other deadlines already and scared I would have to start working weekends just to keep up.

Shifting timelines and priorities happens often in the world of software where deadlines and projects lack any formal boundaries. A project that had been the top priority last month may be at the bottom of the pile this month, even though you only have about 20% of it done. When crunched for time, you’ll get something out, but it’s never what you want representing you five years from now. Believe me, I know. If you don’t learn to manage these surprises, the code you write will suffer.

Okay, so how do you tell your manager no? Try this, “Sure! That sounds great! Let’s take a look my current project list and see how we can fit it in.”

Yeah, I know what you are thinking–you thought this was about saying no, not yes. The title of this post was a bit misleading, because 90% of the time I’ll say yes to the new project. Why? Think about it–do you want to spend your time working on last month’s top priority project? Or the project everyone is excited about right now? Personally, I’ll always say yes to work on the higher visibility project that will get more notice and support when I need help.

When I say yes to a new project, my manager is getting exactly what he wants here–someone to take on the project that has his attention. In return you have a perfect opportunity to get a say in what projects you will be working on. You know that project that is a mess of legacy code? The one where any bug takes two hours just to find? Maybe suggest you would have more time if someone else took that one on. I’ve done this before and the results are that I’m happier, my manager is happier, and the new guy is actually excited about finally getting a real project to own. You can also use this as an opportunity to push back deadlines that may or may not be slipping. AND YOUR MANAGER WILL THANK YOU FOR YOUR FLEXIBLITY. (Try changing your deadlines any other time and see how happy your manager is about that.)

This works because when it comes to your projects, you are the most knowledgeable person in the world. Being able to say you don’t have time to absorb a new project while confidently listing off what you are currently working on is a powerful strategy for negotiating your work. Especially when you are trying to give your manager what they want–someone working on their new top priority.

If you really do want to say no to a project, try this, “I’d love to work on $GIANT_PROJECT, but looking at my project list, I don’t have time.” Explain what would slip and why it would be bad for the team if that were to happen. Suggest that someone else might be in better shape to take it on.

Use medium-size bugs and enhancements to help push back other smaller deadlines that will slip otherwise. Say, “Yeah, I’ll take care of that. That means that new feature won’t be in until Friday though.”

Slacking off in situations where you have the time to take on the new project will not work. But when you feel pressured and overwhelmed, never let a good crisis go to waste. It’s a great way to manage exactly what you get to develop.