This leans heavily on what "doing your job properly" means. Code quality, understanding, and doing your job properly are not so black-and-white. Your job is probably not to push out flawless code; it's more likely to push out valuable code, that minimizes risk, and appropriately trades off speed and quality (for some appropriate definition of "appropriate").