First and foremost, you need to be working in an environment that works for you. As soon as the conditions stop being optimal for you, the quality and quantity of work you can produce will start to be effected, if it is not already. When you are working at a reduced rate of effectiveness, overall you may not be helping the company or even your colleagues by staying.
there is no notice required for any party to terminate the contract
Well here is your way out, if they have stated there is zero notice period, then this means they have already calculated and potentially prepared for this risk. It is not up to you to determine how frivolous this is. It is however an indication that even if your provide notice, they may not accept it and may terminate your contract on the spot.
- DO NOT provide notice until you are prepared to be terminated on the spot.
The software development industry is very protective about IP, so part of the reason for a no-notice period is that they will want to lock you out of access to source code and data. Even for some positions that do offer notice, it is still common to terminate your physical access on the spot and they will pay you out for the remainder of the notice period, or you may be reduced to documentation or menial tasks. It is recognised in IP heavy or soft industries that once your notice period is started your effectiveness will be significantly reduced, your thoughts will be about the next job and you may even start to use billable time to pursue your next contract.
I feel that if I leave, my colleague's conditions would be severely worsened, being asked to travel every week, pressured even worse than before, etc.
- It is not your responsibility to look out for other colleagues, that is the role of management, HR, team leaders and supervisors. It is an admirable quality, but your mental health concerns are paramount, hanging around a stressful or toxic environment can have long lasting effects on your mental state and personal development if you are not able to cope, or even if you think you can. If it gets too heard for your colleague to continue work, then they should also leave. If the remuneration does not make it worth-while (if you are not being paid enough) then this is not the job for you.
The reality of most projects like this is that if you leave, then they will recruit someone else into the role. This will still be a burden to your colleague, but it should be a manageable one, and the event of your departure should trigger some compassion from management in the form of relaxed expectations or a change in the conditions. Your departure should trigger some sort of internal review, especially if you leave enough clues, this might result in an overall improvement for your colleague, or you might just be the scape-goat that they need when the project runs past the dead-line.
It sounds like you may not be 100% committed to leaving, if you do really care about the project and your colleagues and are prepared to be dismissed on the spot, then about the only thing you can do to support your colleague is to approach management and raise your concerns.
The project progress is slow and management is getting nervous.
In general the pressure you feel always stems from a difference in expectations and actual outcomes, but this always falls back to miscommunication. Either the requirements were poorly communicated or the original estimates were incorrect and or poorly communicated, or perhaps you have not adequately reported progress and updated the projected timelines as quickly as your should have identified them.
- We are in the business of setting expectations, clients and management will not like the fact that a project runs over time or budget, but as long as their expectations are updated frequently enough to match the given reality at any point in time, then management can make decisions to address the issues. That decision might be to replace you, or to acquire additional resources, or to change the requirements.
We also take turns traveling for work, so at least one of us can rest each week.
This for me is the red flag, the fact that you don't have to commute in all the time is wonderful, but your language here indicates a deeper issue. If travel is affecting your performance, or if the requirement to commute in everyday would be a problem for you then it sounds like this job is not appropriate for your situation. It sounds like either your personal position in life or your proximity to the office means that you could be more effective working in a remote capacity for this role.
Here is where you have the potential to turn this around, you should approach management with your concerns, but offer them solutions. Management don't want to hear about problems, your concern is about the progress and efficiency of your team, and that you feel the expectations from management are not inline with what your team is able to deliver in the current circumstances. Explain that you feel that you are more productive when working remote and that perhaps you could change the on-site requirement to 1 or 2 days a week. Tightly define the type of work that is most efficiently performed in the office, that would be meetings, reviews and correspondence, and the define the type of work that is more efficient remotely, when you are less likely to be interrupted.
If you can present a solution to both your problems and managements problems in a way that everyone wins, then you may be able to keep your job and potentially save the project.
If you are still asked to leave, you have done what you can to raise issues that might improve the situation for your colleague, and you have given them an excuse to make some changes. In Australia, we call this "Taking one for the team", I actually think it's a baseball reference which isn't very big over here, but we use the term a lot in situations like this ;)