5

I recently started working for a software company in another country. They flew me over to make progress with the project. I did some tasks there and then came back to my homeland to continue working from here.

I have been tasked with building new features for a poorly written web-based application. I really don't understand the spaghetti code. It has no documentation, does not use any design patterns, and the data structure is not normalized.

The project management is messed up: there's no backlog, they don't follow any software methodology, and don't even use emails for communication. Everything is discussed on calls. The team does take notes, but there is no integration. The managers don't understand the complexity involved. I have lost interest in the project.

The management asked me for a plan to complete the tasks. In a rush of blood, I told them I would deliver by Wednesday. I cannot finish my tasks, and I have lost my sleep. Every piece of code I touch breaks something else, and I cannot refactor or add the required features by the committed time.

How should I tell my boss that I cannot meet the deadline?

I really don't care about getting fired because the company doesn't meet the culture I was expecting, and I don't want to work here anymore, but I don't want to leave in a way that management feels disrespected either, considering they invested some money in me.

3
  • 3
    You just told them you would finish on Wed and not you have to tell them you don't know when you will finish. It is not going to go well. Just say it.
    – paparazzo
    Commented Dec 27, 2016 at 3:03
  • "What should I do" is generally not the greatest question, even with context before. You might want to use the title-question, which is perfectly fine, instead.
    – Thalantas
    Commented Dec 27, 2016 at 10:28
  • Will you be able to deliver if you are given additional (but limited) time? Can you deliver in a reduced scope but on-time (or soon afterwards)? Basically, can you deliver anything of value in a very near future?
    – PM 77-1
    Commented Dec 28, 2016 at 1:29

3 Answers 3

11

Giving a timeframe you can't meet was extremely unprofessional. Throwing your hands up and saying you don't care about getting fired even more so.

Inform them asap that you cannot handle the work. if you can, give them what you think is a reasonable solution and timeframe and go from there.

That's about all you can do, if they're not technical people, they will have little to zero interest in your excuses and reasons. I've seen many people in your situation, it's not a good place to be and unless you learn from it you're doing the same as them, selling a faulty product.

3
  • 2
    We have an employee here who is out of his depth. I would put the blame equally on his manager who should have known that an estimate given under huge pressure isn't going to be met. The manager's job is primarily to get the task done at minimal cost, and putting pressure on an unexperienced developer isn't going to achieve this.
    – gnasher729
    Commented Dec 27, 2016 at 18:04
  • 1
    @gnasher729 I would put the blame mostly on the manager. It sounds like the manager was trying to manipulate him into a commitment to do what he was already saying was impossible. Commented Dec 27, 2016 at 21:55
  • 2
    @gnasher729 I disagree, the manager is not a tech person, he's a salesman by the sounds of it. Pie in the sky and high pressure sales techniques are his stock in trade. It's up to the tech to keep their feet on the ground. The OP can either learn from this, or blame everyone else and keep digging himself into a hole until it collapses on him..
    – Kilisi
    Commented Dec 28, 2016 at 6:12
6
  1. Let them know that they can't expect any deliverable from you. Let them know why: the code has no documentation, you haven't been able to identify any structure to the code and the spaghetti nature of the code makes it impossible to make sense of let alone understand. Let them know that attempting to work with the code as-is to introduce new features - that's an exercise in futility.

  2. Suggest an alternative including building from scratch. Give them an estimate as to how long it should take if you could do it from scratch.

At this point, your focus should be on fleshing out and proposing doable alternatives to what they want you to do.

They could fire you but that won't make the issue that the code is impossible to work with go away.

Don't tell anyone that you can't do something without proposing doable alternatives. Since you are delivering bad news, make sure that you have your ducks lined up before you deliver your bad news, Once you have your ducks lined up, don't drag your feet about delivering the bad news. Don't wait for the deadline if it's not necessary to wait.

Working with the code as-is simply means that the fact the code is extremely poorly written, has no structure and undocumented - that fact is now your unresolvable problem. Not to have to work with this code is the only way to sidestep every issue that's built-in with this code.

Tell them that if the code were modular, you could add features while understanding say 10% of the code base. The fact that the code is spaghetti means that you have to understand 100% of the code base before you can do anything. Spaghetti code and having to understand 100% of the code base - that's a very bad combination.

5

Rather than focus on what is wrong with the code you need to figure out a path to solving the problem. That may mean redoing the entire project if they want an accurate time-frame. Then let them decide how they want to go forward. Be prepared to explain to them why you need to take the steps you propose.

Answers like this doesnt meet standards, or is all spagetti code are great rants for a web forum but they are not actually reasons that you can not complete the project. That Module A has requirements of module B and C and that making the change to A will make B and C no longer function because of Function A(3) will no longer be able to call B or C because the changes required to make B and C perform properly will mean that function b(4) and C(1,3,9) now has Prerequisite of D which is also a prerequisite of A.

From here you need to be able to provide a realistic timeline and iterative deliverables for the completion. If that is all beyond you then perhaps you should call the company that placed you there and ask for their help in solving the problem

You must log in to answer this question.

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