I am the one who quibbles over the distinctions in the definitions of these words.<p>That aside, it is good for a software developer to be any of these as the need arises. You may need to design a system, test and implement a design, maintain a system, or quickly throw something together that works for now.