There are a number of ways of using Mathematica which could be considered as "developing software" at various levels. Many users use Mathematica as a programmable super graphical calculator from which they copy out results, sometimes by hand, to Tex files or other documents. Some users, such as those in this thread, think in terms of a large programming project utilizing an IDE with multiple sources of code, multiple programmers, sophisticated debugging, version control and maintenance capabilities.The first group of users may be getting less than they could profitably use from Mathematica and the second approach is far too complicated, expensive and unnecessary for the vast majority of users.
There is another in-between approach that comes complete with Mathematica but which I feel is underused and under-appreciated. It applies to users who wish to learn, develop, preserve, document and communicate technical capability on some technical subject. Would that include you? The medium is a Wolfram Mathematica Application. An Application can include some or all of the following: notebooks, packages, stylesheets, palettes, documentation, private and public folders, and other types of files and documents.
I discuss more details of this approach at my web site A Mathematica Style.
The one piece of software that doesn't come with Mathematica, but is available free is Wolfram Workbench. It is an IDE but I only use it for documentation.
http://www.wolfram.com/workbench/
You can develop capability and build up an Application slowly over time. Several people can easily collaborate on an Application. The Application could become quite large. The Application could contain classical style technical papers. I tend to think of Mathematica not as a programmable super graphical calculator, but as a writing medium. A literate notebook using sectional organization, textual discussion, active calculation and dynamics is far superior to static printed papers and PDF documents.
You can transmit an Application to another Mathematica user and all they have to do is unzip it into their Applications folder to obtain all its resources. It might be considered a disadvantage that the reader needs to have Mathematica. But more and more technical people have Mathematica or have access to it, and when others see what can be done with Mathematica Applications more and more will be attracted to it.
There are many beautiful examples of CDF documents. They surely have their proper usages. But they have a complicated business model; it is not easy to support a CDF document with packages, stylesheets, palettes or an Application. A more serious disadvantage, say for teaching, is that the professor gets to use the full capabilities of Mathematica and the student gets to slide a Slider.
One might even develop an Application whose purpose was to develop and test algorithms and then transmit them to a large C++ development project.