We all make mistakes—we’re only human. The important thing is to face our mistakes right away and do whatever it takes to fix them. When we start ignoring our mistakes or look for someone else to blame, we adopt the “ball in your court” mentality that it’s someone else’s problem now. As a client-focused company, we have learned many lessons on how to run a great project – and how not to. Here are some important lessons we’ve learned about elevating every project to all-star status.
Step Up Your Management
Management (or more accurately, mismanagement) is often the first point of blame when things go wrong. While poor management can’t be to blame for all a project’s ills, it does have control over teams, how those teams communicate, and how well they function. If you’re in a management role, encourage your teams to be transparent about issues that arise and how criticism of those issues is handled. As a manager, your role is to champion your employees while also being realistic about their work.
Get Rid of the Silos
Teams are a great way to effectively break a large project down into manageable pieces that can be worked on simultaneously, leading to a more efficient work environment. The risk of teams comes from creating “silos”, where each team has their own process and their own way of doing things. Everyone is working towards the same goal and so need to be kept to the same standards. This applies to all parts of the project, from code reviews and dev ops practices to communication methods and responsiveness. For those of you following Agile principles, this should be second nature; if you’re not following Agile principles, we encourage you to check them out. No matter what you are doing, keep the overall goal of the project in mind so that everyone’s parts can integrate seamlessly in the end to create a strong product.
Sign Your Work
Even if you’re not an artist, you should still be signing your work. You worked hard on that code – take credit! However, this also means taking responsibility when something goes wrong and fixing the mistakes we encounter. As a company, we try to follow Bob Martin’s Boy Scout Rule – “leave the code cleaner than we found it”. Take criticism as a way to learn, squash bugs as they appear instead of letting them roam free, and above all, always strive to write code you can be proud of.
Adjust Your (UX)pectations
Designers, you are capable of brilliant things – your designs can change how people interact with the technology they use. However, the best tech designs are only as good as their implementation, and so you need to consider what your team and your project’s technologies can actually achieve when setting your UX expectations. To do otherwise is to do a disservice to your client, your team, and yourself. Your job is to ensure that the work fits the overall goal of the project. Again, communication is the key. Talk to the managers, the developers, and the users early and often so your designs both meet expectations and are realistic.
Cure Your “Ship-It” Syndrome
The time pressures can be intense in software development. Be the first to market, fix the bug that’s crashing the system, get more done – just ship it! While this line of thinking may seem like the best or only way to do it at the time, but it can lead to much greater problems down the road by not taking the time to check how your work interacts with the rest of the application. Pushing code out the door at the expense of proper testing and integration will lead to more problems down the road and more development time lost to unnecessary bugs.
The workflow of a software development project is not linear. Communication is key – between teams, between developers and designers, and between those making the product and those who will use it. You can finish a task and hand it off to someone else for the next step, but good projects are iterative. Take the time to work together and listen and the rest will fall into place.