I was placed on a project about three months ago that was until then under development by a single, newly hired developer because it was falling behind. To be fair, the project is an interface to a medical device that has a lot of subtleties and is relatively complex, so placing one person on the project who had no experience at the company was probably a bad decision from a managerial perspective.
Anyway, once I started working on it I realized that... well, it just didn't work at all. The UI looked nice, but it didn't actually do much of anything, and what it did do it was doing incorrectly. Again, to be fair, much of this was due to the fact that this developer was not properly prepared to write an interface to our device. However, I also quickly realized that the code that was in place was brittle and extremely hard to maintain.
Now I do not claim to be the best programmer in the world. I work with a lot of very smart people who are better developers than I. I do however try very hard to write code that is as simple as it can be and robust. I test my checkins. If I see that my code is getting messy and hard to work with early on I change it. I have had a few talks with my coworker in an attempt to help him write better code. This is a bit tricky because a) he has 20+ years of experience in the field and I have only 5, and b) he was hired as a so-called "UX expert" and others view him as an experienced individual.
That said, I just don't see it. He is a very nice guy and he is reasonable, yet time after time he checks in code that is fragile, works only in the most optimistic of cases, and 9 times out of 10 I end up fixing bugs in his work. His code just seems amateurish and he obviously doesn't have the level of experience that he claimed to have when he was hired. It has come to the point where the extra hours I spend refactoring his code and fixing his bugs have taken a toll on me. The way I see it I have two options:
- Do nothing, bust my butt to make sure this product goes out on time and is robust and wait for him to fail in the future (I will not be working with him on this project after the initial release.)
- Tell my boss about his performance. My boss is a reasonable man, but I just feel awkward taking this approach. I don't like to 'bash' (for lack of a better term) my coworkers and I don't know how he will take it.
So, that's about it. I have tried to work through this with my coworker by explaining why his implementation won't work or how his code could be made to be more maintainable, but he continues to make the same mistakes. I'm very interested to hear how others have handled similar situations, especially people in management currently. Thanks in advance for any advice you can offer to me.