Regarding my last post, let me bring you up to date with what's been going on and what I've been struggling with. First, the background:
For the last two years, my project has been me, Dave, and Jenny. Dave was the project lead and did most of the C code. Jenny was our software lead and did most of the Java code. I did pretty much everything else in between. When Dave elected to leave the company for one of our competitors, I was asked to take over as project lead. Even though Jenny is older, more tenured, and more experienced, she's a software guru, and a damn good one, but she doesn't see the big picture. She can tell you anything about how the code works, but nothing about why it's supposed to do that or why a design was done a certain way, and she knows nothing about integration or hardware. So although I was still the junior man, I took over as project lead because I do have those skills. Obviously, a team of two people can't do a team of three's workload, so I asked to hire some new people. For weeks, I wasn't getting anything useful from the higher ups and it was getting really frustrating trying to keep up with everything else going on because while I'm doing Dave's job, no one is doing my job, but it still needs to get done, so I'm trying to pick and choose only the most critical items to work on until I can get more staff in here.
To make matters worse, for the next fiscal year, we're developing our system on a brand new platform and a completely unique variant of another platform, all of which requires a lot of special modificiations and specialized interfaces on top fo what we would normally have to do for a software update. So, it's a lot more work than we've had to do in the last couple years, and so we'd need more people to do it in the first place. So the plan all along was to hire at least one entry level engineer and then one additional entry level to mid level engineer to do software and systems. I'd train up the systems guy and Jenny would train up the software guy. Obviously, it's going to take these guys a while to get up to speed and get clearances, so the sooner we get them in, the better.
Now for the new stuff:
Last week, Jenny decided she wanted to work on something new, and applied for a position on another project. This is what the last post was referring to. After being reviewed by my customer, the 9000 man hours I initially estimated for FY09 became 13000 hours, and there's currently me to do it. Now, I know a lot about our software, but I only muddle through it. I am the wrong person to teach new people how to operate in our framework and follow good coding practices. A bit of blind leading the lost action going on there. Jenny knows way more than I do about that side of things and is really the ideal person to bring new people up to speed correctly. But obviously, that won't happen if she's no longer on the team. I'm also choosing to ignore all the other various issues going on and trying to keep this dilemma as simple as possible.
The way I see it, I can either throw my hands up in the air and give up on the project or I can take this opportunity to rebuild the program from scratch. I'm not sure I have it in me to give up on something, and I'm certainly willing to take on a challenge, but at the same time, I don't want to be the captain of a sinking ship. It's also not in me to deliver a subpar product. And to be honest, my loyalty lies with my customer and not with my company on this one. Which means I can either stay at GD, and rebuild the program by hiring some new people, or I can leave the company and tell my customer that I can't continue to produce a quality product with the resources available. If I choose to leave, GD will lose the program, it will fail, or they'll sub it out to someone else, no question. There's no one else who knows enough about it to run it, even if Jenny took over as lead instead of switching projects. Dave has said he would put in a good work for me at Sedna, and I know enough other people over there that I'm reasonably confident they would offer me a job. Which adds a complicated wrinkle to the whole thing. I think if I left for Sedna, there's a 50/50 chance that GD would have no choice but to subcontract the project to Sedna, where Dave and I could work on it together again. This would definitely make my customer happy, but I don't know if I want to continue to work on the same thing if I leave the company or if I want to be Dave's sidekick forever (although there's also the possibility that I could continue as lead, and leave Dave to the coding that he's better at, assuming he even wants to work on the project again too). I'm going to run into the same problem over there too where there's not anyone below me to train up to take my place someday, so I'd be "stuck" working on the same project for the forseeable future. Nice job security, but it's something I have to think long and hard about.
Along those same lines, I have a kid fresh out of college coming in for an interview in a few minutes. I'm really conflicted about what to do if he's a good candidate. I don't think, ethically, that I can offer him a job unless I've already made up my mind to stay. Which also means that I can't leave for at least a year or so after hiring him. I'm sure GD would find some other project for him to work on, but it feels unfair to bring him on if I'm going to turn around and bail out.
Definitely some things I need to think through pretty carefully in the next few days.