|No such thing as a small change|
"What is the nature of the thing, what does it do?" - Hannible Lecter
All these titles should carry specific information to others. These days people will call themselves anything and get away with it, my general advice is to understate any pretentious titles and concentrate on your real experience.
A savvy employer should understand these distinctions...
Actually writes the code implementing software. Anyone can start as a programmer. The programmers central skill is the ability to transform a high level (algorithm) expression into a sequence of lower level operations (code). But since we all do that every day with mobile phones, video recorders, microwaves and desktop computers, that makes almost everyone a programmer. If someone introduces themselves as a programmer I assume they have fairly deep coding skills, but that doesn't imply they know anything about computers at all.
Requires (physics, electronic engineering, VLSI, CS, screwdriver)
You can spot an SE by the screwdriver. He deals with the actual physical implementation of computing platforms. This ranges from anyone who built their own PC from cards, to members of the team designing Intels next chipset. All good CEs have deep understanding of binary logic, timing and bus protocols, system components like RAM, ROM, DMA, clocks, interface devices and a register level understanding of the processor and all its internals. A good CE has built at least one computer from component level. Mine was a 68000 based SBU roughly equivilent to an Applemac, made on a wirewrap Eurocard. But, the discipline is broad, and anyone who has designed a small cluster or company network from stock parts and had to take account of physical wiring, heat dynamics, component compatabilities and so forth should count themself as a Computer Engineer. A good CE also has a soldering iron in his kit. SEs are invariably male.
Requires (programming, theoretical computer science, experience)
The SA usually comes to an existing scenario which needs automation. The SA analyses the system revealing entities, relationships, control and data flows, transformations/functions, stores, pipes etc. S/he then expresses this in a very high level 'formal' language such as Z, VDM or another psudocode appropriate for describing high level architectures. The hayday of the Systems Analyst was the 60s and 70s when most automation took place. Another more modern role for the SA is to 'rediscover' legacy horrors which have no documentation as a pre-analysis stage to a rewrite. The best attributes of a SA are patience, detective like skills, and experience is vital, you cannot walk straight out of college and call yourself a systems analyst, you should have tackled at least 4 or 5 difficult problems. Some good social and political abilities are also useful when analysing large organisations as there will inevitably be hidden processes and agendas that, although not a part of the technical spec, need routing around. Women make exceptional SAs, Ive met some. Women that is.
High level product engineering
Requires (programming, software engineering, some theoretical CS is good)
SE is an identifiablty separate skill. The SE is usually a programmer, at least senior team leader or head of development. The SE takes an overview of a large application. You are not a software engineer if you are working alone or in a 2 man team. Sommerville describes the essential roles of SE. Overseeing Specification, Systems analysis, Prototyping, Development, Test, Version Control, Maintainance and patches. The SE sees a project as a whole lifecycle, a much bigger and broader view than any of the individual coders or teams. There is nothing pretentious about calling this 'Engineering', it is quite appropriate. If the Manager and Team Coders are good a rookie SE can come straight from college and survive under that title, experience is not as important imo. Anyone who did very well at just CS could probably cope nicely once they saw 2 or 3 projects through, or blag it from first principles.
Software engineering/Product Manager
Requires (SE, CS, experience, experience, experience, confidence)
Managers do very little at all except take responsibility and deal with people. Certainly the best manager you can work under has 25 years of practical coding, a higher degree in computer science and has worked in all of above roles in their time. In reality most 'managers' are nothing like that. In many areas of human activity its possible for a person with no experience of a field to come along as a 'Manager' having studied only a 'Management' degree. In software it is not. Such self appointed managers fail very quickly because software is unique. Managing code production requires insights into very complicated issues that pedestrian management skills cannot deal with. A good Manager has risen from at least 5 years SE imho. I taught elementry programming to students on an undergrad course 'Software Engineering Management'. Looking back I never would have hired any of those students fresh out of grad, it just can't be taught on a theoretical level. One might be able to blag a crony job as manager of some media company, but SEMs out of their depth rarely last the first week. Real SEM is very active and stressful.
requires (the mind of a hacker)
Hacker form a subset of all the others. People are either hackers or they are not, but that doesn't stop them from becomming very skilled and sucessful carreer programmers, software engineers or managers. A hacker is a warrior-poet-artist-scientist, indeed best summed up in Podmasters link given by EdwardG. Sourcerer is excellent! Also Codesmith and Code Poet. Hackers are the creative force behind software development. All genuinely new advances in computer science are the fruit of hackers, even if faceless corporations end up eventually robbing them of the patents, IP and attribution. Large teams may create code of immense scale, complexity and reliability, but without hackers in their ranks it can only ever be a derivitive extension of principles. The hacker introduces something else important to the discussion, latent ability, they are whether they know it or not, natural computer scientists and it doesn't matter if they are formally qualified. I recognise fellow hackers by their attitude to problem solving.
My self title is 'computer scientist', which is my formal qualification and outlook.
My given title is CTO, which is just an accident of our company being less than 5.
If asked my answer is the same as Abigails, 'I work with computers', and see where it goes from there.