7

Maybe this is the wrong group, idk if it should go in software engineering or what, but I think it's more of a management problem.

I'm working on a project with one other programmer, a contractor brought in for this project. The project is to make a copy of an old website because our company doesn't want to pay an external supplier to maintain the old version. The other programmer is twice as old as me and I assumed he would be more experienced, but it soon became clear he doesn't know how to use source control or cooperate/share workload. His programming is perfectly fine but he will not participate in technical discussions and ignores my concerns. I have experience building projects for this company, working with our managers (whose only instructions were "1-1 match to old version with security improvements), and when I point out things that will need to be done to get the project accepted (database encryption for GDPR, features from the old version we are missing), he says they are not so important and we will do it at the end. I have tried to have technical discussions with him, but he started by saying "he doesn't speak English well" and doesn't understand my concerns, so we switched to Czech and still it's his way or the highway. I am now going to the manager with my concerns directly.

Neither of us is in charge of the other, which is probably a bad setup. Both managers in charge of the project have made the requirements clear, but are not interested in technical details. I don't want to bother the boss every time we disagree on something but unless the boss says explicitly that something must be done, it is ignored.

The biggest problem is I cannot work on the code. When I make changes they are "accidentally" deleted during merging or deliberately removed without any discussion because the programmer "didn't understand them". We agree to split the work and I do some task, which he then does again and deletes my work. He does all changes on one branch and doesn't merge to default unless asked, and doesn't push changes to SQL or environment files, so I cannot test locally.

The managers are aware of the issues, they have said that we won't work with him again. My main issue is that I need to be working, I am assigned to help the project go faster, and we are already behind. But my work is constantly deleted without discussion and I am getting tired of wasting my time on things that won't be kept and arguing with someone who will not share his technical thoughts about why something should be done in a certain way.

How can I get this person to let me help on the project, and finish the project ASAP, with less arguing, undoing of the time I have spent, or going to the manager with every disagreement?

3
  • 4
    "The managers are aware of the issues, they have said that we won't work with him again." If this is all your managers have said, this is a cop-out. What do they suggest you do on this project, right here, right now? Aug 27, 2023 at 6:36
  • 2
    Go to your management, explain what you just told us, and ask them what they want to do. Include that you're not being allowed to code so you're slowing each other down. Aug 29, 2023 at 23:57
  • This sound like it is doomed the way it is going right now. Is there a possibility to either let the external contractor do all the work or you do all the work because teamwork and the external guy are incompatible and management is either incompetent or refusing to handle this? Aug 30, 2023 at 16:25

3 Answers 3

1

So your company didn't want to pay an external contractor, so they bought in a different external contractor to help them in-house the website, with no in-house technical management capable of coordinating the new contractor with the in-house staff?

You're really just dealing with a management incompetence problem.

he doesn't know how to use source control or cooperate/share workload

As a sole developer, you can often get away without any real source control at all, beyond a moderately disciplined approach to organising files and taking backups at reasonable intervals.

As a contractor hired as an individual, you might find that he has very little experience in either cooperating with other developers, or dealing with source code that multiple developers work on at once.

You also find that teams of people need time to align their practices, learn the specific non-standard tools in use, and so on. You might be following a reasonable practice with your source control, but if it isn't a standard practice down to the fine details, a contractor brought in for a short period isn't going to tolerate faffing with it. He'll just write his code, then leave it to you to integrate into whatever source control you have.

Is it possible also that your code is being overwritten in genuine accidents, because you're demanding that he follow some source control process that he has said he isn't familiar with?

Or that when he rewrites your code intentionally, it's either (a) for the purpose of better integrating things (bearing in mind you're two unfamiliar people, at odds personally, of differing ages and experience, and with no shared history of working together)?

Or (b) just simply because he needs to understand the specific workings of something, and it's no easier to read your code than to write his own?

I don't mean to imply that your code is particularly hard to read. Only that it contains subtleties, where it's easier to understand and remember them by following the process of writing the code from first principles, rather than trying to infer the principles back from reading unfamiliar code?

Conclusion

To me, it just sounds like your company is following a completely unreasonable process for completely unreasonable causes, with unreasonable expectations.

For a start, when you have multiple developers working on exactly the same area of development, you need management to coordinate them.

You also need developers who are accustomed to team working generally. This includes the need for communication skills and a recognition of the importance of communication - not just developers who have internal understandings but struggle to articulate themselves. It includes familiarity with more sophisticated source control methods. And it includes selecting affable personalities.

You also need developers who are accustomed to each other specifically. This includes selecting broadly compatible people in the first place to avoid fundamental disagreements. And it includes allowing a period of habituation where progress may be slow as people resolve differences and learn each others strengths and weaknesses.

The overheads of true team development are why many companies either try to restrict development to a single individual, or if there must be multiple developers, then try to find non-overlapping areas of responsibility where the amount of coordination and cooperation required between each developer is limited.

The most sensible approach in your case, is probably just to let the contractor get on with the entire development, and accept the ensuing timeframe as being almost certainly the minimum timeframe possible. Your company hasn't created the circumstances for development on any other terms.

Trying to apply yourself to speed things up, is what (iirc) Fred Brooks described as applying additional women intending to speed the gestation of a baby.

4
  • 1
    It's not clear from the question who is going to do maintenance of the app after the first delivery is complete - assuming maintenance will become the responsibility of the OP, it's probably not viable for them to go hands off until delivery. Instead they probably need to figure out if they can complete the app quicker without the contractors "help" and if so push for that outcome. Unfortunately if 2 developers will complete the delivery quicker than one, the OP may have to wait until delivery before taking over the project entirely. Discuss all of this with your manager.
    – DavidT
    Aug 27, 2023 at 23:14
  • @DavidT, if the OP could just do the work all by himself, what's the chances that the company would have forked out to hire a contractor? And by the sounds of it, there is no technical manager with whom discussions would be particularly useful.
    – Steve
    Aug 28, 2023 at 7:12
  • 2
    @Steve: "what's the chances that the company would have forked out to hire a contractor" - not as low as you may think, because on paper, "let's bring down our 1-person-works-for-60-days project to a 2-persons-work-for-40-days project" (each dev working on 30 days of the effort + 10 days of integration overhead) sounds like a great idea. I have observed people not directly in the technology sometimes have a problem imagining that the result could be each dev working 45 days on the project (added effort for added inner interfaces and overlaps) + 30 days of integration + coordination overhead. Aug 31, 2023 at 13:22
  • @O.R.Mapper, it's certainly a realistic possibility!
    – Steve
    Aug 31, 2023 at 13:51
2

You're spending a lot of time reconciling situations where this person has clobbered your work. I wonder if it's possible that you just clone your current repository and database, and just do your own thing. Talking to the guy isn't working. If you've notified your management as to how he goes behind you and destroys your work product, then maybe the next step is to just get it in writing that it's okay for you to completely branch off from existing work done, and they can deal with the contractor as they please while you actually get the job finished.

0

How can I get this person to let me help on the project, and finish the project ASAP, with less arguing, undoing of the time I have spent, or going to the manager with every disagreement?

You can't. You've already tried the options you have at your disposal and they haven't worked. This has become your manager's problem to solve.

If you haven't done so yet, you could try to have one final discussion with this contractor. Explain that you are still losing work and that this can't continue. You need to be able to contribute to the project without all these disruptions. Say that if it keeps happening you'll need to loop your manager in to help find a solution. Then do that.

This is the most immediately obvious and quantifiable problem so it makes to start there. Based on what you've described nothing will change and you'll know have clear and measurable concerns you can bring to your manager. Speak to them or call them and say something like:

The problem we've had with Contractor have continued and it's at the point where I cannot effectively contribute to this project. Aside from ignoring some key requirements we should be tackling from the start, all of my work is constantly lost because they either don't know how to work collaboratively or don't care that my work is lost. I've tried repeatedly to explain this but they've brushed my concerns aside. I need you to step in and make it clear that I need to be able to work on this as well if we want to progress.

Then stop there and discuss how to proceed. The outcome here should be that either your manager intervenes to make it clear to the contractor that changes are needed, or you are pulled off the project. Most likely your manager will tell you to work it out with the contractor directly. Say:

I've tried that and it hasn't worked. I can't get through to them and as I don't manage them I need you to step in here.

You do have standing to bring up the broader issues related to the design of your work and the suboptimal approach the contractor is taking to what sound like essential features. But that would dilute the message when you have a much more actionable concern that should be acted upon. Focus on that and get your manager to manage.

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .