Hello, I came here to share my woes with a project I have been given on my current job recently, perhaps it would be desirable to hear some advice on how I should proceed in this situation in case someone has dealt with something similar (not sure if this really belongs in this thread).
So, I have been assigned a project. This project was not developed in our organization, rather it was handed over to us by the original contractor who also were not the one who originally developed this software and sold it to our client. The original contractor hired us as a subcontractor (according to my understanding, don't know the proper terminology) since apparently they lack the specialists who can handle this project.
The thing is, the project is not good. First of all, it's really complex. I lack the experience, the knowledge and, I fear, the brains necessary to work with this project. It takes hours for me to figure out how something works, since there is a lot of code, it's really complicated and hard to get into, it's complicated not only because there are some sophisticated algorithms or methods employed (although that complexity exists too), but in large part because the code operates on custom data/logic structures which refer to concepts and terminology which only the original developers themselves knew and understood well because they were the ones invented them in the first place, and I have no proper documentation to consult, all I can do is to inspect the code, but going like this it is very hard to get an general overview of the project so that I could navigate around it more freely and it was easier for me to get into the specific details, relate what the code does to what it should do, and understand why it was implemented in such a way.
The project had been in development for some 2-3 years I think, and apparently was partly rewritten several times, it was being worked on by a group of people whose level of competency and skill is far beyond my current capabilities, even more than that, judging by some of the FIXMEs and TODOs strewn around the code, the original developers themselves did not know or understand what to do in some situations, how to handle specific exceptions, fix specific bugs, more efficiently implement specific functionality, etc, and I am baffled as to how I am expected to solve all of these problems alone, if the necessity arises.
To reiterate, the project is quite complex and large (or so it appears to me at least, I haven't ever developed anything of a similar complexity and scale myself), it has tons of functionality of which operation I have no firm understanding. I scan the code with my eyes for hours and hours to no avail, I simply can't grasp its workings because of the aforementioned lack of experience, knowledge, and skill, but things are significantly complicated by the lack of proper documentation, and there is no one to guide me through the codebase, I do not know how I am supposed to fix stuff or even implement *new* things, because, as I said, there is a lot of code to handle by a single person, and there's no detailed and extensive documentation that I'm aware of, that would help me familiarise myself with it better. To further complicate things, it runs slowly on my machine, and when I try to run it in a debugger (I'm using the vscode Python debugger), to better analyze how things work, the debugger just hangs for indefinite time when I try to look into a variable in the debug console (has someone encountered this bug in vscode? are there any workarounds?), so I have to use the print method to know what values the variables have etc, but it's awfully inconvenient, I have to add print statements for whatever variable I want to analyze, and then I have to restart the debugger and wait until control flow reaches that breakpoint again, which is wasting my time.
The project is quite ancient, works on Django 1.4.3 + Python 2.7, it's a legacy project, which I believe was abandoned by the authors themselves (though somehow they managed to sell it to the client 7-8 years back for a hefty sum of money), this terrifying mess runs excruciatingly slow and has awkward and confusing UI, the hapless users who have to use it on a daily basis according to the instructions do not know or understand (not that they are really interested to learn it anyway, as I take it) how it is organized, how it is supposed to function (specifically in terms of business logic, not actual implementation) and how to properly use it, for them it's all pure magic which just should work by itself, but the funny thing is that I, the developer, know very little about it myself, but despite that the users expect me to solve issues as if I were the very person who created this software the way it is (and made their lives miserable). I am required to process requests from users in the duration of several hours, depending on the severity of the problem, and if I fail to resolve requests in due time, the client is going to punish (I do not know the exact contract terms) my employer for non-fulfilment of the contract obligations. Another dismaying issue is that this software, despite being so sophisticated and having so many features, is in fact not very well suited to the specific use case for which it was it initially adopted, for, as I found out, this beast was conceived and developed more as a generic software platform for creating information systems than an application tailored for a specific field, it complicates things more than it aids the user, it's just too slow, confusing and awkward to use (it seems both users and developer suffer working with it), and to adapt it to the specific needs of the target user and generally make it more efficient and convenient I would have to come up with a generic solution, which requires deep understanding of the code, and I suspect large parts of it would have to be rewritten to change or add just a minor thing (if I want to do it the correct way, not resorting to ugly hacks, kludges and primitive duct-taping), and I've been struggling to wrap my head around it for quite some time already, maybe I'm just too dumb to do it, and I have no one to ask for help/advice/supervision since currently I'm the only Python/Django developer in the team (it wasn't the case some time ago, though, but things were not much different from now).
I did not know much about this project when I was first assigned it, I would likely not have accepted this offer if I knew beforehand. Working with this project is a nightmarish experience, it requires significant investments of time and effort, but gives very little in return, mostly headache.
So, do you think it's worth continuing struggling with this project, or it's better stop flogging the dead horse and accept defeat? Has any of you ever been in a similar situation?