Dealing with new project anxiety and no-man's-land features
I had an experience recently that I call new project anxiety.
It’s a feeling of panic that developers get when they are assigned to work on a no-man’s-land feature.
A no-man’s-land feature is one that is completely new for the application, in a way in which there are no other existing similar features that you can bootstrap off of.
For many applications, a new feature is often just some slight variation of another one. For example, the customer wants the app to be able to calculate insurance quotes in a “scratch-pad” of sorts. Well, your app already calculates insurance quotes, so you instinctively know you will probably be borrowing that code and simply applying it to a new UI.
Confidence instills, you simply begin writing the code. Just moving the Legos around.
The feeling can be quite different if you find you are working on a no-man’s-land feature.
It laughs at you in your desperate search to find a similar feature in the code base.
Your blood pressure rises as your stackoverflow queries come up short.
You think: “Am I good enough?”
Panic ensues and your imposter syndrome elevates. You might even sink into negativity and feel anger that the customer would ask for such a feature! Perhaps your boss can shrink the scope to make it easier – yeah, let’s ask…
The way out
I come under the onslaught of these types of feelings time and again, but I always find a way out, based on a set of beliefs and practices that I want to share in hope that you can add them to your set of anxiety-slicing ninja blades.
Remember that this is your craft
Take a breath, this is why you became a developer, this is why you were hired. Your ability to connect the dots (and create the them) and make something out of nothing is what excited you and lead you here.
Asking for help is part of your job, you aren’t expected to know everything
You can ask for help. In fact, you should. If you come up short and aren’t sure where to go, pull in a teammate and collaborate. That’s part of connecting the dots. Reach out. Even if it’s just online. People love to help and someone will give you that spark of insight to get that code flowing again.
Shrink the scope into easier subtasks
This is probably the most helpful thing I do. The thought of the entire feature itself can be totally overwhelming. What I like to do is “small chunk” it down. Take baby steps.
I use the Windows Sticky Notes app and create a bullet list of the individual parts of the feature. I’ve seen some people use code comments for this as well, coming up with a comment-based algorithm and then filling in the spaces with code.
Start with larger macro tasks, and then pick one to work on and break that down into subtasks. If you still feel stuck, keep breaking it down smaller until you can start writing code.
Set artificial time constraints
Another trick to help you relax is to time-box yourself to one (or one set) of those tasks. I like to write the day of the week that I plan to tackle the task. My goal then is to finish the task on that day so that I can be ready to begin the next day’s task.
You can always shift the schedule if it takes longer than expected, but the time constraint becomes a fun challenge to beat and will get your creative problem-solving skills moving.
So that’s my plan of attack, hopefully it can help you navigate those uncharted waters. Do you have any other strategies to combat this seemingly inevitable feeling?