ant
Oh dear, this is going to be about the "cloud" isn't it?
I used to think that software development would always be done on local machines. My gut reaction was "How can we compile, work in a test environment, deploy with any amount of speed if all of our stuff is sitting on some shared environment space?" But this isn't the way things will work out precisely.
As it is
In my development environment, we've been trying to "standardize" a development environment by creating an "official" build, putting it together in a package and letting new developers use that. Problem is, these official builds bit-rot quickly and before you know it, the "official" build is useless. Much worse, nobody wants to take the time to update the environment.
There is a certain humor in that Java, which is write once, "run anywhere" so easily, requires a relatively monumental effort to construct a development environment. Is 350+ megs of downloading a reasonable requirement to get going when doing development? (I'll leave aside the 400 meg footprint of most Java IDEs) -- and as always the command line text folks can stay at the back of the class and point and laugh.
To add salt to the wounds we then run into conflicts between these carefully constructed worlds:
- Different versions of build tools
- Different versions of compilers
- Different environment variables
It's not that these differences can't be overcome, it's that they aren't trivial.
Why we struggle
Programmers love to know how everything works and probably would be hesitant to accept something they thought would foist an environment on them they couldn't customize to let them be "quick". (but this is already the case unless we're originating a project)
So it's possible I could be persuaded...
If I could drop into an corporate environment, and all of the projects that I needed to work on were already ready available to compile, check in and deploy with a simple "run" from my first day, I would be far more interested in that sort of setup.
Considerations
Some languages seem cloud friendly, but they aren't cloud programming (php, perl). This isn't a problem because the hurdle with cloud software development isn't the language, it's environments.
Maven has gone a long way to create a solution to this problem (though I don't think it was for the purposes of software development in the cloud). If you could build a development environment from a definition file (and that's what Maven almost provides the capability to do), then you truly could spin off new development instances as needed.
What if contributing to development were as easy as a wiki? I'm sure this isn't a new idea. There are some problems that aren't going to necessarily crop up in a typical development model that would crop up if it were that simple: I'm not sure I would deploy source code that hasn't been peer reviewed. Perhaps something could be built into the system that let the user know how much of the source code has been peer reviewed by people they trust. (people they trust seems like the far-fetched part of that)
