Understanding Your Situation
Coming to terms with the fact that you are experiencing a problem in the software development process is not the easiest thing to do. Usually, by the time that company resources and developer hours are heavily invested in the project there is a working relationship between you and the developer. In custom software development there must be a level of trust that the developer is the expert and that he is able to complete the project to fit your needs.
It is generally not a comfortable experience to question this relationship and confront the developer, especially when the subject matter is outside of your own expertise. When your developer refuses to fix problems, adequately explain repeated delays, or provide you access to your own staging environment, there is a good chance that your developer may need outside help to complete your project they way your business needs it, in a reasonable time-frame.
The question at this point is do you let the project continue the way it is in hope that things get better, or do you contact outside help to get the project back on track? This is your moment of clarity; one way or the other, you understand your situation.
Reviewing Your Options
Assuming your answer to the question above is that development has stagnated, and things need to change, the next course of action is to assess your options. The worst case scenario for you is that your developer or development team was both unqualified and malicious in draining your company’s resources so that as of now:
- Your project is not launched and there are unexplained delays for individual features;
- It lacks the necessary features and the developer refuses to implement them;
- You do not control development and the developer refuses to give you access to the source code without explanation;
- And your developer increases the budget without clear explanation and even withholds project releases until they are paid more money.
Not all hostage situations are this dire, and the vast majority of developers that cause hostage situations are not malicious; they merely need outside support to get the job done. In any case, though, you need to set a goal to move your project to a place where progress is possible and you can once again be in control of the development process. Your key options are as follows:
- Communication. Solving almost any problem begins with talking to the developer. There is always a chance that miscommunications were the source of your problems. Clearing the air might just be the optimal solution for getting things back on track. Clearly explain what you like and don’t like, asking all the questions you have as well. Together with the developer you make new plan of action to reboot the development process.
- Focus Development. Sometimes the problem with the project occurs when there is a disagreement about what is essential. The solution to such a disagreement is to get a minimum viable product as soon as possible. By excluding all of the features that are not absolutely necessary to the software at the present moment, you and the developer can focus on putting together a workable product. If your current project is blocked because there is a disagreement on what is important, stop adding new features immediately and finish the necessary functionality first.
- Technologies. Sometimes the issue can be a result of the developer using an incorrect language or library. This problem is a little more complex to solve. Your best bet is to talk to someone not related to the project and find out what is out there on the market and what the best practices are for development on projects like yours. Oftentimes this option requires reaching out to a different development company or outside developer for a second opinion. In most cases it is not the best idea to code everything from scratch, but if your project is written in a language that is the software equivalent of Ancient Cuneiform, it is likely your only option. Rewrites are the best way to get rid of old database management systems and ancient languages that are not supported anymore.
- Build a New Team. When at an impasse with your current developer or development team, sometimes there is no cost-effective way to move forward. Whether there is a dispute over budget, features, or technologies implemented, you DO have the option to hire a new team. A new development team can offer fresh perspective and be ready to complete a struggling project that the previous developer could not or would not finish. If you find out that the technologies originally chosen for your project are out-of-date or ill-fitting for the purpose of the project, find a team that can convert everything to more optimum technologies.
After you decide which option or multiple options you will pursue, plan everything. Follow best practices in development operations (Dev Ops) to bring the project under your control, maximize efficiency, and promote beneficial communication. Talk to your project manager and discuss the steps needed to move forward. If you are refocusing the project with the same developer, prioritize development into phases. Everyone should know the start/end dates for each job and understand what features and functionality each release should contain. Along with your project manager assign a responsible person for each job, stage, and phase. If you or your developer do not have an issue tracking system, seriously consider investing in one. They allow you to track progress and see all up-to-date info about the project, including what work was done during which time period.
Following the Chosen Path
When you have a plan, record it and stick to it. If your plan is not recorded, the project is more likely to revert to the methods and behaviors that led to the software hostage situation in the first place. Life is not perfect, and almost every step will require minor readjustments; however, your plan should give you the framework you need to manage what is expected with every major release. Remember that small changes are acceptable to get the project moving again and dig yourself out of the software hostage situation.
Creating a New Spec
When your plan is recorded, it is a good time to write a specification that will contain all of the details about the project. If you already have a good spec, make sure that your plan reflects the details accurately so there is no confusion or dispute later. One of the most important purposes of the spec outside of defining the features of the end product is to manage everyone’s expectations and get everyone on the same page from the outset. If you need to write a new spec, try to find someone with technical experience. It is appropriate to involve the developer or an outside consultant. Regardless of who writes the spec, the final step is to make sure that you and the developer agree on it before continuing with development.
Building a New Team
If you decided that a change in developer is the best way to move forward, choose a developer that is qualified to do the job. It sounds like an obvious distinction to make, but developers usually have specializations as to which technologies and features they work with. A senior developer in one technology might not know anything about another technology. Be diligent in asking about the credentials of your new team.
Furthermore, it is important to make sure that every member of your team understands the project’s goal, your priorities, and the value of their own input on the project. If every detail is clear to all parties working on the project, including yourself, a software hostage situation moving forward will be nigh impossible.
Creating Hostage Free Development Environment
By being involved in the development of your project, and by following the above methods for communicating and delegating to capable team members, you automatically exclude software hostage situations that could arise from misunderstandings or miscommunication. Once your project is lifted from stagnation and there is once again visible progress toward completion, remember to maintain good practices in Dev Ops to prevent backsliding into bad habits. The most important aspects of development for you to uphold moving forward are good communication, a steady development pace, and control of the project.