How to manage frustration from dealing with spaghetti codebase and feeling like I can't deliverColleague in two-person team is writing bad code, no standards, and the company is growing fast. What needs to be put in place for good code quality?Staying focused during automatic processes, “It's compiling”I was offered a manager role without additional pay or seniority after I recently was given a raise, should I ask for more?How to deal with a boss who won't give me work?How to deal with coworkers who don't want to give code reviews?Is it unprofessional to call code “garbage”?Manager of another team demands all of my timeHow can I convince my manager that we need to reduce technical debt?Junior developer struggles: how to communicate with management?Team member is vehemently against code formatting

Winning Strategy for the Magician and his Apprentice

Check if three arrays contains the same element

Are there any important biographies of nobodies?

Should I give professor gift at the beginning of my PhD?

Generate basis elements of the Steenrod algebra

Meaning of 'lose their grip on the groins of their followers'

Is an entry level DSLR going to shoot nice portrait pictures?

Why are trash cans referred to as "zafacón" in Puerto Rico?

Mathematically, why does mass matrix / load vector lumping work?

How to tell your grandparent to not come to fetch you with their car?

Soft question: Examples where lack of mathematical rigour cause security breaches?

Is using haveibeenpwned to validate password strength rational?

Has there been a multiethnic Star Trek character?

Electricity free spaceship

Does the Long March-11 increase its thrust after clearing the launch tower?

Is it expected that a reader will skip parts of what you write?

Is White controlling this game?

Is it legal for a bar bouncer to confiscate a fake ID

Jargon request: "Canonical Form" of a word

Does Disney no longer produce hand-drawn cartoon films?

With Ubuntu 18.04, how can I have a hot corner that locks the computer?

How to produce a more sophisticated pie chart?

Why can my keyboard only digest 6 keypresses at a time?

Is it a problem if <h4>, <h5> and <h6> are smaller than regular text?



How to manage frustration from dealing with spaghetti codebase and feeling like I can't deliver


Colleague in two-person team is writing bad code, no standards, and the company is growing fast. What needs to be put in place for good code quality?Staying focused during automatic processes, “It's compiling”I was offered a manager role without additional pay or seniority after I recently was given a raise, should I ask for more?How to deal with a boss who won't give me work?How to deal with coworkers who don't want to give code reviews?Is it unprofessional to call code “garbage”?Manager of another team demands all of my timeHow can I convince my manager that we need to reduce technical debt?Junior developer struggles: how to communicate with management?Team member is vehemently against code formatting






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;








18















Some context: I'm a newly hired developer (1.5 years) at a software testing company. For a while things were going great. I was able to dive in relatively quickly, but there have been some speed bumps.



In particular, I wrestle a lot with our codebase. It's particularly hairy (being written in C++, Ada and Python) and it's 20 years old at this point. Most frustratingly, there is very little to no established code ownership in a tool that spans over 1.5 million LOC. There is sort of an ad hoc understanding -- the tool can be separated into various modes, and same people tend to work on the same modes, but it's not always the case.



Recently, I've been asked to change, in a fundamental way, a part of the tool that is used in every single mode. I've designed and implemented changes to features before, but nothing this complicated. My boss seems very confident in my ability to do it, but it took me over a month to understand exactly how it would affect "my" part of the tool, and implement the change there.



Now, despite multiple attempts to ask my boss for help implementing the work in other parts of the tool, he insists that I must learn them and do it myself. I voiced concerns about code ownership, and maybe asking the people who work in that area to do some of it, but the response was that "they are busy and this is your task." It was made clear that I can ask questions, but as far as my main task, I'm on my own.



He's aware of how big this change is. He even says it himself, and tells me not to be hard on myself if it's taking a while. But despite his sympathies, the project just isn't getting done. There's just so much code, I can't even comprehend it all. Sometimes I will spend an entire day trying to map out a completely different part of the tool, trying to understand how my change will affect it, and I'll go home having accomplished almost nothing. Sometimes I'll make a design mistake, realize it, and have to completely start over. I walk in the next day, sit down, look at my notes and sigh. Hopefully I'll write some code.



On the rare occasion I get assigned a different task, I always knock it out quickly because it just feels like a breath of fresh air, but when I even think about my main task, it's so demoralizing that it makes me to want to find a new job.



How can I manage the stress of feeling like I'm not accomplishing anything, and more importantly, deal with a project which I feel is too large for me to take on?



ETA: my boss used to be the technical lead for 16 years. I don't think his lack of technical know-how is the issue here.










share|improve this question
























  • He used to be one of the lead developers for the tool, for over 16 years. He knows the codebase sucks, but I think he's been removed from the problem for too long now (the past 4 years)

    – Tyg13
    May 22 at 14:44






  • 1





    in that case, trust his judgement. Dwizums answer is probably the best advice here. Don't measure achievement by the amount of code you've written - I've lost count of the number of times I've spent days working on a single line of code solution.

    – user1666620
    May 22 at 14:47







  • 5





    The question right now lacks specific thing you want help with. What do you want to happen? It sounds more like a rant right now with all due sympathy to your issue

    – aaaaaa
    May 22 at 17:18











  • @aaaaaa Ideally, I'd like to be taken off this project. It's a lot of drudge work to get something that should have been in the tool in the first place. We've built onto a structure for years that now needs to be almost completely reworked. I don't think that's a change that a developer with a single year's experience with a massive codebase should be making. But I fear for the worst if I were to say this to my boss, verbatim

    – Tyg13
    May 22 at 18:13







  • 1





    Forget the idea of "owning" the code. The code belongs to the company, not any particular employee. Developers should never think that they own a particular bit of the codebase.

    – Simon B
    May 22 at 21:32

















18















Some context: I'm a newly hired developer (1.5 years) at a software testing company. For a while things were going great. I was able to dive in relatively quickly, but there have been some speed bumps.



In particular, I wrestle a lot with our codebase. It's particularly hairy (being written in C++, Ada and Python) and it's 20 years old at this point. Most frustratingly, there is very little to no established code ownership in a tool that spans over 1.5 million LOC. There is sort of an ad hoc understanding -- the tool can be separated into various modes, and same people tend to work on the same modes, but it's not always the case.



Recently, I've been asked to change, in a fundamental way, a part of the tool that is used in every single mode. I've designed and implemented changes to features before, but nothing this complicated. My boss seems very confident in my ability to do it, but it took me over a month to understand exactly how it would affect "my" part of the tool, and implement the change there.



Now, despite multiple attempts to ask my boss for help implementing the work in other parts of the tool, he insists that I must learn them and do it myself. I voiced concerns about code ownership, and maybe asking the people who work in that area to do some of it, but the response was that "they are busy and this is your task." It was made clear that I can ask questions, but as far as my main task, I'm on my own.



He's aware of how big this change is. He even says it himself, and tells me not to be hard on myself if it's taking a while. But despite his sympathies, the project just isn't getting done. There's just so much code, I can't even comprehend it all. Sometimes I will spend an entire day trying to map out a completely different part of the tool, trying to understand how my change will affect it, and I'll go home having accomplished almost nothing. Sometimes I'll make a design mistake, realize it, and have to completely start over. I walk in the next day, sit down, look at my notes and sigh. Hopefully I'll write some code.



On the rare occasion I get assigned a different task, I always knock it out quickly because it just feels like a breath of fresh air, but when I even think about my main task, it's so demoralizing that it makes me to want to find a new job.



How can I manage the stress of feeling like I'm not accomplishing anything, and more importantly, deal with a project which I feel is too large for me to take on?



ETA: my boss used to be the technical lead for 16 years. I don't think his lack of technical know-how is the issue here.










share|improve this question
























  • He used to be one of the lead developers for the tool, for over 16 years. He knows the codebase sucks, but I think he's been removed from the problem for too long now (the past 4 years)

    – Tyg13
    May 22 at 14:44






  • 1





    in that case, trust his judgement. Dwizums answer is probably the best advice here. Don't measure achievement by the amount of code you've written - I've lost count of the number of times I've spent days working on a single line of code solution.

    – user1666620
    May 22 at 14:47







  • 5





    The question right now lacks specific thing you want help with. What do you want to happen? It sounds more like a rant right now with all due sympathy to your issue

    – aaaaaa
    May 22 at 17:18











  • @aaaaaa Ideally, I'd like to be taken off this project. It's a lot of drudge work to get something that should have been in the tool in the first place. We've built onto a structure for years that now needs to be almost completely reworked. I don't think that's a change that a developer with a single year's experience with a massive codebase should be making. But I fear for the worst if I were to say this to my boss, verbatim

    – Tyg13
    May 22 at 18:13







  • 1





    Forget the idea of "owning" the code. The code belongs to the company, not any particular employee. Developers should never think that they own a particular bit of the codebase.

    – Simon B
    May 22 at 21:32













18












18








18


2






Some context: I'm a newly hired developer (1.5 years) at a software testing company. For a while things were going great. I was able to dive in relatively quickly, but there have been some speed bumps.



In particular, I wrestle a lot with our codebase. It's particularly hairy (being written in C++, Ada and Python) and it's 20 years old at this point. Most frustratingly, there is very little to no established code ownership in a tool that spans over 1.5 million LOC. There is sort of an ad hoc understanding -- the tool can be separated into various modes, and same people tend to work on the same modes, but it's not always the case.



Recently, I've been asked to change, in a fundamental way, a part of the tool that is used in every single mode. I've designed and implemented changes to features before, but nothing this complicated. My boss seems very confident in my ability to do it, but it took me over a month to understand exactly how it would affect "my" part of the tool, and implement the change there.



Now, despite multiple attempts to ask my boss for help implementing the work in other parts of the tool, he insists that I must learn them and do it myself. I voiced concerns about code ownership, and maybe asking the people who work in that area to do some of it, but the response was that "they are busy and this is your task." It was made clear that I can ask questions, but as far as my main task, I'm on my own.



He's aware of how big this change is. He even says it himself, and tells me not to be hard on myself if it's taking a while. But despite his sympathies, the project just isn't getting done. There's just so much code, I can't even comprehend it all. Sometimes I will spend an entire day trying to map out a completely different part of the tool, trying to understand how my change will affect it, and I'll go home having accomplished almost nothing. Sometimes I'll make a design mistake, realize it, and have to completely start over. I walk in the next day, sit down, look at my notes and sigh. Hopefully I'll write some code.



On the rare occasion I get assigned a different task, I always knock it out quickly because it just feels like a breath of fresh air, but when I even think about my main task, it's so demoralizing that it makes me to want to find a new job.



How can I manage the stress of feeling like I'm not accomplishing anything, and more importantly, deal with a project which I feel is too large for me to take on?



ETA: my boss used to be the technical lead for 16 years. I don't think his lack of technical know-how is the issue here.










share|improve this question
















Some context: I'm a newly hired developer (1.5 years) at a software testing company. For a while things were going great. I was able to dive in relatively quickly, but there have been some speed bumps.



In particular, I wrestle a lot with our codebase. It's particularly hairy (being written in C++, Ada and Python) and it's 20 years old at this point. Most frustratingly, there is very little to no established code ownership in a tool that spans over 1.5 million LOC. There is sort of an ad hoc understanding -- the tool can be separated into various modes, and same people tend to work on the same modes, but it's not always the case.



Recently, I've been asked to change, in a fundamental way, a part of the tool that is used in every single mode. I've designed and implemented changes to features before, but nothing this complicated. My boss seems very confident in my ability to do it, but it took me over a month to understand exactly how it would affect "my" part of the tool, and implement the change there.



Now, despite multiple attempts to ask my boss for help implementing the work in other parts of the tool, he insists that I must learn them and do it myself. I voiced concerns about code ownership, and maybe asking the people who work in that area to do some of it, but the response was that "they are busy and this is your task." It was made clear that I can ask questions, but as far as my main task, I'm on my own.



He's aware of how big this change is. He even says it himself, and tells me not to be hard on myself if it's taking a while. But despite his sympathies, the project just isn't getting done. There's just so much code, I can't even comprehend it all. Sometimes I will spend an entire day trying to map out a completely different part of the tool, trying to understand how my change will affect it, and I'll go home having accomplished almost nothing. Sometimes I'll make a design mistake, realize it, and have to completely start over. I walk in the next day, sit down, look at my notes and sigh. Hopefully I'll write some code.



On the rare occasion I get assigned a different task, I always knock it out quickly because it just feels like a breath of fresh air, but when I even think about my main task, it's so demoralizing that it makes me to want to find a new job.



How can I manage the stress of feeling like I'm not accomplishing anything, and more importantly, deal with a project which I feel is too large for me to take on?



ETA: my boss used to be the technical lead for 16 years. I don't think his lack of technical know-how is the issue here.







manager software-development






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited May 23 at 18:33







Tyg13

















asked May 22 at 14:31









Tyg13Tyg13

19917




19917












  • He used to be one of the lead developers for the tool, for over 16 years. He knows the codebase sucks, but I think he's been removed from the problem for too long now (the past 4 years)

    – Tyg13
    May 22 at 14:44






  • 1





    in that case, trust his judgement. Dwizums answer is probably the best advice here. Don't measure achievement by the amount of code you've written - I've lost count of the number of times I've spent days working on a single line of code solution.

    – user1666620
    May 22 at 14:47







  • 5





    The question right now lacks specific thing you want help with. What do you want to happen? It sounds more like a rant right now with all due sympathy to your issue

    – aaaaaa
    May 22 at 17:18











  • @aaaaaa Ideally, I'd like to be taken off this project. It's a lot of drudge work to get something that should have been in the tool in the first place. We've built onto a structure for years that now needs to be almost completely reworked. I don't think that's a change that a developer with a single year's experience with a massive codebase should be making. But I fear for the worst if I were to say this to my boss, verbatim

    – Tyg13
    May 22 at 18:13







  • 1





    Forget the idea of "owning" the code. The code belongs to the company, not any particular employee. Developers should never think that they own a particular bit of the codebase.

    – Simon B
    May 22 at 21:32

















  • He used to be one of the lead developers for the tool, for over 16 years. He knows the codebase sucks, but I think he's been removed from the problem for too long now (the past 4 years)

    – Tyg13
    May 22 at 14:44






  • 1





    in that case, trust his judgement. Dwizums answer is probably the best advice here. Don't measure achievement by the amount of code you've written - I've lost count of the number of times I've spent days working on a single line of code solution.

    – user1666620
    May 22 at 14:47







  • 5





    The question right now lacks specific thing you want help with. What do you want to happen? It sounds more like a rant right now with all due sympathy to your issue

    – aaaaaa
    May 22 at 17:18











  • @aaaaaa Ideally, I'd like to be taken off this project. It's a lot of drudge work to get something that should have been in the tool in the first place. We've built onto a structure for years that now needs to be almost completely reworked. I don't think that's a change that a developer with a single year's experience with a massive codebase should be making. But I fear for the worst if I were to say this to my boss, verbatim

    – Tyg13
    May 22 at 18:13







  • 1





    Forget the idea of "owning" the code. The code belongs to the company, not any particular employee. Developers should never think that they own a particular bit of the codebase.

    – Simon B
    May 22 at 21:32
















He used to be one of the lead developers for the tool, for over 16 years. He knows the codebase sucks, but I think he's been removed from the problem for too long now (the past 4 years)

– Tyg13
May 22 at 14:44





He used to be one of the lead developers for the tool, for over 16 years. He knows the codebase sucks, but I think he's been removed from the problem for too long now (the past 4 years)

– Tyg13
May 22 at 14:44




1




1





in that case, trust his judgement. Dwizums answer is probably the best advice here. Don't measure achievement by the amount of code you've written - I've lost count of the number of times I've spent days working on a single line of code solution.

– user1666620
May 22 at 14:47






in that case, trust his judgement. Dwizums answer is probably the best advice here. Don't measure achievement by the amount of code you've written - I've lost count of the number of times I've spent days working on a single line of code solution.

– user1666620
May 22 at 14:47





5




5





The question right now lacks specific thing you want help with. What do you want to happen? It sounds more like a rant right now with all due sympathy to your issue

– aaaaaa
May 22 at 17:18





The question right now lacks specific thing you want help with. What do you want to happen? It sounds more like a rant right now with all due sympathy to your issue

– aaaaaa
May 22 at 17:18













@aaaaaa Ideally, I'd like to be taken off this project. It's a lot of drudge work to get something that should have been in the tool in the first place. We've built onto a structure for years that now needs to be almost completely reworked. I don't think that's a change that a developer with a single year's experience with a massive codebase should be making. But I fear for the worst if I were to say this to my boss, verbatim

– Tyg13
May 22 at 18:13






@aaaaaa Ideally, I'd like to be taken off this project. It's a lot of drudge work to get something that should have been in the tool in the first place. We've built onto a structure for years that now needs to be almost completely reworked. I don't think that's a change that a developer with a single year's experience with a massive codebase should be making. But I fear for the worst if I were to say this to my boss, verbatim

– Tyg13
May 22 at 18:13





1




1





Forget the idea of "owning" the code. The code belongs to the company, not any particular employee. Developers should never think that they own a particular bit of the codebase.

– Simon B
May 22 at 21:32





Forget the idea of "owning" the code. The code belongs to the company, not any particular employee. Developers should never think that they own a particular bit of the codebase.

– Simon B
May 22 at 21:32










5 Answers
5






active

oldest

votes


















46














You said,




Hopefully I'll write some code.




One of my mentors had a plaque on their desk: Resist the Urge to Code. Yes, software may be your work product, but that doesn't mean your work is only writing code. You need to understand what you're doing, and that takes time. The point of the plaque was to get developers to think carefully about their tasks and make sure they consider the approach they're taking, rather than immediately sitting at a keyboard and writing code based on an incomplete or half-baked notion.



Further, to tie in to your choice of wording in your title, when his developers would complain about spaghetti code, he'd tell them to "pick up a fork and spoon and start twirling." The point being, yes- sometimes we're served a mess and we can't just dive in and eat, we have to organize the mess first.



So - when you have a day like,




Sometimes I will spend an entire day trying to map out a completely different part of the tool, trying to understand how my change will affect it, and I'll go home having accomplished almost nothing.




you shouldn't think of this as accomplishing nothing, since you're learning about the task you have to do. That's an accomplishment. Even if you think "I've tried to map this out and I got it wrong" well then, you've at least ruled something out.



To get at the heart of your concern, yes - it is nice when we have work in easily-identifiable parcels that we can wrap our hands around and accomplish in discrete chunks. But sometimes that's not the case. Since you're feeling so overwhelmed, you may want to seek help (either via your manager, senior developers, the web, whatever) on process mapping or other meta-tools and methods for developers, so you can get better at learning how to tackle large problems, instead of just solving the problem in front of you or simply feeling overwhelmed.



It's also worth pointing out that you made several very encouraging comments about your boss, indicating that he understands the difficulty of the task and he's willing to give you the leeway to accomplish it. it's a compliment that he thinks so highly of you. He's indicated that you're able to ask the other code-owners questions, which is a good starting place when you're really stuck.



Ultimately, you need to decide if this is acceptable work that you are happy to do, versus something that's going to make you quit your job. Just take it to heart: when your boundaries are being pushed, it's either an opportunity to learn and grow, or an opportunity to run from the problem. We all do both, at different points in our lives. The choice is really yours.






share|improve this answer




















  • 5





    This. Don't start coding until you understand what it will do and don't panic if the understanding part takes a lot of time in cases such as these. Every day one learns something more about the system that will later allow changes to be made is an accomplishment. Success cannot be measured in lines of code. Lambdas/LINQ would not have been introduced if that were the case.

    – Jonast92
    May 22 at 16:14






  • 6





    +1 for "pick up a fork and spoon and start twirling."

    – Eric
    May 22 at 18:50






  • 10





    My best days are the days where I delete code.

    – Retired Ninja
    May 23 at 0:15






  • 1





    To this point, I have gone as far printing out entire spaghetti modules to parse through the control flow like reading a "choose your own adventure" book by sticking my fingers or post it notes to mark spots to return to and reading it like a novel. Nowadays I try to throw maximally verbose Doxygen at undocumented codebase to at least get the call graphs before diving in.

    – crasic
    May 23 at 1:32







  • 3





    Sometimes when I don't understand the codebase I have to work on, I try to refactor it first. It doesn't have to be a complete refactor, even simple things such as changing variable names can help you understand it. It also helps you feel like you're "doing" something - which helps take away the anxiety and allows your brain to focus on learning.

    – Joker28322
    May 23 at 2:29



















5














One day mapping out the code is nothing, in the grand scheme of things. If it's a large code-base it may take weeks of long and tedious slogging. It's not fun, especially not on your own.



Try to work out which bits you need to know about. Try to determine which modules will be affected by your changes, and which won't. Document what you find - diagrams, notes on the inter-dependencies and interfaces between code modules, anything that may be useful to you in the future. Even warnings not to make certain changes because they will break something else.



To start with, measure progress in what you have managed to document, not how much code you have written.




Measuring programming progress by lines of code is like measuring aircraft building progress by weight.




Bill Gates






share|improve this answer






























    1














    The way you make it sound makes it sound like your code is written in "modules", except that a bunch of modules are spaghetti-strung in amongst other, unrelated modules. What would happen if you factored out that shared part that you are responsible for and figuring out how to make a one-size-fits-all solution to what you're being asked to do, rather than re-implementing each piece individually?



    Failing that, it doesn't sound like you're being asked to re-implement a "module", because a "module" is supposed to work the same way in every case. It sounds like you might be being asked to take over a very large swath of the application by yourself, which sounds unreasonable to me. You should carefully figure out which of these cases is correct.



    Also, if your boss understands how big of an undertaking this is, but also won't allocate people to help you, it sounds to me like he's trying to throw you under the bus. I've had a similar situation before, and it ended in me being fired from the job for not doing the required work in a reasonable time, despite my boss's repeated "I understand how much work this is and I don't expect it to be done quickly". If this is the same thing that happened to me, your boss is not being friendly and understanding, he's setting you up to fail and smiling at you while stabbing you in the back. Get out.






    share|improve this answer























    • Related to your last paragraph. We tend to think of our shop as being split into two halves: one headed by my boss, and another by a co-boss. Both have equal authority, but also their own subordinates. On the subject of the implementation of this feature, my co-boss disagrees heavily with my boss and I, and thinks this could have been done much easier a different way. Recently, another developer began working on a parallel implementation of this feature from an entirely different angle. I didn't even know about this until the developer came to me himself.

      – Tyg13
      May 22 at 16:20











    • @Tyg13 My recommendation in light of that is twofold: Firstly, if your co-boss is an engineer as well, ask him for some suggestions. Explain to him that you're stuck, and you'd like some insight into this huge codebase. See what he says. If he takes the "I know the answer but I'm not telling you haha!" tactic, then run away AS FAST AS YOU CAN. This would be not only unprofessional (as in your co-boss would not be working in the best interest of the company), but would also make it clear that you are being set up.

      – Ertai87
      May 22 at 16:22











    • As for the second piece of advice, the fact that you are being given duplicate work and the other person was told not to collaborate with you explicitly (this is my take based on information provided) means that you're probably being put in competition with him. Determine which of you is in the better position from a work-politics standpoint, and that person is probably soon to be on the chopping block. Since he was the one notified about the work being duplicated and not you, the one to be chopped is probably you. Get out.

      – Ertai87
      May 22 at 16:24











    • Unfortunately, given from what I've seen of the structure of this company, it's more likely that no one told this developer I was working on the project. We don't have meetings other than the weekly one-on-one with the manager. No one knows what anyone else is doing unless we ask one another, or our manager tells us.

      – Tyg13
      May 22 at 19:16



















    1














    Well, you have difficulty delivering and also someone else is working on the same task.



    Try joining the other guy: he can delegate onto you tasks that you can deliver, he takes responsibility if his solution doesn't work out, you are relieved of this task you don't really want to do.






    share|improve this answer






























      0














      The question here is: what is the deadline - how much time were you given for this?
      If there is enough time, then do it, do it slowly and carefully, do it well.



      If there isn't enough time, and the company is asking for impossible, start looking for a new job.



      Also, is your experience on the level with the complexity of the code? Reworking something in a 1.5 M lines of already messed-up spaghetti code is a job for a very senior developer with lots of experience.
      Is your 1.5 years of experience just with them - and you have a lot more in total - or is it more or less your total professional experience? Because if it's like that, they're setting you up to fail. See the previous case... as in, start looking for a new job.



      The next question here is, if the company is considering seriously reworking that code so that it's not a spaghetti mess, or are they just doing a fix atop a patch atop a change and so on?
      In that case, also, start looking for a new job.



      If your manager has 16 years of experience as a tech lead, and is doing things as described above, it's intentional, it's a conscious decision to either get more work out of you than is normally possible, or to set you up to fail, and whichever case it is, he won't change his mind no matter what you say.



      Based on answers to these questions, you will see if this is a hard but expected part of your job, or a messed-up project and team - and that will tell you all you need to know.






      share|improve this answer























        Your Answer








        StackExchange.ready(function()
        var channelOptions =
        tags: "".split(" "),
        id: "423"
        ;
        initTagRenderer("".split(" "), "".split(" "), channelOptions);

        StackExchange.using("externalEditor", function()
        // Have to fire editor after snippets, if snippets enabled
        if (StackExchange.settings.snippets.snippetsEnabled)
        StackExchange.using("snippets", function()
        createEditor();
        );

        else
        createEditor();

        );

        function createEditor()
        StackExchange.prepareEditor(
        heartbeatType: 'answer',
        autoActivateHeartbeat: false,
        convertImagesToLinks: false,
        noModals: true,
        showLowRepImageUploadWarning: true,
        reputationToPostImages: null,
        bindNavPrevention: true,
        postfix: "",
        imageUploader:
        brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
        contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
        allowUrls: true
        ,
        noCode: true, onDemand: false,
        discardSelector: ".discard-answer"
        ,immediatelyShowMarkdownHelp:true
        );



        );













        draft saved

        draft discarded


















        StackExchange.ready(
        function ()
        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fworkplace.stackexchange.com%2fquestions%2f137054%2fhow-to-manage-frustration-from-dealing-with-spaghetti-codebase-and-feeling-like%23new-answer', 'question_page');

        );

        Post as a guest















        Required, but never shown




















        StackExchange.ready(function ()
        $("#show-editor-button input, #show-editor-button button").click(function ()
        var showEditor = function()
        $("#show-editor-button").hide();
        $("#post-form").removeClass("dno");
        StackExchange.editor.finallyInit();
        ;

        var useFancy = $(this).data('confirm-use-fancy');
        if(useFancy == 'True')
        var popupTitle = $(this).data('confirm-fancy-title');
        var popupBody = $(this).data('confirm-fancy-body');
        var popupAccept = $(this).data('confirm-fancy-accept-button');

        $(this).loadPopup(
        url: '/post/self-answer-popup',
        loaded: function(popup)
        var pTitle = $(popup).find('h2');
        var pBody = $(popup).find('.popup-body');
        var pSubmit = $(popup).find('.popup-submit');

        pTitle.text(popupTitle);
        pBody.html(popupBody);
        pSubmit.val(popupAccept).click(showEditor);

        )
        else
        var confirmText = $(this).data('confirm-text');
        if (confirmText ? confirm(confirmText) : true)
        showEditor();


        );
        );






        5 Answers
        5






        active

        oldest

        votes








        5 Answers
        5






        active

        oldest

        votes









        active

        oldest

        votes






        active

        oldest

        votes









        46














        You said,




        Hopefully I'll write some code.




        One of my mentors had a plaque on their desk: Resist the Urge to Code. Yes, software may be your work product, but that doesn't mean your work is only writing code. You need to understand what you're doing, and that takes time. The point of the plaque was to get developers to think carefully about their tasks and make sure they consider the approach they're taking, rather than immediately sitting at a keyboard and writing code based on an incomplete or half-baked notion.



        Further, to tie in to your choice of wording in your title, when his developers would complain about spaghetti code, he'd tell them to "pick up a fork and spoon and start twirling." The point being, yes- sometimes we're served a mess and we can't just dive in and eat, we have to organize the mess first.



        So - when you have a day like,




        Sometimes I will spend an entire day trying to map out a completely different part of the tool, trying to understand how my change will affect it, and I'll go home having accomplished almost nothing.




        you shouldn't think of this as accomplishing nothing, since you're learning about the task you have to do. That's an accomplishment. Even if you think "I've tried to map this out and I got it wrong" well then, you've at least ruled something out.



        To get at the heart of your concern, yes - it is nice when we have work in easily-identifiable parcels that we can wrap our hands around and accomplish in discrete chunks. But sometimes that's not the case. Since you're feeling so overwhelmed, you may want to seek help (either via your manager, senior developers, the web, whatever) on process mapping or other meta-tools and methods for developers, so you can get better at learning how to tackle large problems, instead of just solving the problem in front of you or simply feeling overwhelmed.



        It's also worth pointing out that you made several very encouraging comments about your boss, indicating that he understands the difficulty of the task and he's willing to give you the leeway to accomplish it. it's a compliment that he thinks so highly of you. He's indicated that you're able to ask the other code-owners questions, which is a good starting place when you're really stuck.



        Ultimately, you need to decide if this is acceptable work that you are happy to do, versus something that's going to make you quit your job. Just take it to heart: when your boundaries are being pushed, it's either an opportunity to learn and grow, or an opportunity to run from the problem. We all do both, at different points in our lives. The choice is really yours.






        share|improve this answer




















        • 5





          This. Don't start coding until you understand what it will do and don't panic if the understanding part takes a lot of time in cases such as these. Every day one learns something more about the system that will later allow changes to be made is an accomplishment. Success cannot be measured in lines of code. Lambdas/LINQ would not have been introduced if that were the case.

          – Jonast92
          May 22 at 16:14






        • 6





          +1 for "pick up a fork and spoon and start twirling."

          – Eric
          May 22 at 18:50






        • 10





          My best days are the days where I delete code.

          – Retired Ninja
          May 23 at 0:15






        • 1





          To this point, I have gone as far printing out entire spaghetti modules to parse through the control flow like reading a "choose your own adventure" book by sticking my fingers or post it notes to mark spots to return to and reading it like a novel. Nowadays I try to throw maximally verbose Doxygen at undocumented codebase to at least get the call graphs before diving in.

          – crasic
          May 23 at 1:32







        • 3





          Sometimes when I don't understand the codebase I have to work on, I try to refactor it first. It doesn't have to be a complete refactor, even simple things such as changing variable names can help you understand it. It also helps you feel like you're "doing" something - which helps take away the anxiety and allows your brain to focus on learning.

          – Joker28322
          May 23 at 2:29
















        46














        You said,




        Hopefully I'll write some code.




        One of my mentors had a plaque on their desk: Resist the Urge to Code. Yes, software may be your work product, but that doesn't mean your work is only writing code. You need to understand what you're doing, and that takes time. The point of the plaque was to get developers to think carefully about their tasks and make sure they consider the approach they're taking, rather than immediately sitting at a keyboard and writing code based on an incomplete or half-baked notion.



        Further, to tie in to your choice of wording in your title, when his developers would complain about spaghetti code, he'd tell them to "pick up a fork and spoon and start twirling." The point being, yes- sometimes we're served a mess and we can't just dive in and eat, we have to organize the mess first.



        So - when you have a day like,




        Sometimes I will spend an entire day trying to map out a completely different part of the tool, trying to understand how my change will affect it, and I'll go home having accomplished almost nothing.




        you shouldn't think of this as accomplishing nothing, since you're learning about the task you have to do. That's an accomplishment. Even if you think "I've tried to map this out and I got it wrong" well then, you've at least ruled something out.



        To get at the heart of your concern, yes - it is nice when we have work in easily-identifiable parcels that we can wrap our hands around and accomplish in discrete chunks. But sometimes that's not the case. Since you're feeling so overwhelmed, you may want to seek help (either via your manager, senior developers, the web, whatever) on process mapping or other meta-tools and methods for developers, so you can get better at learning how to tackle large problems, instead of just solving the problem in front of you or simply feeling overwhelmed.



        It's also worth pointing out that you made several very encouraging comments about your boss, indicating that he understands the difficulty of the task and he's willing to give you the leeway to accomplish it. it's a compliment that he thinks so highly of you. He's indicated that you're able to ask the other code-owners questions, which is a good starting place when you're really stuck.



        Ultimately, you need to decide if this is acceptable work that you are happy to do, versus something that's going to make you quit your job. Just take it to heart: when your boundaries are being pushed, it's either an opportunity to learn and grow, or an opportunity to run from the problem. We all do both, at different points in our lives. The choice is really yours.






        share|improve this answer




















        • 5





          This. Don't start coding until you understand what it will do and don't panic if the understanding part takes a lot of time in cases such as these. Every day one learns something more about the system that will later allow changes to be made is an accomplishment. Success cannot be measured in lines of code. Lambdas/LINQ would not have been introduced if that were the case.

          – Jonast92
          May 22 at 16:14






        • 6





          +1 for "pick up a fork and spoon and start twirling."

          – Eric
          May 22 at 18:50






        • 10





          My best days are the days where I delete code.

          – Retired Ninja
          May 23 at 0:15






        • 1





          To this point, I have gone as far printing out entire spaghetti modules to parse through the control flow like reading a "choose your own adventure" book by sticking my fingers or post it notes to mark spots to return to and reading it like a novel. Nowadays I try to throw maximally verbose Doxygen at undocumented codebase to at least get the call graphs before diving in.

          – crasic
          May 23 at 1:32







        • 3





          Sometimes when I don't understand the codebase I have to work on, I try to refactor it first. It doesn't have to be a complete refactor, even simple things such as changing variable names can help you understand it. It also helps you feel like you're "doing" something - which helps take away the anxiety and allows your brain to focus on learning.

          – Joker28322
          May 23 at 2:29














        46












        46








        46







        You said,




        Hopefully I'll write some code.




        One of my mentors had a plaque on their desk: Resist the Urge to Code. Yes, software may be your work product, but that doesn't mean your work is only writing code. You need to understand what you're doing, and that takes time. The point of the plaque was to get developers to think carefully about their tasks and make sure they consider the approach they're taking, rather than immediately sitting at a keyboard and writing code based on an incomplete or half-baked notion.



        Further, to tie in to your choice of wording in your title, when his developers would complain about spaghetti code, he'd tell them to "pick up a fork and spoon and start twirling." The point being, yes- sometimes we're served a mess and we can't just dive in and eat, we have to organize the mess first.



        So - when you have a day like,




        Sometimes I will spend an entire day trying to map out a completely different part of the tool, trying to understand how my change will affect it, and I'll go home having accomplished almost nothing.




        you shouldn't think of this as accomplishing nothing, since you're learning about the task you have to do. That's an accomplishment. Even if you think "I've tried to map this out and I got it wrong" well then, you've at least ruled something out.



        To get at the heart of your concern, yes - it is nice when we have work in easily-identifiable parcels that we can wrap our hands around and accomplish in discrete chunks. But sometimes that's not the case. Since you're feeling so overwhelmed, you may want to seek help (either via your manager, senior developers, the web, whatever) on process mapping or other meta-tools and methods for developers, so you can get better at learning how to tackle large problems, instead of just solving the problem in front of you or simply feeling overwhelmed.



        It's also worth pointing out that you made several very encouraging comments about your boss, indicating that he understands the difficulty of the task and he's willing to give you the leeway to accomplish it. it's a compliment that he thinks so highly of you. He's indicated that you're able to ask the other code-owners questions, which is a good starting place when you're really stuck.



        Ultimately, you need to decide if this is acceptable work that you are happy to do, versus something that's going to make you quit your job. Just take it to heart: when your boundaries are being pushed, it's either an opportunity to learn and grow, or an opportunity to run from the problem. We all do both, at different points in our lives. The choice is really yours.






        share|improve this answer















        You said,




        Hopefully I'll write some code.




        One of my mentors had a plaque on their desk: Resist the Urge to Code. Yes, software may be your work product, but that doesn't mean your work is only writing code. You need to understand what you're doing, and that takes time. The point of the plaque was to get developers to think carefully about their tasks and make sure they consider the approach they're taking, rather than immediately sitting at a keyboard and writing code based on an incomplete or half-baked notion.



        Further, to tie in to your choice of wording in your title, when his developers would complain about spaghetti code, he'd tell them to "pick up a fork and spoon and start twirling." The point being, yes- sometimes we're served a mess and we can't just dive in and eat, we have to organize the mess first.



        So - when you have a day like,




        Sometimes I will spend an entire day trying to map out a completely different part of the tool, trying to understand how my change will affect it, and I'll go home having accomplished almost nothing.




        you shouldn't think of this as accomplishing nothing, since you're learning about the task you have to do. That's an accomplishment. Even if you think "I've tried to map this out and I got it wrong" well then, you've at least ruled something out.



        To get at the heart of your concern, yes - it is nice when we have work in easily-identifiable parcels that we can wrap our hands around and accomplish in discrete chunks. But sometimes that's not the case. Since you're feeling so overwhelmed, you may want to seek help (either via your manager, senior developers, the web, whatever) on process mapping or other meta-tools and methods for developers, so you can get better at learning how to tackle large problems, instead of just solving the problem in front of you or simply feeling overwhelmed.



        It's also worth pointing out that you made several very encouraging comments about your boss, indicating that he understands the difficulty of the task and he's willing to give you the leeway to accomplish it. it's a compliment that he thinks so highly of you. He's indicated that you're able to ask the other code-owners questions, which is a good starting place when you're really stuck.



        Ultimately, you need to decide if this is acceptable work that you are happy to do, versus something that's going to make you quit your job. Just take it to heart: when your boundaries are being pushed, it's either an opportunity to learn and grow, or an opportunity to run from the problem. We all do both, at different points in our lives. The choice is really yours.







        share|improve this answer














        share|improve this answer



        share|improve this answer








        edited May 22 at 16:03

























        answered May 22 at 14:43









        dwizumdwizum

        23.6k104676




        23.6k104676







        • 5





          This. Don't start coding until you understand what it will do and don't panic if the understanding part takes a lot of time in cases such as these. Every day one learns something more about the system that will later allow changes to be made is an accomplishment. Success cannot be measured in lines of code. Lambdas/LINQ would not have been introduced if that were the case.

          – Jonast92
          May 22 at 16:14






        • 6





          +1 for "pick up a fork and spoon and start twirling."

          – Eric
          May 22 at 18:50






        • 10





          My best days are the days where I delete code.

          – Retired Ninja
          May 23 at 0:15






        • 1





          To this point, I have gone as far printing out entire spaghetti modules to parse through the control flow like reading a "choose your own adventure" book by sticking my fingers or post it notes to mark spots to return to and reading it like a novel. Nowadays I try to throw maximally verbose Doxygen at undocumented codebase to at least get the call graphs before diving in.

          – crasic
          May 23 at 1:32







        • 3





          Sometimes when I don't understand the codebase I have to work on, I try to refactor it first. It doesn't have to be a complete refactor, even simple things such as changing variable names can help you understand it. It also helps you feel like you're "doing" something - which helps take away the anxiety and allows your brain to focus on learning.

          – Joker28322
          May 23 at 2:29













        • 5





          This. Don't start coding until you understand what it will do and don't panic if the understanding part takes a lot of time in cases such as these. Every day one learns something more about the system that will later allow changes to be made is an accomplishment. Success cannot be measured in lines of code. Lambdas/LINQ would not have been introduced if that were the case.

          – Jonast92
          May 22 at 16:14






        • 6





          +1 for "pick up a fork and spoon and start twirling."

          – Eric
          May 22 at 18:50






        • 10





          My best days are the days where I delete code.

          – Retired Ninja
          May 23 at 0:15






        • 1





          To this point, I have gone as far printing out entire spaghetti modules to parse through the control flow like reading a "choose your own adventure" book by sticking my fingers or post it notes to mark spots to return to and reading it like a novel. Nowadays I try to throw maximally verbose Doxygen at undocumented codebase to at least get the call graphs before diving in.

          – crasic
          May 23 at 1:32







        • 3





          Sometimes when I don't understand the codebase I have to work on, I try to refactor it first. It doesn't have to be a complete refactor, even simple things such as changing variable names can help you understand it. It also helps you feel like you're "doing" something - which helps take away the anxiety and allows your brain to focus on learning.

          – Joker28322
          May 23 at 2:29








        5




        5





        This. Don't start coding until you understand what it will do and don't panic if the understanding part takes a lot of time in cases such as these. Every day one learns something more about the system that will later allow changes to be made is an accomplishment. Success cannot be measured in lines of code. Lambdas/LINQ would not have been introduced if that were the case.

        – Jonast92
        May 22 at 16:14





        This. Don't start coding until you understand what it will do and don't panic if the understanding part takes a lot of time in cases such as these. Every day one learns something more about the system that will later allow changes to be made is an accomplishment. Success cannot be measured in lines of code. Lambdas/LINQ would not have been introduced if that were the case.

        – Jonast92
        May 22 at 16:14




        6




        6





        +1 for "pick up a fork and spoon and start twirling."

        – Eric
        May 22 at 18:50





        +1 for "pick up a fork and spoon and start twirling."

        – Eric
        May 22 at 18:50




        10




        10





        My best days are the days where I delete code.

        – Retired Ninja
        May 23 at 0:15





        My best days are the days where I delete code.

        – Retired Ninja
        May 23 at 0:15




        1




        1





        To this point, I have gone as far printing out entire spaghetti modules to parse through the control flow like reading a "choose your own adventure" book by sticking my fingers or post it notes to mark spots to return to and reading it like a novel. Nowadays I try to throw maximally verbose Doxygen at undocumented codebase to at least get the call graphs before diving in.

        – crasic
        May 23 at 1:32






        To this point, I have gone as far printing out entire spaghetti modules to parse through the control flow like reading a "choose your own adventure" book by sticking my fingers or post it notes to mark spots to return to and reading it like a novel. Nowadays I try to throw maximally verbose Doxygen at undocumented codebase to at least get the call graphs before diving in.

        – crasic
        May 23 at 1:32





        3




        3





        Sometimes when I don't understand the codebase I have to work on, I try to refactor it first. It doesn't have to be a complete refactor, even simple things such as changing variable names can help you understand it. It also helps you feel like you're "doing" something - which helps take away the anxiety and allows your brain to focus on learning.

        – Joker28322
        May 23 at 2:29






        Sometimes when I don't understand the codebase I have to work on, I try to refactor it first. It doesn't have to be a complete refactor, even simple things such as changing variable names can help you understand it. It also helps you feel like you're "doing" something - which helps take away the anxiety and allows your brain to focus on learning.

        – Joker28322
        May 23 at 2:29














        5














        One day mapping out the code is nothing, in the grand scheme of things. If it's a large code-base it may take weeks of long and tedious slogging. It's not fun, especially not on your own.



        Try to work out which bits you need to know about. Try to determine which modules will be affected by your changes, and which won't. Document what you find - diagrams, notes on the inter-dependencies and interfaces between code modules, anything that may be useful to you in the future. Even warnings not to make certain changes because they will break something else.



        To start with, measure progress in what you have managed to document, not how much code you have written.




        Measuring programming progress by lines of code is like measuring aircraft building progress by weight.




        Bill Gates






        share|improve this answer



























          5














          One day mapping out the code is nothing, in the grand scheme of things. If it's a large code-base it may take weeks of long and tedious slogging. It's not fun, especially not on your own.



          Try to work out which bits you need to know about. Try to determine which modules will be affected by your changes, and which won't. Document what you find - diagrams, notes on the inter-dependencies and interfaces between code modules, anything that may be useful to you in the future. Even warnings not to make certain changes because they will break something else.



          To start with, measure progress in what you have managed to document, not how much code you have written.




          Measuring programming progress by lines of code is like measuring aircraft building progress by weight.




          Bill Gates






          share|improve this answer

























            5












            5








            5







            One day mapping out the code is nothing, in the grand scheme of things. If it's a large code-base it may take weeks of long and tedious slogging. It's not fun, especially not on your own.



            Try to work out which bits you need to know about. Try to determine which modules will be affected by your changes, and which won't. Document what you find - diagrams, notes on the inter-dependencies and interfaces between code modules, anything that may be useful to you in the future. Even warnings not to make certain changes because they will break something else.



            To start with, measure progress in what you have managed to document, not how much code you have written.




            Measuring programming progress by lines of code is like measuring aircraft building progress by weight.




            Bill Gates






            share|improve this answer













            One day mapping out the code is nothing, in the grand scheme of things. If it's a large code-base it may take weeks of long and tedious slogging. It's not fun, especially not on your own.



            Try to work out which bits you need to know about. Try to determine which modules will be affected by your changes, and which won't. Document what you find - diagrams, notes on the inter-dependencies and interfaces between code modules, anything that may be useful to you in the future. Even warnings not to make certain changes because they will break something else.



            To start with, measure progress in what you have managed to document, not how much code you have written.




            Measuring programming progress by lines of code is like measuring aircraft building progress by weight.




            Bill Gates







            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered May 22 at 22:18









            Simon BSimon B

            3,46021218




            3,46021218





















                1














                The way you make it sound makes it sound like your code is written in "modules", except that a bunch of modules are spaghetti-strung in amongst other, unrelated modules. What would happen if you factored out that shared part that you are responsible for and figuring out how to make a one-size-fits-all solution to what you're being asked to do, rather than re-implementing each piece individually?



                Failing that, it doesn't sound like you're being asked to re-implement a "module", because a "module" is supposed to work the same way in every case. It sounds like you might be being asked to take over a very large swath of the application by yourself, which sounds unreasonable to me. You should carefully figure out which of these cases is correct.



                Also, if your boss understands how big of an undertaking this is, but also won't allocate people to help you, it sounds to me like he's trying to throw you under the bus. I've had a similar situation before, and it ended in me being fired from the job for not doing the required work in a reasonable time, despite my boss's repeated "I understand how much work this is and I don't expect it to be done quickly". If this is the same thing that happened to me, your boss is not being friendly and understanding, he's setting you up to fail and smiling at you while stabbing you in the back. Get out.






                share|improve this answer























                • Related to your last paragraph. We tend to think of our shop as being split into two halves: one headed by my boss, and another by a co-boss. Both have equal authority, but also their own subordinates. On the subject of the implementation of this feature, my co-boss disagrees heavily with my boss and I, and thinks this could have been done much easier a different way. Recently, another developer began working on a parallel implementation of this feature from an entirely different angle. I didn't even know about this until the developer came to me himself.

                  – Tyg13
                  May 22 at 16:20











                • @Tyg13 My recommendation in light of that is twofold: Firstly, if your co-boss is an engineer as well, ask him for some suggestions. Explain to him that you're stuck, and you'd like some insight into this huge codebase. See what he says. If he takes the "I know the answer but I'm not telling you haha!" tactic, then run away AS FAST AS YOU CAN. This would be not only unprofessional (as in your co-boss would not be working in the best interest of the company), but would also make it clear that you are being set up.

                  – Ertai87
                  May 22 at 16:22











                • As for the second piece of advice, the fact that you are being given duplicate work and the other person was told not to collaborate with you explicitly (this is my take based on information provided) means that you're probably being put in competition with him. Determine which of you is in the better position from a work-politics standpoint, and that person is probably soon to be on the chopping block. Since he was the one notified about the work being duplicated and not you, the one to be chopped is probably you. Get out.

                  – Ertai87
                  May 22 at 16:24











                • Unfortunately, given from what I've seen of the structure of this company, it's more likely that no one told this developer I was working on the project. We don't have meetings other than the weekly one-on-one with the manager. No one knows what anyone else is doing unless we ask one another, or our manager tells us.

                  – Tyg13
                  May 22 at 19:16
















                1














                The way you make it sound makes it sound like your code is written in "modules", except that a bunch of modules are spaghetti-strung in amongst other, unrelated modules. What would happen if you factored out that shared part that you are responsible for and figuring out how to make a one-size-fits-all solution to what you're being asked to do, rather than re-implementing each piece individually?



                Failing that, it doesn't sound like you're being asked to re-implement a "module", because a "module" is supposed to work the same way in every case. It sounds like you might be being asked to take over a very large swath of the application by yourself, which sounds unreasonable to me. You should carefully figure out which of these cases is correct.



                Also, if your boss understands how big of an undertaking this is, but also won't allocate people to help you, it sounds to me like he's trying to throw you under the bus. I've had a similar situation before, and it ended in me being fired from the job for not doing the required work in a reasonable time, despite my boss's repeated "I understand how much work this is and I don't expect it to be done quickly". If this is the same thing that happened to me, your boss is not being friendly and understanding, he's setting you up to fail and smiling at you while stabbing you in the back. Get out.






                share|improve this answer























                • Related to your last paragraph. We tend to think of our shop as being split into two halves: one headed by my boss, and another by a co-boss. Both have equal authority, but also their own subordinates. On the subject of the implementation of this feature, my co-boss disagrees heavily with my boss and I, and thinks this could have been done much easier a different way. Recently, another developer began working on a parallel implementation of this feature from an entirely different angle. I didn't even know about this until the developer came to me himself.

                  – Tyg13
                  May 22 at 16:20











                • @Tyg13 My recommendation in light of that is twofold: Firstly, if your co-boss is an engineer as well, ask him for some suggestions. Explain to him that you're stuck, and you'd like some insight into this huge codebase. See what he says. If he takes the "I know the answer but I'm not telling you haha!" tactic, then run away AS FAST AS YOU CAN. This would be not only unprofessional (as in your co-boss would not be working in the best interest of the company), but would also make it clear that you are being set up.

                  – Ertai87
                  May 22 at 16:22











                • As for the second piece of advice, the fact that you are being given duplicate work and the other person was told not to collaborate with you explicitly (this is my take based on information provided) means that you're probably being put in competition with him. Determine which of you is in the better position from a work-politics standpoint, and that person is probably soon to be on the chopping block. Since he was the one notified about the work being duplicated and not you, the one to be chopped is probably you. Get out.

                  – Ertai87
                  May 22 at 16:24











                • Unfortunately, given from what I've seen of the structure of this company, it's more likely that no one told this developer I was working on the project. We don't have meetings other than the weekly one-on-one with the manager. No one knows what anyone else is doing unless we ask one another, or our manager tells us.

                  – Tyg13
                  May 22 at 19:16














                1












                1








                1







                The way you make it sound makes it sound like your code is written in "modules", except that a bunch of modules are spaghetti-strung in amongst other, unrelated modules. What would happen if you factored out that shared part that you are responsible for and figuring out how to make a one-size-fits-all solution to what you're being asked to do, rather than re-implementing each piece individually?



                Failing that, it doesn't sound like you're being asked to re-implement a "module", because a "module" is supposed to work the same way in every case. It sounds like you might be being asked to take over a very large swath of the application by yourself, which sounds unreasonable to me. You should carefully figure out which of these cases is correct.



                Also, if your boss understands how big of an undertaking this is, but also won't allocate people to help you, it sounds to me like he's trying to throw you under the bus. I've had a similar situation before, and it ended in me being fired from the job for not doing the required work in a reasonable time, despite my boss's repeated "I understand how much work this is and I don't expect it to be done quickly". If this is the same thing that happened to me, your boss is not being friendly and understanding, he's setting you up to fail and smiling at you while stabbing you in the back. Get out.






                share|improve this answer













                The way you make it sound makes it sound like your code is written in "modules", except that a bunch of modules are spaghetti-strung in amongst other, unrelated modules. What would happen if you factored out that shared part that you are responsible for and figuring out how to make a one-size-fits-all solution to what you're being asked to do, rather than re-implementing each piece individually?



                Failing that, it doesn't sound like you're being asked to re-implement a "module", because a "module" is supposed to work the same way in every case. It sounds like you might be being asked to take over a very large swath of the application by yourself, which sounds unreasonable to me. You should carefully figure out which of these cases is correct.



                Also, if your boss understands how big of an undertaking this is, but also won't allocate people to help you, it sounds to me like he's trying to throw you under the bus. I've had a similar situation before, and it ended in me being fired from the job for not doing the required work in a reasonable time, despite my boss's repeated "I understand how much work this is and I don't expect it to be done quickly". If this is the same thing that happened to me, your boss is not being friendly and understanding, he's setting you up to fail and smiling at you while stabbing you in the back. Get out.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered May 22 at 16:03









                Ertai87Ertai87

                14k41743




                14k41743












                • Related to your last paragraph. We tend to think of our shop as being split into two halves: one headed by my boss, and another by a co-boss. Both have equal authority, but also their own subordinates. On the subject of the implementation of this feature, my co-boss disagrees heavily with my boss and I, and thinks this could have been done much easier a different way. Recently, another developer began working on a parallel implementation of this feature from an entirely different angle. I didn't even know about this until the developer came to me himself.

                  – Tyg13
                  May 22 at 16:20











                • @Tyg13 My recommendation in light of that is twofold: Firstly, if your co-boss is an engineer as well, ask him for some suggestions. Explain to him that you're stuck, and you'd like some insight into this huge codebase. See what he says. If he takes the "I know the answer but I'm not telling you haha!" tactic, then run away AS FAST AS YOU CAN. This would be not only unprofessional (as in your co-boss would not be working in the best interest of the company), but would also make it clear that you are being set up.

                  – Ertai87
                  May 22 at 16:22











                • As for the second piece of advice, the fact that you are being given duplicate work and the other person was told not to collaborate with you explicitly (this is my take based on information provided) means that you're probably being put in competition with him. Determine which of you is in the better position from a work-politics standpoint, and that person is probably soon to be on the chopping block. Since he was the one notified about the work being duplicated and not you, the one to be chopped is probably you. Get out.

                  – Ertai87
                  May 22 at 16:24











                • Unfortunately, given from what I've seen of the structure of this company, it's more likely that no one told this developer I was working on the project. We don't have meetings other than the weekly one-on-one with the manager. No one knows what anyone else is doing unless we ask one another, or our manager tells us.

                  – Tyg13
                  May 22 at 19:16


















                • Related to your last paragraph. We tend to think of our shop as being split into two halves: one headed by my boss, and another by a co-boss. Both have equal authority, but also their own subordinates. On the subject of the implementation of this feature, my co-boss disagrees heavily with my boss and I, and thinks this could have been done much easier a different way. Recently, another developer began working on a parallel implementation of this feature from an entirely different angle. I didn't even know about this until the developer came to me himself.

                  – Tyg13
                  May 22 at 16:20











                • @Tyg13 My recommendation in light of that is twofold: Firstly, if your co-boss is an engineer as well, ask him for some suggestions. Explain to him that you're stuck, and you'd like some insight into this huge codebase. See what he says. If he takes the "I know the answer but I'm not telling you haha!" tactic, then run away AS FAST AS YOU CAN. This would be not only unprofessional (as in your co-boss would not be working in the best interest of the company), but would also make it clear that you are being set up.

                  – Ertai87
                  May 22 at 16:22











                • As for the second piece of advice, the fact that you are being given duplicate work and the other person was told not to collaborate with you explicitly (this is my take based on information provided) means that you're probably being put in competition with him. Determine which of you is in the better position from a work-politics standpoint, and that person is probably soon to be on the chopping block. Since he was the one notified about the work being duplicated and not you, the one to be chopped is probably you. Get out.

                  – Ertai87
                  May 22 at 16:24











                • Unfortunately, given from what I've seen of the structure of this company, it's more likely that no one told this developer I was working on the project. We don't have meetings other than the weekly one-on-one with the manager. No one knows what anyone else is doing unless we ask one another, or our manager tells us.

                  – Tyg13
                  May 22 at 19:16

















                Related to your last paragraph. We tend to think of our shop as being split into two halves: one headed by my boss, and another by a co-boss. Both have equal authority, but also their own subordinates. On the subject of the implementation of this feature, my co-boss disagrees heavily with my boss and I, and thinks this could have been done much easier a different way. Recently, another developer began working on a parallel implementation of this feature from an entirely different angle. I didn't even know about this until the developer came to me himself.

                – Tyg13
                May 22 at 16:20





                Related to your last paragraph. We tend to think of our shop as being split into two halves: one headed by my boss, and another by a co-boss. Both have equal authority, but also their own subordinates. On the subject of the implementation of this feature, my co-boss disagrees heavily with my boss and I, and thinks this could have been done much easier a different way. Recently, another developer began working on a parallel implementation of this feature from an entirely different angle. I didn't even know about this until the developer came to me himself.

                – Tyg13
                May 22 at 16:20













                @Tyg13 My recommendation in light of that is twofold: Firstly, if your co-boss is an engineer as well, ask him for some suggestions. Explain to him that you're stuck, and you'd like some insight into this huge codebase. See what he says. If he takes the "I know the answer but I'm not telling you haha!" tactic, then run away AS FAST AS YOU CAN. This would be not only unprofessional (as in your co-boss would not be working in the best interest of the company), but would also make it clear that you are being set up.

                – Ertai87
                May 22 at 16:22





                @Tyg13 My recommendation in light of that is twofold: Firstly, if your co-boss is an engineer as well, ask him for some suggestions. Explain to him that you're stuck, and you'd like some insight into this huge codebase. See what he says. If he takes the "I know the answer but I'm not telling you haha!" tactic, then run away AS FAST AS YOU CAN. This would be not only unprofessional (as in your co-boss would not be working in the best interest of the company), but would also make it clear that you are being set up.

                – Ertai87
                May 22 at 16:22













                As for the second piece of advice, the fact that you are being given duplicate work and the other person was told not to collaborate with you explicitly (this is my take based on information provided) means that you're probably being put in competition with him. Determine which of you is in the better position from a work-politics standpoint, and that person is probably soon to be on the chopping block. Since he was the one notified about the work being duplicated and not you, the one to be chopped is probably you. Get out.

                – Ertai87
                May 22 at 16:24





                As for the second piece of advice, the fact that you are being given duplicate work and the other person was told not to collaborate with you explicitly (this is my take based on information provided) means that you're probably being put in competition with him. Determine which of you is in the better position from a work-politics standpoint, and that person is probably soon to be on the chopping block. Since he was the one notified about the work being duplicated and not you, the one to be chopped is probably you. Get out.

                – Ertai87
                May 22 at 16:24













                Unfortunately, given from what I've seen of the structure of this company, it's more likely that no one told this developer I was working on the project. We don't have meetings other than the weekly one-on-one with the manager. No one knows what anyone else is doing unless we ask one another, or our manager tells us.

                – Tyg13
                May 22 at 19:16






                Unfortunately, given from what I've seen of the structure of this company, it's more likely that no one told this developer I was working on the project. We don't have meetings other than the weekly one-on-one with the manager. No one knows what anyone else is doing unless we ask one another, or our manager tells us.

                – Tyg13
                May 22 at 19:16












                1














                Well, you have difficulty delivering and also someone else is working on the same task.



                Try joining the other guy: he can delegate onto you tasks that you can deliver, he takes responsibility if his solution doesn't work out, you are relieved of this task you don't really want to do.






                share|improve this answer



























                  1














                  Well, you have difficulty delivering and also someone else is working on the same task.



                  Try joining the other guy: he can delegate onto you tasks that you can deliver, he takes responsibility if his solution doesn't work out, you are relieved of this task you don't really want to do.






                  share|improve this answer

























                    1












                    1








                    1







                    Well, you have difficulty delivering and also someone else is working on the same task.



                    Try joining the other guy: he can delegate onto you tasks that you can deliver, he takes responsibility if his solution doesn't work out, you are relieved of this task you don't really want to do.






                    share|improve this answer













                    Well, you have difficulty delivering and also someone else is working on the same task.



                    Try joining the other guy: he can delegate onto you tasks that you can deliver, he takes responsibility if his solution doesn't work out, you are relieved of this task you don't really want to do.







                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered May 23 at 0:59









                    pestatijepestatije

                    111




                    111





















                        0














                        The question here is: what is the deadline - how much time were you given for this?
                        If there is enough time, then do it, do it slowly and carefully, do it well.



                        If there isn't enough time, and the company is asking for impossible, start looking for a new job.



                        Also, is your experience on the level with the complexity of the code? Reworking something in a 1.5 M lines of already messed-up spaghetti code is a job for a very senior developer with lots of experience.
                        Is your 1.5 years of experience just with them - and you have a lot more in total - or is it more or less your total professional experience? Because if it's like that, they're setting you up to fail. See the previous case... as in, start looking for a new job.



                        The next question here is, if the company is considering seriously reworking that code so that it's not a spaghetti mess, or are they just doing a fix atop a patch atop a change and so on?
                        In that case, also, start looking for a new job.



                        If your manager has 16 years of experience as a tech lead, and is doing things as described above, it's intentional, it's a conscious decision to either get more work out of you than is normally possible, or to set you up to fail, and whichever case it is, he won't change his mind no matter what you say.



                        Based on answers to these questions, you will see if this is a hard but expected part of your job, or a messed-up project and team - and that will tell you all you need to know.






                        share|improve this answer



























                          0














                          The question here is: what is the deadline - how much time were you given for this?
                          If there is enough time, then do it, do it slowly and carefully, do it well.



                          If there isn't enough time, and the company is asking for impossible, start looking for a new job.



                          Also, is your experience on the level with the complexity of the code? Reworking something in a 1.5 M lines of already messed-up spaghetti code is a job for a very senior developer with lots of experience.
                          Is your 1.5 years of experience just with them - and you have a lot more in total - or is it more or less your total professional experience? Because if it's like that, they're setting you up to fail. See the previous case... as in, start looking for a new job.



                          The next question here is, if the company is considering seriously reworking that code so that it's not a spaghetti mess, or are they just doing a fix atop a patch atop a change and so on?
                          In that case, also, start looking for a new job.



                          If your manager has 16 years of experience as a tech lead, and is doing things as described above, it's intentional, it's a conscious decision to either get more work out of you than is normally possible, or to set you up to fail, and whichever case it is, he won't change his mind no matter what you say.



                          Based on answers to these questions, you will see if this is a hard but expected part of your job, or a messed-up project and team - and that will tell you all you need to know.






                          share|improve this answer

























                            0












                            0








                            0







                            The question here is: what is the deadline - how much time were you given for this?
                            If there is enough time, then do it, do it slowly and carefully, do it well.



                            If there isn't enough time, and the company is asking for impossible, start looking for a new job.



                            Also, is your experience on the level with the complexity of the code? Reworking something in a 1.5 M lines of already messed-up spaghetti code is a job for a very senior developer with lots of experience.
                            Is your 1.5 years of experience just with them - and you have a lot more in total - or is it more or less your total professional experience? Because if it's like that, they're setting you up to fail. See the previous case... as in, start looking for a new job.



                            The next question here is, if the company is considering seriously reworking that code so that it's not a spaghetti mess, or are they just doing a fix atop a patch atop a change and so on?
                            In that case, also, start looking for a new job.



                            If your manager has 16 years of experience as a tech lead, and is doing things as described above, it's intentional, it's a conscious decision to either get more work out of you than is normally possible, or to set you up to fail, and whichever case it is, he won't change his mind no matter what you say.



                            Based on answers to these questions, you will see if this is a hard but expected part of your job, or a messed-up project and team - and that will tell you all you need to know.






                            share|improve this answer













                            The question here is: what is the deadline - how much time were you given for this?
                            If there is enough time, then do it, do it slowly and carefully, do it well.



                            If there isn't enough time, and the company is asking for impossible, start looking for a new job.



                            Also, is your experience on the level with the complexity of the code? Reworking something in a 1.5 M lines of already messed-up spaghetti code is a job for a very senior developer with lots of experience.
                            Is your 1.5 years of experience just with them - and you have a lot more in total - or is it more or less your total professional experience? Because if it's like that, they're setting you up to fail. See the previous case... as in, start looking for a new job.



                            The next question here is, if the company is considering seriously reworking that code so that it's not a spaghetti mess, or are they just doing a fix atop a patch atop a change and so on?
                            In that case, also, start looking for a new job.



                            If your manager has 16 years of experience as a tech lead, and is doing things as described above, it's intentional, it's a conscious decision to either get more work out of you than is normally possible, or to set you up to fail, and whichever case it is, he won't change his mind no matter what you say.



                            Based on answers to these questions, you will see if this is a hard but expected part of your job, or a messed-up project and team - and that will tell you all you need to know.







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered May 27 at 22:43









                            Dragan JuricDragan Juric

                            63413




                            63413



























                                draft saved

                                draft discarded
















































                                Thanks for contributing an answer to The Workplace Stack Exchange!


                                • Please be sure to answer the question. Provide details and share your research!

                                But avoid


                                • Asking for help, clarification, or responding to other answers.

                                • Making statements based on opinion; back them up with references or personal experience.

                                To learn more, see our tips on writing great answers.




                                draft saved


                                draft discarded














                                StackExchange.ready(
                                function ()
                                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fworkplace.stackexchange.com%2fquestions%2f137054%2fhow-to-manage-frustration-from-dealing-with-spaghetti-codebase-and-feeling-like%23new-answer', 'question_page');

                                );

                                Post as a guest















                                Required, but never shown





















































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown

































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown











                                Popular posts from this blog

                                Club Baloncesto Breogán Índice Historia | Pavillón | Nome | O Breogán na cultura popular | Xogadores | Adestradores | Presidentes | Palmarés | Historial | Líderes | Notas | Véxase tamén | Menú de navegacióncbbreogan.galCadroGuía oficial da ACB 2009-10, páxina 201Guía oficial ACB 1992, páxina 183. Editorial DB.É de 6.500 espectadores sentados axeitándose á última normativa"Estudiantes Junior, entre as mellores canteiras"o orixinalHemeroteca El Mundo Deportivo, 16 setembro de 1970, páxina 12Historia do BreogánAlfredo Pérez, o último canoneiroHistoria C.B. BreogánHemeroteca de El Mundo DeportivoJimmy Wright, norteamericano do Breogán deixará Lugo por ameazas de morteResultados de Breogán en 1986-87Resultados de Breogán en 1990-91Ficha de Velimir Perasović en acb.comResultados de Breogán en 1994-95Breogán arrasa al Barça. "El Mundo Deportivo", 27 de setembro de 1999, páxina 58CB Breogán - FC BarcelonaA FEB invita a participar nunha nova Liga EuropeaCharlie Bell na prensa estatalMáximos anotadores 2005Tempada 2005-06 : Tódolos Xogadores da Xornada""Non quero pensar nunha man negra, mais pregúntome que está a pasar""o orixinalRaúl López, orgulloso dos xogadores, presume da boa saúde económica do BreogánJulio González confirma que cesa como presidente del BreogánHomenaxe a Lisardo GómezA tempada do rexurdimento celesteEntrevista a Lisardo GómezEl COB dinamita el Pazo para forzar el quinto (69-73)Cafés Candelas, patrocinador del CB Breogán"Suso Lázare, novo presidente do Breogán"o orixinalCafés Candelas Breogán firma el mayor triunfo de la historiaEl Breogán realizará 17 homenajes por su cincuenta aniversario"O Breogán honra ao seu fundador e primeiro presidente"o orixinalMiguel Giao recibiu a homenaxe do PazoHomenaxe aos primeiros gladiadores celestesO home que nos amosa como ver o Breo co corazónTita Franco será homenaxeada polos #50anosdeBreoJulio Vila recibirá unha homenaxe in memoriam polos #50anosdeBreo"O Breogán homenaxeará aos seus aboados máis veteráns"Pechada ovación a «Capi» Sanmartín e Ricardo «Corazón de González»Homenaxe por décadas de informaciónPaco García volve ao Pazo con motivo do 50 aniversario"Resultados y clasificaciones""O Cafés Candelas Breogán, campión da Copa Princesa""O Cafés Candelas Breogán, equipo ACB"C.B. Breogán"Proxecto social"o orixinal"Centros asociados"o orixinalFicha en imdb.comMario Camus trata la recuperación del amor en 'La vieja música', su última película"Páxina web oficial""Club Baloncesto Breogán""C. B. Breogán S.A.D."eehttp://www.fegaba.com

                                Vilaño, A Laracha Índice Patrimonio | Lugares e parroquias | Véxase tamén | Menú de navegación43°14′52″N 8°36′03″O / 43.24775, -8.60070

                                Cegueira Índice Epidemioloxía | Deficiencia visual | Tipos de cegueira | Principais causas de cegueira | Tratamento | Técnicas de adaptación e axudas | Vida dos cegos | Primeiros auxilios | Crenzas respecto das persoas cegas | Crenzas das persoas cegas | O neno deficiente visual | Aspectos psicolóxicos da cegueira | Notas | Véxase tamén | Menú de navegación54.054.154.436928256blindnessDicionario da Real Academia GalegaPortal das Palabras"International Standards: Visual Standards — Aspects and Ranges of Vision Loss with Emphasis on Population Surveys.""Visual impairment and blindness""Presentan un plan para previr a cegueira"o orixinalACCDV Associació Catalana de Cecs i Disminuïts Visuals - PMFTrachoma"Effect of gene therapy on visual function in Leber's congenital amaurosis"1844137110.1056/NEJMoa0802268Cans guía - os mellores amigos dos cegosArquivadoEscola de cans guía para cegos en Mortágua, PortugalArquivado"Tecnología para ciegos y deficientes visuales. Recopilación de recursos gratuitos en la Red""Colorino""‘COL.diesis’, escuchar los sonidos del color""COL.diesis: Transforming Colour into Melody and Implementing the Result in a Colour Sensor Device"o orixinal"Sistema de desarrollo de sinestesia color-sonido para invidentes utilizando un protocolo de audio""Enseñanza táctil - geometría y color. Juegos didácticos para niños ciegos y videntes""Sistema Constanz"L'ocupació laboral dels cecs a l'Estat espanyol està pràcticament equiparada a la de les persones amb visió, entrevista amb Pedro ZuritaONCE (Organización Nacional de Cegos de España)Prevención da cegueiraDescrición de deficiencias visuais (Disc@pnet)Braillín, un boneco atractivo para calquera neno, con ou sen discapacidade, que permite familiarizarse co sistema de escritura e lectura brailleAxudas Técnicas36838ID00897494007150-90057129528256DOID:1432HP:0000618D001766C10.597.751.941.162C97109C0155020