A programmer whose job mainly consists of changing code that someone else has written and does not often get chances to perform real cleanup on the code (refactoring, redesign, whatever). Unfortunately it is usually seen that this is a job for interns and people right out of college. ''I'm '''still''' not sure about this definition. We have someone who is changing code written by someone else, but these changes are not refactoring. By definition, then, they are changes which modify the code's behaviour. This leaves only two alternatives : a) fixing bugs, or b) implementing new functionality. What I meant by my quip about "never changing someone else's code" is that all of us should aim to do b) - that is, write new code, working in teams. Is a MaintenanceProgrammer, then, someone who mostly fixes bugs ?'' ---- Having slaved in the mines of Mordor (i.e. worked in Cobol) for a few years, I can say that this definition comes pretty close. The not getting to cleanup aspect of the work is a key part of the definition. I worked at a consulting company, with layers and layers of PaperPushers involved in every project. Our general rule was "do not change any line of code that you don't absolutely have to change." There were very many corporate management types who had to keep thier asses covered against any production bugs, and very few people who could code their way out of a paper bag. The mounds of paperwork we generated included diffs on every piece of code we touched, and we had to be ready to defend every line we changed. I continually encountered the ugliest code imaginable, and spent a lot of time laughing about it (otherwise I would have been grinding my teeth in frustration at not being able to change it.) My favorite example of the ugliness was a routine to add six months to a given date. To do this, they added one to the month, checked if it was 13 and if it was, set it to one and added one to the year. In COBOL, this is about 15 lines of code. This same code was repeated six times. Not a loop, the code itself was cut and pasted. They used about 100 lines of source code to get about 4 bytes of opcodes. ''Is a MaintenanceProgrammer, then, someone who mostly fixes bugs?'' Not necessarily. New functionality is definitely part of the maintenance programmer world. Without being able to touch the old code, one often ends up inventing slightly-different wheels, as in "This routine is almost what I need, but the managers will never let me change it, so I'll write a whole new routine." ---- Was: Any programmer that has had to change code that someone else has written. Unfortunately it is usually seen that this is a job for interns and people right out of college. ''I'm not sure about this definition. Let's have a show of hands - well, of UserName''''''s - is there anyone here who, in any given job, a) was a programmer and b) '''never''' had to change someone else's code ?'' In one job? Yes, this one. Never seen a line of anybody else's code. Rolled my own file parsers, Kalman filters, and simulation rig (all in python), and now I'm working on a database. -- DanUznanski We could make the definition a bit tighter: ''A programmer whose job mainly consists of changing code that someone else has written.'' -- OleAndersen add ''and does not often get chances to perform real cleanup on the code (refactoring, redesign, whatever)'', and you have it. --PeteHardie ---- ProgrammerStereotype See DailyBuild