I am a bit surprised by the US Bureau of Labor Statistics definitions of "computer programmer" and "software developer" and don't know which one applies to most developers I know. Here are the definitions:<p><i>15-1251 Computer Programmers</i><p>Create, modify, and test the code and scripts that allow computer applications to run. Work from specifications drawn up by software and web developers or other individuals. May develop and write computer programs to store, locate, and retrieve specific documents, data, and information.<p>Illustrative examples: Applications Programmer, Computer Language Coder, IT Programmer, Systems Programmer.<p>--<p><i>15-1252 Software Developers</i><p>Research, design, and develop computer and network software or specialized utility programs. Analyze user needs and develop software solutions, applying principles and techniques of computer science, engineering, and mathematical analysis. Update software or enhance existing software capabilities. May work with computer hardware engineers to integrate hardware and software systems, and develop specifications and performance requirements. May maintain databases within an application area, working individually or coordinating database development as part of a team.<p>Illustrative examples: Computer Applications Engineer, Computer Systems Engineer, Mobile Applications Developer, Software Applications Architect, Software Engineer, Systems Software Developer
Why should anyone care about the US Bureau of Labor Statistics definitions? Especially since they're defined in a way that you can fit most software jobs in either category. It's not obvious to me that there's any meaningful difference between the two descriptions.<p>Programmer vs developer; or software developer vs software engineer - all of those arguments seem either like pointless nitpicking or an attempt to generalise things that can't be generalised.<p>Whatever you do, you have some job title and job responsibilities - that's your most reliable point of reference even if the title isn't descriptive or accurate. So if your company has called you a $x, you're $x until you get a job with a different title. And if you get a job with the same title but different responsibilities, then you're still $x even though you do something completely different.<p>Basically, your title only has meaning in the context of your current company and team. Don't try to compare across companies or generalise too much because you end up with useless definitions like the ones from the BLS.
Source: <a href="https://www.bls.gov/soc/2018/major_groups.htm#15-0000" rel="nofollow">https://www.bls.gov/soc/2018/major_groups.htm#15-0000</a><p>Part of what I find odd is that these definitions seem to envision a separation between designimg software and actually writing the code — but, in my experience, it's much more common for those roles to be combined (and has been for quite a number of years)
I love how "programmer" always gets presented as a worker monkey who doesn't think.<p>> Work from specifications drawn up by... web developers<p>Wow. Even web developers are lording over the lowly programmer. Sucks to be him.<p>No wonder most programmers call themselves software engineers.
Instead of Software Developer, the correct designation is Software Engineer. Software Developer, Software Programmer, Application Developer, Computer Programmer etc is one and the same.
I guess something else that makes the water muddier is that lots of people across many professions spend significant time writing and editing code, even if they aren't coders.
Programmer, here.<p>I could express the difference as "those that make the systems" (Developers) vs "those that make the systems RUN" (Programmers). That's not a great distinction until you're facing a specific problem however.