We’ve all felt it. That tension that builds as a project get closer to launch. Maybe things are a bit behind. In many agencies, this leads to frustration between project managers and team members as each pushes back on the other. In some cases, I’ve even seen this tension lead to outright anger and arguments. In those cases, everyone, including the client, loses. So how can you, as a developer, keep this from happening? How can project managers work with developers to create beautiful sites and software for clients while maintaining proper boundaries and profitability? It’s not easy.
But there is a small change that developers can make to help push the conversation in the right direction. Act more like project managers. My friend and boss, Chris Lema, calls this taking ownership. This encompasses many areas and tasks, but mainly it involves proactive task management, client management and even project manger…management. Let’s take a look.
Proactive Task Management
Internally, we use a combination of task management applications to get the job done. But the most popular is GitHub tasks. It allows developers to interact with the tasks programmatically and attach them to pull requests and commits. But an issue that I’ve seen among many developers in many companies is that we only tend to pay attention to our tasks and not the project and task list as a whole.
While project managers are in place to make sure that tasks are sorted and being carried out, part of being a responsible team member is knowing what is going on, not just in your task list, but how the project is proceeding as a whole. Not only does this help your team be better, but it allows you to make better decisions about how to approach coding specific modules and pieces of your tasks.
One of the biggest lies I deal with from many technical managers and even project managers is that developers can’t talk to clients and should be kept as far away from them as possible. I have met some developers who were truly awful at client relations, that is mostly through inexperience. Communication is a learned skill. It takes practice. Sometimes, it takes having someone more experienced sit down and explain the basics to you.
A developer who can speak to a client is a powerful resource. Not only do they have the ability to put in the work, but they can also explain it to the client in great detail but with great simplicity. Imagine if instead of having to come up with a answer to the why question every time a client asks why solution X was picked over solution Y the developer could speak intelligently, simply and quickly on the subject. This ability helps not only during the project but during discovery and project planning as well. Estimates are sharper, features are scoped correctly, and clients are given more complete pictures of what to expect rather than finding out about problems in the development cycle.
I once worked for a company where I had 10-12 “drive-bys” per day of people dropping by my desk to get an update on a project or just say hi. While none of these were with the intent to distract me, that is what they did. It takes me on average 20-30 minutes to get “in the zone” for programming. So for every 30 second drive by, it was really costing myself and the company up to 30 minutes of productive time.
One way I found to get around this (other than work from home and hide from all communications 🙂 ) was to preemptively update my project managers each day. I began reaching out to them first thing in the morning with updates and asking for any questions or updates they could provide. While this didn’t stop all the distractions, it did ease them by a vast majority.
True project management requires patience and planning. A great team realizes that not only does each member bring something to the table but that everyone has to pull their weight and that each person can help outside of their discipline. When we take ownership of our responsibilities and of the project as a whole, we allow our clients to benefit from a well synced machine that is both profitable and productive.