probably someone working not in ('finance', 'insurance')
–
JosetApr 12 '11 at 3:46

so finance and insurance are the only businesses out there that use software?
–
jwentingApr 12 '11 at 4:17

Bear in mind that "finance" covers a whole lot of different types of programming, including systems programming (some of the work in very high frequency trading is to eliminate latency).
–
David ThornleyApr 12 '11 at 13:51

4 Answers
4

Simplistically - you're working on the OS not an application running under that OS.

Typically systems programming needs more awareness of hardware and timings etc as you're frequently working much closer to the hardware. Maybe working on a complete embedded system, or creating device drivers for the OS.

You could be working on...

Any of a multitude of linux based devices - NAS, routers and the like.
Any of the various embedded systems with custom / modified OSes.

Not uncommon to see keywords like realtime and embedded in the same job ad :)

The difference between a business programmer and systems programmer would be difference in domain knowledge. The term Business Programmer is loosely coined here. It could mean anyone from a android developer (eventhough those guys like to call themselves "App developers") to a Salesforce Developer to a Oracle based developer. These people will have a lot of knowledge of the domain they are working on (like a bank or a shopping portal or an airline etc). System Developers on the other hand generally mean people who have knowledge about the "System" on which the "Business" is running (like a SQl server or LINUX). these guys would know what server is needed to handle what kind of workload or which OS is best suited in which environment.

I don't think there is a clear definition of what constitutes systems programming, business programming, application programming, etc. All of the terms are somewhat vague, and their usage is probably somewhat cultural. Personally, the way I've tended to use the terms has been:

Systems Programming: Primarily concerned with kernel development, general purpose libraries, and services. Applications exist primarily to interact with hardware or other software. Generally, systems libraries and applications are not intended to serve a specific business purpose, but instead focus on providing underlying system functionality upon which more specific applications can be built.

Application Programming: Almost never in kernel space. May or may not talk to hardware or other software, but always intended to be used by a user. May or may not be business oriented. Makes use of libraries and applications at the system level to implement basic functionality.

Business Programming: May be application programming or systems programming, but software is created to perform or support specific business needs and logic.

A Business programmer - Can be someone who is working closely with business who can understand how the client system works, business flow/know how and with industry experience etc who can interpret the business requirements into a technical solutions.

A Systems programmer - Can be someone who has got more system knowledge such as Hardware configuration, technical architecture of the system and can understand and talk to machines using any technical programming languages.