I have a Surgeon class that is constantly changing
class Surgeon
{
string name, discipline;
public:
Surgeon(string _name, string _discp) : name{_name}, discipline{_discp}{}
void writeDir(string _dir);
void readDir(string _dir);
}
Now I need to add recording settings to Surgeon. Keeping in mind SOLID principles this forces me to go back in Surgeon class add a recording settings and modify everything in surgeon class. Now, I'm also aware that the current implementation of software already adds value to the company. And refactor is not necessary, but in order to do this task right I need to refactor the whole class. If I just add the feature that works with the current design then I'm simply perpetuating bad design.
Where does the software engineer provide the most value? Should I produce code that shows results quickly but is prone to errors in the future or should I delay quick results to produce good code that is more robust? What would be the happy medium if there is any?