Many software projects find themselves in chaos. Perhaps the department is growing like crazy, new hires left and right, no one really understands the project but a launch is on the horizon. Another option is the department is short staffed and is under considerable pressure to deliver. Political battles and turf wars are being waged in management to determine the fate of the project. Priorities thrash left and right. In the mean time there are more change orders in the last week than total items done. This has been going on for several months, perhaps since the beginning.
How does one curb the Chaos?
The first step is to simply acknowledge it, and steadily point it out to others in a diplomatic way. A fish does not know it is surrounded by water. Some organizations do not realize the inherit limitations of the way they operate. Often this is a cultural thing in the organization and it can be self re-enforcing.
Some ammunition against chaos:
- Chaos is not efficient
- Chaos does not lead to quality
- Chaos increases risk
- Chaos increases burnout rate
- No successful organization operates in chaos indefinitely
The main method of change is at the human level:
In a larger company, project management, not technology should be the group responsible for getting this straightened out. Involving project managers is a smart idea, take them out to lunch, figure out their interests, and then mention how they might be able to help. In my experience project managers are always looking to expand their sphere of influence.
Management, or at least a section of it, needs to be behind the efforts to change. When influencing, avoid using the word ‘chaos’ to describe the problem. In fact avoid negative connotations as much as possible. Instead, offer constructive advice such as “it has been a long time since we had a planning meeting, I think that would be a good idea”, or “ticket systems are really helpful to track requests and organize work”, or “it occurs to me a unit test would be helpful to certify the data is accurate and we can use it anytime we refactor”. It may take up to a year to get momentum.
Some people will block the efforts, they may have habits, political agendas, or a natural aversion to change. Whatever the case is, do not hold it against them, just work with them when possible, but work around them if needed.
Technology Concepts that Curb Chaos:
These are essential best practices in software development that will make life easier, more productive, and fun:
- Development Process – Start reading about development processes and share your findings informally with coworkers in various departments. This will get people thinking about being more organized, and hopefully a little excited.
- Requirements Gathering – Advocate for the company to allocate time to the planning phase. Do not hold it against people if they change their mind, or remember a detail opposite of what they told you a week ago – that is human nature. Go back through the logic of the decision and verify. This takes a lot of patience!
- Ticket Systems – Choose a system that both IT and non-IT users can access and understand. That will cut down on the length of the line at your desk, and force people to put their thoughts in writing before bothering you. Someone will need to manage the system, and that could be an opportunity to create a new role for yourself.
- Unit testing – This gives confidence during refactors, and helps ensures quality, plus it is an addicting way to build software.
- Revision Control – if you are editing live files on the server, or often having conflicts between developers, start using Git, Mercurial or even Subversion. Compared to lack of source control, they are all fine choices, easy to use, and free.