Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

In an answer that I posted to another question, I noted that there is likely to become more and more specialization in software development: there being experts or specialists for given type of programming.

I'm wondering, what specialties are known to exist in reasonable quantities in the industry now (not academia), that are not technology specific (eg. for this discussion winforms isn't a specialty)? I'm also interested in the industry that such a specialist would have to work in if necessary.

share|improve this question
add comment

closed as not constructive by Yannis Rizos Mar 7 '12 at 16:56

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

4 Answers

The way I see it there's two categories of specialisation:

  1. specialisation in a particular programming field;
  2. or specialisation in a problem domain.

Examples of a programming topic would be:

  • Embedded
  • GUI
  • Visualisation
  • Testing

Then there's specialisation in a particular problem domain such as

  • Financial
  • Scientific
  • Medical
  • Almost any major industry can be considered a problem domain

I think it's an important distinction.

share|improve this answer
add comment

Embedded systems programming (which I have been engaged in for some 30+ years) requires a quite different mindset than most any other type of software development. The range of computing power varies widely, from 8-bit microcontrollers that cost 30 cents in quantity to 32-bit microprocessors running Linux or some other common OS. I am currently doing projects at both ends of this scale. Code memory on the smallest micros may only be a few KB, with only a few hundred bytes of RAM. A mid-range 16-bit micro costing $3 in quantity might have 256KB of program storage and 16KB of RAM.

Besides the limited memory resources, one of the aspects of embedded programming that is unlike other areas of software development is that the programmer is often dealing directly with the hardware at the register level -- either on the micro itself, or in a peripheral attached to the micro via serial busses like UART, SPI or I2C. For this reason, low-end embedded micros are usually programmed in C or assembly language.

Embedded systems are often dealing with real-time events, so an embedded firmware program usually has many interrupt routines and possible a small RTOS (real-time OS). Debugging such systems often requires hardware assistance using a couple of dedicated lines into the micro so breakpoints can be set remotely from a PC. Logic analyzers, bus analyzers and oscilloscopes are additional tools used for debugging these systems.

Because of the hardware aspects of embedded development, developers often have some electronics background. (I have degrees in both EE and CS).

share|improve this answer
add comment

"Developer DBA" role/team exists but isn't common enough or appreciated.

Talking about larger shops, a Production DBA team may have a few 1000 SQL Server instances to manage and monitor, provide disaster recovery, liaise with SAN, network and OS teams etc

Who is there for the development teams? Tuning? Indexes? Design? Coding standards?

Saying that, as a Developer DBA myself, I've met plenty of client developers who know more about databases than I do... :-)

Of course, knowledge of the business is useful too. if you're hired to improve some code that prices complex derivatives in investment banking, then some subject matter expertise is almost as important as whizzy coding skills.

share|improve this answer
add comment

There is also the distinction of knowing a particular kind of software solution such as any of the following:

  • Enterprise Resource Planning
  • Customer Relationship Management
  • Content Management System

There are likely others but these are another form of specialty where one could work for almost any type of company doing a customization of the above potentially. In my case, I have worked on a Content Management System for a couple of years now that I would say is a specialty in a sense.

Something like Web Development may not be specific enough as there can be many specialties within this area, or would it count for what you want?

share|improve this answer
    
Hmm, I'm hoping for specialties that are distinct from their implementation skills. For instance, an AI specialist need not use C++/Prolog/whatever language. Web development as I see it these days ties together the implemenation strongly with the technologies (asp.net mvc != RoR - the translatable knowledge is mostly general programming and platform knowledge) –  Steve Evers Nov 8 '10 at 21:01
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.