Am I really such a slow programmer/analyst?
-
Ok, so I got this job, my company sent me over to its USA branch to help with development of their Web Application, made in JDeveloper and based on a 10 year old database that's has been growing with not much structure (the data model itself is used for an in-house developed ERP/CRM system that manages Telco stuff, and it runs on powerbuilder, and I've been doing stuff in that system for a few months). So, I arrive, go to the office, spend about a week with meetings and some explanations of how the system works, what each screen does, yadda yadda. Very light "training", if it can even be called that. So, next thing I know, I get dumped a dozen requirements and asked to estimate the times. I'm like, ok... I don't even know what tables are used for these requirements, so I account for that, you know, learning how it works right now, roughly, something like, 10 simple maintenance screens, in one week. And they go, "WTF? You can make a maintenance table in Powerbuilder in 20 minutes! Surely you mean that you can make about 10 screens in a single day, right?" so they adjust the time accordingly in the project file, 0.13 days per requirement - literally. I'm on the third week and I'm still trying to reverse engineer their custom in-house java framework and haven't been able to get a single maintenance. I'm making progress, but it's not like I'm dragging controls left and right and "making tables" or whatever, I'm trying to understand their freakin' program, which is a mess of Oracle tables and java files. And I keep getting harassed for the slow pace I work at (half a dozen temp programmers have had a similar "success story" as me in this before me). Now I'm told, ok, drop everything you're doing, and we need you to make a Job in Oracle that checks all these tables and updates all those other tables accordingly. I'm *given* an estimate of 4 hours. I spend 2 hours just trying to figure out what fields I'm supposed to match between these tables (no foreign keys!), until I get hold of the "project manager" and he kinda tells me. Many more hours have gone by and I'm still trying to make the SQL statements that make sense for this stored procedure. Do I just suck at this or what? Is a newcomer to a big app like this supposed to churn out 3 or 4 stored procedures per hour? Maybe I'm wrong and I *do* suck, so I just wanted to make sure of that, maybe have a change of career or something, perhaps quitting my day job and get one for Valet Parking or whatever - probably pays more too. It also involves less thinking, a
-
Ok, so I got this job, my company sent me over to its USA branch to help with development of their Web Application, made in JDeveloper and based on a 10 year old database that's has been growing with not much structure (the data model itself is used for an in-house developed ERP/CRM system that manages Telco stuff, and it runs on powerbuilder, and I've been doing stuff in that system for a few months). So, I arrive, go to the office, spend about a week with meetings and some explanations of how the system works, what each screen does, yadda yadda. Very light "training", if it can even be called that. So, next thing I know, I get dumped a dozen requirements and asked to estimate the times. I'm like, ok... I don't even know what tables are used for these requirements, so I account for that, you know, learning how it works right now, roughly, something like, 10 simple maintenance screens, in one week. And they go, "WTF? You can make a maintenance table in Powerbuilder in 20 minutes! Surely you mean that you can make about 10 screens in a single day, right?" so they adjust the time accordingly in the project file, 0.13 days per requirement - literally. I'm on the third week and I'm still trying to reverse engineer their custom in-house java framework and haven't been able to get a single maintenance. I'm making progress, but it's not like I'm dragging controls left and right and "making tables" or whatever, I'm trying to understand their freakin' program, which is a mess of Oracle tables and java files. And I keep getting harassed for the slow pace I work at (half a dozen temp programmers have had a similar "success story" as me in this before me). Now I'm told, ok, drop everything you're doing, and we need you to make a Job in Oracle that checks all these tables and updates all those other tables accordingly. I'm *given* an estimate of 4 hours. I spend 2 hours just trying to figure out what fields I'm supposed to match between these tables (no foreign keys!), until I get hold of the "project manager" and he kinda tells me. Many more hours have gone by and I'm still trying to make the SQL statements that make sense for this stored procedure. Do I just suck at this or what? Is a newcomer to a big app like this supposed to churn out 3 or 4 stored procedures per hour? Maybe I'm wrong and I *do* suck, so I just wanted to make sure of that, maybe have a change of career or something, perhaps quitting my day job and get one for Valet Parking or whatever - probably pays more too. It also involves less thinking, a
You already know the answer to this. It is impossible, no matter what project managers think, to walk into a project and be productive instantly. There is a learning curve, and it needs to be taken into account. Good PMs know this - and adjust accordingly. Bad PMs think it's like engineering (which is where a lot of the PM discipline originates) where it takes 1 minute to make a gromit, so to produce 1000 gromits takes 1000 minutes. You can't be given an estimate. You have to give the estimate. You are the person doing the work, and this means that only you know how long it will take.
Deja View - the feeling that you've seen this post before.
-
Ok, so I got this job, my company sent me over to its USA branch to help with development of their Web Application, made in JDeveloper and based on a 10 year old database that's has been growing with not much structure (the data model itself is used for an in-house developed ERP/CRM system that manages Telco stuff, and it runs on powerbuilder, and I've been doing stuff in that system for a few months). So, I arrive, go to the office, spend about a week with meetings and some explanations of how the system works, what each screen does, yadda yadda. Very light "training", if it can even be called that. So, next thing I know, I get dumped a dozen requirements and asked to estimate the times. I'm like, ok... I don't even know what tables are used for these requirements, so I account for that, you know, learning how it works right now, roughly, something like, 10 simple maintenance screens, in one week. And they go, "WTF? You can make a maintenance table in Powerbuilder in 20 minutes! Surely you mean that you can make about 10 screens in a single day, right?" so they adjust the time accordingly in the project file, 0.13 days per requirement - literally. I'm on the third week and I'm still trying to reverse engineer their custom in-house java framework and haven't been able to get a single maintenance. I'm making progress, but it's not like I'm dragging controls left and right and "making tables" or whatever, I'm trying to understand their freakin' program, which is a mess of Oracle tables and java files. And I keep getting harassed for the slow pace I work at (half a dozen temp programmers have had a similar "success story" as me in this before me). Now I'm told, ok, drop everything you're doing, and we need you to make a Job in Oracle that checks all these tables and updates all those other tables accordingly. I'm *given* an estimate of 4 hours. I spend 2 hours just trying to figure out what fields I'm supposed to match between these tables (no foreign keys!), until I get hold of the "project manager" and he kinda tells me. Many more hours have gone by and I'm still trying to make the SQL statements that make sense for this stored procedure. Do I just suck at this or what? Is a newcomer to a big app like this supposed to churn out 3 or 4 stored procedures per hour? Maybe I'm wrong and I *do* suck, so I just wanted to make sure of that, maybe have a change of career or something, perhaps quitting my day job and get one for Valet Parking or whatever - probably pays more too. It also involves less thinking, a
MrBoombastic wrote:
Or is it just crappy project management?
MrBoombastic wrote:
I'm still trying to reverse engineer their custom in-house java framework
If it's because the framework is not documented then I'm pretty sure that answers your question. Some people call that Technical Debt.[^]
led mike
-
Ok, so I got this job, my company sent me over to its USA branch to help with development of their Web Application, made in JDeveloper and based on a 10 year old database that's has been growing with not much structure (the data model itself is used for an in-house developed ERP/CRM system that manages Telco stuff, and it runs on powerbuilder, and I've been doing stuff in that system for a few months). So, I arrive, go to the office, spend about a week with meetings and some explanations of how the system works, what each screen does, yadda yadda. Very light "training", if it can even be called that. So, next thing I know, I get dumped a dozen requirements and asked to estimate the times. I'm like, ok... I don't even know what tables are used for these requirements, so I account for that, you know, learning how it works right now, roughly, something like, 10 simple maintenance screens, in one week. And they go, "WTF? You can make a maintenance table in Powerbuilder in 20 minutes! Surely you mean that you can make about 10 screens in a single day, right?" so they adjust the time accordingly in the project file, 0.13 days per requirement - literally. I'm on the third week and I'm still trying to reverse engineer their custom in-house java framework and haven't been able to get a single maintenance. I'm making progress, but it's not like I'm dragging controls left and right and "making tables" or whatever, I'm trying to understand their freakin' program, which is a mess of Oracle tables and java files. And I keep getting harassed for the slow pace I work at (half a dozen temp programmers have had a similar "success story" as me in this before me). Now I'm told, ok, drop everything you're doing, and we need you to make a Job in Oracle that checks all these tables and updates all those other tables accordingly. I'm *given* an estimate of 4 hours. I spend 2 hours just trying to figure out what fields I'm supposed to match between these tables (no foreign keys!), until I get hold of the "project manager" and he kinda tells me. Many more hours have gone by and I'm still trying to make the SQL statements that make sense for this stored procedure. Do I just suck at this or what? Is a newcomer to a big app like this supposed to churn out 3 or 4 stored procedures per hour? Maybe I'm wrong and I *do* suck, so I just wanted to make sure of that, maybe have a change of career or something, perhaps quitting my day job and get one for Valet Parking or whatever - probably pays more too. It also involves less thinking, a
Without exception, every company I've ever worked at has had managers that understand that it's going to take several months (depending on the company's products and how complex they are) for a new hire to be productive in that environment. So... you are (probably) not to blame, and you can be assured that you have a management problem. That may or may not be comforting to you...
-
MrBoombastic wrote:
Or is it just crappy project management?
MrBoombastic wrote:
I'm still trying to reverse engineer their custom in-house java framework
If it's because the framework is not documented then I'm pretty sure that answers your question. Some people call that Technical Debt.[^]
led mike
Wow, neat, I'll be sure to forward that to the management. Cool buzzword too ;) To everyone else: thanks for the info, I do feel a bit relieved that I'm not failing to be as "productive" as expected. Now, if anyone has any tips, what can be done about it? (I'm not a manager and they've apparently done things like this for a decade, so I don't know how to make anyone listen to me about these silly things, that I learned, like, doing this useless thing called Analysis and, um, entity-relationship diagrams for the database, or to write anything down... at all, even on a paper napkin, please). Other than quitting, which I'm considering, I'm willing to exhaust the possibility of helping to bring this development company at least up to the mediocre level.
modified on Friday, September 12, 2008 2:36 PM
-
You already know the answer to this. It is impossible, no matter what project managers think, to walk into a project and be productive instantly. There is a learning curve, and it needs to be taken into account. Good PMs know this - and adjust accordingly. Bad PMs think it's like engineering (which is where a lot of the PM discipline originates) where it takes 1 minute to make a gromit, so to produce 1000 gromits takes 1000 minutes. You can't be given an estimate. You have to give the estimate. You are the person doing the work, and this means that only you know how long it will take.
Deja View - the feeling that you've seen this post before.
Pete O'Hanlon wrote:
You can't be given an estimate. You have to give the estimate. You are the person doing the work, and this means that only you know how long it will take.
I agree with the first part of the post, but this part contradicts the first part. How can I give an estimate if I have no idea how long it will take? As a side note, they don't call them "estimates" either. They just call them "times", as in delivery times, and if you're late you're in trouble.
-
Pete O'Hanlon wrote:
You can't be given an estimate. You have to give the estimate. You are the person doing the work, and this means that only you know how long it will take.
I agree with the first part of the post, but this part contradicts the first part. How can I give an estimate if I have no idea how long it will take? As a side note, they don't call them "estimates" either. They just call them "times", as in delivery times, and if you're late you're in trouble.
MrBoombastic wrote:
How can I give an estimate if I have no idea how long it will take?
Ah-hah. There's the trick - you normally do two estimates. The first estimate is to identify how long it will take you to get an understanding of the system, and that's down to experience. Then, once you've got an understanding of the system, you produce a second estimate - which is how long the real work takes to do. I can tell you that this approach works because we use it in my company; and I'm the owner, so I must be happy with it.
Deja View - the feeling that you've seen this post before.
-
MrBoombastic wrote:
How can I give an estimate if I have no idea how long it will take?
Ah-hah. There's the trick - you normally do two estimates. The first estimate is to identify how long it will take you to get an understanding of the system, and that's down to experience. Then, once you've got an understanding of the system, you produce a second estimate - which is how long the real work takes to do. I can tell you that this approach works because we use it in my company; and I'm the owner, so I must be happy with it.
Deja View - the feeling that you've seen this post before.
Part of the issue is that their reaction to the first estimate is "is this some kind of sick joke?" I've already raised that point with the manager. What we got in exchange was a meeting of 8 hours (including break time for lunch) with the original developer so we could pick his brain as much as possible during that time, like that's supposed to account for any understanding of that system we'd need during the rest of the project. Is punching the manager in the face an option at this point?
-
Ok, so I got this job, my company sent me over to its USA branch to help with development of their Web Application, made in JDeveloper and based on a 10 year old database that's has been growing with not much structure (the data model itself is used for an in-house developed ERP/CRM system that manages Telco stuff, and it runs on powerbuilder, and I've been doing stuff in that system for a few months). So, I arrive, go to the office, spend about a week with meetings and some explanations of how the system works, what each screen does, yadda yadda. Very light "training", if it can even be called that. So, next thing I know, I get dumped a dozen requirements and asked to estimate the times. I'm like, ok... I don't even know what tables are used for these requirements, so I account for that, you know, learning how it works right now, roughly, something like, 10 simple maintenance screens, in one week. And they go, "WTF? You can make a maintenance table in Powerbuilder in 20 minutes! Surely you mean that you can make about 10 screens in a single day, right?" so they adjust the time accordingly in the project file, 0.13 days per requirement - literally. I'm on the third week and I'm still trying to reverse engineer their custom in-house java framework and haven't been able to get a single maintenance. I'm making progress, but it's not like I'm dragging controls left and right and "making tables" or whatever, I'm trying to understand their freakin' program, which is a mess of Oracle tables and java files. And I keep getting harassed for the slow pace I work at (half a dozen temp programmers have had a similar "success story" as me in this before me). Now I'm told, ok, drop everything you're doing, and we need you to make a Job in Oracle that checks all these tables and updates all those other tables accordingly. I'm *given* an estimate of 4 hours. I spend 2 hours just trying to figure out what fields I'm supposed to match between these tables (no foreign keys!), until I get hold of the "project manager" and he kinda tells me. Many more hours have gone by and I'm still trying to make the SQL statements that make sense for this stored procedure. Do I just suck at this or what? Is a newcomer to a big app like this supposed to churn out 3 or 4 stored procedures per hour? Maybe I'm wrong and I *do* suck, so I just wanted to make sure of that, maybe have a change of career or something, perhaps quitting my day job and get one for Valet Parking or whatever - probably pays more too. It also involves less thinking, a
It varies on project to project. Personally I deal with many smaller modules that are simple to comprehend at the source file level. Unfortunately I have usually worked on projects where everything was stuffed into a single monolithic file which I get lost in really quickly. Others are better at remembering details...not me...I prefer abstractions and tying everything togather at a higher level in my head. I like charts and graphs not endless lines of source code to step through. What any manager has to understand is that when first entering a codebase (without extensive documentation) you are essentially re-writing it without the concern of debugging or testing for errors. So if 1000 lines takes you a 2 days to hammer out bug free and testing/debugging account for 2/3 than reading and absorbing 1000 lines should take you roughly around 10 hours to understand 1000 lines. Assuming those 1000 lines are all you need to concern yourself with, your good to go. Unfortunately most programs are not "designed" they are "developed" from scratch using ad hoc methods that result in hard to read code, coupled with zero or minimum documentation (API documentation does little for learning a system and they are frequently outdated) this makes comprehending a codebase more than 100 lines (yes I said 100) anything BUT trivial. Clients, project managers, hot shot developers, all need to stop thinking this is a reality...code cannot just be learned and changed, especially if you expect quality work to be done.
I'm finding the only constant in software development is change it self.